BLIP-2:用 Q-Former 低成本桥接视觉与大语言模型

BLIP-2(Bootstrapping Language-Image Pre-training v2)是一类高效视觉-语言预训练(VLP)方案:它不再端到端训练一个巨型多模态模型,而是冻结强大的图像编码器与大语言模型(LLM),仅训练一个轻量的中间模块 Q-Former(Querying Transformer),把视觉信息转换成 LLM 易于吸收的“语言式提示(soft prompt)”,从而以极低的训练成本获得强泛化的多模态能力。


1. 背景与动机:为什么需要 BLIP-2?

VLP 已进入“基础模型时代”:视觉侧有强大的 CLIP/EVA-CLIP/ViT 系列,语言侧有 OPT/FlanT5 等大模型。传统做法如果要把二者融合成一个强多模态模型,往往需要:

  • 在 LLM 内部插入跨注意力层或新结构
  • 用巨量图文数据端到端训练
  • 训练代价极高(算力、时间、显存、工程复杂度都非常重)

BLIP-2 的核心动机可以概括为四点:

1.1 降低计算成本:冻结大模型,只训练小模块

端到端训练通常需要更新视觉编码器 + 语言模型的海量参数。BLIP-2 选择冻结两端,只训练 Q-Former 及少量投影层,显著降低成本。

1.2 桥接模态鸿沟:三段式架构明确分工

视觉特征和语言 token 嵌入存在表征空间与“接口”的差异。BLIP-2 用 Image Encoder → Q-Former → LLM 三段式连接,专门让 Q-Former 学习如何“问图像要信息”,并输出能被 LLM 利用的表示。

1.3 最大化利用已有预训练模型的能力

图像编码器已经具备强视觉表征能力,LLM 已经具备强生成/指令跟随能力。BLIP-2 的策略是:不要重训它们,而是把它们正确接起来

1.4 泛化与指令跟随:支持零样本任务

通过将视觉信息“以提示的形式”注入 LLM,BLIP-2 能直接继承 LLM 的零样本与指令跟随能力,在 VQA、caption、检索等任务上展现很强的零样本表现。


2. 核心思想:Q-Former 到底是什么?

BLIP-2 的关键创新是引入 Q-Former(Querying Transformer):一个以“可学习查询向量(queries)”为入口的 Transformer 模块,用来从冻结图像编码器输出的视觉特征中提取与语言相关的信息,再将其转写成 LLM 可消费的“软提示”。

2.1 Q-Former 的两个关键词:Query + Bottleneck

  • Query:Q-Former 内部维护一组可学习的查询向量(例如 32 个,维度 768),它们像“问题探针”一样去读图像特征。
  • Bottleneck(信息瓶颈):Q-Former 只输出少量查询向量对应的视觉表征,相当于在大量 patch 特征中筛出最有用的内容,避免把冗余视觉信息塞给 LLM。

这背后有一个非常直观的工程含义:
让 LLM 看到“少而精”的视觉摘要,而不是“多而杂”的图像 patch 序列。


3. 模型结构:Image Encoder + Q-Former + LLM

BLIP-2 的整体结构可以拆成三块:

3.1 Image Encoder(冻结)

输入图像 III,输出视觉特征序列(例如 ViT 的 patch tokens):

V=Eimg(I),V∈RN×dv V = E_{\text{img}}(I), \quad V \in \mathbb{R}^{N \times d_v} V=Eimg(I),VRN×dv

其中:

  • NNN 是视觉 token 数(patch 数)
  • dvd_vdv 是视觉特征维度
  • EimgE_{\text{img}}Eimg 在 BLIP-2 中被冻结(不更新)

常见选择:

  • CLIP 训练的 ViT-L/14
  • EVA-CLIP 训练的 ViT-g/14(更强)

3.2 Q-Former(训练)

Q-Former 维护 MMM 个可学习 query:

Q={q1,q2,…,qM},Q∈RM×dq Q = \{q_1, q_2, \dots, q_M\}, \quad Q \in \mathbb{R}^{M \times d_q} Q={q1,q2,,qM},QRM×dq

Q-Former 的关键计算是:query 通过 cross-attention 读取视觉特征 VVV,得到聚合后的多查询表示 ZZZ

Z=QFormer(Q,V,T) Z = \text{QFormer}(Q, V, T) Z=QFormer(Q,V,T)

其中 TTT 表示文本 token(在第一阶段会用到),Z∈RM×dqZ \in \mathbb{R}^{M \times d_q}ZRM×dq 是输出的查询表示。

Q-Former 通常以 BERT-base 初始化(约 188M 参数),但只更新 Q-Former 本身与少量连接层。

