(2023ICML)BLIP-2:使用冻结图像编码器和大语言模型引导语言-图像预训练

发布于:2025-08-05 ⋅ 阅读:(21) ⋅ 点赞:(0)

1️⃣ 研究背景

视觉 - 语言预训练(VLP)的发展与挑战
  • 技术突破:CLIP(2021)通过对比学习实现图文特征对齐,BLIP(2022)通过统一架构支持理解与生成,Flamingo(2022)引入门控机制实现多模态生成。但这些模型存在三大核心问题
  1. 计算成本爆炸:Flamingo-80B 需 100+ A100 GPU 周级训练,普通研究团队无法复现。
  2. 灾难性遗忘:端到端微调大语言模型(LLM)时,语言能力会因多模态任务训练大幅下降(如 OPT-6.7B 微调后,语言生成 BLEU 下降 12%)。
  3. 模态对齐难题:冻结 LLM 后,视觉特征(高维、稀疏)与文本特征(低维、语义化)存在 “模态鸿沟”,难以直接融合。
  • 行业需求:多模态模型需平衡性能(SOTA)、成本(可训练)、通用性(适配不同 LLM),而现有方法无法同时满足。
现有方法的局限
  • 端到端训练:如 Flamingo,需同时训练图像编码器、跨模态模块、LLM,参数总量超 80B,训练成本高达百万美元。
  • 模态鸿沟:视觉特征(如 ViT 输出的 197×1024 维向量)与文本特征(如 OPT 的 2048 维向量)维度、分布差异大,直接拼接会导致信息丢失。
  • 语言能力退化:LLM 在多模态任务中微调时,原有语言知识(如语法、常识)会被覆盖,出现 “会看图但不会说话” 的矛盾。
研究目标
  • 高效利用冻结模型:复用预训练的 ViT(图像编码器)和 LLM(语言模型),仅训练轻量模块(Q-Former),将训练成本从 “百万美元级” 降至 “千美元级”。
  • 保持 LLM 语言能力:冻结 LLM 参数,通过软提示(Soft Prompt)注入视觉信息,避免语言能力退化。
  • 突破模态鸿沟:设计 Q-Former 作为 “视觉瓶颈”,压缩并语义化视觉特征,适配 LLM 输入维度。

2️⃣ 提出的方法

BLIP-2有效地利用了冻结的预训练图像模型和语言模型。使用冻结大型语言模型的关键挑战是将视觉特征与文本空间对齐。为了弥合模态差距,BLIP-2提出了一个分两个阶段预训练的查询转换器(Q-Former):(1)使用冻结图像编码器的视觉语言表示学习阶段和(2)使用冻结大型语言模型的视觉到语言生成学习阶段。
在这里插入图片描述

(1)Q-Former 设计

Q-Former 作为 BLIP-2 多模态模型的核心组件,其核心使命在于通过 “压缩视觉特征 + 语义化对齐文本”,有效弥合冻结图像编码器与冻结大型语言模型之间的语义鸿沟,为多模态信息交互搭建桥梁。它从图像编码器中提取固定数量的输出特征,与输入图像分辨率无关。
Q-Former从冻结图像编码器中提取视觉特征。Q-Former的输入包含一组K个可学习的查询嵌入,它们通过交叉注意与图像编码器的输出交互。Q-Former的输出由K个编码的视觉向量组成,每个查询嵌入一个,然后经过线性投影并馈送到冻结的大型语言模型。

Q-Former由两个transformer子模块组成,它们共享相同的自注意力机制层:
(1)图像转换器:与冻结图像编码器交互以提取视觉特征
(2)文本转换器:既可以作为文本编码器又可以作为文本解码器。

我们创建了一组可学习的查询嵌入(query embeddings)作为图像转换器的输入。query通过自注意力机制层相互交互,并通过交叉注意力层(每隔一个转换块插入)与冻结的图像特征交互。

query还可以通过相同的自注意力机制层与文本交互。根据预训练任务的不同,应用不同的自注意力机制掩码来控制查询-文本交互。

我们使用BERTbase的预训练权重初始化QFormer,而交叉注意层是随机初始化的。Q-Former共包含188M个参数。query被视为模型参数。

