BLIP和BLIP2解析

1. BLIP

BLIP 是一种多模态 Transformer 模型,主要针对以往的视觉语言训练 (Vision-Language Pre-training, VLP) 框架的两个常见问题:

  1. 模型层面:大多数现有的预训练模型仅在基于理解的任务或者基于生成的任务方面表现出色,很少有可以兼顾的模型。比如, CLIP只能实现图文检索,但是不能生成文本。
  2. 数据层面:大多数现有的预训练模型为了提高性能,直接从网络收集的嘈杂图像-文本对扩展数据集。虽然提高了性能,但是很明显这个带噪声的监督信号肯定不是最优的。

1.1. 模型结构

上图是BLIP的模型结构,主要分为四个模块:

(1)图像编码器:提取图像特征

​ 图中最左边采取ViT架构提取图像的信息。将输入图像分割成一个个的 Patch,并将它们编码为一系列 Image Embedding,并使用额外的 [CLS] token 来表示全局的图像特征。

(2)文本编码器:提取文本特征

​ 图中第2列是文本编码器,就是 BERT的架构,其中 [CLS] token 附加到文本输入的开头以总结句子。作用是提取文本特征做对比学习。同时不需要cross attention。

(3) 视觉文本编码器

​ 图1第3列的是视觉文本编码器,通过 Cross-Attention来注入视觉信息,且注意力部分是双向的 Self-Attention。添加一个额外的 [Encode] token,作为图像文本的联合表征。

(4) 视觉文本编码器

​ 图1第4列的是视觉文本解码器,通过 Cross-Attention来注入视觉信息,作用是根据 ViT 给的图片特征和文本输入做文本生成的任务,所以使用的是解码器,且注意力部分是 Casual-Attention,目标是预测下一个 token。添加一个额外的 [Decode] token 和结束 token,作为生成结果的起点和终点

需要注意的是:文本编码器和文本解码器共享除SA层之外的所有参数。原因是编码和解码任务之间的差异最好由SA层捕获。另一方面,嵌入层、CA层和FFN在编码和解码任务之间的功能相似,因此共享这些层可以提高训练效率,同时受益于多任务学习。同时,每个 image-text 在输入时,image 部分只需要过一个 ViT 模型,text 部分需要过3次文本模型。

1.2. 预训练目标

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

ITC 作用于视觉编码器 和 文本编码器,通过使正样本图文对的相似性更大、负样本图文对的相似性更低,对齐视觉和文本的特征空间。

(2)图像文本匹配损失(ITM)

ITM 作用于视觉编码器 和 图像文本编码器,旨在学习图像-文本多模态表示,以捕捉视觉和语言之间的细粒度对齐。ITM是一个二元分类任务,其中模型使用ITM头(线性层)来预测图像-文本对在多模态特征下是正(匹配)还是负(不匹配)。

(3)语言模型损失(LM)

LM 作用于视觉编码器 和 图像文本解码器,用于生成任务,其目的通过cross attention 利用图像特征。它优化了交叉熵损失,该损失训练模型以自回归方式最大化文本的可能性。

1.3. BLIP 的主要缺点

最大的问题就是端到端预训练代价高

  • BLIP 使用的是端到端的联合训练,导致训练成本非常高。
  • 不利于在大规模模型或更复杂的任务上扩展。

Blip的这这个缺点,在Blip-2中解决了!

  • 比如image encoder直接用现成的,诸如CLIP的encoder或 ViT
  • large language model怎么办?直接也用现成的呗!Blip2采用的是OPT、Flan-T5等现成的

最核心的问题就是:image encoder和LLM都是现成的,这两大部分原本都是在各自的语义空间训练的,视觉特征的空间和文本特征的空间不容易对齐 。 这就是Q-Former存在的意义了!

2. BLIP-2

