多模态大模型技术点总结
BLIP2
论文地址: https://arxiv.org/pdf/2301.12597
发布时间: 2023.06.15
模型结构:
- Vision Encoder:ViT-L/14
- VL Adapter:Q-Former
- LLM:OPT (decoder-based),FlanT5(encoder-decoder-based)

Overview of BLIP-2's framework
论文主要提出 Q-Former(Lightweight Querying Transformer)用于连接模态之间的 gap。BLIP-2 整体架构包括三个模块:视觉编码器、视觉和 LLM 的 Adapter(Q-Former)、LLM。其中 Q-Former 是 BLIP-2 模型训练过程中主要更新的参数,视觉 Encoder 和大语言模型 LLM 在训练过程中冻结参数。
BLIP-2 的预训练包括两个阶段:
Stage 1)Vision-and-Language Representation Learning. Q-Former 与冻结的 Image Encoder(ViT-L/14) 连接,在和文本交互中学习图文相关性表示(3 个预训练任务)。
Stage 2)Vision-to-Language Generative Learning. 第一个阶段训练得到的 Q-Former 的输出接入一个大语言模型,学习视觉到文本生成(1 个预训练任务)。
阶段 1 详解

阶段 1:左侧为 Q-Former 的结构以及如何学习视觉文本表征,右侧 self-attention masking 策略
阶段 1:Q-Former 的结构如上图所示,包括两个 Transformer 子模块(共享 Self-Attention 层),一个 image transformer 与 image encoder 交互提取视觉表征(图中黄色区域左侧),一个 text transformer 既作为 text encoder 也作为 text decoder(图中黄色区域右侧)。首先创建一个可学习的 query 向量(Learnable query embeddings)作为 image transformer 的输入,queries 通过 self-attention 层进行自我交互,然后与冻结参数的 image features(来自 image encoder)通过 cross-attention 层(插入每隔一个 block)进行交互,此外这个 query 向量还与 text 通过同一个 self-attention 进行交互。在不同的预训练任务中,使用不同的 self-attention masks 来影响查询文本的交互,在这个阶段的预训练中,一共通过三个任务进行学习(类似 BLIP),分别为:
- ITM(Image-Text Matching): 图文匹配任务,使用双向 self-attention mask,不进行掩码,该任务目标是学习细粒度的图文表示对齐。训练过程中 queries 和 text 可以完全互相看到,query embeddings 的输出 Z 包含了多模态的信息,将它输入一个 2 分类 linear 层得到一个 logit,平均来自所有 queries 的 logits 作为最终的匹配分数,论文采纳了难负样例挖掘的策略创建更具信息量的负样本对。
- ITG(Image-Guided Text Generation): 图引导文本生成,使用 causal self-attention mask,由 q-former 的架构可以看到,冻结的 image encoder 没有和 text tokens 直接交互,而生成 (generation) 所需要的信息必须首先通过 queries 提取视觉信息以及通过 self-attention 传给 text tokens,因此 queries 被迫学习抽取可以描述文本信息的视觉特征。论文使用 multimodal causal self-attention mask 来控制 query 和 text 的交互(同 UniLM 中的使用),queries 可以看到自己但看不到 text tokens,text tokens 可以看到 queries 以及已经生成的 text tokens,用 [DEC] token 取代 [CLS] token 作为第一个 text token 来指示解码任务的开始。
- ITC(Image-Text Contrastive Learning): 图文对比学习,使用单模态 self-attention mask,对 text 的 token 全部进行掩码,使得 queries 和 text 互相看不到,这个任务对齐的是来自 image transformer 的 query 表示和来自 text transformer 的文本表示([CLS] token)。
在论文实验中,选用两种视觉编码模型:
- CLIP 预训练的 ViT-L/14.
- EVA-CLIP 预训练的 ViT-g/14. 并移除 ViT 的最后一层,只使用倒数第二层的输出特征(实验中效果更好),与 queries 交互。Learned Queries 侧使用 32 个 query,每个 query 维度 768,q-former 输出维度为 32768,这样比冻结的 image features 维度要小很多(比如对于使用 ViT-L/14 来说是 2571024),因此第一个阶段主要目标是训练 queries 可以提取蕴含语义信息的视觉表示。
阶段 2 详解