在实验中,使用32个查询,其中每个查询的维度为768(与Q-Former的隐藏维度相同)。使用Z表示输出查询表示。Z的大小(32 × 768)远远小于冻结图像特征的大小(例如VIT - L /14的257 × 1024)。这个瓶颈架构与我们的预训练目标一起工作,迫使query提取与文本最相关的视觉信息。

  • 可学习 Query Token:在初始阶段,它们以随机值进行初始化,随后在模型训练过程中,通过反向传播算法不断调整参数,学习如何从图像数据中精准提取与语言表达密切相关的视觉特征。例如,在处理包含人物和风景的图像时,Query Token 会逐步聚焦于人物动作、风景元素等对语言描述具有关键意义的视觉内容。

  • 跨模态注意力机制:在 Q-Former 的每一层网络中,都精心设计并插入了图像→Query的跨注意力机制。这一机制赋予 Query Token 主动探索图像内容的能力,使其能够智能地关注图像中的关键区域,如物体的形态、场景的布局等。以识别厨房场景图像为例,跨模态注意力会引导 Query Token 重点捕捉炉灶、厨具等关键物体,为后续的语言描述生成提供精准的视觉信息支持。

(2)两阶段预训练策略

阶段 1:视觉 - 语言表征学习(Representation Learning)
将 Q-Former 连接至固定图像编码器,基于图像 - 文本对开展预训练。借鉴 BLIP 的设计思路,通过共同优化三个预训练目标实现模型性能提升。这三个目标共享相同的输入格式与模型参数,通过在 Query 和文本间采用差异化的注意力屏蔽策略,精准调控二者交互模式。其核心目标在于使 Q-Former 能够有效提取与文本语义高度契合的视觉特征,具体通过优化三项损失函数完成这一训练过程。
在这里插入图片描述

  1. 图像 - 文本对比损失(ITC)

图像 - 文本对比学习 (ITC) 旨在学习对齐图像表示和文本表示,通过最大化二者的相互信息,实现跨模态语义空间的精准映射。其核心机制是通过对比图像 - 文本的正对(匹配样本对)与负对(不匹配样本对)的相似性,强化模型对语义一致性的捕捉能力。

具体执行流程如下:

  • 输入构建:分别准备图像与正文本(语义匹配)、图像与负文本(语义不匹配)的样本对。
  • 特征提取:借助 Q-Former 从图像中提取特征ZimgZ_{img}Zimg;同时利用冻结的大语言模型(LLM)作为文本编码器,获取文本特征ZtxtZ_{txt}Ztxt。在此过程中,将文本转换器输出的 [CLS] 令牌的嵌入向量ttt作为文本表示,而图像转换器输出的查询表示ZZZ包含多个嵌入向量(每个查询对应一个),需首先计算每个查询输出与t之间的成对相似度,然后选择最高的一个作为图像-文本相似度。
  • 优化策略:采用 InfoNCE 对比学习损失函数,通过梯度反向传播优化,促使正样本对的特征距离缩小,同时拉大负样本对的特征间隔。为规避信息泄露风险,模型引入单模态自注意力掩码机制,禁止查询向量与文本特征在计算过程中产生交互。

得益于冻结图像编码器的设计,相比端到端训练模式,ITC 方法显著降低了内存占用,允许在单个 GPU 上处理更多训练样本。因此,BLIP 模型采用批量负采样策略替代传统的动量队列机制,进一步提升训练效率与对比学习效果。

  1. 图像 - 文本匹配损失(ITM)
  • 输入:图像 + 文本对(正 / 负)。
  • 操作:Q-Former 提取特征后,用线性层预测 “匹配概率”。将所有查询的logit平均值作为最终输出匹配分数
  • 损失:二分类交叉熵,优化细粒度图文匹配。
  1. 图像条件文本生成损失(ITG)
  • 输入:图像 + 文本前缀(如 “a photo of”)。
  • 操作:Q-Former 提取特征后,通过自回归生成完整文本。
  • 损失:语言建模损失(Cross-Entropy),强制 Q-Former 提取 “能生成连贯文本” 的视觉特征。
    阶段 2:视觉到语言生成学习(Generative Learning)