3.3 LLM(冻结)

LLM 用于生成文本。BLIP-2 试验过两类:

  • decoder-only:OPT
  • encoder-decoder:FlanT5

在 BLIP-2 中,LLM 参数被冻结,仅作为强大的语言生成器/指令跟随器被调用。


4. 模型流程:从图像到文本的“软提示注入”

推理时流程非常直观:

  1. 图像编码器提取视觉特征
    V=Eimg(I) V = E_{\text{img}}(I) V=Eimg(I)

  2. Q-Former 用 queries 从 VVV 中提取视觉摘要
    Z=QFormer(Q,V) Z = \text{QFormer}(Q, V) Z=QFormer(Q,V)

  3. ZZZ 映射到 LLM 的词嵌入空间,作为软视觉提示(soft prompt)拼到文本输入前面
    设投影矩阵为 W∈Rdq×dlmW \in \mathbb{R}^{d_q \times d_{\text{lm}}}WRdq×dlm,得到:

P=ZW,P∈RM×dlm P = ZW, \quad P \in \mathbb{R}^{M \times d_{\text{lm}}} P=ZW,PRM×dlm

如果文本 token 的 embedding 序列为 X∈RL×dlmX \in \mathbb{R}^{L \times d_{\text{lm}}}XRL×dlm,则 LLM 的最终输入为:

X′=[P;X] X' = [P; X] X=[P;X]

  1. LLM 在 X′X'X 条件下生成输出文本 YYY(caption / answer / dialog):

p(Y∣I,X)=p(Y∣X′)=∏t=1∣Y∣p(yt∣y<t,X′) p(Y \mid I, X) = p(Y \mid X') = \prod_{t=1}^{|Y|} p(y_t \mid y_{<t}, X') p(YI,X)=p(YX)=t=1Yp(yty<t,X)


5. 两阶段预训练:为什么要分两步?

BLIP-2 的训练被拆成两阶段,其本质是:

  • 第一阶段:让 Q-Former 学会“从图像中抽取与文本对齐的视觉信息”
  • 第二阶段:让 Q-Former 学会“把这些视觉信息组织成 LLM 易用的生成提示”

这两步解决的是两个不同难题:对齐(alignment)生成接口(generation interface)


6. 第一阶段:视觉-语言表示学习(Representation Learning)

第一阶段连接 冻结 Image Encoder + 可训练 Q-Former,训练数据为大规模图文对 (I,T)(I, T)(I,T)

该阶段联合优化三类目标:

  • ITC:图像-文本对比学习(对齐全局语义)
  • ITM:图像-文本匹配(细粒度匹配与难负例)
  • ITG:图像引导文本生成(迫使 query 提取可生成信息)

这三者的关键差异,集中体现在:Query 与 Text token 的注意力掩码如何设计


6.1 ITC:Image-Text Contrastive(对比学习)

目标:让图像与文本的嵌入空间对齐,正样本相似度高、负样本相似度低。

文本侧通常使用 [CLS] 表示:
t=ftext(T) t = f_{\text{text}}(T) t=ftext(T)

图像侧不是单个向量,而是多个 query 输出:
zi=fimg(qi,V),i=1,…,M z_i = f_{\text{img}}(q_i, V), \quad i=1,\dots,M zi=fimg(qi,V),i=1,,M

BLIP-2 的做法是:用所有 query 与文本向量计算相似度,取最大作为图文相似度(强调“最相关的 query”):

s(I,T)=max⁡i∈{1,…,M}sim(zi,t) s(I, T) = \max_{i \in \{1,\dots,M\}} \text{sim}(z_i, t) s(I,T)=i{1,,M}maxsim(zi,t)

其中相似度常用 cosine:
sim(a,b)=a⊤b∥a∥∥b∥ \text{sim}(a,b)=\frac{a^\top b}{\|a\|\|b\|} sim(a,b)=a∥∥bab

注意力掩码策略:单模态自注意力(禁止 Query 与 Text 直接交互)

  • Queries 只能彼此自注意力
  • Text tokens 只能彼此自注意力
  • Query 与 Text 之间不允许信息流动(避免信息泄漏)

直观理解:ITC 想学的是“对齐空间”,不是“跨模态融合推理”。因此强行禁止 Query 和 Text 互相看,能让对齐信号更干净。


6.2 ITG:Image-grounded Text Generation(图像引导生成)

目标:在给定图像条件下生成文本,迫使 Query 抽取足够信息并传递给文本侧。

这里的关键是:由于图像编码器冻结,且图像 token 不能直接与文本 token 跨注意力交互,那么要生成文本所需的信息必须通过 Queries 作为中介传给文本 token

