引言

视觉-语言模型能够同时理解图像 (例如回答问题、检索匹配的描述) 并围绕图像生成语言 (例如撰写描述性标题) ,近年来取得了显著进展。然而,大多数现有的预训练模型往往在“理解” (基于编码器的任务,如检索) 或“生成” (基于解码器的任务,如图像描述) 方面表现突出,但很少能两者兼顾。此外,本领域性能提升的很大一部分来自于简单地扩大从网络上收集的嘈杂图文对训练数据量,这是一种方便但并非最佳的监督来源。

BLIP (Bootstrapping Language-Image Pre-training,引导式语言-图像预训练) 提出了两项创新且强大的思想,协同解决这些限制:

  • 多模态编码器-解码器混合 (MED) : 一种灵活的模型架构,能够无缝地作为用于理解类任务 (如图文检索) 的编码器,也能作为用于生成类任务 (如图像描述) 的解码器。
  • 生成与过滤 (CapFilt) : 一种新颖的数据自我引导方法,通过生成合成高质量的描述并过滤掉无关或不准确的文本,来提升嘈杂网络图文对的质量。

本质上,BLIP 展示了单一预训练模型能够在广泛的视觉-语言任务上达到最先进的性能,既是优秀的图像/文本检索器,也是熟练的描述生成器。关键在于,研究表明通过一个学习得到的描述生成器和过滤器来提高监督信号的质量,比单纯增加原始嘈杂网络文本的数量带来更大的收益。

本文将以对熟悉深度学习和 Transformer 架构的学生和开发者友好的方式,深入介绍 BLIP 的背景、创新模型设计、数据自举流程以及关键实验发现。

视觉-语言预训练中的核心问题

在视觉-语言预训练 (VLP) 中,驱动 BLIP 发展的两大主要挑战是:

架构不匹配

传统的 VLP 方法常面临架构上的两难:

  • 仅编码器模型 (例如 CLIP) 在学习对齐的图像和文本表示上非常有效。它们在理解类任务 (如图文检索和分类) 上表现出色。然而,它们的架构并不天然适合自回归文本生成,这使得图像描述等任务变得不那么直接。
  • 编码器-解码器模型设计用于文本生成,在图像描述等任务上表现良好。但它们并不总是针对检索任务所需的效率和性能进行优化。

目标是设计一个统一模型,能够灵活地处理理解和生成任务,同时尽量减少架构上的摩擦和额外开销。

网络数据噪声

最先进的 VLP 方法大多依赖从网络自动抓取的大规模图像与替代文本对 (例如 Conceptual Captions、LAION) 。虽然这些数据集便宜且丰富,但关联的替代文本通常嘈杂、不相关,或并未准确描述图像的视觉内容。

尽管简单地扩大数据集规模 (即使用更多嘈杂数据) 确实带来了性能提升,但这并没有从根本上解决误导性监督的问题。BLIP 提出了一种更有效的策略来利用网络数据: 改进数据质量,而不仅仅是增加数量。

引入 BLIP: 一个统一的框架

BLIP 的贡献直接针对上述两项限制: (1) 设计一个灵活的模型架构,使其可用于多种下游模态和任务同时共享参数以提高效率;(2) 通过轻量级的自举流程提升网络数据的质量。

多模态编码器-解码器混合 (MED)

BLIP 的核心建模创新是多模态编码器-解码器混合 (MED) 。该架构允许单一基于 Transformer 的文本模型配置成三种不同的运行模式——单模态编码器、图像支撑的文本编码器和图像支撑的文本解码器——同时通过共享大量参数以促进效率和相互学习。

Figure 2. 该图示说明了一个用于“图像支撑的语言理解”的多组件架构,包含三个主要模块并通过反馈回路连接。左侧的“图像编码器”通过 N 个相同的块 (包含自注意力和前馈层) 处理视觉输入 (一个小女孩抱着一只小猫,旁边有蓝色的栅栏) 的照片。这将图像编码为表示为 [CLS] + [Image Features] 的特征。这些特征输入到两个并行分支: 中央的“文本编码器”接收诸如 "[CLS]+[Prompt]" 的文本输入,应用 N 个块,每个块由交叉注意力和双向自注意力机制组成;邻近的“图像支撑文本编码器”也处理类似的提示,但在图像表示与文本 token 之间使用交叉注意力。两者的编码输出流向右侧的图像支撑文本解码器,其结构与文本编码器相似,但在最终阶段将双向自注意力替换为因果自注意力 (Causal Self-Attention) 。它以 "[Decode]+..." 开头解码序列。解码结果随后进入表示语言建模目标的 LM 模块。两个编码表示共同用于计算 ITM 分数 (图像-文本匹配) ,而所有组件最终汇聚用于评估整体性能的 ITC 指标。