在生成预训练环节,将QFormer(搭载冻结图像编码器)连接至冻结的大型语言模型,旨在赋予模型强大的语言生成能力。具体而言,通过全连接(FC)层将输出查询嵌入ZZZ线性投影至与大语言模型文本嵌入一致的维度,随后将投影后的查询嵌入融入输入文本嵌入,作为软视觉提示,对基于 Q-Former 提取的视觉表征进行条件约束。

由于 Q-Former 已通过预训练掌握提取蕴含语言信息的视觉表征能力,能够有效充当信息筛选器,仅向大语言模型传递核心视觉语义,同时过滤冗余信息。这一设计极大降低了大语言模型学习视觉语言对齐的难度,显著缓解了灾难性遗忘问题。训练过程以生成损失为优化目标,促使冻结的大语言模型精准理解 Q-Former 输出的视觉特征,实现多模态信息的高效融合。
在这里插入图片描述
我们对两种类型的大型语言模型开展实验研究:基于解码器的大型语言模型与基于编码器 - 解码器的大型语言模型。在基于解码器的模型预训练过程中,采用语言建模损失函数,固定参数的大型语言模型基于 Q-Former 提取的视觉表征完成文本生成任务。而基于编码器 - 解码器的模型,则使用前缀语言建模损失进行预训练 —— 将文本划分为前后两部分,前缀文本与视觉表征拼接后作为大型语言模型编码器输入,后缀文本则作为大型语言模型解码器的生成目标。

  • Decoder-only LLM(如 OPT)
    Decoder-only LLM(仅解码器大语言模型)采用自回归架构,以 OPT(Open Pre-trained Transformer)为典型代表。此类模型在处理多模态信息时,需要借助 Q-Former 模块将视觉或其他模态特征转化为语言模型可理解的格式。具体流程如下:
    • 输入:Q-Former 模块提取的多模态特征,经过线性映射,转换为与 LLM 输入适配的前缀向量(例如常见的 2048 维向量)。这种维度转换旨在将视觉信息嵌入到语言模型的语义空间中,使后续的语言生成能够基于多模态输入展开。
    • 操作:LLM 基于输入前缀,通过自回归方式逐字生成文本描述。以生成图像描述为例,模型会从前缀向量中提取语义信息,逐步生成如 “a cat wearing sunglasses” 这样的自然语言句子,每次生成一个词时,都会依赖之前已生成的词作为上下文,确保文本的连贯性和语义合理性。
    • 损失:训练过程中,使用语言建模损失(自回归交叉熵损失函数)作为优化目标。该损失函数衡量模型预测的词分布与真实标签之间的差异,通过最小化损失,促使模型不断调整参数,提升文本生成的准确性和质量。
  • Encoder-Decoder LLM(如 Flan-T5)
    Encoder-Decoder LLM(编码器 - 解码器大语言模型)采用双模块架构,以 Flan-T5 为典型代表,相比 Decoder-only LLM,其能够更灵活地处理多模态输入和生成任务。
    • 输入:同样先通过 Q-Former 提取多模态特征,再经线性映射转换为 Encoder 的输入前缀。Encoder 对输入前缀进行编码,提取语义特征,生成中间语义表示;Decoder 则基于中间语义表示,结合自身的解码能力,生成目标文本。这种架构使得模型能够在编码阶段对输入进行深度语义分析,为解码生成提供更丰富的语义信息。
    • 损失:训练时采用 Prefix LM 损失,该损失函数仅针对 Decoder 生成的部分进行优化,聚焦于提升生成文本的质量和准确性,而不考虑 Encoder 部分的输出,使得模型在训练过程中能够更高效地学习生成任务,避免冗余的参数更新,加快收敛速度。

3️⃣ Q-Former结构:跨模态交互的核心组件

Q-Former 是什么?
Q-Former 全称 Querying Transformer,是 BLIP-2 的核心组件,用于解决以下问题:

1. 模态对齐问题
  • 冻结的图像编码器(ViT)输出的是视觉 patch 特征。
  • 冻结的大语言模型(LLM)理解的是文本 token。
  • 两者维度和分布差距大,直接拼接或映射会导致训练不稳定。
2. 特征压缩问题
  • ViT 输出通常是 196 个 patch × 1024 维(大约 20 万维特征)。
  • LLM 不可能直接处理这么多视觉 token(内存、速度不现实)。
  • 需要一个轻量桥梁提取与语言任务相关的视觉特征。

