【Paper Reading】多模态大模型Cambrain-1理解

作者:崔权

前言

arxiv.org/pdf/2406.16...

常见的MLLM结构

作者团队是谁

代表性工作都在计算机视觉预训练领域,MoCo和MAE等,所以本篇paper重视的一个问题是"visual侧特征学得好不好",和一些MLLM代表作关注的视角并不一样

理解Related Work

Related work章节的信息浓度很高,分为6个section,同时也交待了paper & 做好MLLM要关注的6大问题

问题 讨论
LLM LLM是MLLM模型的基础,LLM可以基于prompt和visual encoder的输出,完成复杂的多模态任务。近期有很多工作是通过强化LLM,进而优化MLLM的性能。但是这也引出了一个问题,目前对于MLLM的评估是非常容易被LLM的性能影响的,很少有人对MLLM的视觉感知能力做评估。
Vision encoder 大多数MLLM的vision encoder都是CLIP预训练的,但是除了文本监督的预训练方式,还有各种各样的视觉模型(自监督、分割、深度估计、扩散)。最近有一些工作探索了如何在MLLM引入多样的视觉模型。本文也会系统性探索MLLM中视觉模型的选择。
Multimodal connector 视觉模型输出的特征无法直接被LLM处理,大多数MLLM会引入一个projector把视觉特征映射到LLM的token空间。目前最主流的projector是MLP:- MLP的问题:visual token的数量会随着分辨率平方增长,极大限制了视觉context的长度(例如LLaVa-Next需要2880个token去处理672分辨率的图片)。本文为了解决这个问题,设计了一种处理高分辨率图片的projector
Instruction tuning data 视觉指令微调的数据很重要,但是难收集,相比于文本instruction数据来说,获取成本非常高。本文收集了尽可能多的VQA数据&视觉互动数据,探究数据平衡&数据类别配比等问题;
Instruction tuning 大部分MLLM,都用预训练的LLM和vision encoder进行初始化;基于视觉指令微调数据,对LLM&projector进行finetune。但是最合适的finetune策略一直是悬而未决的,比如:- 是否需要在同时finetune LLM&projector前,对projector进行pretrain finetune的过程中是否freeze住vision encoder关于这些问题,本文也提供了系统性的实验。
Evaluation & benchmark 现有MLLM benchmark的合理性存疑

MLLM x 视觉模型

怎么评:MLLM的benchmark合理吗?

Finding1:大多数benchmark并无法反映MLLM的视觉能力,能反映的benchmark自身的样本数又很少

  1. 左上图:MLLM在下游benchmark上做测评

    1. 训练设置:基于2阶段训练,第一阶段用1.2M (来自ShareGPT-4V)数据训练connector,第二阶段用0.74M数据同时训练connector和LLM;
    2. 测试设置:绿色label代表"使用文本+视觉特征",红色label代表"只用文本特征",蓝色实心label表示"绿色和红色的diff",黄色实心表示"random guess"的结果
  2. 结论:

    1. 大多数数据集上,有没有visual侧特征,对最终的结果影响不大
    2. 缺少visual侧特征影响较大的任务,自身的样本数很少
  3. 解决方案:本文提出CV-Bench,把CV任务给自然语言化,用来评测MLLM在视觉侧的能力

    1. 空间关系
    2. 物体数量
    3. 深度关系
    4. 相对距离

怎么训:MLLM的训练方法

Finding2:两阶段的训练是必要的,并且一阶段projector的训练数据越多效果越好;Unfreeze视觉backbone训练大部分情况下有益;

表格纵轴的含义:

  • 0M❄️:freeze视觉backbone,不用数据pretrain projector
  • 0.5M❄️:freeze视觉backbone,用0.5M数据pretrain projector
  • 1.2M❄️:freeze视觉backbone,用1.2M数据pretrain projector
  • 1.2M🔥:unfreeze视觉backbone,用1.2M数据pretrain projector

表格的结论:

  • 不可以跳过projector的训练,两阶段训练是有用的;
  • 越多的数据训练projector,最终的效果越好;
  • 在projector的训练阶段,unfreeze视觉backbone大多数情况下有收益,但是可能会被计算资源限制可行性,资源充足的情况下可以尝试;

怎么选vision encoder:MLLM的视觉backbone选择

Finding3:VL预训练的视觉backbone比视觉SSL预训练的backbone效果好。

  • 图6:所有蓝色的点,在红色&绿色的点上方。蓝色点代表使用VL预训练的backbone,红色代表视觉SSL的backbone,绿色代表其他任务(如分割)预训练的backbone;总体来看,VL预训练的backbone最适合当做MLLM的视觉基座;
  • 其中效果最好的是SigLIP的模型,比较惊喜的是,ConvNext-L的效果也不错;

Finding4:高分辨率的视觉backbone对表格理解、重视觉侧的任务都很有帮助。基于CNN的backbone天然对上述任务友好。

结论有点牵强,看图6即可;

怎么进一步提升视觉能力:MLLM x 多个视觉backbone

Finding5:结合多个视觉backbone的特征,可以增强MLLM的性能。

由图6可以看出,不同pre-train、不同architecture的视觉backbone擅长的任务不同,可以将他们进行结合获取更好的效果。

