1.1 文章的贡献
1. 这篇论文的贡献如下:多模态指令跟随数据:社区缺少多模态指令跟随数据,作者提出了一个 pipeline 用于将图像文本对转换成指令跟随数据并开源了该数据
2. 大型多模态模型:作者提出了一个新的多模态框架
3. 多模态指令跟随评测集:作者构建了多模态指令跟随 benchmark 并开源
LLaVA 与其他多模态模型的效果对比如图 1 所示:
1.2 模型结构
LLaVA 选择 Vicuna 作为语言模型 𝑓𝜙(.) 以及经过 CLIP 预训练的 ViT-L/14 作为视觉编码器 𝑔(𝑋𝑣) ,并用一个简单的线性层 𝑊 将视觉特征投影到词嵌入的特征空间,如图 2 所示:
图 2 的流程如下:
● 对于图像 𝑋𝑣,先使用视觉编码器 𝑔(𝑋𝑣) 将其编码为 𝑍𝑣,再通过线性层 𝑊转换成 𝐻𝑣。
● 对于指令 𝑋𝑞,使用 embedding 层将其转换为 𝐻𝑞,
● 拼接 𝐻𝑣和 𝐻𝑞,将其输入给语言模型 𝑓𝜙(.)并得到输出 𝑋𝑎
使用公式表示上面的流程:
𝑋𝑎 =𝑓(𝑐𝑜𝑛𝑐𝑎𝑡([𝐻𝑣,𝐻𝑞]))
=𝑓(𝑐𝑜𝑛𝑐𝑎𝑡([𝑊𝑍𝑣,𝐻𝑞]))
=𝑓(𝑐𝑜𝑛𝑐𝑎𝑡([𝑊𝑔(𝑋𝑣),𝐻𝑞]))
1.3 数据集构造
LLaVA 借助 GPT-4 将带有 Caption 和 Bounding boxes 信息的 COCO 数据转换成三种指令跟随数据,分别是
● Conversation:对话数据,共 58K 个样本
● Detailed description:对图像丰富而全面的描述,共 23K 个样本
● Complex reasoning:复杂推理数据,数据的回复通常需要遵循严格的逻辑逐步推理,共 77K 个样本
图 3 是指令跟随数据的示例(附录中给出了更具体的示例),其中 Context type(包括 Caption 和 Bounding boxes)表示用于构造数据的 prompt,Respone type 则对应转换后的三种指令跟随数据:
图 4 是使用 GPT4 生成指令跟随数据的 prompt:
1.4 训练细节:
LLaVA 采用两阶段微调策略:
● 阶段一:冻结 LLM 权重和视觉编码器,只微调线性层 𝑊,目的是对齐视觉特征 𝐻𝑣和 𝐻𝑞。
● 阶段二:只冻结视觉编码器,微调 LLM 权重和线性层 𝑊
训练数据的格式如图 5 所示:
其中 𝑋𝑠𝑦𝑠𝑡𝑒𝑚−𝑚𝑒𝑠𝑠𝑎𝑔𝑒 是 system prompt, <𝑆𝑇𝑂𝑃> 是结束标记符, 𝑋𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡1 包含图像和用户的问题, 𝑋𝑎1 是模型的回复, 𝑋𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡2 只包含用户的问题。
另外,在训练时,只有绿色部分参与损失函数的计算。
● 训练配置:阶段一:使用过滤后的 CC3M 数据(记为 CC595K)训练 1 个 epoch、学习率为 2e-3、bacth size 128
● 阶段二:使用 LLaVA-Instruct-158K 数据集(Conversation+Detailed description+Complex reasoning)训练 3 个 epoch、学习率为 2e-5、batch size 32
阶段一和阶段二均使用 Adam 优化器以及 cosine 衰减学习率。