阶段 2:从冻结 LLM 中学习视觉文本生成,两种 LLM(上图 Decoder-based,下图 Encoder-Decoder-based)
阶段 2:Q-Former 通过一个 FC 层使得 Q-former 的输出 query embedding Z 对齐到与 LLM 输入同样的维度,并前置于 input text embedding 一起输入 LLM,这种拼接方式有点像软视觉提示(soft visual prompt),q-former 在前面预训练任务中已经学到如何抽取蕴含语言信息的视觉表示,该阶段中可以起到把最重要信息输入给 LLM 同时去除错误没有意义的视觉信息的作用,从而降低 LLM 学习视觉语言对齐的负担,同时也缓解了灾难遗忘的问题。
论文实验了两种 LLM,对于 decoder-based LLM,预训练使用 language modeling loss。对于 encoder-decoder-based LLM,预训练使用 prefix language modeling loss,将 text 分成两部分,前一部分与 q-former 输出拼接一起作为编码器的输入,后面部分作为解码器的生成目标。
InstructBLIP
论文地址: https://arxiv.org/pdf/2305.06500
发布时间: 2023.06.15
模型结构:
- Vision Encoder:ViT-g/14
- VL Adapter:Q-Former
- LLM:FlanT5-xl(3B), FlanT5-xxl(11B), Vicuna-7B, Vicuna-13B

InstructBLIP 的模型架构
InstructBLIP 的模型结构与 BLIP-2 类似,区别在于输入文本换成了指令数据 Instructions。Q-Former 抽取指令感知的视觉特征(Instruction-aware vision model),根据指令的不同获取不同的视觉特征。然后将这些视觉特征作为 LLM 的软视觉提示(soft prompt),使用 language modeling loss 和指令微调模型生成回复。
训练过程(Vision-Language Instruction Tuning): 3 阶段训练以及 zero-shot 预测
- Stage 1: 预训练,训练 Q-Former 和 Projection Layer,冻结 image encoder。使用 image caption 数据,学习视觉文本相关性表示。
- Stage 2: 预训练,训练 Projection Layer,冻结 LLM。使用 image caption 数据,学习对齐 LLM 的文本生成。
- Stage 3: 指令微调,训练 Q-Former 和 Projection Layer。使用 Instruction 任务数据,学习遵循指令生成回复的能力。
训练数据: 收集 11 个任务以及相应的 26 个数据集。对于每个任务,人工编写 10-15 个自然语言的指令模版,作为构造指令微调数据的基础。对于偏向较短回复的开源数据集,在指令模版中使用'short/briefly'降低模型过拟合为总是生成较短回复。

被使用的 Instruction 数据集

多模态训练数据的指令模版
Qwen-VL
论文地址: https://arxiv.org/pdf/2308.12966
发布时间: 2023.10.13
模型结构:
- Vision Encoder:ViT-bigG/14
- VL Adapter:a single-layer cross-attention(Q-former 的左侧部分)
- LLM:Qwen-7B

Qwen-VL 的训练 Pipeline
VL Adapter 创建一组可训练的 queries 向量和 image features 一起做 cross-attention,将视觉特征压缩至 256 的固定长度,同时为了提升细粒度的视觉理解,在 cross-attention 中也加入图像的 2D 绝对位置编码。
Image Input 使用特殊 token(<image>)分隔,Bounding Box Input 使用特殊 token(<box>)分隔,bounding box 的 content referred 使用特殊 token(<ref>)分隔。
训练过程:
- Stage 1: 预训练,训练 Cross-Attention 和 ViT,冻结 QwenLM。
- Stage 2: 多任务预训练(7 tasks 同时),全参数训练。
- Stage 3: 指令微调,训练 Cross-Attention 和 QwenLM,冻结 ViT。

Qwen-VL 的训练参数设置
训练数据:
- 第一阶段使用 image-text pairs 数据,77.3% 英文、22.7% 中文,一共 14 亿数据训练,图片 size=224*224.
- 第二阶段使用质量更高的 image-text pairs 数据,包含 7 个任务,图像 size=448*448. 在同一个任务下构造交错图像文本数据,序列长度为 2048. 训练目标与 Stage1 一致。
- 第三阶段使用 Instruction 数据,训练指令遵循和对话能力,通过 LLM self-instruction 构造,一共 350k 条。