生成与过滤 (CapFilt)

数据层面的创新是 CapFilt,一种细化嘈杂网络图文对的数据自举方法。该流程包含一个用于为原始网络图像生成合成描述的*描述生成器 (Captioner) 以及一个用于评估给定描述 (无论是原始还是合成) 是否准确匹配图像的过滤器 (Filter) *,并丢弃低质量的配对。经过筛选的高质量对随后用于预训练新的 BLIP 模型。

Figure 1. 该图展示了一个带有“Cap”和“Filt”两个阶段标注的流程图。左侧是一张覆盖奶油糖霜和巧克力碎屑的巧克力蛋糕照片,上面装饰着一个类似狗形状的白色可食用装饰。一个箭头从该照片指向一个地球图标,然后指向一个粉色方框,内含文本 "blue sky bakery in sunset park"。该结果旁有一个红色的“X”标记,表示被拒绝,并通过箭头连回标注为 “Filt” 的组件 (可能代表过滤) 。在被拒绝路径下方,另一个箭头从相同的地球图标指向一个绿色方框,内含文本 "chocolate cake with cream frosting and chocolate sprinkles on top"。此结果旁有绿色勾选,表示接受,并同样连回第二个 “Filt” 组件。

深入了解 BLIP 的组件

下面让我们更详细地探讨 MED 架构及其相关的预训练目标。

MED 架构详解

MED 模型集成了作为图像编码器的视觉 Transformer (ViT) ,它将输入图像处理为一系列 patch 嵌入,并增加一个 [CLS] token 用于全局图像特征。文本部分则是一个基于 Transformer 的编码器/解码器,可通过切换不同的注意力机制来实现其三种功能:

  1. 单模态编码器 (用于图像-文本对比学习 - ITC) :
  • 图像编码器 (ViT) 独立地对图像进行编码。
  • 文本编码器 (类似 BERT,具有双向自注意力) 独立地对文本进行编码,并用 [CLS] token 汇总句子信息。
  • 这些独立的单模态表示随后被比较,以在共享的嵌入空间中对齐图像与文本。
  1. 图像支撑的文本编码器 (用于图像-文本匹配 - ITM) :
  • 该模式通过插入额外的交叉注意力 (CA) 层扩展文本编码器,使文本 token 能够关注图像特征,从而实现更细粒度的视觉与文本信息融合。
  • 一个特殊的 [Encode] token 被添加到文本输入前端,其输出嵌入作为图像-文本对的多模态表示。该表示由一个分类器用于预测图像与文本是否匹配。
  1. 图像支撑的文本解码器 (用于语言建模 - LM / 描述生成) :
  • 在该模式中,文本 Transformer 的双向自注意力层被因果自注意力层替换,以支持自回归文本生成。
  • 它按顺序生成文本 token,生成过程通过与图像特征的交叉注意力模块进行条件约束 (与图像支撑编码器使用的交叉注意力相同) 。
  • 一个 [Decode] token 表示生成序列的开始,解码器通过自回归采样或束搜索生成描述。

单一模型为何能同时在两类任务上表现良好: MED 架构的优势在于其统一方法: 编码器模式高效地产生用于检索任务的对齐嵌入,而解码器模式则支持开放式生成。一个关键设计选择是参数共享策略: 大多数文本 Transformer 层 (嵌入层、交叉注意力、前馈网络) 在编码器与解码器之间共享。只有自注意力 (SA) 层有所区别 (编码器为双向,解码器为因果) ,这反映了编码与解码任务之间的基本差异,同时最大化训练效率与相互增益。

BLIP 的预训练目标

