Skip to content
🔗 分享本题
查看我的学习进度 →

BLIP-2 Q-Former 图解:冻结视觉编码器与语言模型,用可学习查询提取并压缩视觉信息后桥接到 LLM

🧠 图解记忆:BLIP-2 不联合重训两个大模型,而是让 Q-Former 用固定数量的可学习 Query 提取和压缩视觉 token,再投影到冻结 LLM 的输入空间;点击图片可查看原图。

💡 答案要点

BLIP-2 = 用更少参数达到更好效果

核心创新:Q-Former(Query Transformer)

BLIP-2 的动机:

问题:
  BLIP 需要联合训练图像编码器和文本编码器
  → 参数量大(1B+)
  → 训练成本高
  → 难以利用已有的大语言模型(LLM)

目标:
  冻结视觉编码器(如 CLIP ViT)
  冻结语言模型(如 OPT、Flan-T5)
  只训练轻量级的连接层

Q-Former 架构:

┌─────────────────────────────────────────────────────────┐
│                    BLIP-2 架构                           │
└─────────────────────────────────────────────────────────┘

阶段1:视觉-语言表示学习
  冻结图像编码器(CLIP ViT-L)

  Q-Former(32个可学习Query)

  学习到的视觉表示

阶段2:视觉-语言生成学习
  Q-Former输出

  线性层

  冻结 LLM(OPT-2.7B / Flan-T5-XL)

  生成回答

Q-Former 详解:

什么是 Q-Former?

python
# 本质:可学习的查询向量 + Transformer

learnable_queries = nn.Parameter(torch.randn(32, 768))
# 32 个查询向量,每个 768 维

# 处理流程
image_features = frozen_image_encoder(image)  # 257 × 1024

# Q-Former 提取信息
queries = learnable_queries.expand(batch_size, -1, -1)
output = q_former(queries, image_features)  # 32 × 768

# 输出:固定长度的视觉表示(32个向量)

为什么需要 Q-Former?

1. 降维压缩:

图像编码器输出:257 个 token × 1024 维 = 262K 维
Q-Former 输出:32 个 token × 768 维 = 24K 维

压缩比:10.9x
好处:
  - 减少 LLM 输入长度
  - 提升推理速度
  - 降低计算成本

2. 适配不同模态:

视觉特征(CLIP):连续、密集
语言特征(LLM):离散、稀疏

Q-Former 作用:
  把视觉特征转换为 LLM 友好的表示

3. 可学习的信息提取:

固定数量的 Query(32个)
每个 Query 学习提取特定类型的信息:
  Query 1:物体类别
  Query 2:空间位置
  Query 3:颜色
  ...

类似 DETR 的 Object Queries

两阶段训练:

阶段1:视觉-语言表示学习

python
# 目标:让 Q-Former 学会提取有用的视觉信息
# 损失:ITC + ITM + ITG(Image-Grounded Text Generation)

# 训练数据:图文对(1.29 亿)
# 冻结:图像编码器
# 训练:Q-Former

阶段2:视觉-语言生成学习

python
# 目标:让 LLM 理解视觉信息
# 损失:Language Modeling Loss

# 训练数据:指令数据(视觉问答、字幕生成)
# 冻结:图像编码器 + LLM
# 训练:Q-Former + 线性投影层

性能提升:

模型参数量训练数据VQA准确率COCO字幕(CIDEr)
BLIP224M1.29亿78.3%136.7
Flamingo-80B80B20亿82.0%138.1
BLIP-2188M1.29亿82.4%144.5

关键优势:

BLIP-2(188M)> Flamingo(80B)
  - 参数少 400 倍
  - 效果更好
  - 训练更快

面试话术:

"BLIP-2 的核心是 Q-Former,用 32 个可学习 Query 提取视觉信息。冻结视觉编码器和 LLM,只训练 Q-Former,参数量从 1B 降到 188M,效果反而更好。这证明了模态适配比联合训练更重要。"