文章目录
- LLaVA
- 一. 简介
- 1.1. 摘要
- 1.2. 引言
- 二. 相关工作
- 三. 基于GPT辅助的视觉指令数据生成
- 四. Visual Instruction Tuning
- 4.1 网络结构
- 4.2 训练
- 5 实验
- 5.1 多模态聊天机器人
- 5.2 ScienceQA
- MiniGPT4
- 一. 简介
- 1.1 Overview
- 二. 方法
- 2.1 网络结构图
- 2.2 第一阶段训练
- 2.3 高质量对齐数据集(small)
- 2.4 二阶段finetune
- 三. 局限性
LLaVA
一. 简介
题目: Visual Instruction Tuning
机构:微软
论文: https://arxiv.org/pdf/2304.08485.pdf
代码:https://github.com/haotian-liu/LLaVA
任务: 视觉指令微调(具备对话,推理的能力,rather than 图像描述)
特点: 利用GPT4做数据生成,以及评测,视觉projection不想BLIP2一样是Q-Former,而是一个简单的映射层
方法: LLM选择LLaMA,然后做视觉指令微调
前置相关工作:GPT4, LLaMA, BLIP2, OpenFlamingo
同期相似性工作:InstructBLIP
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轮的指令就形如:
这样就能够像下面表格所展现的那样,以一种统一的方式得到多模态遵循指令序列。我们用LLM来进行对预测的tokens进行指令微调,利用它原始的自回归训练目标函数。
具体而言,对于一个长度为L的序列,我们计算生成的目标answer X a X_a Xa的概率:
其中 θ \theta θ是训练的参数, X i n s t r u c t , < i X_{instruct, <i} Xinstruct,<i以及$X_{a, <i}是在当前token x i x_i xi之前的所有指令以及回答tokens。对于上面公式中的条件,我们显式地添加了 X v X_v Xv来强调所有answer都是基于对应图像的,为了可读性,我们跳过了 X s y s t e m − m e s s a g e X_{system-message} Xsystem−message以及之前的
- 第一阶段:为了特征对齐的预训练。为了在概念的覆盖率以及训练的效率之间达到平衡,我们将CC3M中的图文对精简到595K。附录有关于这个filter的流程。这些图文对,用上面提到的方式转化为指令遵循的数据,每一个样本被视作一次单轮对话。为了构建输入的指令 X i n s t r u c t X_{instruct} Xinstruct,对于一张图像 X v X_v Xv而言,它的question X q X_q Xq是随机采样自上面的表格模版。在训练的过程中,固定住visual encoder以及LLM的权重,只训练更新projection matrix的权重,这个过程可以让图像的特征 H v H_v Hv更好地与LLM的词向量特征进行对齐。可以将这个阶段的训练看作是为了这个固定的LLM训练一个与之适配的视觉tokenizer。
- 第二阶段:端到端的fine-tuning。我们将视觉encoder的权重进行固定住,持续更新LLM以及projection layer的权重。并且在多模态对话机器人以及science QA两个场景下进行实验。
5 实验
5.1 多模态聊天机器人
我们设计了一个聊天机器人的demo,用于展示LLaVA的图像理解能力以及对话能力。并且用了GPT4论文中的两个例子来进行对比,用GPT4中用的prompts来引导BLIP2, OpenFlamingo模型来获取得到他们的答复。
尽管LLaVA只用了80K的图像数据来进行指令微调,但是在上面的两个例子展现了与GPT4相当的推理能力。(但BLIP2, OpenFlamingo可能就更注重于描述这张图像)
从定量的角度上来讲,我们采用与Vicuna类似的方式来评估模型答复的质量,即利用GPT4来评估答复的质量(根据有用性,相关性,准确性,详细度等等),给一个1-10分的打分,并且让GPT4给出详细的解释。(测试用的图像是coco val中的30张图像,并且用对话,详细描述,复杂推理三种类型的问题来进行提问)。
(下面的表格也验证了不同类型的遵循指令数据对最终各个任务的影响)
5.2 ScienceQA
ScienceQA包含21K多模态多选问题,包含了3个学科,26个话题,127个类别,379个类别的范畴。(训练验证测试划分为:12726, 4241, and 4241)对比了两种代表性的方法,包括GPT-3.5(text-davinci-002)(with/without chain-of-thoughts (CoT),LLaMA-Adapter)以及多模态chain-of-thoughts (MM-CoT)。
结果如下表所示:
MiniGPT4
一. 简介
题目: MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models
机构:阿卜杜拉国王科技大学
论文: https://arxiv.org/pdf/2304.10592.pdf
代码:https://github.com/Vision-CAIR/MiniGPT-4
任务: 利用LLM处理多模态问题,对标GPT4
特点: 利用BLIP2的backbone以及Q-former,利用简单的映射层,结合Vicuna LLM处理视觉信号;数据量500w,A100资源以及时间要求没那么高
方法: LLM选择Vicuna
前置相关工作:BLIP2, Vicuna
时间:2023.04
同期相似性工作:LLaVA
1.1 Overview
GPT4多模态能力太强了,但是又不开源,对于这样一个神秘的大杀器,我们认为它在多模态领域这么强的泛化能力的原因是利用了LLM,因此我们用Vicuna充当LLM,然后用一个简单的映射层,来联系起视觉encoder与LLM,在实验的过程中我们发现,单纯用对齐的文本图像进行训练,经常会出现重复/碎片化的句子这样的现象,因此我们采用了一种两阶段训练的方式,在第二阶段用少量高质量的数据进行对话的微调,值得注意的是,我们的方法对计算资源以及数据的要求没有那么高,只用了500w图文数据。
特点:简单的projection layer,踩在BLIP2以及Vicuna的肩膀上,10 hours on 4 A100 GPUs. 3,500 high-quality aligned image-text pairs来二阶段finetune
二. 方法
2.1 网络结构图
整体网络比较简单,就是用BLIP -> projection layer -> Vicuna
2.2 第一阶段训练
We use a combined dataset of Concep- tual Caption [5, 27], SBU [20] and LAION [26] to train our model. Our model undergoes 20,000 training steps with a batch size of 256, covering approximately 5 million image-text pairs. The entire process takes about 10 hours to complete, utilizing 4 A100 (80GB) GPUs.
总结一下,就是数据集用了三个,但是训练的steps比较少,所以见过的图文对就是500w,大约4张A100 (80G)训练10个小时就是OK。
第一阶段存在的问题:
重复/碎片的单词/句子输出
2.3 高质量对齐数据集(small)
1: 利用如下的模板,去让第一阶段的模型,去对图像作出尽可能详细的文本描述
###Human: Describe this image in detail. Give as many details as possible. Say everything you see. ###Assistant:
其中,表示线性层之后图像的特征,如果文本描述的句子长度<80,则再加入另一句prompt
###Human: Continue ###Assistant:
从 Conceptual Caption dataset 随机选择5K张图像,用上面的步骤对每张图像得到详细的文本描述。
2: 利用GPT4来对上面的句子,做一些后处理refine,prompts如下,主要是修复重复/剔除无意义字符/非英文句子/补全句子等
Fix the error in the given paragraph. Remove any repeating sentences, meaningless characters, not English sentences, and so on. Remove unnecessary repetition. Rewrite any incomplete sentences. Return directly the results without explanation. Return directly the input paragraph if it is already correct without explanation.
最终得到3500条高质量的文本对,用于第二阶段的finetune
2.4 二阶段finetune
用如下的模板,进行3.5k数据的finetune
###Human: ###Assistant:
最终只用400个训练steps,batchsize = 12,单卡A100大概需要7分钟
三. 局限性
- 语言幻觉
- Todo: training the model with more high-quality, aligned image-text pairs, or aligning with more advanced LLMs in the future.
- 不足的感知能力
- 文本识别能力弱,空间信息辨别能力弱
- more well-aligned and rich data
- a stronger visual perception model
- Training only one projection layer might not provide enough capacity to learn extensive visual-text alignment.