1 Prerequisites
1.1 Training Methods
训练方法通常分为三种:提示工程、微调和预训练。
1.1.1 Prompt Engineering
不需要重新训练模型,节省成本。
1.1.2 Fine-tuning
微调和预训练的代码基本相同,但是计算量相对小很多。
1.1.3 Pre-training
大规模数据集上训练,得到的是一个未加调整的 Baseline。
1.2 Image Processing Methods
图像特征处理方法通常分为两种:“组件级”和“框架级”。
1.2.1 Component Level
Projection 组件
- Linear Projection 是一种降维的方法,计算量简单,可以放在提取的高维特征之后,使高维的特征向量转变为低维向量。
CNN 组件
- ResNet 全称 Residual Network,是一个预训练的 CNN,残差连接解决了深层神经网络中的梯度消失问题。ResNet 用于提取图片特征,然后分类。通常会移除模型的最后一层全连接层(分类层),因为只需要提取特征而不是进行分类。
Transformer 组件
-
ViT 将图像的 Patch 在投影后直接输入 Transformer Encoder,转换为高维特征向量。它是最简单的图像 Transformer。
-
DeiT 是数据增强(混合或遮盖等)和知识蒸馏(教师模型可以提供概率分布的“软标签”)的 ViT,常用于小样本学习。
-
SwinT 是滑动窗口机制,2021年提出并打败了之前所有模型。
-
ViLT 将图像的 Patch 投影,和文本的嵌入一起进入 Transformer Encoder。它是最简单的多模态 Transformer。
1.2.2 Framework Level
CNN 框架
CNN 框架有很多变体。
-
Faster R-CNN 全称 Faster Region-based Convolutional Neural Network,是一个预训练的 CNN 框架。R-CNN 用于对象检测,包括物体位置识别和分类。R-CNN 先用 ResNet 作为 Backbone(骨干网络)对图像特征提取,然后在特征图上生成多个候选区域从中定位目标。
-
YOLO 全称 You Only Look Once,是非常快的目标检测方法。
Transformer 框架
Transformer 是典型的生成式模型,取决于概率而不是决策边界。Transformer 框架也有很多变体。
-
CLIP 使用 ViT 提取嵌入向量后,通过一个简单的线性层将图像特征连接到文本嵌入空间。
-
Flamingo 采用 Gated Cross-Attention 用于在图像和文本之间引入门控机制,是不同模态向量更好的融合方法。
-
BLIP-2 使用了 Q-former 提高融合性能。
-
ViLBERT 和 UNITER 都是用 Faster R-CNN 提取图像特征后进入 Transformer。
-
Pixel-BERT 是仅用 ResNet 提取图像特征进入 Transformer。
-
LLaMA 全称 Large Language Model Meta AI,是一个开源的优秀预训练模型,接近 GPT-3 的水准,同样只有 Transformer 的解码器。Vicuna 是基于 LLaMA 微调后的对话模型。
多模态融合还是得摆上这张图:
例如 ViLBERT 属于 (c),ViLT 属于 (d) 等。
1.3 Related Work
Agent(代理)能够自主决策和执行任务,其中 Instruction-following Agent(指令跟随代理)指的是根据自然语言指令执行一系列动作或任务的智能系统。ChatGPT 就是一种常见的指令跟随代理。
在图像领域,代理被分为两类:端到端训练的模型(End-to-end)和通过协调各种模型的系统(LangChain/LLMs)。
1.3.1 End-to-end
端到端系统强调在训练过程中从输入到输出的整个流程都是直接优化的,而不依赖于多个独立的模块或步骤。
- InstructPix2Pix:用户输入一张图片和指令“把这张图片中的天空变成黄色”,模型直接从输入图像和指令生成编辑后的图片,整个过程在一个连续模型中完成。
1.3.2 LangChain
语言链系统协调多个模型和工具,组合它们的功能来完成复杂任务。
- Visual ChatGPT、X-GPT、MM-REACT、VisProg、ViperGPT、CoT、LLaMA-Adapter
2 Main Theme
论文是 Liu, H., Li, C., Wu, Q., & Lee, Y. J. (2023). Visual Instruction Tuning. arXiv. https://arxiv.org/pdf/2304.08485
论文微调了一个基于 Vicuna 的多模态模型称为 LLaVA(Large Language and Vision Assistant),通过 Visual Instruction 使之在 Multimodal Chatbot 和 ScienceQA 达到了非常强大的视觉水准,同时还提出了第一个 Multimodal Instruction-following Benchmark(多模态指令跟随能力基准)。
2.1 Where to gain data?
论文提到了「生成的 158K 语言-图像指令数据集」,这是 ChatGPT/GPT-4 生成的数据集。
类似指导学习的思路,作者将 COCO 图像数据集提交给 GPT 生成文本数据(包括提问和回答),总共有 158K 那么大。其中 58K 是对话(Conversation),23K 是细节描述(Detail),77K 是复杂语义理解(Complex)。
2.2 How to process features?
如图所示,对于一个图像输入,采用 CLIP 框架提取特征并与 Vicuna 的文本嵌入融合。
-
第一步对图片分 Patch 线性投影,转换为基础的嵌入向量 \(X_\text{v}\);
-
第二步用 Transformer 的 Encoder,将这些特征向量表示为更佳的嵌入,表示为 \(\displaystyle{Z_\text{v}=g(X_\text{v})}\);
-
第三步被另一个训练得到的线性权重矩阵投影,对齐到文本嵌入向量空间中,表示为 \(\displaystyle{H_\text{v}=W\cdot Z_\text{v}}\)。
2.3 What is in fusion?
对于一个图像 \(X_\text{v}\),作者生成了多组多轮对话指令
\[X_{\text{ins}}^t=\begin{cases} [X_\text{q}^1,X_\text{v}] \text{or} [X_\text{v},X_\text{q}^1],\quad \text{first turn}(t=1)\\ X_\text{q}^t,\quad \text{remaining turns}(t>1) \end{cases} \]其中 \(t<T\) 为对话轮数。
每轮回答通过自回归式的概率分布计算
\[p\left(X_\text{a}\bigg|X_\text{v},X_{\text{ins}}\right)=\prod_{i=1}^L p_\theta \left(x_i\bigg|X_\text{v},X_{\text{ins,}<i},X_{\text{a,}}<i\right) \]其中 \(X_\text{a}\) 是整个句子的回答,\(L\) 是回答的长度,\(\theta\) 是权重,\(X_{\text{ins}}\) 是当前轮的指令,\(X_{\text{ins,}<i}\) 是第 \(i\) 个 token 前所有轮的指令。
训练模型所用的输入序列如下:
\[\begin{aligned} &X_\text{sys-msg} \text{<STOP>}\\ &\text{Human :} X_\text{ins}^1 \text{<STOP>} \text{Assistant: } X_\text{a}^1 \text{<STOP>}\\ &\text{Human :} X_\text{ins}^2 \text{<STOP>} \text{Assistant: } X_\text{a}^2 \text{<STOP>}\\ &\cdots \end{aligned} \]2.4 Why training like this?
调优训练包括两个阶段:
- 特征对齐预训练:使用 CLIP 视觉编码器和 Vicuna 语言解码器,在过滤后的 CC3M 数据集上进行预训练,属于 LangChain 模式。
注意是将视觉特征映射到文本特征的表示空间中,而不是将两个空间映射到一个新的空间中。这个过程仅训练投影矩阵,关联性可能不强,生成的文本可能仍然存在较多与图像无关的内容,最终输出一个 Visual Tokenizer。
- 端到端微调:在「生成的 158K 语言-图像指令数据集」上进行端到端微调,属于 End-to-end 模式。
此阶段在整个模型架构上进行统一的训练和优化,而不是只对某一部分或某些层进行单独训练,更新视觉投影层和 Vicuna 语言模型的预训练权重,视觉编码器的权重保持冻结。
2.5 Is it well performed?
论文提出了两个新的 Instruction-following Benchmark:
- LLaVA-Bench (COCO)
作者从 COCO-Val-2014 数据集中随机选择了 30 张图像,并针对每张图像生成了三种类型的问题(对话、详细描述、复杂推理),总计 90 个问题。相对评分是与具有精确描述文本(ground truth)的 Text-only GPT-4 的回答相比较的评价得分。
- LLaVA-Bench (In-the-Wild)
为了评估模型在更具挑战性的任务和新领域中的能力及其泛化能力,作者收集了一个多样化的 24 张图像数据集,总计 60 个问题,涵盖了室内和室外场景、迷因、绘画、素描等,并为每张图像配备了高度详细和手工整理的描述以及适当选择的问题。
Multimodal Chatbot
下表展示端到端微调阶段的三种训练数据使用情况对最终模型的影响,评价标准是 LLaVA-Bench(COCO)Benchmark。
总体效果达到了 85.1%。
下表展示不同模型的表现,评价标准是 LLaVA-Bench(In-the-Wild)Benchmark。其中“†”匕首符号表示对 GPT-4 查询三次取均值以评估性能。
总体效果达到了 67.3%。
ScienceQA
目前针对此数据集的最佳模型(State-of-The-Art)是 MM-CoT,有高达 91.68% 的准确率。
其中“†”匕首符号表示 GPT-4 是 Text-only 的。
-
LLaVA 得出了与 SoTA 接近的 90.92% 准确率。
-
LLaVA+GPT-4(Complement)指的是用 LLaVA 回答 GPT-4 回答不了的问题。实验表明这和只用 LLaVA 没有什么区别。
-
LLaVA+GPT-4(Judge)指的是对于 LLaVA 和 GPT-4 对同一问题给出不同回答时,向 GPT-4 输入这两个回答并重新生成回答。实验表明这能达到惊人的 92.53% 准确率。
作者还对模型进行了缩减。
-
Best Variant 采用 CLIP Encoder 的最后一个 Layer 输出时,表现相较于用倒数第二个 Layer 输出的 90.92% 稍降低为 89.96%。这是因为最后一层特征通常更加抽象,倒数第二层更注重细节。
-
Predict Answer First 强制规定了回答中 Answer 和 Reason 的顺序,实验发现顺序对结果无影响,都是 89.77%。
-
Training From Scratch 放弃了预训练,直接用本文的框架针对 ScienceQA 数据集训练,表现降低为 85.81%。
-
7B Model Size 将最佳的 13B 模型规模减小,实际效果也稍降低为 89.84%。