BLIP-2 提出了一个轻量级的 Transformer,如上图所示。该 Transformer 分两个阶段进行预训练。Q-Former 是一个轻量级 Transformer,它使用一组可学习的 Queries 向量从冻结的视觉编码器中提取视觉特征,并充当视觉编码器和文本编码器之间的瓶颈。Q-Former 把关键的视觉信息传递给 LLM。

  • 第一个预训练阶段,强制 Q-Former 学习与文本最相关的视觉表征
  • 第二个预训练阶段,通过将 Q-Former 的输出连接到冻结的 LLM 来执行视觉语言生成学习,使其输出的视觉表征可以直接由 LLM 解释。

这样一来,Q-Former 就可以有效地利用冻结的预训练图像模型和语言模型。

2.1. BLIP-2 架构

BLIP-2 由预训练好的,冻结参数的视觉模型和LLM模型,外加所提出的可训练的 Q-Former 构成。图像编码器从输入图片中提取视觉特征,Q-Former采用独特的双Transformer设计,两个子模块共享Self-Attention机制:

  • 图像Transformer(左侧):

    • 输入:可学习的查询向量(Queries),数量为32,每个query的维度是768。

    • 处理流程:先通过Self-Attention建模查询间关系,再通过Cross-Attention建立与图像特征的关联。因为两个 Transformer 的self attention是共享参数的,所以 Queries 也可以与文本输入做交互。

  • 文本Transformer(右侧):

    • 功能:同时作为文本编码器和解码器

    • 特点:与图像Transformer共享Self-Attention参数

Q-Former 一共包含了 188M 参数,其权重使用 BERT-Base 做初始化,Cross-Attention 的参数做随机初始化。Queries 随着预训练目标一起训练,迫使它们提取到与文本最相关的视觉信息。

2.2. 两阶段训练策略详解

2.2.1 第一阶段训练

在表示学习阶段,我们将Q-Former连接到冻结图像编码器,并使用图像-文本对进行预训练。我们的目标是训练Q-Former,使查询能够学习提取文本中信息量最大的视觉表示。对于不同的预训练目标,采用不同的注意力mask策略来控制在查询和文本之间的交互。

  1. 图文对比学习(ITC)

    • 原理:最大化正样本对(匹配的图像-文本对)的相似度,最小化负样本对的相似度,类似 CLIP

    • 掩码策略:阻止查询和文本相互不可见

    • 实现方式:将图像trasnformer的输出查询表示Z与文本转换器的文本表示t对齐,其中t是[CLS]标记的输出嵌入。由于Z包含多个输出嵌入,我们首先计算每个查询输出与t之间的成对相似度,然后选择最高的一个作为图像文本相似度。ITC迫使图像和文本的表示空间在语义层面"对齐"。但这种对齐不需要图像和文本在自注意力层面直接交互 , Attention Mask 方法如图3的最右侧所示,属于 Uni-modal Self-Attention Mask,不允许 Queries 和 Text 相互看到 (相互之间的注意力值为0)。

  2. 图文匹配任务(ITM)

    • 原理:学习图像和文本表示之间的细粒度对齐
    • 掩码策略:允许查询和文本相互可见
    • 实现方式:ITM 是个二分类任务,要求模型预测图像-文本对是正样本 (匹配) 还是负样本 (不匹配)。ITM 的 Attention Mask 方法如图3的最左侧所示,属于 Bi-directional Self-Attention Mask,允许 Queries 和 Text 相互看到。输出查询Z捕获了多模态信息。我们将每个嵌入的输出查询输入到一个两类线性分类器中,以获得一个logit,并将所有查询的logit平均作为输出匹配分数
  3. 基于图像的文本生成(ITG)

    • 机制:查询向量queries提取关键视觉信息,通过Self-Attention传递给文本token

    • 掩码策略:允许 Text 看到 Queries (Queries 里面有视觉信息),同时每个 Text token 只能看到它之前的 token

    • 训练方式:标准的自回归语言建模

    • 实现方式:给定输入图像作为条件的情况下生成文本。查询queries提取生成文本所需的视觉信息,然后通过self attention传递给文本token。因此,查询被迫提取捕获文本所有信息的视觉特征。采用多模态因果自我注意掩码来控制查询文本交互,查询可以相互处理,但不能处理文本标记。每个文本标记都可以处理所有查询及其之前的文本标记。我们还用一个新的[DEC]令牌替换[CLS]令牌,作为第一个文本令牌来指示解码任务

