BLIP 系列

BLIP

背景

BLIP(Bootstrapping Language-Image Pre-training)是一种统一的视觉语言理解与生成的预训练模型。其核心思想是通过 Bootstrapping 方法,利用 Captioner-Filter 机制生成高质量的文本标注,从而提高数据的质量和数量。BLiP 通过多模态混合结构 (Multimodal mixture of Encoder-Decoder, MED) 实现了视觉和语言的对齐与生成。

论文: BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation


在 BLIP 中,Bootstrapping 体现在 Captioner-Filter 机制中:

  • Captioner: 生成图像的文本标注。
  • Filter: 去除标注中的噪声,提升数据质量。

通过不断迭代生成和过滤,BLIP 能够从有限的标注数据中扩展出更多高质量的训练数据。


模型结构

BLIP 的核心是多模态混合结构(MED),包括以下四个模块:

Image Encoder

  • 基于 Transformer 的 ViT 架构。将输入图像分割为多个 patch,并编码为一系列 Image Embedding
  • 使用 [CLS] token 表示全局图像特征
  • 功能:提取图像特征,用于对比学习

Text Encoder

  • 基于 BERT 架构
  • 在输入文本开头添加 [CLS] token 以总结句子
  • 功能:提取文本特征,用于对比学习

Image-grounded Text Encoder

  • 在 Text Encoder 中添加 Cross-Attention 层,注入视觉信息
  • 在输入文本开头添加 [Encode] token 以标识特定任务
  • 功能:提取文本特征并与图像特征对齐

Image-grounded Text Decoder

  • 将自注意力替换为因果自注意力(Causal Self-Attention)层
  • 在输入文本开头和结尾分别添加 [Decode] token 和 [EOS] token,标识序列的开始和结束
  • 功能:生成符合图像和文本特征的文本描述

预训练方法

图文对比损失(Image-Text Contrastive Loss, ITC)

  1. 目标:对齐图像和文本的特征空间
  2. 方法:
    • 最大化正样本图像-文本对的相似度
    • 最小化负样本图像-文本对的相似度
    • 使用动量编码器生成伪标签以辅助训练
  3. 作用:用于训练 Image Encoder 和 Text Encoder

图文匹配损失(Image-Text Matching Loss, ITM)

  1. 目标:实现视觉和语言之间的细粒度对齐
  2. 方法:
    • 通过二分类任务预测图像-文本对是正样本还是负样本
    • 使用 Hard negative mining 技术更好地捕捉负样本信息
  3. 作用: 用于训练 Image-grounded Text Encoder

语言建模损失(Language Modeling Loss, LM)

  1. 目标:生成图像的文本描述
  2. 方法:
    • 通过优化交叉熵损失函数,训练模型以自回归的方式最大化文本概率
    • 使用 0.1 的标签平滑计算损失
  3. 作用:用于训练 Image-grounded Text Decoder

CapFilt 机制

由于高质量的人工标注数据(如 COCO 数据集)有限,BLIP 从网络中收集了大量图像-文本对作为训练数据。然而这些网络数据的文本通常包含噪声。为此,BLIP 提出了 Captioning and Filtering (CapFilt)机制 :

字幕器 Captioner

  • 功能: 基于 Image-grounded Text Decoder, 生成给定图像的文本描述
  • 训练:在 COCO 数据集上使用 LM 损失函数进行微调
  • 输出: 给定网络图片 IWI_W,生成字幕 TwT_w

过滤器 Filter

  • 功能: 基于 Image-grounded Text Encoder,去除文本噪声
  • 训练:在 COCO 数据集上使用 ITC 和 ITM 损失函数进行微调
  • 方法:通过比对文本和图像的匹配情况,删除原始 Web 文本 TwT_w 和合成文本 TsT_s 中的噪声

数据集构建

将过滤后的图像-文本对与人工注释对结合,形成新的高质量数据集。使用该数据集重新训练 BLIP 模型。

总训练流程

  1. 初始训练:使用含有噪声的网络数据训练 BLIP
  2. 微调:在 COCO 数据集上微调 Captioner 和 Filter
  3. 数据过滤:使用 Filter 从原始网络文本和合成文本中去除噪声,得到干净数据
  4. 最终训练:使用干净数据重新训练 BLIP,得到高性能模型

BLIP2

与 BLIP 相比,BLIP-2 模型新引入 Querying Transformer(Q-Former)模块用于对图文进行对齐。

模型结构

