当前位置: 首页 > news >正文

EVA series系列(上)

目录

一、EVA

1、概述

2、方法

二、EVA-02

1、概述

2、架构

三、EVA-CLIP

1、概述 

2、方法

四、EMU

1、概述

2、架构

3、训练细节

4、评估 


一、EVA

1、概述

        为探寻大规模表征学习任务的MIM预训练任务在ViT基础上扩展到1B参数量规模,结合10M级别(29.6M)未标注数据时的性能极限,构建高效、可扩展的视觉基础模型EVA。

        EVA模型经过预训练后,可以实现数据量减少,计算资源有限,却可以扩展更高参数量,并超越以往同数据量下的(open data)下的图像/视频上的基准任务SOTA。并且显著提升CLIP模型训练和优化稳定性。

        表征学习:让机器自动学习数据中的本质特征,替代传统人工设计特征(如SIFT,HOG),通过神经网络来逐层提取特征,再将预训练的表征泛化到多种下游任务中,在训练过程中无需人工标注数据,利用自监督经数据本身学习。

        掩码图像建模(MIM):受NLP中BERT(随机语言建模)启发,迁移到视觉领域,随机遮盖输入图像的部分区域,训练模型基于上下文预测被遮盖内容。

2、方法

语义特征标记化的局限性

        传统BEiT方法需要将视觉特征(Image)通过tokenizer(就是一个VQ-VAE编码器)离散成Tokens,并预测这个Tokens。主要目的是训练一个特征提取器(也就是BEiT encoder),可以用于下游任务,类似ViT可以用与支撑CLIP做跨膜态的检索,分类等下游任务。

        具体做法,效仿MAE,将Image切成patches后进行random mask并flatten,经过BEiT encoder得到完整的包含预测图像信息的tokens,最终经过decoder 重建图像。

        但是在EVA论文中提出,这种方法在量化过程中损失细微特征,并且离散空间难以表达视觉概念的连续性。并且做了以下实验,实验对比了以往CLIP方法,利用tokenizer进行训练,利用EVA方法进行训练在ImageNet上进行图像分类和ADE20K上进行语义分割下游任务。可以看到不带tokenizer时,800epochs就可达到85.5%的ImageNet精度,带tokenizer时需1600轮才能持平,证明了tokenizer方法脱缓了收敛,并且没有增益。

        

特征蒸馏机制失效 

        以往的蒸馏机制在长周期训练下精度增长并不明显,甚至阻碍了本身CLIP模型在下游任务的的精度增长。

        传统方法在表征学习中引入tokenizer的离散化和蒸馏机制,导致限制了表征能力,同时收敛效率下降,难以支撑更大参数级的模型训练。

具体做法

        EVA方法先通过预训练MIM算法遮蔽图像块预测CLIP特征,学习通用视觉表征。先输入图像进行分割得到patches,并随机遮蔽40%的块,并通过ViT编码器得到特征,而预训练的CLIP作为一个Teacher Model对EVA进行蒸馏,记住最后推理用的是这个EVA部分

        之后冻结预训练的主干部分,添加不同任务的特定头,比如图像分类添加线性分类头在ImageNet上微调,实例分割中添加Cascade Mask R-CNN在Objects365等数据集上微调,视频动作识别中扩展到视频空间。

        最后应用于CLIP中,实现EVA-CLIP,再后面继续介绍。

二、EVA-02

1、概述

        EVA-02基于EVA-01在结构上加了一些小的trick,将主干网络ViT修改为加trick后的TrV,训练过程中Teacher Model使用EVA-CLIP(EVA-01+CLIP),并且特征提取部分用了更小的参数量,在下图也可以看到,在不同的任务上全面碾压EVA-01。

2、架构

        EVA-02从以往的ViT架构替换成Transform Vision(TrV),主要就是加了一些小的创新,可以看到包括sub- LN,xavier归一化,SwiGLU,2D RoPE等方法。

        之后就是做了对比实验,验证EVA-02方法相比于以往方法的优势,其中ViT-B+VQKD-B就是BEiT模型,ViT-B+CLIP-B就是EVA-01,ViT-B+EVA-CLIP是EVA-CLIP,可以看到学生模型参数过于庞大时,也会造成收敛更慢,另外EVA-02也有更大的扩展性(提高数据量仍然可以提点)。

         EVA-02在训练上仍然用EVA-01相同的方式,数据集使用了比EVA-01更多的38M的数据量。并使用EVA-CLIP作为teacher model,尤其是在zero-shot的多任务上,EVA-CLIP可以全面超过CLIP的性能。