BLIP 在预训练期间联合优化三个目标,平衡理解能力与生成能力。每个图像-文本对都会先经过一次计算密集的视觉 Transformer 前向传递,然后通过文本 Transformer 进行三次较轻的前向传递,激活不同的功能以计算相应的损失:

  1. 图像-文本对比 (ITC) 损失:
  • 该目标激活单模态编码器。其目标是通过鼓励正 (匹配) 图文对有相似表示并排斥负 (不匹配) 对,来对齐视觉与文本变换器的特征空间。
  • 损失函数类似于 InfoNCE 等对比学习目标: \[ \mathcal{L}_{ITC} = -\sum_i \log\frac{\exp(\mathrm{sim}(I_i, T_i)/\tau)}{\sum_j \exp(\mathrm{sim}(I_i, T_j)/\tau)} \] 其中 sim 是余弦相似度,\(\tau\) 是温度参数。BLIP 还引入了动量编码器来生成更稳定的“软标签”作为训练目标。
  1. 图像-文本匹配 (ITM) 损失:
  • 该损失激活图像支撑文本编码器。它侧重于学习能够捕捉视觉与语言之间详细对齐的多模态表示。
  • ITM 是一个二元分类任务,线性层 (ITM 头) 预测图像-文本对是匹配还是不匹配。为提高训练效果,BLIP 采用了困难负样本挖掘策略,优先挑选语义相似但实际不匹配的负样本。
  1. 语言建模 (LM) 损失:
  • 该目标激活图像支撑文本解码器。它通过以自回归方式最大化文本的似然,训练模型根据图像生成连贯的文本描述。
  • 应用带标签平滑的交叉熵损失。与在 VLP 中常见的掩码语言建模 (MLM) 不同,LM 直接赋能模型将视觉信息转换为流畅的人类式描述,从而为生成类任务提供强泛化能力。

多任务预训练中的效率: 文本编码器与解码器之间 (自注意力层除外) 的参数共享对于高效的多任务学习至关重要。该设计使模型能够利用编码与解码任务间的共性知识,提高整体训练效率而不会损害特定任务性能。

CapFilt: 自举更高质量的数据

CapFilt 背后的动机很简单: 网络替代文本虽然丰富,但本质上存在噪声。BLIP 提出,不应仅仅增加这些嘈杂数据的数量,而应改善监督的质量。

CapFilt 流程

CapFilt 是一个两阶段流程,利用预训练的 MED 模型来为训练新的 BLIP 模型创建更干净、更高质量的数据集。

  1. 初始预训练: 首先在人工注释数据集 (如 COCO 和 Visual Genome) 与现有网络数据集 (例如 Conceptual Captions、SBU captions) 的组合上预训练一个基础 MED 模型。
  2. 模块初始化: 从该预训练的 MED 模型中,初始化两个专门模块,并在一个小规模、高质量的人工注释数据集 (例如 COCO) 上分别微调:
  • Captioner (描述生成器) : 一个图像支撑的文本解码器,使用 LM 目标进行微调以在给定图像的情况下生成描述性标题。
  • Filter (过滤器) : 一个图像支撑的文本编码器,使用 ITC 和 ITM 目标进行微调以判断给定文本是否准确匹配图像。
  1. 数据集自举: 对于一个大规模的原始网络图像集合 \(I_w\):
  • 描述生成器 (captioner) 为每张图像生成一个合成描述 \(T_s\) (通常每张图像生成一个) 。
  • 过滤器 (filter) 随后评估每张图像的原始网络文本 \(T_w\) 与新生成的合成描述 \(T_s\)。它会删除任何被预测为“与图像不匹配”的图文对。
  1. 新模型预训练: 将被过滤后的原始网络文本、被接受的合成描述以及所有现有的人工注释数据合并,形成新的自举数据集。然后从头开始在该增强的数据集上预训练一个全新的 BLIP 模型。

Figure 3. 该图示说明了一个用于使用数据集自举训练多模态模型的两阶段流程。左侧“模型预训练”部分,从组合数据集 D = {(I_w, T_w)} + {(I_h, T_h)} 开始初始化模型,其中 I 表示图像 (网络图像 I_w、人工注释图像 I_h) ,T 表示文本 (网络文本 T_w、人工注释文本 T_h) 。该预训练输入到“多模态编码器-解码器混合”架构,进而支持下游任务。右侧“数据集自举”部分,通过过滤过程迭代扩展训练数据。初始集合 {I_w, T_w} 经由图像支撑文本编码器组件进行“过滤”得到过滤后的网络文本 T_w’。与此同时,另一条流从原始网络图像 I_w 生成合成文本 T_s。这些处理后的数据集 — {I_w, T_w’} 和 {I_w, T_s} — 被合并为扩展数据集 D = {(I_w, T_w’)} + {(I_w, T_s)} + {(I_h, T_h)}。最终阶段包括对 Captioner (图像支撑文本解码器) 、LM 微调以及 ITC&ITM 微调等组件基于这些丰富数据的再训练。