Q-Former 的本质

  • 一个轻量的 Transformer 编码器
  • 输入若干个可学习的 Query Token,通过 Cross-Attention 去 “查询” 被冻结的视觉特征。
  • 输出少量压缩的视觉表示(例如 32×768),作为视觉提示给 LLM。

所以可以把 Q-Former 理解为:一组会 “看图提问” 的查询 token,用注意力机制从图像特征中提取最有用的语言相关信息
Q-Former 包含两类输入

  1. Query Token(可训练)
  • 数量:32(论文默认)
  • 维度:与文本特征一致(如 768)
  • 作用:主动从视觉特征中 “提取” 信息
  1. 冻结的图像特征(来自 ViT)
  • 维度:num_patches × d_vit(例如 196×1024)
  • 作用:作为 Key/Value 供 Query Token 查询
    每一层的过程为
    Query Token (32×768) → Self-Attn → Cross-Attn (图像特征) → FFN → 输出特征

特点

  • Self-Attention:让 Query Token 之间交互,整合多维度视觉信息
  • Cross-Attention:Query 作为 Query,ViT 特征作为 Key/Value,从图像中 “取” 信息
  • FFN:非线性变换

经过 L 层(论文中 12 层),输出 32×768 的压缩视觉特征。

Q-Former 的计算过程

假设有一张输入图像 I,Q-Former 的计算步骤如下:

  1. 图像特征提取(冻结):I → ViT → Patch Embedding + [CLS] → F_img ∈ ℝ^(197×1024)
  2. 初始化 Query Token:Q_0 ∈ ℝ^(32×768) # 可训练参数
  3. 经过多层 Transformer Block
  • 1: Query 自注意力:Q_1 = SelfAttn(Q_0)
  • 2: Query 从图像提取信息(Cross-Attn):Q_2 =CrossAttn(Q_1,Key=F_img,Value=F_img)
  • 3: 前馈网络(FFN):Q_out = FFN(Q_2)
  • 重复 L 层,得到最终压缩视觉特征 Z ∈ ℝ^(32×768)
  1. 特征投影给 LLM
  • 使用一个线性层将 Z 投影到 LLM 的维度(如 32×2048)
  • 作为软提示拼接到 LLM 的输入前缀

输入输出示例(以图像描述为例)

输入

  • 图像:一只戴着墨镜的猫坐在沙发上
  • LLM 输入:“Describe the image:”(或者为空)

Q-Former 前向过程

  1. ViT 输出 197×1024 patch 特征
  2. 32 个 Query Token 经过 Q-Former,从图像特征中提取与语言相关的内容
  3. 输出 32×768 压缩特征 → 映射到 32×2048 → 送入 LLM

LLM 生成过程
<视觉提示> + “Describe the image:” → “a cat wearing sunglasses sitting on a sofa”

Q-Former 的优势

  1. 高效:避免直接将所有视觉 patch 喂入 LLM
  2. 可训练小模块:冻结 ViT + 冻结 LLM,只训练 Q-Former 就能完成跨模态学习
  3. 灵活:可以与不同 LLM 结合(OPT、Flan-T5、LLaMA 等)
  4. 信息压缩:学会选择性提取语言相关的视觉特征

Q-Former 中 Cross-Attention 的维度变化过程

Cross-Attention 的基本概念

在 Transformer 的 Attention 模块中,三个核心矩阵:Q(Query)、K(Key)、V(Value)

计算公式:Attention(Q,K,V)=Softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)VAttention(Q,K,V)=Softmax(dk QKT)V

  • Q 的来源决定了谁在提问
  • K/V 的来源决定了信息在哪儿查
  • Cross-Attention 的本质:让一个模态(Query Token)去另一个模态(图像特征)中取信息

在 BLIP-2 的 Q-Former 中:

  • Q = Query Token(可训练)
  • K/V = 图像特征(冻结的 ViT 输出)
维度定义

假设以下参数:

  • Query Token 数量:Nq = 32
  • Query Token 维度:Dq = 768
  • 图像 Patch 数量:Np = 197(16×16 patch + 1 个 [CLS])
  • ViT 输出维度:Dv = 1024
  • 注意力 Head 数:H = 12
  • 每个 Head 的维度:d_k = Dq / H = 64