注意力掩码:多模态因果掩码(Multi-modal Causal Mask)
典型约束是:

  • Queries 可以互相看(自注意力)
  • Queries 不能看 Text token(避免文本反向“作弊”)
  • 每个 Text token 可以看全部 Queries + 之前的 Text token(因果生成)

可以把输入看作 [Q;T][Q; T][Q;T],令注意力可见性满足:

  • Q→QQ \rightarrow QQQ 允许
  • Q→TQ \rightarrow TQT 禁止
  • T→QT \rightarrow QTQ 允许
  • T→T≤currentT \rightarrow T_{\leq \text{current}}TTcurrent 允许(因果)

在生成形式上,模型学习:

p(T∣I)=∏t=1∣T∣p(wt∣w<t,Q,V) p(T \mid I) = \prod_{t=1}^{|T|} p(w_t \mid w_{<t}, Q, V) p(TI)=t=1Tp(wtw<t,Q,V)

其中 QQQVVV 提取视觉摘要,作为生成条件。


6.3 ITM:Image-Text Matching(图文匹配)

目标:判断图文对是否匹配(binary classification),强化细粒度对齐能力,并配合难负例挖掘。

Q-Former 输出 MMM 个 query 表示 Z={zi}Z=\{z_i\}Z={zi},对每个 query 通过二分类头得到 logit:

ℓi=w⊤zi \ell_i = w^\top z_i i=wzi

再聚合为整体匹配分数(常见做法是均值):

sitm(I,T)=1M∑i=1Mℓi s_{\text{itm}}(I,T)=\frac{1}{M}\sum_{i=1}^{M}\ell_i sitm(I,T)=M1i=1Mi

随后用二分类损失训练匹配/不匹配。

注意力掩码:双向全可见(Query 与 Text 互相可见)
ITM 要做的是细粒度匹配判断,需要充分跨模态交互,因此开放 Query/Text 之间的双向注意力是合理的。


6.4 三个目标与掩码策略总结

任务 训练目标 核心作用 注意力掩码要点
ITC 对齐图像-文本嵌入空间 全局语义对齐 禁止 Query 与 Text 互看,避免信息泄漏
ITG 给图像生成文本 迫使 Query 提取可生成信息 Text 可看 Query,Query 不可看 Text,且 Text 因果
ITM 判断图文是否匹配 细粒度对齐 + 难负例 Query 与 Text 双向互看,强化融合表示

7. 第二阶段:视觉到语言生成学习(Vision-to-Language Generation)

第一阶段解决“对齐与抽取”。第二阶段要解决“怎么把抽取结果喂给 LLM”。

第二阶段连接 可训练 Q-Former + 冻结 LLM,把 Q-Former 输出投影到 LLM 的 embedding 维度作为 soft prompt。

7.1 Soft Prompt 注入的数学形式

Q-Former 输出:
Z∈RM×dq Z \in \mathbb{R}^{M \times d_q} ZRM×dq

投影到 LLM embedding 维度:
P=ZW,W∈Rdq×dlm P = ZW, \quad W \in \mathbb{R}^{d_q \times d_{\text{lm}}} P=ZW,WRdq×dlm

拼接到文本输入前:
X′=[P;X] X' = [P; X] X=[P;X]

LLM 在 X′X'X 条件下生成文本输出。