指令格式
Qwen2-VL
论文地址: https://arxiv.org/pdf/2409.12191
发布时间: 2024.09.18
模型结构:
- Vision Encoder:ViT/14
- VL Adapter:Cross-Modal Connector
- LLM:Qwen2-1.5B, Qwen2-7B, Qwen2-72B

Qwen2-VL 模型参数

模型拥有更多的能力

模型架构图,可同时输入不同分辨率、清晰度、纵横比图片
Qwen2-VL 相较于 Qwen-VL 的主要改进点(除了一些 VQA 等基础能力的提升之外):
- 支持视频理解,支持 context 上下文长度到 128k token(20 分钟左右视频)。
- Visual Agent 能力,支持实时视频对话。
- 图像位置编码采用 2D-RoPE,一张 224*224 分辨率的图像经过 ViT/patch_size=14 等一系列转换之后会被压缩至 66 个 token 输入到 LLM。
训练过程:
- Stage 1: 训练 ViT,使用大量 image-text 对。
- Stage 2: 全参数微调,使用更多的数据提升模型全面理解的能力。
- Stage 3: 指令微调,训练 LLM。
LLaVA
论文地址: https://arxiv.org/pdf/2304.08485
发布时间: 2023.12.11
模型结构:
- Vision Encoder:ViT-L/14
- VL Adapter:/
- Projection Layer:a linear layer
- LLM:LLaMA

LLaVA 模型网络架构
训练过程:
- Stage 1: Pre-training for Feature Alignment. 训练 Projection Layer
- Stage 2: Fine-tuning End-to-End. 训练 Projection Layer 和 LLM
LLaVA-1.5
论文地址: https://arxiv.org/pdf/2310.03744
发布时间: 2024.05.15
模型结构:
- Vision Encoder:Clip 预训练 Vit-L/336px
- VL Adapter:MLP
- LLM:Vicuna v1.5 13B

模型结构图
MiniGPT-4
论文地址: https://arxiv.org/pdf/2304.10592
发布时间: 2023.10.02
模型结构:
- Vision Encoder:ViT-G/14
- VL Adapter:Q-Former
- Projection Layer:a single linear
- LLM:Vicuna

模型结构图
训练过程:
- Stage 1: 只训练 Linear Projection Layer 来对齐视觉特征和大语言模型。使用大量 text-image pair 数据。
- Stage 2: 指令微调,使用少量高质量 text-image instruction 数据
指令模板: ###Human: <ImageFeature><Instruction>###Assistant:
MiniGPT-v2
论文地址: https://arxiv.org/pdf/2310.09478
发布时间: 2023.11.07
模型结构:
- Vision Encoder:ViT
- VL Adapter:/
- Projection Layer:Linear
- LLM:Llama2-7B

模型结构图
训练过程:
- Stage 1: 预训练,使用大量弱监督 image-text 和细粒度数据集的混合数据训练,让模型获取多样化知识
- Stage 2: 多任务训练,只使用细粒度高质量数据集训练模型在不同任务上的能力。
- Stage 3: 多模态质量微调,让模型具备 Chat 能力
训练数据:

在三个训练阶段中使用的数据集
总结与展望
本文总结了当前主流的多模态大模型架构及其训练流程。从 BLIP2 引入 Q-Former 解耦视觉与语言,到 InstructBLIP 强化指令遵循,再到 Qwen 系列对长视频和高分辨率的支持,以及 LLaVA 系列的轻量化探索,多模态领域正朝着更高效、更通用、更长上下文的方向发展。
未来的研究重点可能集中在以下几个方面:
- 效率优化: 进一步减少推理成本,探索更轻量的 Adapter 结构。
- 长上下文处理: 支持更长的视频和文档输入,提升复杂场景下的理解能力。
- 具身智能: 结合视觉与动作控制,实现真正的物理世界交互 Agent。
- 数据质量: 构建更高品质的多模态指令数据集,减少对合成数据的依赖。
通过深入理解这些模型的技术细节,开发者可以更有效地选择适合自身业务场景的多模态方案,推动 AI 技术在垂直领域的落地应用。