Cross-Attention 维度变化步骤
Step 1: 输入准备
  1. Query TokenQin∈RB×Nq×DqQ_{in} \in \mathbb{R}^{B \times N_q \times D_q}QinRB×Nq×Dq,其中形状为 (B,32,768)(B, 32, 768)(B,32,768)
  2. ViT 图像特征Fimg∈RB×Np×Dv=(B,197,1024)F_{img} \in \mathbb{R}^{B \times N_p \times D_v} = (B, 197, 1024)FimgRB×Np×Dv=(B,197,1024)
Step 2: 线性投影得到 Q, K, V
  • Q-Former 对输入执行线性映射,将其统一至维度 dmodel(此处 dmodel = 768):
  1. Query Token 处理

    • 将 Query Token 通过权重矩阵 WQW_QWQ 进行线性变换,得到张量 QQQ,其维度为 (B,32,768)(B, 32, 768)(B,32,768)
    • 计算过程可表示为:Q=QinWQ⇒(B,32,768)Q = Q_{in}W_Q \Rightarrow (B, 32, 768)Q=QinWQ(B,32,768)
  2. Image Feature 处理

    • 将图像特征(Image Feature)分别通过权重矩阵 WKW_KWKWVW_VWV 进行线性变换,生成键(Key)张量 KKK 和值(Value)张量 VVV,二者维度均为 (B,197,768)(B, 197, 768)(B,197,768)
    • 具体计算如下:K=FimgWK⇒(B,197,768)、V=FimgWV⇒(B,197,768)K = F_{img}W_K \Rightarrow (B, 197, 768)、 V = F_{img}W_V \Rightarrow (B, 197, 768)K=FimgWK(B,197,768)V=FimgWV(B,197,768)

注意:ViT 原始输出维度为 1024,需经线性层投影至 768 维,与 Query 的维度保持一致,从而确保后续注意力计算能够顺利进行。

Step 3: Multi-Head Attention 拆分维度
  • 拆成 12 个 head:Q→(B,12,32,64)、K→(B,12,197,64)、V→(B,12,197,64)
Step 4: 计算 Attention 权重
  • 注意力矩阵维度:Attn=Softmax(QK⊤64)\text{Attn} = \text{Softmax}\left(\frac{QK^{\top}}{64}\right)Attn=Softmax(64QK)
  • QK⊤QK^{\top}QK维度:(B,12,32,64)×(B,12,64,197)⇒(B,12,32,197)
  • 得到注意力权重矩阵表示:每个 Query(32 个)对每个 Patch(197 个)的注意力分布
Step 5: 聚合 Value 信息

用权重加权 V:Out=Attn×VOut = Attn \times VOut=Attn×V

  • 维度:(B,12,32,197)×(B,12,197,64)⇒(B,12,32,64)
  • 最后合并所有 head:(B,12,32,64)→(B,32,768)
Step 6: FFN 和残差输出
  • 经过前馈网络(FFN)和残差连接
  • 输出:Z∈RB×32×768Z \in \mathbb{R}^{B \times 32 \times 768}ZRB×32×768

这就是 Q-Former 从 ViT 特征中 “提炼” 出来的语言相关视觉特征

直观理解

  • 32 个 Query Token 像 32 个 “问题”
  • 197 个 ViT patch 像一本书的 197 页内容
  • Cross-Attention 就是在每个 Query 对所有 patch 做加权求和,形成自己的摘要
  • 最终形成 32 个压缩的视觉 token,供 LLM 使用

4️⃣ 模型结构

BLIP-2 的 “冻结 + 桥接” 架构可拆解为三个层级:

组件 细节描述
冻结图像编码器 - 输入:224×224 图像→16×16 patch(共 256 个 patch)+ [CLS] token。- 输出:1024 维(ViT-L/14)或 1280 维(ViT-g/14)特征。
Q-Former - 结构:12 层 Transformer,32 个可学习 Query Token(768 维)。- 注意力:自注意力(Query→Query)+ 跨注意力(Query→图像)。- 输出:32×768 维特征(视觉瓶颈)。
冻结 LLM - Decoder-only(如 OPT-2.7B):2.7B 参数,2048 维隐藏层,自回归生成。- Encoder-Decoder(如 Flan-T5-XXL):11B 参数,1024 维隐藏层,Prefix LM 生成。- 输入:Q-Former 特征→线性映射→LLM 输入维度(如 2048 维)。