7.2 不同 LLM 类型的训练目标差异

  • Decoder-only(OPT):标准语言建模,直接对输出 token 做自回归损失
    L=−∑t=1∣Y∣log⁡p(yt∣y<t,X′) \mathcal{L} = -\sum_{t=1}^{|Y|}\log p(y_t \mid y_{<t}, X') L=t=1Ylogp(yty<t,X)

  • Encoder-Decoder(FlanT5):常用前缀语言建模(prefix LM)思路
    将文本分为前缀与后缀:

    • 编码器输入:[P;prefix][P; \text{prefix}][P;prefix]
    • 解码器目标:生成 suffix\text{suffix}suffix

这种设计能更自然地利用 encoder-decoder 的条件生成结构。

7.3 为什么第二阶段有效?

一个非常关键的直觉是:Q-Former 已经过第一阶段训练,学会了“抽取与文本相关的视觉信息”,因此它输出的 ZZZ 可以充当信息瓶颈:

  • 过滤无关视觉细节(背景杂物、纹理噪声)
  • 保留对语言生成最重要的语义(对象、属性、关系、动作)
  • 降低 LLM 学跨模态对齐的负担(LLM 只需把 soft prompt 当成一段“前缀上下文”)

此外,第二阶段训练数据通常会加入更高质量的 caption 或人工标注数据,以提升语言输出的统一性与质量。


8. 典型案例:Q-Former 如何“问”出关键信息?

下面用几个常见场景,直观说明 Q-Former 的价值。

8.1 场景一:VQA(对象属性与关系)

图像:一只狗叼着飞盘在草地上奔跑
问题:What is the dog holding?

  • 图像编码器输出大量 patch 特征,包含草地纹理、天空、狗毛等
  • Q-Former 的 queries 会在 cross-attention 中聚焦“狗嘴附近的物体”
  • 输出的少量 ZZZ 更像“飞盘/狗/动作”的摘要
  • LLM 看到 soft prompt 后,生成答案 a frisbee

如果没有 Q-Former 的瓶颈,直接把海量视觉 token 输入 LLM,会带来:

  • 长上下文开销
  • 噪声干扰
  • 训练更难、推理更慢

8.2 场景二:Caption(从“像素细节”到“语言叙事”)

图像:餐桌上有披萨、沙拉和饮料
输出 caption:A table with pizza, salad, and drinks.

Q-Former 的作用不是把每个像素细节描述出来,而是给 LLM 提供结构化“要点”。LLM 本身擅长把要点组织成自然语言,因此只要 soft prompt 含有:

  • 主要对象(pizza, salad, drinks)
  • 场景(table / dining)

就能生成流畅 caption。

8.3 场景三:零样本指令跟随(Instruction)

输入提示:Describe the image in one sentence and mention the main objects.

如果 LLM 本身经过指令微调(如 FlanT5),那么它已经懂得“one sentence”“mention main objects”这种约束。BLIP-2 把视觉信息作为 soft prompt 注入后,LLM 可以直接按指令生成,体现出强零样本指令能力。


9. 实验效果概览:为什么说“少参数也能更强”?

BLIP-2 的实验结论非常有代表性:在参数量远小于某些超大多模态模型的情况下,零样本能力依然很强。常见报告包括:

  • 零样本 VQAv2:BLIP-2 可显著超过某些超大模型(例如 Flamingo 80B)
  • Caption(NoCaps):CIDEr 明显提升
  • 图文检索:R@1 进一步提高

这背后的核心原因不是“训练更狠”,而是:

  • 视觉编码器本来就很强(冻结也够用)
  • LLM 本来就很强(冻结也够用)
  • Q-Former 学会了正确的跨模态接口(把视觉变成 LLM 可用的提示)

10. 优势与局限:BLIP-2 到底强在哪里,又卡在哪里?

10.1 优势

  • 高效:只训练 Q-Former(约 188M)与少量投影层,训练成本显著降低
  • 强性能:零样本与微调任务上均表现强,覆盖 VQA、caption、检索
  • 泛化好:可以替换不同 Image Encoder 或不同 LLM,结构模块化
  • 继承指令能力:若 LLM 是指令模型,BLIP-2 能直接体现其指令遵循能力

10.2 局限

  • 上下文学习能力受限:预训练多基于单图-单文本配对,难以自然学习多轮对话、多图关联、长上下文视觉推理
  • 复杂推理仍会出错:当问题需要多步推理或外部知识时,错误可能来自:
    • LLM 自身知识过时/幻觉
    • Q-Former 抽取信息不完整
    • 预训练目标未对复杂推理进行强约束

11. 关键问题梳理(带原因解释)

11.1 Q-Former 的核心作用是什么?两阶段如何协同?

Q-Former 的核心作用是:作为冻结图像编码器与冻结 LLM 之间的可训练接口与信息瓶颈

  • 第一阶段(ITC/ITM/ITG):学会“抽取并对齐与文本相关的视觉语义”
  • 第二阶段(soft prompt):学会“把抽取结果映射到 LLM 输入接口,使 LLM 能直接生成”

协同效果是:让 LLM 不需要从头学跨模态对齐,避免大规模端到端训练,同时降低噪声与灾难性遗忘风险。

11.2 参数更少却更强的关键原因?

可以归结为三点:

  1. 冻结强视觉编码器:视觉表征质量已经足够高
  2. 冻结强 LLM:语言生成与指令跟随能力直接继承
  3. Q-Former 高效抽取:少量 queries 强化信息筛选,减少冗余与训练难度

11.3 零样本指令生成常见错误与原因

常见错误类型:

  • 知识错误/过时信息:来自 LLM 的先验知识不可靠
  • 视觉遗漏:Q-Former 抽取的信息不完整,导致描述漏掉关键对象
  • 推理错误:复杂关系或多步推理未被训练目标充分覆盖

本质上,BLIP-2 解决的是“低成本对齐与接口”,并不保证“强逻辑推理与真实世界知识完备”。


Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