CapFilt 为何有效

CapFilt 的有效性源自其两个模块的协同作用:

  • Captioner: 它生成新的文本描述,通常更精确并直接相关于图像内容,特别是在原始替代文本稀疏或离题时。这为模型提供了更丰富、更准确的语义信号。
  • Filter: 它作为质量控制机制,防止误导性的监督,无论这些误导来自嘈杂的网络文本还是生成质量差的合成描述。

关键在于,captioner 与 filter 是分别微调 (解耦) 的。这避免了“确认偏差” (confirmation bias) : 若过滤器与生成器共享参数,过滤器可能对其“伙伴”生成的描述过于宽容,导致过滤效果下降。

CapFilt 的关键设计决策

为优化 CapFilt 的性能,作者做出若干实用选择:

  • 合成描述的多样性: 作者发现使用nucleus 采样 (一种随机解码方法,p=0.9) 生成合成描述,比确定性的束搜索对下游性能有显著提升。虽然 nucleus 采样可能产生更多被过滤器判定为“嘈杂”的描述,但增加的多样性使模型接触到更广泛的语言表达,从而获得更丰富、更具泛化性的学习体验。
  • 轻量级微调: captioner 与 filter 模块在相对较小的人工注释数据集 (如 COCO) 上进行微调。与主 BLIP 模型的完整预训练相比,这一微调过程计算开销较低。
  • 训练新模型: 在创建自举数据集后,用该数据集从头预训练一个新的 MED 模型。研究者观察到,在自举数据集上继续微调原始模型 (即从中初始化 captioner 和 filter 的模型) 所带来的收益较小。这与知识蒸馏中的观察一致: 基于改进数据从头训练的学生模型有时能超越其教师模型。

定性示例

为了展示 CapFilt 的影响,请看这些示例,显示了原始网络替代文本 (通常不相关或模糊) 与 BLIP 的描述生成器所生成的合成描述之间的对比。过滤器在接受优质描述并拒绝有问题的描述中起着关键作用。

Figure 4. 该图展示了一个宁静的日落场景,位于一片平静的水面之上,可能是河流或湖泊。太阳位于地平线较低位置,投射出温暖的橙色光芒并在水面上形成明亮的倒影。几只鸟剪影在落日下方飞翔,背景处隐约可见树木轮廓和可能的远处建筑。给出的网络文本 \(T_w\): “from bridge near my house” 被拒绝,而合成文本 \(T_s\): “a flock of birds flying over a lake at sunset” 被接受,展示了过滤器在提升描述质量方面的作用。

实验结果与见解

BLIP 在广泛的视觉-语言任务上进行了综合评估,包括图像-文本检索 (图像到文本与文本到图像) 、图像描述、视觉问答 (VQA) 、自然语言视觉推理 (NLVR²) 和视觉对话 (VisDial) 。值得注意的是,它在视频-语言任务上的零样本迁移能力也表现强劲。

跨任务的统一性能

BLIP 在理解与生成任务上的统一性表现出一致的最先进性能:

  • 显著改进: BLIP 在多个基准上超越了强大的先前模型 (如 ALBEF 和 CLIP) 。例如,在图像-文本检索上平均 recall@1 提升了 +2.7%,在图像描述的 CIDEr 分数上提高了 +2.8%,在 VQA 上相比可比基准提升了 +1.6% 的绝对分数。
  • 可扩展性: CapFilt 的好处随更大数据集和更强视觉骨干的应用而有效放大。将 CapFilt 应用于包含 1.29 亿图像的数据集进一步提升了检索和描述性能。
  • Nucleus 采样的优势: 尽管 nucleus 采样导致更高的“噪声率” (更多被过滤器标记的描述) ,但在合成描述生成中使用随机采样得到的下游模型仍优于束搜索。随机采样带来的多样性对于学习更有价值。
  • 最佳参数共享: 在编码器与解码器之间共享除了自注意力层之外的所有文本参数的精心设计,在模型紧凑性与性能之间达到了最佳平衡。反之,共享自注意力层会因任务要求冲突而降低性能。