2.2.2 第二阶段训练

Queries 在经过了第1阶段的训练之后,已经学习到了如何更好地结合文本提取图片信息,因此它可以有效地将最有用的图片信息提供给 LLM,同时删除不相关的视觉信息。这减少了 LLM 学习视觉语言对齐的负担。

作者尝试了2种大型语言模型,分别是基于纯 Decoder 架构的和基于 Encoder-Decoder 架构的。对于基于纯 Decoder 架构的模型,使用语言建模目标函数进行训练。冻结参数的 LLM 的任务是根据 Q-Former 提供的视觉表征来生成文本。对于基于 Encoder-Decoder 架构的模型,把文本分成两段,前缀随着 Queries 的输出喂给 LLM 的 Encoder,希望 Decoder 输出后缀。

这一阶段通过简单的线性投影将Q-Former输出适配到语言模型:

  1. 连接方式
    • 使用全连接层将Q-Former输出投影到到与LLM的文本嵌入相同的维度
    • 将投影结果作为soft prompt,为LLM提供最有用的视觉信息
  2. 架构适配
    • 对于仅解码器架构:直接输入Q-Former生成的token
    • 对于编码器-解码器架构:前缀文本与视觉信息作为LLM编码器的输入,再生成后缀文本

整体结构图

复制代码
图像 ---> 视觉编码器 (ViT, 冻结参数) ---> Patch 特征
                                      ↓
                             [交叉注意力层]
Query Embeddings (可训练) --------> Q-Former
                                      ↓
                            压缩后的图像语义向量
                                      ↓
                             送入大语言模型 (LLM)

预训练好的视觉模型和 LLM

视觉模型使用:

  • CLIP训练的 ViT-L/14

  • EVA-CLIP训练的 ViT-g/14

LLM 模型使用:

  • OPT

  • FlanT5

2.3. 特点总结

Q-Former 是 BLIP-2 中的关键模块,Q-Former的核心是拿一组预定义好的、可学的、固定数量的 Query tokens ,通过 cross attention 层去融合来自冻结的图像编码器的视觉信息。它本质上是一个 视觉语义压缩器与对齐器

但是存在以下一些缺点:

  • 参数量大,收敛慢

  • 视觉信息有损压缩

    Q-Former在压缩视觉信息时可能会导致有损压缩,丢失重要的视觉信息。例如,Q-Former会将任意长度的visual token序列转译成固定数量的token,这种方式可能会引入有损压缩。

相比之下,MLP和AdaptiveAveragePooling能够更好地保留视觉信息。

论文:DeCo: Decoupling Token Compression from Semantic Abstraction in Multimodal Large Language Models 提出可以用AdaptiveAveragePooling替代Q-Former

相关推荐
cskywit3 小时前
MobileMamba中的小波分析
人工智能·深度学习
HyperAI超神经3 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
L.fountain6 小时前
图像自回归生成(Auto-regressive image generation)实战学习(一)
人工智能·深度学习·学习·计算机视觉·图像自回归
لا معنى له8 小时前
学习笔记:卷积神经网络(CNN)
人工智能·笔记·深度学习·神经网络·学习·cnn
资源补给站8 小时前
论文13 | Nature: 数据驱动的地球系统科学的深度学习和过程理解
人工智能·深度学习
金融小师妹8 小时前
非农数据LSTM时序建模强化未来降息预期,GVX-GARCH驱动金价4300点位多空博弈
大数据·人工智能·深度学习
weixin_395448918 小时前
迁移后的主要升级点(TDA4 相对 TDA2)
人工智能·深度学习·机器学习
光锥智能8 小时前
罗福莉首秀,雷军的AI新战事
人工智能·深度学习·机器学习
心疼你的一切8 小时前
使用Transformer构建文本分类器
人工智能·深度学习·神经网络·机器学习·transformer