文章目录
- LLaVA
- 一. 简介
- 1.1. 摘要
- 1.2. 引言
- 二. 相关工作
- 三. 基于GPT辅助的视觉指令数据生成
- 四. Visual Instruction Tuning
- 4.1 网络结构
- 4.2 训练
LLaVA
一. 简介
题目: Visual Instruction Tuning
机构:微软
论文: https://arxiv.org/pdf/2304.08485.pdf
代码:https://github.com/haotian-liu/LLaVA
任务:
特点:
方法:
前置相关工作:
1.1. 摘要
用机器instruction-following的数据来instruct tuning LLMs已经在NLP领域被证明能够提升模型在未见任务上的zero shot能力,但是这个想法在多模态领域极少被探索。在这篇文章中,第一个提出了利用GPT4生成多模态language-image instruction-following数据。通过在这样的数据上进行instruct tuning,本文提出了LLaVA: Large Language and Vision Assistant,一个端到端训练的大规模多模态模型,其将视觉encoder与LLM连接起来实现更加广义上的视觉语言理解。我们初步的实验表明,LLaVA展现了令人印象深刻的多模态对话能力,有时保留了多模态GPT4在未见过的图像/指令下的一些行为,在一个构建的多模态指令数据集上,取得了相比于GPT4 85.1%的相对分数。当在science QA数据集上面进行finetune时,LLaVA与GPT4进行协同时,能够取得92.53%的SOTA结果。GPT4生成的视觉指令微调数据,模型,以及代码我们都进行了开源。
1.2. 引言
人类通过许多渠道来与世界进行交互,比如视觉以及语言,每一种渠道在表征以及交流某个特定的世界概念时都有属于它独特的优势,因此能够促进人类对世界一个更好的理解。人工智能领域一个核心的愿景就是希望能够建立起一个通用目的的助手,它能够很有效地遵循多模态视觉语言的指令,理解人类的意图并且完成各种各样的现实世界的任务。
到目前为止,人工智能社区已经见证了致力于建立语言增强的视觉模型,让它具备开放世界的强大视觉理解能力,比如分类,检测,分割以及caption,视觉生成以及编辑。我们推荐读者在**Computer Vision in the Wild**这个阅读清单里面去了解更多最新的文献汇总。在这一系列的工作当中,每一个任务都被一个独立的视觉大模型所解决,模型在设计的时候也显式地考虑了任务的指令,除此之外,语言仅仅用来描述以及刻画图像的内容。尽管这使得语言在将视觉信号映射到语言意义上扮演了一个重要的角色,即:一个人类交流的公共渠道,但是它也使得这些视觉模型往往只能拥有一个固定的接口,这样的接口对用户的指令往往在交互性以及适用性上都是受限的。
LLM,另一方面,以及证明语言能够发挥更大的作用(play a wider role),一个通用目的的统一接口,各种各样的任务指令都能够被明确地(explicitly)用语言表征以及指引端到端训练的神经网络助手来进行任务的转换,并且处理。比如,最近取得成功的ChatGPT以及GPT4已经表现出LLMs能够对齐人类指令的能力,这也激起了建立开源的LLMs的极大的兴趣。比如LLaMA就是其中的一个开源模型,它能够对标GPT3的能力。Alpaca, Vicuna, GPT4-LLM使用了各种各样机器生成的高质量的遵循指令(instruction-following)样本,用以提升LLM的对齐能力,与专有的(proprietary)LLMs相比,取得了令人印象深刻的表现。但,这一系列的工作都仅仅是基于文本的。
在这篇文章当中,我们提出了视觉指令微调(visual instruction tuning),这是第一次尝试将文本领域的instruction-tuning拓展到多模态领域,旨在为建立通用目的的视觉助手铺平道路。具体而言,我们的文章做了如下的贡献:
- 多模态遵循指令数据(multimodal instruction-following data). 一个关键的挑战是缺乏视觉语言遵循指令的数据,我们提出了一个数据改造(data reformation)视角以及流水线(pipeline),利用chatgpt/GPT4来将图文对转化成合适的遵循指令格式。
- 大多模态模型. 我们建立起了一个大的多模态模型(LMM),通过连接开放域的视觉encoder CLIP以及语言的coder LLaMA,并在构建的基于指令的视觉语言数据上进行端到端finetune。我们的实证研究(empirical study)验证了用生成的数据来进行LMM instruction tuning的有效性。并且提出了切实可行的一些建议用于建立一个通用目的的遵循指令的视觉代理。在GPT4的加持之下,我们在多模态推理数据集Science QA上取得了SOTA的结果。
- 开源. 我们开放了数据集,代码(数据构建,模型训练),模型文件以及视觉对话的demo.
二. 相关工作
Multimodal Instruction-following Agents. 在计算机视觉领域,现有的致力于建立遵循指令的代理(agents)的工作可以从广义的角度上划分为两种类型:
- 端到端训练的模型.(在特定的研究领域分别被探索),比如,在视觉语言导航任务以及Habitat需要一个embodied AI agent 来遵循自然语言指令,并且执行一系列的动作来在视觉环境中完成目标。在视觉编辑领域,给定一张输入图像以及一条告诉agent如何去做的指令,InstructPix2Pix通过人类的指令来编辑图像。
- 通过LangChain/ LLMs 来协调各种模型系统。比如Visual ChatGPT, X-GPT, MM-REACT. 尽管在建立遵循指令的代理系统上共享一颗北极星,我们致力于建立一个端到端训练的多模态模型来处理各种各样的任务。
Instruction Tuning. 在自然语言处理领域,为了让LLMs(诸如GPT-3, T5, PaLM, OPT)能够遵循自然语言指令并且完成现实世界的任务,研究者已经探索了让LLM进行instruction-tuning的方法,引领了instruction-tuned的conterparts,诸如InstructGPT/ChatGPT,FlanT5,FlanPaLM,OPT-IML。证明了这种简单的方式能够让LLMs有效提升它的zero-shot和few-shot的泛化能力。那么,自然而然,我们可以将NLP的这种观点借鉴到CV领域来。Flamingo可以视作多模态领域的GPT3高光时刻,因为它具备强大的zero-shot迁移能力和上下文学习能力。其他基于图文对训练得到的LMMs,有BLIP2, FROMAGe, KOSMOS-1这些工作。PaLM-E是一个embodied AI的LMM。基于最近的最好开源LLM模型LLaMA,OpenFlamingo和LLaMA-Adapter这些开源工作都致力于让LLaMA使用图像输入,为构建一个开源的多模态LLMs铺平道路 。尽管有希望的任务迁移泛化能力得以证明,但是这些模型都并不是显式地利用instruction-tuned的视觉语言数据来训练得到的。在这篇文章,我们旨在拉近这条鸿沟,并且研究它的有效性。这儿声明一下,visual instruction tuning不同于visual prompt tunning,前者旨在提升模型的遵循指令的能力,后者旨在提升模型在域适应的参数有效性。
三. 基于GPT辅助的视觉指令数据生成
多模态领域已经见证了公开的图文多模态数据大量井喷的现象,比如CC和LAION数据集都被提出。但是,当涉及多模态遵循指令数据时,有用的资源优势极其有限的,部分原因可能是当众筹人力来进行标注时,这个过程是极其耗时耗力的并且并不是一个很好被定义的任务。受到了最近GPT模型在文本标注任务上成功的启发,我们提出了利用chatGPT/GPT4来收集遵循指令的数据(基于现有广泛存在的图像对数据)。
对于一张图像
X
v
X_v
Xv和它的相应文本描述
X
c
X_c
Xc,天然可以创造一系列的问题
X
q
X_q
Xq来指导这个助手来刻画这张图像的内容。我们提示 GPT-4 并在附录的表 8 中整理了这样的问题列表。因此,一个简单的方式来将现有的图文对扩充为遵循指令数据版本:Human:X_q X_v
为了缓解这个问题,我们利用了仅基于语言的GPT-4以及ChatGPT来作为强大的教师(两者都仅将文本作为输入),来创建基于视觉内容的遵循指令的数据。具体而言,为了让图像编码为text-only GPT的prompt,我们使用了两种方式的符号表征(1)captions: 通常从不同角度来刻画视觉内容
(2)bounding boxes: 通常定位场景里面的目标,每一个框都能编码目标的类别和空间位置,一个代表性的例子如下:
有个疑问是:如果GPT看不到视觉的图像的话,岂不是会一本正经胡说八道?(与图像内容无关)
这样的符号表征能够让我们编码图像为LLM可识别的序列,我们使用COCO图像,然后生成了三种类型的遵循指令数据。每一种类型的一个范例都可以在上图上看到,对于每一种类型,我们人工定义了几个范例。它们是数据收集过程中唯一用到的人工标注,并且用于query GPT4上下文学习的种子样例。
- 对话. 我们设计了设计了助手和人之间对图像提问的对话,这些答案的口气就像是助手看见了这张图像并且回到了这个问题。一些列各种各样关于这张图像的视觉内容的问题都会被问到,包括目标的类别,目标的数量,目标的动作,目标的位置,目标之间的相对关系。只有确定性答案的问题才会被考虑,具体的prompt可以参见下表。
- 详细描述. 为了包含对一张图像充分全面的描述,我们创造了一系列的问题,我们提示GPT4并且策划了如表9所示的列表。每一张图像,我们随机采样了从这个列表里面采样了一个问题,并且让GPT4生成尽可能详细的描述。
- 复杂推理. 上面两种类型主要关注的是视觉内容本身,在此基础之上,我们进一步创造了深度推理的问题,答案通常需要遵循严格的逻辑逐步推理。
最终我们收集了158K的遵循指令的数据集,其中58K是对话的,23K是详细描述的,77K是复杂推理的。我们在早期的实验中,对chatGPT和GPT4做了消融实验,发现GPT4能够更稳定地提供高质量的指令遵循数据,比如关于空间推理的。
四. Visual Instruction Tuning
4.1 网络结构
我们基本(primary)的目标就是利用现有训练好的LLM和视觉encoder的能力。网络的框架图如下所示,我们采用了LLaMA作为我们的LLM
f
ϕ
(
.
)
f_{\phi}(.)
fϕ(.),因为它的有效性已经被好多个开源的纯语言的instruction-tuning的工作所证明,比如alpaca, Vicuna, Instruction tuning with GPT-4。
对于一张输入的图像
X
v
X_v
Xv,我们采用预训练好的CLIP ViT-L/14作为视觉encoder, 其提供视觉特征
Z
v
=
g
(
X
v
)
Z_v = g(X_v)
Zv=g(Xv)。在最后一个transformer层之前和之后的格子特征都有在我们的实验中被用到。我们采用了一个简单的线性层来将视觉特征映射到词向量空间。具体而言,我们采用了一个可以训练的映射矩阵
W
W
W来将
Z
v
Z_v
Zv转化为词向量token
H
q
H_q
Hq,这样就能与LLM中的词向量拥有相同的特征为度。
这样我们就有了一系列的视觉tokens H v H_v Hv. 值得注意的一点是这样一种简单的映射方式是轻量且低成本的,这样允许我们能够快速的进行以数据为中心的系列实验,更多复杂的设计来连接图像和语言表征后续也会被考虑,比如Flamingo中的gated cross-attention以及BLIP2种的Q-former,SAM中的目标级别的特征。我们将这些留在未来的工作,进行探索。
4.2 训练
对于每一张图像 X v X_v Xv,我们生成了多轮的对话数据 ( X q 1 , X a 1 . . . , X q T , X a T ) (X_q^1,X_a^1...,X_q^T,X_a^T) (Xq1,Xa1...,XqT,XaT),其中T是总共的轮数,我们将其组织成序列,将所有的answer视作助手的答复,那么第t轮的指令就形如: