Blip-2
introduction
视觉语言研究处于视觉和语言的交叉点,因此,我们自然期望视觉语言模型能够从视觉和自然语言界现成的单模态模型中获得收获。
预训练视觉模型可提供高质量的视觉呈现。预训练语言模型,尤其是大型语言模型(LLMs),具有强大的语言生成和零点转移能力。为了降低计算成本和应对灾难性遗忘问题,单模态预训练模型在预训练期间保持冻结。
面临的问题:
LLM在单模态预训练时没有看到视觉信息,因此冻结LLM再训练就变得极具挑战性。(很难将文本和图像信息对齐),为此文章提出了Q-Former结构。
模型架构
- Q-Former:一种轻量级的转换器(整体模型的可训练模块),采用一组可学习的查询向量从冻结的图像编码器中提取视觉特征。
- Image Encoder:
- 来自 CLIP 的 ViT-L/14。
- 来自 EVA-CLIP 的 ViT-g/14。
作者提出BLIP-2的架构具有通用性即通过更强的单模态编码器可以实现更好的效果。
训练策略
两阶段训练策略:
- 视觉-语言表征学习,强制 Q-Former 学习与文本最相关的视觉表征。
- 在第二个预训练阶段,我们通过将 Q-Former 的输出连接到冻结的 LLM 来执行视觉到语言的生成学习,并对 Q-Former 进行训练,使其输出的视觉表征能够被 LLM 解释。
Q-Former
由包含两个共享自注意层的transformer子模块构成:
- 图像transformer与冻结的图像编码器交互用于提取视觉特征。
- 文本transformer,它既可以用作文本编码器,也可以用作文本解码器。我们创建了一组可学习的查询嵌入,作为图像转换器的输入。查询通过自关注层相互影响,并通过交叉关注层(每隔一个转换器块插入)与冻结的图像特征相互作用。此外,查询还可以通过相同的自注意层与文本进行交互。根据预训练任务的不同,我们会应用不同的自我注意掩码来控制查询与文本之间的交互。我们使用 BERTbase的预训练权重初始化 QFormer,而交叉注意层则随机初始化。Q-Former 总共包含 1.88 亿个参数。请注意,查询被视为模型参数。
用 Z 表示输出的查询表示(image transformer的输出)。Z 的大小:32 × 768,(和Q-Former的隐藏层维度相同)这种架构迫使查询提取与文本最相关的视觉信息。
text transformer其实只是为了一阶段预训练时给图像transformer作为一个监督,其在正常的推理过程中是不使用的。
==Image Encoder选择是Clip或==
训练
一阶段
ITC:将图像转换器输出的查询表示法 Z 与文本表示的t对齐,Text Transformer的文本嵌入t是 [CLS] 标记的输出嵌入(text encoder会输出[n,32,769]的矩阵作为文本特征,然而真正用于计算的文本特征是 t[0] [0],而Query嵌入则包含多个输出嵌入(每个查询一个),因此首先计算每个Query输嵌入与文本嵌入之间的相似度,然后选择最高的一个作为图像-文本相似度。为了避免信息泄露,我们采用了单模态自关注掩码,在这种掩码下,查询和文本不能互相看到。由于使用了冻结图像编码器,与端到端方法相比,我们可以在每个 GPU 上安装更多样本。因此,我们在 BLIP 中使用了批内否定,而不是动量队列。
ITG:以输入图像为条件生成文本。由于 Q-Former 的架构不允许冻结图像编码器与文本标记之间直接交互,因此生成文本所需的信息必须首先由查询提取,然后通过自注意层传递给文本标记。因此,查询必须提取能捕捉文本所有信息的视觉特征。我们采用多模态因果自注意掩码来控制查询与文本之间的交互,这与 UniLM中使用的掩码类似。查询可以相互关注,但不能关注文本标记。每个文本标记可以关注所有查询及其之前的文本标记。我们还将 [CLS] 标记替换为新的 [DEC] 标记,作为第一个文本标记,以表示解码任务。
ITM:ITM是一个二元分类任务,通过预测图像-文本对是正匹配还是负匹配,学习图像和文本表示之间的细粒度对齐。这里将Image Transformer输出的每个Query嵌入输入到一个二类线性分类器中以获得对应的logit,然后将所有的logit平均,再计算匹配分数。ITM使用双向自注意掩码,所有Query和Text都可以相互关注。
二阶段
在生成预训练阶段,将 QFormer连接到冻结 LLM,以获取 LLM 的生成语言能力。使用全连接(FC)层将输出查询嵌入式 Z 线性投影到与 LLM 文本嵌入式相同的维度。然后,投射的查询嵌入会被添加到输入的文本嵌入中。它们起到软视觉提示的作用,使 LLM 以 Q-Former 提取的视觉表征为条件。由于 Q-Former 已经过预先训练,可以提取与语言相关的视觉表征,因此它可以有效地发挥信息瓶颈的作用,向 LLM 输送最有用的信息,同时去除无关的视觉信息。这就减轻了 LLM 学习视觉语言对齐的负担,从而缓解了灾难性遗忘问题。
在此阶段中对两种LLM进行实验:
- 基于解码器的LLM:使用LM损失进行训练。
- 基于编码器和解码器的LLM:使用前缀语言建模损失进行训练,将文本分成两部分。前缀文本(prefix text)与可视化表示法相连接,作为 LLM 编码器的输入。后缀文本(suffix text)则作为 LLM 解码器的生成目标。
数据集
包括 COCO、Visual Genome、CC3M、CC12M、SBU以及 LAION400M 数据集中的 1.15 亿张图片。
使用 BLIPlarge 标题模型生成 10 个标题,并根据 CLIP ViT-L/14 模型生成的图像-文本相似度对合成标题和原始网页标题进行排序。我们保留每张图片的前两个标题作为训练数据,并在每个预训练步骤中随机抽取一个。
训练设置
- 优化器
AdamW:β1 = 0.9,β1 = 0.98,权重衰减为 0.05。采用余弦学习率衰减,峰值学习率为 1e-4,线性热身为 2k 步。
- 增强
使用大小为 224×224 的图像,并通过随机调整大小的裁剪和水平翻转进行增强。
实验
- VQA
- Image Captioning
VQA
给定注释过的 VQA 数据后,我们对 Q-Former 和图像编码器的参数进行微调,同时冻结 LLM。我们使用open-ended answer generation loss(开放式答案生成损失)进行微调,LLM 接收 Q-Former 的输出和问题作为输入,并被要求生成答案。为了提取与问题更相关的图像特征,我们还将问题作为 Q-Former 的条件。具体来说,问题标记被作为 Q-Former 的输入,并通过自我注意层与查询进行交互,从而引导 Q-Former 的交叉注意层关注信息量更大的图像区域。
BLIP-2 在各种zero-shot视觉语言任务上的结果概览。与之前最先进的模型相比。BLIP-2 在视觉语言预训练过程中所需的可训练参数数量最少,但却实现了最高的zero-shot性能。
(与最先进的zero-shot视觉问题解答方法进行比较。)
我们对零镜头视觉问题解答任务进行了定量评估。对于 OPT 模型,我们使用 “Question: {} Answer:”。对于 FlanT5 模型,我们使用 “Question: {} Short answer:”的提示。在生成过程中,我们使用波束搜索,波束宽度为 5。我们还将长度惩罚设置为-1,以鼓励更符合人类注释的较短答案。
通过上面的实验可以得到上面总结的结论:BLIP-2 是一种通用的视觉语言预训练方法,可以有效地利用视觉和自然语言社区的快速发展。以下几个事实支持这一观点:(1) 对于 OPT 和 FlanT5,ViT-g 均优于 ViT-L。(2) 在同一 LLM 系列中,较大的模型优于较小的模型。(3) 在 VQA 上,经过指令调整的 LLM FlanT5 优于未经监督训练的 OPT。
Image Captioning
我们将提示语 “一张照片 “作为 LLM 的初始输入,并利用language modeling loss(语言建模损失)训练模型生成标题。在微调过程中,我们将 LLM 冻结,并与图像编码器一起更新 Q-Former 的参数。我们使用 ViT-g 和各种 LLM 进行实验。详细的超参数见附录。我们在 COCO 上进行微调,并在 COCO 测试集和零点转移到 NoCaps(Agrawal 等人,2019 年)验证集上进行评估。
(在 NoCaps 和 COCO 上与最先进的图像标题制作方法进行比较。所有方法都在微调过程中优化了交叉熵损失。C:CIDEr,S:SPICE,B@4:BLEU@4。)
Image-Text Retrieval
不使用 LLM,直接对第一阶段预训练模型进行微调。具体来说,我们在 COCO 上使用与预训练相同的目标(即 ITC、ITM 和 ITG)对图像编码器和 Q-Former 进行微调。然后,我们在 COCO 和 Flickr30K数据集上对模型的图像到文本检索和文本到图像检索进行评估。在推理过程中,首先根据图像文本特征相似度选择 k = 128 个候选对象,然后根据成对的 ITM 分数重新排序。我们使用 ViT-L 和 ViT-g 作为图像编码器进行实验。
(与最先进的图像-文本检索方法进行比较,在 COCO 上进行了微调,并将零镜头传输到 Flickr30K。)