三、EVA-CLIP

1、概述 

        由于CLIP模型随着数据量增加,训练时,计算量更大,训练不稳定,EVA-CLIP在保持CLIP模型参数量的同时,用更低的训练成本,达到更多训练数据量的更高的准确率。(其中下图圆半径代表训练数据量大小)。

2、方法

 (1)采用预训练的EVA模型提取特征并加速收敛

 (2)使用LAMB优化器训练EVA-CLIP,LAMB优化器专门用于大batchsize而设计,支持自适应分层学习率与超大规模batchsize训练(131K)。

 (3)随机mask 50%的image tokens,降低一半复杂度,时间减半,利用Flash Attention加速注意力计算,降低训练15%耗时。

        数据上合并LAION-2B与COYO-700M构建Merged-2B数据集,训练硬件支撑144 x A100(80G)训练5B模型,太恐怖了)

四、EMU

1、概述

        EMU是一种统一的多模态基础模型,通过自回归训练实现图像、文本、视频的跨模态理解,并且可以支持无差别处理单一模态或者多模态的输入,比如交替出现的图像和文本。EMU作为多模态的接口,支持T2I,I2T,上下文生成图像,并且在视频问答,视觉问答,图像理解,图像生成等零样本/少样本任务中,一度超越当时主流多模态模型的性能。

        下图给出图像描述,图像问答,图像融合,上下文图像转文字,视频问答上的效果。

2、架构

        EMU由四部分组成,视觉编码器,因果变换器,多模态建模器,视觉解码器,如下图。

        视觉解码器利用EVA-CLIP(40层ViT)提取图像帧视频帧特征,(视频帧特征扩展本身EVA-CLIP的维数,在EVA-CLIP中已经训练出)

        因果变换器目的是将二维的图像特征信息,转换为有因果关系的线性序列,并且添加[IMG]为起止标记。因果变换器本质上是一个12层的Transformer的Decoder部分,包含因果自注意力,交叉自注意力,FFN。

        多模态建模器,以LLaMA-13B为基础,处理图文交错的序列。LLaMA是一个decoder-only Transformer架构。

        视觉解码器通过微调Stable Diffusion,将回归出的视觉嵌入解码成图片。

        而另外两个分类头和回归头将通过训练时监督部分进行介绍。

        训练的目的就是输入一组unlabeled的语料库可以是图文对,图文交替文档,甚至有字幕的视频,最后使得回归出来的最接近语料库。所以在训练中设计了分类头和回归头,分类头用于输出离散文本序列,通过交叉熵来监督。回归头用于对视觉tokens经decoder解码图像,利用L2损失监督。怎么分出是用分类头还是回归头呢,把所有需要进分类头的加一个[IMG]。

3、训练细节

        数据集

        图文对: LAION-2B,LAION-COCO,LAION-2B为LAION-5B的子集,LAION-COCO共600M由BLIP标注

        视频文本对:WebVid-10M,并用启发式规则剔除text中无用信息。

        图文交织信息:Multimodal-C4包含7500w图文文档,并在每个文档中抽取1024长度序列

        视频文本交织信息:YT-Storyboard-1B包含从Youtube上的18M video,从下图可以看到,根据时间轴上图片和文字理解的因果关系,组成了一个视频文本交织文档

        训练过程   

        训练过程中冻结Image encoder,LLaMA,以及Decoder中的VAE部分,只保留U-Net为training。并在训练过程中随机选择10%的图像嵌入进行丢弃,以此来实现classifier-free的工作。

        指令微调

        指令微调的目的:通过监督微调使得预训练模型可以理解复杂指令,适应多模态交互场景(如问答、描述、推理),并解锁零样本/少样本任务能力,克服预训练任务的局限性。

        微调过程中,冻结预训练EMU的所有参数,仅添加LoRA模块,插入到Transformer的自注意力层中。

        这里简要插入一段具体做法的代码。LoRA的配置和pert模型转换函数通过peft引入,LoraConfig类用于建立一个LoRA,其中r代表rank,lora_alpha=16代表权重矩阵分解成两个低秩矩阵,并缩放到以往的1/16,来减少参数量。target_modules指定同时影响哪些投影层添加到LoRA中。而get_peft_model则将预训练模型转换为PEFT模型并引入LoRA模块,这样不需要全参数的微调整个模块,参数量只需要增加13M(小于总参数量1%),并且存储开销只有52MB。

        数据上采用数据混合策略,包括语言指令,图像指令,视频指令,并使用<System Message>[USER]:<Instruction>[ASSISTANT]:<Answer>的方法进行结构性对话,最后计算<Answer>部分的输出损失。

        根据上表对比,Emu-I(经过指令微调)在各项指标中高于Emu。Emu *是用于建立复杂开放任务上的,通过从训练集中选取两个同类任务文本,并移除对应图片,作为前缀输入到prompt中的方法。Emu*可以从VQA任务中理解,如下。而Emu则只有当前问题,如描述该图片。