结合的逻辑是,从每个backbone输出的visual tokens中,插值出固定个数的visual tokens;多个backbone输出的特征在channel维度进行concat,再用MLP projector到LLM的token space,继而送进后面的LLM中;

比如,encoder 1的特征维度是196x1024,encoder 2的特征维度是256x2048,那做法就是,从每个encoder的特征中插值出来64个,得到一个64x1024和一个64x2048的特征,再从channel维度concat起来,变成64x3072,再用一个FC把维度降下来,对齐后面的LLM;

提出解法:多个视觉模型特征聚合模块 SVA

Finding6:特征聚合的关键点是空间归纳偏置、LLM&视觉特征的深度交互

用cross attention layer,处理多个visual encoders的特征

  1. 先定义一个learnable query token <math xmlns="http://www.w3.org/1998/Math/MathML"> X ∈ R L 2 × C X \in \mathbb{R}^{L^2 \times C} </math>X∈RL2×C,L代表feature map的长宽,C代表feature的dimension;

  2. Given图片里3个encoder的特征,由于可能是3种不同的feature map大小,需要对同一个spatial position上的特征做对齐;

    1. Given一个query vector <math xmlns="http://www.w3.org/1998/Math/MathML"> x i , j x_{i,j} </math>xi,j,对于同大小feature map,则感知固定位置的feature vector <math xmlns="http://www.w3.org/1998/Math/MathML"> F 1 i , j F_{1_{i,j}} </math>F1i,j,作为KV;
    2. 如果feature map的长宽是L的 <math xmlns="http://www.w3.org/1998/Math/MathML"> m k m_k </math>mk倍,则感知一个区域内的feature <math xmlns="http://www.w3.org/1998/Math/MathML"> F k [ m k ⋅ i : m k ⋅ ( i + 1 ) , m k ⋅ j : m k ⋅ ( j + 1 ) ] F_{k}[m_k·i:m_k·(i+1), m_k·j:m_k·(j+1)] </math>Fk[mk⋅i:mk⋅(i+1),mk⋅j:mk⋅(j+1)]作为KV;
  3. 总的来说,一个query会负责聚合"多个encoder、同一spatial region"内的特征,聚合多个encoder的visual tokens,产出固定个数(L*L)visual tokens作为聚合后的结果;

具体指标:从结果来看,也没有比concat领先太多,感觉形式大于作用,多个source的encoders才是涨点的本质原因;

MLLM x 数据

  1. 如图9所示,paper收集了非常多的多模态数据,包括OCR数据、VL数据、纯文本数据等;除了以上7M的开源数据,作者还从Internet定向增补了3M的数据,主要手段是用搜索引擎+wiki+大模型生成prompt;这里所有的数据加起来产出了Cambrain-10M数据集;
  2. 基于Cambrain-10M,调整了垂类的配比,得到了更精简、更高质量的数据集Cambrain-7M;和10M版本的对比如下,7M训出来的模型效果更好;
  1. 对于答案非常短的训练数据,增加一些system语句,不同的数据集适用的prompt不同;这一操作非常有利于提升模型的对话能力,防止模型退化到"answer machine"只会以很短的文案回答问题;

和SOTA的比较

  • cambrain-1的训练setting:

    • stage1 数据:用2.5M数据预训练projector,1.2M captioning data from shareGPT4V and 1.2M captioning data used in MiniGemini; 1e-4学习率,bs 512;
    • stage2数据:Cambrain-7M数据做SFT;2e-5学习率,bs512;
    • 模型侧:4个visual encoders通过SVA聚合;
  • 结论:cambrain超过了开源sota(mini-gemini和llava-next),仅用了1/4的视觉token数(但是有SVA聚合多个encoder的结果)

小trick,评估的时候应该使用模糊匹配对output进行后处理;For instance, if the correct answer is "(a) Apple" and the model outputs "Apple", it is crucial to recognize the response as correct.

其余的两个SOTA

再回头看cambrain和其余两个sota不一样的地方,cambrain是通过visual encoder的diversity取胜,其余两个sota在纯怼分辨率

Mini-Gemini

LLaVa-Next

相关推荐
DigitalOcean2 小时前
DigitalOcean 基于 NVIDIA GPU 如何为 Workato 降低 67% AI 推理成本
llm·aigc
数据智能老司机4 小时前
Kubernetes 上的生成式 AI——模型数据
kubernetes·llm·agent
iceiceiceice4 小时前
从零开始构建 RAG + DeepSeek Demo
人工智能·llm
302AI4 小时前
大白话聊一聊:为什么OpenClaw那么火
llm·agent·vibecoding
数据智能老司机5 小时前
AI 智能体与应用——使用 LangGraph 构建基于工具的智能体
llm·agent
数据智能老司机6 小时前
AI 智能体与应用——问题转换
llm·agent
数据智能老司机6 小时前
AI 智能体与应用——使用 LangGraph 构建智能体工作流
llm·agent
数据智能老司机6 小时前
AI 智能体与应用——构建研究摘要引擎
llm·agent
数据智能老司机6 小时前
AI 智能体与应用——使用 LangChain 和 LangSmith 构建 Q&A 聊天机器人
llm·agent
Pitayafruit6 小时前
OpenClaw 从装完到真正会用,成为专业养🦞户的攻略
llm·aigc