泛化至视频任务

一个特别引人注目的发现是 BLIP 在视频-语言任务上的强泛化能力 (零样本) 。即便 BLIP 仅在静态图像上训练,也可以通过从视频中抽取若干帧并将其视为图像序列,直接应用于文本到视频检索和视频问答。这种完全忽略时间信息的简单方法仍能使 BLIP 在零样本设置下取得最先进的性能,甚至超过一些在视频数据上显式微调的模型。

MED 架构的灵活性允许它方便地适配各种下游任务:

  • 视觉问答 (VQA) : 模型将图像和问题编码为多模态嵌入,然后使用解码器自回归地生成答案,并以 LM 损失进行微调。
  • 自然语言视觉推理 (NLVR²) : 为了在两张图像上进行推理,BLIP 引入两个交叉注意力流,分别处理每张图像,然后合并它们的输出,分类器在 [Encode] token 上进行判断。
  • 视觉对话 (VisDial) : 该任务采用 ITM 表述来判别在给定对话历史和图像-描述嵌入的条件下正确与否的对话回应。

Figure 5. 该图展示了三个计算机视觉模型的架构: (a) VQA, (b) NLVR² 和 (c) VisDial。对于视觉问答 (VQA) ,图像编码器处理输入“Image”,问题编码器接收 [Encode] + Q 作为输入。这些编码表示被输入到答案解码器。对于自然语言视觉推理 (NLVR²) ,两张图像分别通过独立的图像编码器,然后通过交叉注意力层合并以根据文本信息匹配生成真假结果。对于视觉对话 (VisDial) ,对话历史和描述与图像编码模块整合以生成答案。

这些架构适配展示了 MED 框架的内在灵活性,使其能够使用预训练组件应对多样的多模态挑战。

实际意义与未来方向

BLIP 的贡献为视觉-语言 AI 社区提供了有价值的见解和实用指南:

  • 训练成本: 虽然在大规模数据集上的 BLIP 预训练可能计算代价较高,但 CapFilt 步骤本身相对轻量。captioner 和 filter 的微调只需一个小规模注释数据集 (例如 COCO) ,使得数据自举过程成为一种成本效益较高的提升数据质量的方法。
  • 避免确认偏差: 将 captioner 与 filter 解耦、分别微调对于防止确认偏差至关重要。若它们共享参数,过滤器可能会过于接受 captioner 生成的描述,从而导致过滤效果下降。
  • 训练新模型: 为获得最佳效果,建议在 CapFilt 自举得到的数据集上从头训练一个新的 MED 模型,而不是在已有模型上继续微调。这与知识蒸馏中的原则一致: 学生模型通常在从零开始训练并利用改进数据时表现最佳。

展望未来,BLIP 论文提出了若干有前景的研究方向:

  • 多轮自举: 探索多轮数据集自举,在每轮中反复应用 captioner 与 filter 以进一步精炼数据集。
  • 生成多重描述: 研究为每张图像生成多条多样化合成描述对扩展和多样化预训练语料的影响。
  • 模型集成: 训练多个不同的 captioner 与 filter,并在 CapFilt 框架中结合它们的优势,以潜在降低个体偏差并提升总体数据质量。

结论

BLIP 代表了视觉-语言预训练的一大进步,表明架构创新与数据质量改进的结合能够带来显著收益。

多模态编码器-解码器混合 (MED) 提供了一个实用且灵活的架构,有效弥合了理解类 (检索) 与生成类 (描述) 任务之间的差距。策略性地共享参数确保了效率,同时保持了任务特异性的能力。

生成与过滤 (CapFilt) 方法凸显了将嘈杂网络监督转化为更有信息性的信号的巨大价值。通过产生多样的合成描述并智能地过滤不匹配样本,BLIP 展示了数据质量往往比原始数据数量更具影响力。该方法在更大数据集和更强视觉模型上的可扩展性,以及其在视频-语言任务上的出色零样本泛化能力,强调了其稳健性和更广泛应用的潜力。

BLIP 强有力地提醒我们: 在模型架构与数据质量两方面进行全面改进,往往比仅依赖简单扩规模更能造就更强大、更通用的 AI 系统。