BLIP-2由以下三个主要组件组成:

  • Image Encoder: 从输入图片中提取视觉特征。文中采用了两种不同的网络结构:CLIP 训练过的 ViT-L/14 和 EVA-CLIP 训练过的 ViT-g/14。
  • Large Language Model (LLM): 大语言模型进行文本生成。

    文中尝试了两种不同的网络结构: decoder-based LLM 和 encoder-decoder-based LLM

  • Q-Former: 弥补视觉和语言两种模态间的差异,实现跨模态间的对齐。Q-Former 使用了一组可学习的查询向量 (Queries)来从冻结的 Image Encoder 中提取视觉特征,然后传入 LLM 供其生成文本。 Q-Former 的结构由 Image Transformer 和 Text Transformer 两个子模块构成, 它们共享相同的自注意力层
    1. Image Transformer: 用于与冻结的图像编码器进行交互,从中提取一定数量的输出特征。
    2. Text Transformer: 既可以作为文本编码器,也可以作为文本解码器。它创建一组可学习的 Queries 作为 mage Transformer 的输入,这些 Queries 在 Image Transformer 中通过自注意力层相互作用,并通过交叉注 意力层与冻结的图像特征进行交互。

模型流程

  1. Image Encoder 接收图像作为输入,输出图像的视觉特征
  2. Q-Former 接收文本和 Image Encoder 输出的图像视觉特征,结合查询向量进行融合,学习与文本相近的视觉特征,输出 LLM 能够理解的视觉表示
  3. LLM 模型接收 Q-Former 输出的视觉标识,生成对应文本

预训练方法

BLIP2采用两阶段预训练策略:

  1. 表示学习阶段 (Representation Learning)
  2. 生成学习阶段 (Generative Learning )

表示学习

在表示学习阶段,Q-Former 被连接到冻结的 Image Encoder,训练集为图像-文本对。通过联合优化三个预训练目标,Q-Former 学习到高质量的跨模态对齐表示。为了控制 Image Transformer 和 Text Transformer 的交互方式,Q-Former 在 Query 和 Text 之间采用了不同的注意力掩码策略。

图像-文本对比学习(ITC)

ITC的自标是对齐图像嵌入和文本嵌入,最大化匹配图文对的相似度,同时最小化不匹配图文对的相似度。

  • 计算来自 Image Transformer 的 Query 嵌入与来自 Text Transformer 的文本嵌入之间的相似度
  • 为了避免信息泄漏,ITC 采用单模态自注意力掩码,禁止 Query 和 Text 之间的直接交互
  • Text Transformer 的文本嵌入是[CLS]标记的输出嵌入,而 Query 嵌入包含多个输出嵌入。计算每个 Query 嵌入 与文本嵌入的相似度,选择最高的一个作为图像-文本相似度

基于图像的文本生成(ITG)

ITG的自标是在给定输入图像作为条件的情况下,训练 Q-Former生成文本,迫使 Query提取包含文本信息的视觉特征。

  • 由于 Q-Former 的架构不允许冻结的图像编码器和文本标记之间的直接交互,生成文本所需的信息必须由 Query 提取,并通过自注意力层传递给文本标记
  • ITG 采用多模态因果注意力掩码(Causal Attention Mask),允许 Query 相互关注,但不能关注 Text 标记。每个 Text 标记可以处理所有 Query 及其前面的 Text 标记
  • [CLS]标记替换为新的[DEC]标记,作为第一个文本标记来指示解码任务

图像-文本匹配(ITM)

ITM 的目标是细粒度判断图文对是否匹配,从而增强模态对齐的局部一致性。

  • 将 Image Transformer 输出的每个 Query 嵌入输入到一个二分类线性分类器中,获得对应的 logit
  • 将所有 logit 平均,计算匹配分数。ITM 使用双向自注意力掩码,允许所有 Query 和 Text 之间相互关注

生成学习

在生成学习阶段,Q-Former 被连接到冻结的 LLM,以利用 LLM 的语言生成能力。具体步骤如下:

  1. 特征投影: 使用全连接层将 Q-Former 输出的 Query 嵌入线性投影到与 LLM 文本嵌入相同的维度
  2. 输入构造: 将投影后的 Query 嵌入添加到输入文本嵌入的前面
  3. 生成任务: 由于 Q-Former 已经过预训练,能够提取包含语言信息的视觉表示,因此它可以作为信息瓶颈,将最有用的信息传递给LLM,同时过滤不相关的视觉信息,减轻 LLM学习视觉-语言对齐的负担

BLIP2 试验了两种类型的 LLM:

  • 基于 Decoder-only 的 LLM: 使用语言建模损失进行预训练,冻结的 LLM 根据 Q-Former 的视觉表示生成文本
  • 基于 Encoder-Decoder 的LLM: 使用前缀语言建模损失进行预训练,将文本分为前缀和后缀两部分。前缀文本与视觉表示连接作为 LLM 编码器的输入,后缀文本作为 LLM 解码器的生成目标

官方代码:


BLIP 系列
https://guokent.github.io/papernotes/blip/
作者
Kent
发布于
2024年12月15日
许可协议