5️⃣ 模型前向传播流程

以 “图像描述生成” 任务为例,详细流程如下(以 OPT-2.7B 为 LLM):

  1. 图像编码(冻结 ViT)
    • 输入图像→ViT 分割为 14×14 patch→嵌入层→12 层 Transformer→输出 [CLS] 全局特征(1024 维)+ 196 个 patch 特征(1024 维)。
  2. Q-Former 特征提取(可训练)
    • 32 个 Query Token(768 维)→跨注意力层(Query→图像)→关注图像关键区域(如猫、墨镜)。
    • 自注意力层(Query→Query)→融合跨模态信息→输出 32×768 维特征 Z。
  3. 视觉特征映射(线性层)
    • Z(32×768)→线性层→映射到 LLM 输入维度(2048 维)→作为 “软提示” 前缀(Prefix)。
  4. LLM 生成文本(冻结 OPT)
    • 输入前缀 +“a photo of”→OPT 自回归生成→逐 token 预测概率分布。
    • 第 1 步:生成 “a”(概率 0.95,基于前缀和图像特征)。
    • 第 2 步:生成 “cat”(关注图像中猫的区域,概率 0.92)。
    • 第 3 步:生成 “wearing”(结合语法和图像特征,概率 0.88)。
    • 最终生成:“a cat wearing sunglasses sitting on a sofa”。

6️⃣ 输入输出示例

输入:图像(戴着墨镜的猫坐在沙发上),任务为 “图像描述生成”。

  • 步骤 1:ViT 编码图像→输出 [CLS] 特征(1024 维),包含 “猫、墨镜、沙发” 的语义信息。
  • 步骤 2:Q-Former 的 32 个 Query Token 通过跨注意力关注 “猫的脸部(墨镜)”“沙发的纹理”→输出 32×768 维特征 Z。
  • 步骤 3:Z→线性层→2048 维前缀→输入 OPT-2.7B。
  • 步骤 4:OPT 基于前缀和 “a photo of” 生成文本:
    • 第 1 token:“a”(概率 0.95,由语言模型先验和前缀共同决定)。
    • 第 2 token:“cat”(Q-Former 特征中 “猫” 的语义权重最高,概率 0.92)。
    • 第 3 token:“wearing”(语言模型预测 “cat” 后最可能的动词,概率 0.88)。
    • … 最终输出:“a cat wearing sunglasses sitting on a sofa”(在 COCO 测试集上,CIDEr 分数达 112.3,超 BLIP 3.2%)。

7️⃣ 方法总结与创新点

  • 架构创新
    • 首次实现 “冻结 ViT + 冻结 LLM + 轻量桥接” 的多模态范式,训练成本仅为端到端模型的 1/100(OPT-2.7B 版本训练成本 < 1 万美元)。
    • Q-Former 作为 “视觉瓶颈”,有效压缩视觉特征(从 197×1024→32×768),解决模态鸿沟问题。
  • 训练创新
    • 两阶段预训练:先对齐视觉 - 语言特征,再优化生成能力,避免 LLM 语言退化(OPT-2.7B 微调后,语言生成 BLEU 仅下降 2%,远低于端到端模型的 12%)。
    • 软提示注入:通过线性层将视觉特征转换为 LLM 可理解的前缀,无需修改 LLM 参数。
  • 性能突破
    • 在 VQA 任务中,BLIP-2(OPT-2.7B)达 72.3% 准确率,超 BLIP 5.6%;零样本迁移至 OK-VQA(常识问答)达 58.1%,超 Flamingo-9B 3.2%。
    • 图像描述生成(NoCaps)CIDEr 达 108.7,接近 Flamingo-80B(110.2),但训练成本仅为其 1/500。

BLIP-2 的核心价值在于重新定义多模态模型的 “成本 - 性能” 边界:通过冻结已有单模态模型,仅训练轻量模块,让 “学术级 SOTA” 与 “工业级可落地” 首次兼得。这为多模态模型的大规模应用提供了可行性路径。


网站公告

今日签到

点亮在社区的每一天
去签到