注:本图由stable diffusion生成
1.1 摘要
在本文中,我们首次尝试使用仅基于语言的GPT-4生成多模态语言-图像指令跟随(instruction following)数据。通过对这些生成数据进行指令调整,我们介绍了LLaVA:Large Language and Vision Assistant,这是一个端到端训练的大型多模态模型,将视觉编码器与LLM连接起来,用于通用目的的视觉和自然语言理解。
1.2 引言
具体来说,我们的论文做出了以下贡献:
(1)多模态指令跟随(instruction-following)数据
一个关键挑战是缺乏视觉-语言指令跟随数据。我们提出了一个数据重组观点和管道,利用ChatGPT/GPT-4将图像-文本对转换成适当的指令跟随格式。
(2)大型多模态模型
我们开发了一个大型多模态模型(LMM),将CLIP的开放集视觉编码器与语言解码器LLaMA连接,并在我们生成的指令型视觉-语言数据上进行端到端的微调。我们的实证研究验证了使用生成数据进行LMM指令调整的有效性,并为构建通用指令跟随视觉代理提供了实用建议。通过GPT-4,我们在科学问答多模态推理数据集上实现了最优的性能。
(1)InstructPix2Pix
① 论文链接:https://arxiv.org/pdf/2211.09800.pdf
② github:https://github.com/timothybrooks/instruct-pix2pix
(2)LangChain
① github:https://github.com/hwchase17/langchain
(3)Visual ChatGPT
① 论文链接:https://arxiv.org/pdf/2303.04671.pdf
② github:https://github.com/microsoft/TaskMatrix
(4)X-GPT
① 论文链接:https://arxiv.org/pdf/2212.11270.pdf
② github:https://x-decoder-vl.github.io/
(5)MM-REACT
① 论文链接:https://arxiv.org/pdf/2303.11381.pdf
② github:https://multimodal-react.github.io/
1.3.2 Instruction Tuning
(1)T5
① 论文链接:https://arxiv.org/pdf/1910.10683.pdf
② github:https://github.com/google-research/text-to-text-transfer-transformer
(2)PaLM
① 论文链接:https://arxiv.org/pdf/2204.02311.pdf
② github:https://github.com/lucidrains/PaLM-rlhf-pytorch
(3)OPT
① 论文链接:https://arxiv.org/pdf/2205.01068.pdf
② github:https://github.com/facebookresearch/metaseq
(4)FLAN-T5
① 论文链接:https://arxiv.org/pdf/2210.11416.pdf
② github:https://github.com/google-research/t5x/tree/main
(5)OPT-IML
① 论文链接:https://arxiv.org/pdf/2212.12017.pdf
② github:https://github.com/facebookresearch/metaseq
(6)Flamingo
① 论文链接:https://arxiv.org/pdf/2204.14198.pdf
② github:https://github.com/lucidrains/flamingo-pytorch
(7)BLIP-2
① 论文链接:https://arxiv.org/pdf/2301.12597.pdf
② github:https://github.com/salesforce/LAVIS/tree/main
(8)FROMAGe
① 论文链接:https://arxiv.org/pdf/2301.13823.pdf
② github:https://github.com/kohjingyu/fromage
(9)KOSMOS-1
① 论文链接:https://arxiv.org/pdf/2302.14045.pdf
② github:https://github.com/microsoft/unilm
(10)PaLM-E [12]
① 论文链接:https://arxiv.org/pdf/2303.03378.pdf
② github:https://palm-e.github.io/
(11)OpenFlamingo
① Blog链接:https://laion.ai/blog/open-flamingo/
② github:https://github.com/mlfoundations/open_flamingo
(12)LLaMA-Adapter
① 论文链接:https://arxiv.org/pdf/2303.16199.pdf
② github:https://github.com/ZrrSkywalker/LLaMA-Adapter
(13)visual prompt tuning
① 论文链接:https://arxiv.org/pdf/2304.02643.pdf
② github:https://github.com/facebookresearch/segment-anything
1.4 GPT辅助视觉指令数据生成
(1)受近期GPT模型在文本标注任务的成功启发,我们提出利用ChatGPT/GPT-4基于广泛存在的图像-文本对数据进行多模态指令跟随数据收集。
(2)为了将图像编码成其视觉特征以提示文本仅GPT,我们使用两种类型的符号表示:① 字幕(Captions)通常从不同角度描述视觉场景。②边界框(Bounding boxes)通常定位场景中的对象,每个框都编码了对象概念及其空间位置。
png-01
(3)这种符号表示使我们能够将图像编码为LLM可识别的序列。我们使用COCO图像并生成三种类型的指令跟随数据:
① 对话
我们设计了一场关于这张照片的助手和提问者之间的对话。回答的语气就像助手正在看这幅图像并回答问题一样。关于图像的视觉内容,提出了各种问题,包括对象类型、对象数量、对象动作、对象位置、对象之间的相对位置。只考虑有确定答案的问题。
② 详细描述
为了给图像提供丰富且全面的描述,我们创建了一个包含此类意图的问题列表。我们用GPT-4提示生成列表。对于每个图像,我们从列表中随机抽取一个问题,让GPT-4生成详细描述。
③ 复杂推理
上述两种类型关注于视觉内容本身,基于此,我们进一步创建深入推理问题。答案通常需要遵循严密逻辑的逐步推理过程。
(4)总共收集了158K个独特的语言-图像指令跟随样本,包括分别在对话中的58K、详细描述中的23K和复杂推理中的77k。
1.5 视觉指令微调
1.5.1 框架
png-02
(1)对于输入图像X_v,我们考虑预训练的CLIP视觉编码器ViT-L/14,它提供了视觉特征 Z_v = g(X_v)。我们的实验中考虑了最后一个Transformer层之前和之后的网格特征(grid features)。
(2)我们考虑一个简单的线性层将图像特征连接到词嵌入空间。具体来说,我们应用一个可训练的投影矩阵W将Z_v转换为语言嵌入tokens H_q,这些tokens与语言模型中词嵌入空间的维数相同:
png-03
1.5.2 训练
对于LLaVA模型训练,我们考虑一个两阶段的instruction-tuning过程:
阶段1:预训练用于特征对齐
① 筛选CC3M至595K图像-文本对;
② 使用朴素扩展方法(naive expansion method)将这些图像-文本pairs转换为指令跟踪数据。每个样本可以被视为单轮对话;
③ 在训练中,我们保持视觉编码器和LLM权重冻结,并仅通过可训练参数θ = W(投影矩阵)最大化似然。这样,图像特征H_v可以与预训练的LLM词嵌入对齐;
这个阶段可以理解为为冻结的LLM训练一个兼容的视觉分词器。
阶段2:端到端微调
我们只保持视觉编码器权重冻结,并继续更新LLaVA中投影层(projection layer)和LLM的预训练权重;
1.6 实验
1.6.1 多模态聊天机器人
尽管LLaVA仅使用了一个较小的多模态指令跟踪数据集(约80K个独特的图像)进行训练,但它在这两个示例上(请看本文后续的截图)展示了与多模态GPT-4非常相似的推理结果。需要注意的是,尽管这两张图片对于LLaVA来说都是领域外的,但LLaVA仍然能够理解场景并遵循问题指令进行响应。
(1) 定量评估
GPT-4评估了助手回应的有用性、相关性、准确性和细节水平,并给出了一个1到10的总分,分数越高表示整体性能越好。
png-07
1.6.2 ScienceQA
ScienceQA包含了21k多模态多项选择题,涵盖了3个学科、26个主题、127个类别和379个技能,领域多样性丰富。基准数据集分为训练、验证和测试集,分别包含12726、4241和4241个示例。
ScienceQA : https://arxiv.org/pdf/2209.09513.pdf
png-08
(1) 消融实验
① 视觉特征
我们尝试使用CLIP视觉编码器的最后一层特征,得到的准确率为 89.96%,比最后一层之前的特征低0.96%。我们推测这是因为CLIP的最后一层特征可能更关注全局图像属性,而其前一层可能更关注有助于理解特定图像细节的局部属性。
② 思维链条
我们得出结论,类似CoT的以推理为首要策略可以大大提高收敛速度,但对最终性能的贡献相对较小。
③ 预训练
我们跳过预训练,直接从头开始在Science QA上训练模型,性能下降到 85.81% 准确率。5.11%的绝对下降表明了我们预训练阶段的重要性,在对齐多模态特征的同时保留了大量预训练知识。
④ 模型大小
我们保持与最佳13B模型相同的所有配置,并训练一个7B模型。这得到了89.84%的准确率,比90.92%低1.08%,表明模型规模的重要性。
>>> 实验结果 <<<
图-1
图-02