《Visual Instruction Tuning》(LLava)文章翻译-细读理解
Haotian Liu¹*, Chunyuan Li²*, Qingyang Wu³, Yong Jae Lee¹
¹威斯康星大学麦迪逊分校,²微软研究院,³哥伦比亚大学
发表年份:2023
摘要
指令微调大型语言模型(LLMs),使用机器生成的指令跟随数据,已被证明能提升模型在新任务上的零-shot能力,但这一思想在多模态领域的应用较少被探索。我们提出了首次尝试使用仅语言的GPT-4生成多模态语言-图像指令跟随数据。通过在这些生成数据上进行指令微调,我们引入了LLaVA:大型语言与视觉助手,这是一个端到端训练的多模态模型,将视觉编码器和LLM结合,实现通用的视觉和语言理解。为了促进未来在视觉指令跟随方面的研究,我们构建了两个评估基准,涵盖多样且具有挑战性的面向应用的任务。实验结果表明,LLaVA展现了令人印象深刻的多模态聊天能力,有时在未见过的图像/指令上展现出类似多模态GPT-4的行为,并在一个合成的多模态指令跟随数据集上相较GPT-4获得了85.1%的相对得分。当在科学问答任务上进行微调时,LLaVA与GPT-4的协同作用达到了92.53%的新最优准确率。我们将GPT-4生成的视觉指令微调数据、我们的模型和代码公开发布。
1 引言
人类通过视觉和语言等多个渠道与世界互动,因为每种渠道在表示和交流某些概念方面具有独特的优势,从而促进了对世界的更好理解。人工智能的核心目标之一是开发一个通用助手,该助手能够有效地遵循多模态视觉-语言指令,并与人类意图保持一致,以在真实环境中完成各种任务 [4,27,26]。为此,研究社区见证了语言增强型基础视觉模型的兴起 [27,16],这些模型在开放世界视觉理解方面具有强大能力,例如分类 [40,21,57,54,39]、目标检测 [29,62,33]、分割 [25,63,58] 和图像字幕生成 [50,28],以及视觉生成和编辑 [42,43,56,15,44,30]。我们建议读者参考《Computer Vision in the Wild》阅读列表,以获取更前沿的文献汇总 [12]。在这一研究方向中,每个任务通常由单一的大型视觉模型独立解决,而任务指令在模型设计中被隐含地考虑。此外,语言仅用于描述图像内容。虽然这使语言在将视觉信号映射到语言语义(即人类交流的通用渠道)方面发挥了重要作用,但它导致的模型通常具有固定的接口,限制了其对用户指令的交互性和适应性。
另一方面,大型语言模型(LLM)已经展示出语言可以发挥更广泛的作用,即作为通用接口,使通用助手能够明确表达各种任务指令,并通过端到端训练的神经网络助手切换到感兴趣的任务并加以解决。例如,ChatGPT [35] 和 GPT-4 [36] 最近的成功表明了对齐的 LLM 在遵循人类指令方面的强大能力,并激发了开发开源 LLM 的巨大兴趣。其中,LLaMA [49] 是一个开源 LLM,其性能可与 GPT-3 相媲美。Alpaca [48]、Vicuna [9] 和 GPT-4-LLM [38] 通过利用多种机器生成的高质量指令跟随样本来提高 LLM 的对齐能力,并报告了与专有 LLM 相比令人印象深刻的性能。然而,这些研究仍然局限于纯文本领域。
在本文中,我们提出了视觉指令微调(visual instruction-tuning),这是首次尝试将指令微调扩展到语言-图像多模态空间,为构建通用视觉助手铺平道路。特别地,我们的研究贡献如下:
- 多模态指令跟随数据。 由于缺乏视觉-语言指令跟随数据,我们提出了一种数据重构视角和流程,利用 ChatGPT/GPT-4 将图像-文本对转换为合适的指令跟随格式。
- 大型多模态模型(LMM)。 我们开发了一种大型多模态模型(LMM),通过连接 C L I P [ 40 ] \textcolor{red}{CLIP [40]} CLIP[40]的开放集视觉编码器和 Vicuna [9] 语言解码器,并在我们生成的视觉-语言指令数据上进行端到端微调。我们的实证研究验证了使用生成数据进行 LMM 指令微调的有效性,并提供了构建通用指令跟随视觉助手的实用技巧。结合 GPT-4,我们的方法在 Science QA [34] 多模态推理数据集上达到了 SOTA(最先进)水平。
- 多模态指令跟随基准测试。 我们提出了 LLaVA-Bench,该基准测试包含两个具有挑战性的子基准,涵盖了多样化的图像-指令对和详细注释。
- 开源贡献。 我们向公众开放以下资源:生成的多模态指令数据、代码库、模型检查点以及视觉聊天演示。
2 相关工作
多模态指令跟随代理
在计算机视觉领域,现有的指令跟随代理研究可大致分为两类:
- 端到端训练的模型。 这些模型针对特定研究主题进行单独探索。例如,视觉-语言导航任务 [3,19] 和 Habitat [47] 要求具身 AI 代理遵循自然语言指令,在视觉环境中执行一系列操作以完成目标。在图像编辑领域,给定输入图像和描述编辑需求的书面指令,InstructPix2Pix [6] 通过遵循人类指令来编辑图像。
- 通过 LangChain [1] / LLMs [35] 协调多个模型的系统。 例如,Visual ChatGPT [53]、X-GPT [63]、MM-REACT [55]、VisProg [18] 和 ViperGPT [46]。尽管这些方法的目标都是构建指令跟随代理,但我们的重点是开发适用于多任务的端到端训练语言-视觉多模态模型。
指令微调
在自然语言处理(NLP)领域,为了使 LLM(如 GPT-3 [7]、T5 [41]、PaLM [10]、OPT [60])能够遵循自然语言指令并完成现实任务,研究人员探索了 LLM 指令微调方法 [37,52,51],由此诞生了如 InstructGPT [37] / ChatGPT [35]、FLAN-T5 [11]、FLAN-PaLM [11] 和 OPT-IML [22] 等指令微调模型。这种简单方法可以有效提高 LLM 的零样本和少样本泛化能力。因此,将 NLP 领域的这一理念借鉴到计算机视觉领域是一个自然的选择。
更广义地说,基于基础模型的师生蒸馏思想已被应用于图像分类等其他领域 [14]。Flamingo [2] 在多模态领域可以被视为 GPT-3 级别的突破,因为它在零样本任务迁移和上下文学习方面表现出色。其他基于图像-文本对训练的 LMM 包括 BLIP-2 [28]、FROMAGe [24] 和 KOSMOS-1 [20],PaLM-E [13] 则是专为具身 AI 设计的 LMM。
基于当前“最佳”开源 LLM LLaMA,OpenFlamingo [5] 和 LLaMA-Adapter [59] 使 LLaMA 能够处理图像输入,为构建开源多模态 LLM 奠定了基础。然而,这些模型并未明确使用视觉-语言指令数据进行微调,因此在多模态任务中的表现通常不及仅依赖语言的任务。本文的目标是填补这一空白,并研究视觉指令微调的有效性。
最后,需要注意的是,视觉指令微调 与 视觉提示微调(visual prompt tuning) 是不同的。前者旨在提高模型的指令跟随能力,而后者旨在提高模型在适应新任务时的参数效率 [23]。
3 GPT辅助的视觉指令数据生成
研究社区已经见证了大量公共多模态数据(如图像-文本对)的增长,从 CC [8] 到 LAION [45] 不等。然而,在多模态指令跟随数据方面,可用的数据量仍然有限,部分原因是创建此类数据的过程耗时且在人类众包过程中定义不清。受到最近 GPT 模型在文本标注任务中取得成功的启发 [17],我们提出利用 ChatGPT/GPT-4 来收集多模态指令跟随数据,并基于
广泛存在的图像
−
文本对数据进行扩展
\textcolor{red}{广泛存在的图像-文本对数据进行扩展}
广泛存在的图像−文本对数据进行扩展。
表 1:一个指令跟随数据的示例。顶部块展示了用于提示 GPT 的上下文信息,例如标题(captions)和边界框(boxes);底部块展示了三种类型的响应。请注意,视觉图像本身并未用于提示 GPT,我们仅将其作为参考展示。
对于一张图像
X
v
X_v
Xv 及其相关的标题
X
c
X_c
Xc,一个自然的方法是创建一组问题
X
q
X_q
Xq,其目的是指示助手描述图像内容。我们使用 GPT-4 生成这样的问题列表(详见附录)。因此,将一个图像-文本对扩展为其指令跟随版本的一个简单方法是:
Human:
X
q
,
X
v
X_q, X_v
Xq,Xv <STOP>
Assistant:
X
c
X_c
Xc <STOP>
虽然这种方法构造成本较低,但这种简单的扩展版本在指令和响应的多样性以及深入推理方面存在不足。
为了解决这个问题,我们利用纯文本 GPT-4 或 ChatGPT 作为强大的教师模型(两者都仅接受文本输入),创建包含视觉内容的指令跟随数据。具体而言,为了将图像编码为可用于提示纯文本 GPT 的视觉特征,我们使用了两种符号表示方法:
- 标题(Captions):通常从多个角度描述视觉场景;
- 边界框(Bounding boxes):通常用于定位场景中的对象,每个框编码了对象的概念及其空间位置。
表 1 顶部块展示了一个示例。这种符号表示方法使我们能够将图像编码为 LLM 可识别的序列。我们使用 COCO 图像数据集 [31] 并生成三种类型的指令跟随数据,每种类型的示例在表 1 底部块中展示。对于每种类型,我们首先手动设计一些示例。这些示例是数据收集过程中唯一的人工标注,并被用作上下文学习(in-context learning)中的种子示例,以查询 GPT-4。
- 对话(Conversation):我们设计了一段对话,模拟一位用户向助手提问有关该照片的问题。答案的语气类似于助手正在“看到”图像并回答问题。所涉及的问题涵盖图像的视觉内容,包括对象类型、对象计数、对象动作、对象位置以及对象之间的相对位置。仅考虑具有明确答案的问题。详细提示见附录。
- 详细描述(Detailed description):为了提供丰富且全面的图像描述,我们创建了一组旨在引导详细描述的问题列表。我们使用 GPT-4 生成该列表(详见附录的详细提示及筛选过程)。对于每张图像,我们从列表中随机抽取一个问题,让 GPT-4 生成详细描述。
- 复杂推理(Complex reasoning):上述两种类型关注的是视觉内容本身,而本类型则进一步创建了涉及深度推理的问题。这类问题的答案通常需要遵循严格的逻辑进行逐步推理。
我们共收集了 158K(15.8 万)条独特的语言-图像指令跟随数据,其中对话数据 58K(5.8 万),详细描述数据 23K(2.3 万),复杂推理数据 77K(7.7 万)。在早期实验中,我们对比了使用 ChatGPT 和 GPT-4 生成的数据,发现 GPT-4 在指令跟随数据的质量方面始终表现更优,特别是在空间推理任务中表现突出。
4 视觉指令微调
4.1 架构
主要目标是有效地利用预训练的大语言模型和视觉模型的能力。网络架构如图1所示。我们选择Vicuna [9] 作为我们由 ϕ \phi ϕ 参数化的大语言模型 f ϕ ( ⋅ ) f_{\phi}(\cdot) fϕ(⋅),因为在公开可用的检查点中 [48, 9, 38],它在语言任务中具有最佳的指令跟随能力。 语言回复 X a \mathbf{X}_{\mathrm{a}} Xa
图 1:LLaVA 网络架构
对于输入图像 X v \mathbf{X}_{\mathrm{v}} Xv,我们考虑预训练的CLIP视觉编码器ViT-L/14 [40],它提供视觉特征 Z v = g ( X v ) \mathbf{Z}_{\mathrm{v}}=g\left(\mathbf{X}_{\mathrm{v}}\right) Zv=g(Xv)
在我们的实验中,考虑了最后一个Transformer层前后的网格特征。我们考虑使用一个简单的线性层将图像特征连接到词嵌入空间。具体来说,我们应用一个可训练的投影矩阵 W \mathbf{W} W,将 Z v \mathbf{Z}_{\mathrm{v}} Zv 转换为语言嵌入标记 H v \mathbf{H}_{\mathrm{v}} Hv,其维度与语言模型中的词嵌入空间相同:
H v = W ⋅ Z v , with Z v = g ( X v ) (1) \mathbf{H}_{\mathrm{v}}=\mathbf{W} \cdot \mathbf{Z}_{\mathrm{v}}, \text { with } \mathbf{Z}_{\mathrm{v}}=g\left(\mathbf{X}_{\mathrm{v}}\right) \tag{1} Hv=W⋅Zv, with Zv=g(Xv)(1)
因此,我们得到了一系列视觉标记 H v \mathbf{H}_{\mathrm{v}} Hv。请注意,我们简单的投影方案是轻量级的,这使我们能够快速迭代以数据为中心的实验。也可以考虑更复杂的方案来连接图像和语言表示,例如Flamingo [2] 中的 门控交叉注意力 \textcolor{red}{门控交叉注意力} 门控交叉注意力和BLIP-2 [28] 中的Q-former。我们将探索可能更有效和 复杂的 L L a V A 架构设计留作未来的工作 \textcolor{red}{复杂的LLaVA架构设计留作未来的工作} 复杂的LLaVA架构设计留作未来的工作。
4.2 训练
对于每幅图像 X v \mathbf{X}_{\mathrm{v}} Xv, 我们生成多轮对话数据 \textcolor{red}{我们生成多轮对话数据} 我们生成多轮对话数据 ( X q 1 , X a 1 , ⋯ , X q T , X a T ) \left(\mathbf{X}_{\mathrm{q}}^{1}, \mathbf{X}_{\mathrm{a}}^{1}, \cdots, \mathbf{X}_{\mathrm{q}}^{T}, \mathbf{X}_{\mathrm{a}}^{T}\right) (Xq1,Xa1,⋯,XqT,XaT),其中 T T T 是总轮数。我们将它们组织成一个序列,将所有答案视为助手的回复,并且第 t t t 轮的指令 X instruct t \mathbf{X}_{\text {instruct }}^{t} Xinstruct t 为:
X instruct t = { 随机选择 [ X q 1 , X v ] 或 [ X v , X q 1 ] , 第一轮 t = 1 X q t , 其余轮次 t > 1 (2) \mathbf{X}_{\text {instruct }}^{t}=\left\{\begin{array}{lr} \text { 随机选择 }\left[\mathbf{X}_{\mathrm{q}}^{1}, \mathbf{X}_{\mathrm{v}}\right] \text { 或 }\left[\mathbf{X}_{\mathrm{v}}, \mathbf{X}_{\mathrm{q}}^{1}\right], \text { 第一轮 } t=1\\ \mathbf{X}_{\mathrm{q}}^{t}, \text { 其余轮次 } t>1 \end{array}\right. \tag{2} Xinstruct t={ 随机选择 [Xq1,Xv] 或 [Xv,Xq1], 第一轮 t=1Xqt, 其余轮次 t>1(2)
这就产生了表2所示的多模态指令跟随序列的统一格式。我们使用大语言模型原始的自回归训练目标,对大语言模型在预测标记上进行指令微调。 具体来说,对于长度为 L L L 的序列,我们通过以下方式计算目标答案 X a \mathbf{X}_{\mathrm{a}} Xa 的概率: p ( X a ∣ X v , X instruct ) = ∏ i = 1 L p θ ( x i ∣ X v , X instruct , < i , X a , < i ) (3) p\left(\mathbf{X}_{\mathrm{a}} \mid \mathbf{X}_{\mathrm{v}}, \mathbf{X}_{\text {instruct }}\right)=\prod_{i=1}^{L} p_{\boldsymbol{\theta}}\left(x_{i} \mid \mathbf{X}_{\mathrm{v}}, \mathbf{X}_{\text {instruct },<i}, \mathbf{X}_{\mathrm{a},<i}\right) \tag{3} p(Xa∣Xv,Xinstruct )=i=1∏Lpθ(xi∣Xv,Xinstruct ,<i,Xa,<i)(3)
表2:用于训练模型的输入序列。这里仅展示了两个对话轮次;实际上,轮数会根据指令跟随数据而有所不同。在我们当前的实现中,我们遵循Vicuna-v0 [9] 来设置系统消息 X system-message \mathbf{X}_{\text {system-message }} Xsystem-message ,并且我们设置 <STOP> = ###。模型被训练来预测助手的答案以及在哪里停止,因此在自回归模型中仅使用绿色的序列/标记来计算损失。
其中
θ
\boldsymbol{\theta}
θ 是可训练参数,
X
instruct
,
<
i
\mathbf{X}_{\text {instruct },<i}
Xinstruct ,<i 和
X
a
,
<
i
\mathbf{X}_{\mathrm{a},<i}
Xa,<i 分别是在当前预测标记
x
i
x_{i}
xi 之前所有轮次中的指令和答案标记。预测标记的示例如表2所示。对于公式 (3) 中的条件,我们明确添加
X
v
\mathbf{X}_{\mathrm{v}}
Xv 以强调所有答案都以图像为基础这一事实,并且为了提高可读性,我们省略了
X
system-message
\mathbf{X}_{\text {system-message }}
Xsystem-message 和所有先前的
感悟: \textcolor{red}{感悟:} 感悟:
- 代码里面对应的数据扩展是如何设置的,这是复现需要解决的问题之一。 \textcolor{red}{代码里面对应的数据扩展是如何设置的,这是复现需要解决的问题之一。} 代码里面对应的数据扩展是如何设置的,这是复现需要解决的问题之一。
- X a 具体是什么? \textcolor{red}{X_a 具体是什么?} Xa具体是什么?
- 视觉标记 H v 这里使用的是简答的线性模型,可以采用 M a m b a 等深度学习层? \textcolor{red}{视觉标记H_v 这里使用的是简答的线性模型,可以采用Mamba等深度学习层?} 视觉标记Hv这里使用的是简答的线性模型,可以采用Mamba等深度学习层?
- 公式( 3 )是如何在代码中实现的? \textcolor{red}{公式(3)是如何在代码中实现的?} 公式(3)是如何在代码中实现的?
LLaVA 训练采用两阶段指令微调方案:
- 阶段1:特征对齐预训练:
为了在概念覆盖范围和训练效率之间取得平衡,我们将CC3M过滤为595,000个图像-文本对。过滤过程的详细信息请见附录。这些对使用第3节中描述的简单扩展方法转换为指令跟随数据。每个样本可以被视为单轮对话。为了构建公式 (2) 中的输入 X instruct \mathbf{X}_{\text {instruct }} Xinstruct ,对于一幅图像 X v \mathbf{X}_{\mathrm{v}} Xv,随机抽取一个问题 X q \mathbf{X}_{\mathrm{q}} Xq,这是一个语言指令,要求助手简要描述图像。真实的预测答案 X a \mathbf{X}_{\mathrm{a}} Xa 是原始字幕。在训练中,我们保持视觉编码器和大语言模型的权重冻结,并且仅使用可训练参数 θ = W \boldsymbol{\theta}=\mathbf{W} θ=W(投影矩阵)来最大化公式 (3) 的可能性。通过这种方式,图像特征 H v \mathbf{H}_{\mathrm{v}} Hv 可以与预训练的大语言模型词嵌入对齐。这个阶段可以理解为为冻结的大语言模型训练一个兼容的视觉标记器。
- 阶段2:端到端微调:
我们始终保持视觉编码器的权重冻结,并继续更新LLaVA中投影层的预训练权重和大语言模型的权重;即,公式 (3) 中的可训练参数是
θ
=
{
W
,
ϕ
}
\boldsymbol{\theta}=\{\mathbf{W}, \boldsymbol{\phi}\}
θ={W,ϕ}。我们考虑两种特定的用例场景:
–多模态聊天机器人:我们通过在第3节中的158,000个语言-图像指令跟随数据上进行微调,开发了一个聊天机器人。在三种类型的回复中,对话是多轮的,而另外两种是单轮的。在训练中对它们进行均匀采样。
– 科学问答(Science QA):
我们在ScienceQA基准 [34] 上研究我们的方法,这是第一个大规模的多模态科学问题数据集,用详细的讲解和解释对答案进行了注释。每个问题都以自然语言或图像的形式提供了一个上下文。助手以自然语言提供推理过程,并在多个选项中选择答案。对于公式 (2) 中的训练,我们将数据组织成单轮对话,将问题和上下文作为 X instruct \mathbf{X}_{\text {instruct }} Xinstruct ,将推理和答案作为 X a \mathbf{X}_{\mathrm{a}} Xa。
5 实验
我们通过两个主要的实验设置来评估 LLaVA 在指令跟随和视觉推理能力方面的表现:多模态聊天机器人和 ScienceQA 数据集。所有模型的训练均使用 8 × A100 GPU,并遵循 Vicuna 的超参数 [9]。我们在过滤后的 CC-595K 子集上进行 1 轮预训练,学习率为 2e-3,批量大小为 128。随后,在 LLaVA-Instruct-158K 数据集上进行 3 轮微调,学习率为 2e-5,批量大小为 32。更多训练细节请参见附录。
5.1 多模态聊天机器人
我们开发了一个聊天机器人演示,以展示 LLaVA 在图像理解和对话方面的能力,并研究其消化视觉输入和执行指令的能力。我们首先使用 GPT-4 原始论文 [36] 中的示例(见表 3,更多示例见附录),这些示例要求深入理解图像。为了进行对比,我们引用了 GPT-4 多模态版本的提示和回复,并查询 BLIP-2 和 OpenFlamingo 模型的检查点,以获取它们的回复。
视觉输入示例:极限熨烫(Extreme Ironing)
用户输入:
“这张图片有什么不寻常的地方?”
LLaVA:
“这张图片的不寻常之处在于,一个男人正在一辆面包车或小货车的后部熨烫衣物。这并不是一个典型的熨烫场所,人们通常会在家中、使用普通的熨衣板熨烫衣物。该场景的特殊之处在于,它涉及在车辆上搭建的临时熨烫装置,这既不安全,也不寻常。此外,该男子如何在如此不稳定的环境中保持平衡和稳定也是一个值得注意的问题。”
用户输入:
“这张图片发生了什么?”
LLaVA:
“图片展示了一名男子站在一辆黄色 SUV 的顶部,位于繁忙的城市街道上。他手持一把便携式梯子,似乎正在站在车上熨烫衣物。周围有其他汽车、交通信号灯和消防栓。此外,附近还有两个人,一个靠近站在车上的男子,另一个稍远。由于该男子选择在移动的汽车上熨衣服,这一不寻常的行为吸引了周围的注意力。整个城市街道充满了活跃的氛围,使这个场景更加独特。”
用户输入:
“这张图片有什么不寻常的地方?”
GPT-4 [36]:
“这张图片的不寻常之处在于,一个男子正在一辆移动的出租车顶部的熨衣板上熨烫衣物。”
BLIP-2:
“一个男子坐在一辆黄色出租车的后部。”
OpenFlamingo:
“这个男子正在汽车引擎盖上晾晒衣服。”
(表 3:来自 GPT-4 论文 [36] 的示例提示,用于比较视觉推理和聊天能力。与 BLIP-2 [28] 和 OpenFlamingo [5] 相比,LLaVA 能够准确地跟随用户指令,而不仅仅是描述场景。LLaVA 提供的信息比 GPT-4 更全面。即使仅仅被要求描述图像,LLaVA 也能识别出图像的异常之处。)
令人惊讶的是,尽管 LLaVA 仅使用了一个包含约 8 万张独特图像的多模态指令跟随数据集进行训练,但在这些示例中,它仍然表现出与多模态 GPT-4 类似的推理能力。需要注意的是,这些图像对 LLaVA 来说是“域外”(out-of-domain)的,但它仍然能够理解场景并遵循问题指令提供合理的回答。相比之下,BLIP-2 和 OpenFlamingo 主要关注描述图像,而不是按照用户指令回答问题。
定量评估
为了系统地评估 LLaVA 的表现,我们提出了一种定量度量标准,用于衡量模型在多模态数据上的指令跟随能力。受 [9] 启发,我们利用 GPT-4 来评估生成的回复质量。具体而言,我们创建包含“图像 + 真实文本描述 + 问题”的三元组,候选模型(如 LLaVA)基于问题和图像预测答案。为了提供理论上的近似上限,我们使用仅文本的 GPT-4 生成基准答案。然后,我们将问题、视觉信息(以文本描述的形式)和两个助手(LLaVA 和 GPT-4)的生成回复输入 GPT-4 评测器。评测器依据回复的有用性、相关性、准确性和细节程度进行评分,分数范围为 1-10,分数越高表示整体表现越好。评测器还会提供详细的解释,以便我们更好地理解评估结果。
表 4:LLaVA-Bench(COCO)上不同训练数据的消融实验。我们报告相对于仅文本 GPT-4 模型的相对得分,该模型使用真实的图像描述和边界框作为视觉输入。我们将 GPT-4 的答案与我们模型的输出和仅文本 GPT-4 的答案进行对比,并让 GPT-4 在两者的回答之间进行比较并给出评分和解释。
表 5:在 LLaVA-Bench(In-the-Wild)上的指令跟随能力比较。结果以均值 ± 标准差的形式报告。对于前三行,我们报告了三次推理运行的结果。LLaVA 的表现明显优于其他模型。对于给定的一组 LLaVA 解码序列,我们通过询问 GPT-4 三次进行评估;GPT-4 给出了稳定一致的评估。
LLaVA-Bench (COCO)
在 COCO-Val-2014 数据集中随机选取 30 张图像,并为每张图像生成三种类型的问题(对话、详细描述、复杂推理),共 90 个问题。实验结果见表 4。主要发现包括:
- 通过指令微调,模型的指令跟随能力显著提升 50+ 分。
- 添加少量的详细描述和复杂推理问题,可使整体能力提升 7 分,同时也提高了对话类问题的表现。
- 综合三种类型数据的训练效果最佳,最终得分达到 85.1%。
LLaVA-Bench (In-the-Wild)
该基准测试收集了 24 张多样化的图像,并配有 60 个问题,包括室内和室外场景、网络迷因、绘画、素描等,每张图像均配备了详细的人工标注和精选问题。LLaVA 在该基准测试中的表现明显优于 BLIP-2 (+29%) 和 OpenFlamingo (+48%)(见表 5)。相比于仅使用文本的 GPT-4(访问真实标签),LLaVA 在复杂推理问题上达到了 81.7% 的表现,总体得分为 67.3%。
以下是您提供内容的翻译:
LLaVA-Bench (In-the-Wild)中的挑战性示例:
- ICHIRAN拉面:这是一张聚焦的照片,展示了ICHIRAN餐厅的一餐。中间摆放着一碗叉烧拉面,碗里有一勺,拉面上加了辣椒酱、切碎的葱花,并且配有两片叉烧。筷子放在碗的右侧,仍然包裹在纸中,还没有打开。拉面左侧有一片海苔。上方从左到右依次是:一碗橙色香料(可能是大蒜酱)、一盘带有切碎葱花的熏味炖猪肉和一杯抹茶绿茶。
- 填满的冰箱:冰箱里塞满了各种食物。在左侧部分,前面有一盒草莓,上面放着一小袋婴儿胡萝卜。后面有一堆酱料容器。冰箱中间部分,前面有一个绿色塑料盒,上面放着一个未标明的塑料袋。后面有一盒牛奶。在冰箱右侧部分,前面有一个蓝莓盒,上面堆着三杯酸奶。大瓶酸奶是Fage无脂酸奶,较小的杯装是Fage蓝莓味酸奶,另一个小杯子的品牌和口味未标明。冰箱后面还有一个装有未知内容的容器。
问题1:
- 餐厅名称是什么?
- 蓝莓味酸奶的品牌是什么?
问题2:
- 请详细描述这张照片。
- 冰箱里有草莓味酸奶吗?
5.2.ScienceQA
ScienceQA [34] 包含21k个多模态多项选择问题,涵盖了3个学科、26个主题、127个类别和379项技能。数据集分为训练、验证和测试集,分别包含12726、4241和4241个示例。我们考虑了两种代表性方法,包括GPT-3.5模型(text-davinci-002)以及是否使用链式思维(CoT)、LLaMA-Adapter [59] 和多模态链式思维(MM-CoT)[61],后者是当前在该数据集上的SoTA方法。有关更多基准数据,请参见[34]。
表7报告了结果。对于LLaVA,我们使用了CLIP视觉编码器的倒数第二层特征,让模型首先预测推理过程然后再给出答案,训练了12个epoch。它的准确率为90.92%,接近SoTA的91.68%。为了探索LLMs的极限,我们还使用2-shot上下文学习对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在处理带有图像作为上下文的问题时,改善了模型的整体表现。这是因为其中一些问题实际上并不需要图像上下文就能得到正确答案。GPT-4裁判能够识别这种情况,并纠正LLaVA的一些错误。请参见附录。
表8:设计选择消融实验(%)。 最佳变体与其他变体的差异以红色文本报告。
这是第一次将GPT-4用于模型集成。我们希望这一发现能够鼓励未来的研究探索更有效的方法,将LLMs用于模型集成。
消融实验:
我们在ScienceQA上对一些设计选择进行了消融实验,结果见表8。
(i) 视觉特征:我们尝试使用CLIP视觉编码器的最后一层特征,结果为89.96%,比倒数第二层低了0.96%。我们假设这是因为CLIP的最后一层特征可能更侧重于图像的全局和抽象属性,而倒数第二层可能更关注有助于理解特定图像细节的局部属性。
(ii) 链式思维:为了决定模型预测过程中答案和推理的顺序,我们运行了两种变体,观察到答案优先的模式在12个epoch中报告了89.77%的最佳结果,而推理优先的模式能够在6个epoch中迅速达到89.77%的准确率,但经过更多训练后没有进一步提高。我们得出结论,类似CoT的推理优先策略能显著改善收敛速度,但对最终表现的贡献相对较小。
(iii) 预训练:我们跳过预训练,直接在ScienceQA上从头开始训练,结果准确率降至85.81%。5.11%的绝对下降表明预训练阶段在对齐多模态特征并保留丰富的预训练知识方面的重要性。
(iv) 模型规模:我们保持所有配置与我们最佳的13B模型相同,并训练了一个7B模型,结果为89.84%的准确率,比90.92%低了1.08%,这表明模型规模的重要性。
6 结论
本文展示了视觉指令调优的有效性。我们提出了一个自动化流程来创建语言-图像指令跟随数据,基于这些数据我们训练了LLaVA,一个多模态模型,用于按照人类意图完成视觉任务。当在ScienceQA上进行微调时,它达到了新的SoTA准确率;当在多模态聊天数据上进行微调时,展现出了卓越的视觉聊天能力。此外,我们还提出了第一个基准,研究多模态指令跟随能力。本文是视觉指令调优的初步探索,主要聚焦于现实生活中的任务。如需LLaVA在学术基准上的更多定量结果,请参考在视觉指令调优下改进的基准[32]。我们希望我们的工作能够激发未来研究,构建更强大的多模态模型。