# Emu* 输入构建伪代码
text_prompt = """
Q: What is in the image? A: A cat.  # 示例1(无图)
Q: What color is it? A: White.       # 示例2(无图)
Q: {当前问题}                       # 待回答问题
"""
input_sequence = [图片嵌入] + tokenize(text_prompt)  # 图文交错序列
output = model.generate(input_sequence)  # 生成答案

4、评估 

        对EMU的评估建立了多维度的完善评估体系。

任务类型数据集评估指标创新点

图像理解

COCO, NoCaps

CIDEr↑

零样本超越Flamingo-9B 33分

视觉问答

VQAv2, OKVQA

准确率↑

引入知识推理链(table 10)

视频理解

MSVDQA, NextQA

WUPS↑

首次支持视频字幕交错输入

文本生成图像

COCO

FID↓

联合视觉嵌入回归

开放场景理解

MM-Vet

多能力综合得分

6大核心能力分解评估

        思维链(Chain of Thought,CoT)在EMU中作为一种多模态推理增强技术,通过生成中间推理步骤来提升复杂任务的表现。先对输入图像进行文本描述得到"caption",再将描述与问题拼接获得新问题的答案。"A picture of {caption}.based on the picture,{question} answer:"

参考论文:

[2211.07636] EVA: Exploring the Limits of Masked Visual Representation Learning at Scale
[2303.11331] EVA-02: A Visual Representation for Neon Genesis

[2303.15389] EVA-CLIP: Improved Training Techniques for CLIP at Scale
 

[2309.15807] Emu: Enhancing Image Generation Models Using Photogenic Needles in a Haystack

http://www.dtcms.com/a/282445.html

相关文章:

  • UltraISO编辑ISO文件
  • XPath注入攻击详解:原理、危害与防御
  • PLC-BMS电力载波通信技术深度解析:智能电网与储能系统的融合创新
  • (nice!!!)(LeetCode 每日一题) 3201. 找出有效子序列的最大长度 I (动态规划dp)
  • js数组简介
  • Linux 探秘进程与 fork:从内核源码到容器化演进
  • NLP:LSTM和GRU分享
  • 加速度传感器的用途与应用
  • Opencv---cv::minMaxLoc函数
  • Go与Python在数据管道与分析项目中的抉择:性能与灵活性的较量
  • React 中 props 的最常用用法精选+useContext
  • 单列集合顶层接口Collection
  • QT——事件系统详解
  • YOLOv13_SSOD:基于超图关联增强的半监督目标检测框架(原创创新算法)
  • GaussDB 数据库架构师修炼(五) 存储容量评估
  • 动态规划题解_打家劫舍【LeetCode】
  • MySQL 8.0 OCP 1Z0-908 题目解析(27)
  • 钱包核心标准 BIP32、BIP39、BIP44:从助记词到多链钱包的底层逻辑
  • RocketMQ源码级实现原理-消息过滤与重试
  • 【Deepseek-R1+阿里千问大模型】四步完成本地调用本地部署大模型和线上大模型,实现可视化使用
  • 拥抱主权AI:OpenCSG驱动智能体运营,共筑新加坡智能高地
  • 【技术追踪】基于检测器引导的对抗性扩散攻击器实现定向假阳性合成——提升息肉检测的鲁棒性(MICCAI-2025)
  • 辅助驾驶GNSS高精度模块UM680A外形尺寸及上电与下电
  • 剑指offer64_圆圈中最后剩下的数字
  • 为什么要用erc165识别erc721或erc1155
  • 系统性学习C语言-第十八讲-C语言内存函数
  • IIS-网站报500.19错误代码0x8007000d问题解决
  • LeetCode Hot100【4. 寻找两个正序数组的中位数】
  • 什么是 WebClient?
  • xss-labs的小练