LLaVA(视觉指令微调)
论文名称:Visual Instruction Tuning
论文链接:https://arxiv.org/pdf/2304.08485
论文发布时间:2023年4月初版,2023年12月更新。
名字来源:Large Language and Vision Assistant,大型视觉语言助手。
keypoints
模型架构
Vision Encoder:pre-trained CLIP visual encoder ViT-L/14
LLM:Vicuna
Projection:简单的线性投射。
相比于Flamingo更简单,对训练数据要求更少,适合迭代做实验。
训练
Stage1:特征对齐预训练(Pre-training for Feature Alignment)
此阶段冻结ViT和LLM,只训练Proj层。
数据
- 从CC3M中过滤了595K的图文对。这些图文对被改造为指令跟随数据(instruction-following data)
- 每个样本是一个单轮对话。
- 预测结果是图像的原始描述文本。
通过这一步,视觉编码器输出的图像特征可以和预训练的LLM的词向量对齐。
参数设置
epoch 1
lr 2e-3
bs 128
Stage2:端到端微调(Fine-tuning End-to-End)
此阶段冻结ViT,训练Proj和LLM。
数据
- 自建的对话形式数据集LLaVA-Instruct-158K。
- 三种不同的对话类型。
参数设置
epoch 3
lr 2e-5
bs 32
全文精读
1. Background&Motivition
使用机器生成的指令跟随数据对大型语言模型(llm)进行指令调优已被证明可以提高新任务的zero-shot能力,但该想法在多模态领域的探索较少。
社区出现了很多语言增强的视觉模型,具有强大的开放世界视觉理解能力。然而,每个任务由一个单一的大视觉模型独立解决,而且仅使用描述图片的语言(例如Grounding SAM),交互性较差,泛用性差。
LLM则被证实了具有较强的泛化能力,通常能解决多种任务,且能遵循人类指令,出现了很多开源LLM如LLaMA、Qwen。
2. Contributions
本文提出了visual instruction-tuning,第一次将visual instruction-tuning扩展到多模态视觉领域。
- Multimodal instruction-following data。提出一种经典的数据生成方式,使用GPT4等LLM将图文对数据转换为instruction-following。
- Large multimodal models。提出一种vision encoder+LLM decoder的架构。
- Multimodal instruction-following benchmark
- Open-source
3. GPT-assisted Visual Instruction Data Generation 数据生成
使用ChatGPT/GPT-4将图文对转换为instruction-following数据。
图中上半部分为两种处理前的图文对,分别是caption(图像内容描述)和box(标签对应的坐标框)。
容易想到的一种构造格式是:给定图像 I和caption c,构造一组问题q,得到如下对话:
Human:I+q_i
GPT: c
但这样的数据缺乏多样性和深度推理。
所以,作者得到了如图下半部分,使用GPT4这种LLM来构造的更丰富更深度的数据。
包括三类问答,仅第一种是多轮,其他为单轮:
- (多轮)对话:模拟两个人之间的一问一答,涉及输入图片的对象类型、对象计数、对象动作、对象位置、对象之间的相对位置。
- 详细描述:对图片进行更加详细的描述。
- 复杂推理:根据图片内容进行一步一步的逻辑推理。
具体如何提示GPT4:
向GPT4输入如上内容后,输出如下格式 数据:
{"role":"user", "content":sample['context']}
({"role":"assistant", "content":sample['response']}
4. Visual Instruction Tuning
4.1 架构
公式:
keypoints中已经讲过了。
4.2 训练
因为一张图对应了多种问答,因此每轮问答t是如下构造方式:
第一个instruct是输入图像,和q1(你是一个ai blabla),哪个在前是随机的。
后面的就是正常是一问一答。训练LLaVA的数据格式如下:
目标函数采取和LLM相同的自回归损失
小xi是模型预测输出token,绿色的tokens用于计算自回归损失。θ是模型参数。
训练分两阶段:
Stage 1: Pre-training for Feature Alignment.
对keypoints的补充:数据是过滤CC3M to 595K。然后按照Sec3中一开始提到的简单粗暴的方式构造对话,回答就是caption。单论对话。对每张图片随机选择一个对应的对话。
Stage 2: Fine-tuning End-to-End
对keypoints的补充:这阶段的数据采用Sec3中描述的三类构建方法,构建了一个基准数据集Science QA。
5. 实验
通过两个主要的实验设置分别评估了LLaVA在指令跟随和视觉推理能力方面的性能: 多模态聊天机器人和ScienceQA数据集。
使用8× a100训练所有模型,遵循Vicuna的超参数。
5.1 Multimodal Chatbot
demo示例,和与其他大模型的对比:
值得注意的是:LLaVA使用的训练集很小(只有80k+的图像),但能在域外数据上根据问题给出合理的推理。
定量评估模型在多模态数据上的指令跟随能力:
给定图像、基本事实文本描述和问题组成的三元组,候选模型(例如,LLaVA)根据问题和图像预测答案。
为了提供一个近似的理论上限,使用纯文本GPT-4,基于问题和基本事实文本描述创建了一个参考预测。
在获得两个模型的响应后,我们将问题、视觉信息(以文本描述的格式)和两个助手生成的响应馈送给裁判(即纯文本GPT-4)。它评估助手回答的有用性、相关性、准确性和详细程度,并给出1到10分的总分,分数越高表明整体表现越好。以下表格中的分数都是相对于GPT-4输出的相对分数。
Bench
LLaVA-Bench (COCO).
从COCO-Val-2014中随机抽选30张图像,生成共90个问题,该基准测试研究模型的对齐行为和具有一致视觉输入的功能,进行训练数据的消融,结果如下:
LLaVA-Bench (In-the-Wild)
为了评估模型在更具挑战性的任务中的能力和对新领域的可泛化性,收集了24张不同的图像,总共有60个问题,包括室内和室外场景、模因、绘画、草图等,
模型架构对比:
局限性
如下图两个问题,模型仍然欠缺;
- 宽广的知识面和多语言,例如拉面是哪个牌子的;
- 高分辨率图像理解;
- 无法掌握图像的复杂语义。
5.2 ScienceQA
ScienceQA[34]包含21k个多模态选择题,具有丰富的领域多样性,涉及3个学科、26个主题、127个类别和379个技能。基准数据集分为训练、验证和测试部分,分别有12726、4241和4241个示例。我们考虑了两种具有代表性的方法,包括具有和不具有思维链(CoT)的GPT-3.5模型(text- davincici -002)、LLaMA-Adapter[59]以及多模态思维链(MM-CoT)。
结果如表7所示。对于LLaVA,使用最后一层之前的视觉特征,要求模型先预测原因再预测答案,并进行12次epoch的训练。它的准确率为90.92%,与SoTA的91.68%相当接近。为了探索LLM的局限性,还使用2次上下文学习提示GPT-4,并实现了82.69%的准确率,与GPT-3.5的75.17%相比,这是7.52%的绝对增益。对于大量的问题,我们注意到GPT-4失败仅仅是因为它报告没有足够的背景,如图像或情节。我们考虑了两种方案来结合我们的模型和GPT-4的结果。
(i) GPT-4补充。每当GPT-4无法提供答案时,我们就使用我们方法中的预测。该方案的精度为90.97%,与单独应用我们的方法几乎相同。
(ii) GPT-4作为裁判。每当GPT-4和LLaVA给出不同的答案时,我们会再次提示GPT-4,要求它根据问题和两个结果提供自己的最终答案。这种精神与CoT相似,但具有来自其他模型的外部知识。令人惊讶的是,该方案能够在所有问题类上提供一致的改进,并达到了92.53%的新的SoTA准确率。
这可能是首次使用GPT-4做ensample。
消融
- ViT输出特征的选择,用最后一层或者倒数第二层;
- 思维链,先给答案还是先推理;
- 训练,是否不要预训练,直接在Science QA上训;
- 模型大小,原本的配置是13B,这里试了7B。
后边会再读LLaVA1.6和LLaVA-grounded。