BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
BLIP:引导语言图像预训练,实现统一的视觉语言理解和生成
Paper: https://arxiv.org/pdf/2201.12086.pdf
Github: https://github.com/salesforce/BLIP
本篇 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation:
- 首先是对BLIP文章的细节精简理解
- 然后附上原文精读
文章目录
- 1.背景动机
- 2.Model
- 2.1.MED架构
- 2.2.预训练目标
- 2.3.CapFilt架构
- 3.不同任务构造
- 4.原文阅读
- Abstract
- 1. Introduction
- 2. Related Work
- 2.1. Vision-language Pre-training
- 2.2. Knowledge Distillation
- 2.3. Data Augmentation
- 3. Method
- 3.1. Model Architecture
- 3.2. Pre-training Objectives
- 3.3. CapFilt
- 4. Experiments and Discussions
- 4.1. Pre-training Details
- 4.2. Effect of CapFilt
- 4.3. Diversity is Key for Synthetic Captions (多样性是合成字幕的关键)
- 4.4. Parameter Sharing and Decoupling(参数共享和解耦)
- 5. Comparison with State-of-the-arts
- 5.1. Image-Text Retrieval(图像文本检索)
- 5.2. Image Captioning(图像字幕)
- 5.3. Visual Question Answering (VQA,视觉问答)
- 5.4. Natural Language Visual Reasoning (NLVR,自然语言视觉推理)
- 5.5. Visual Dialog (VisDial,视觉对话)
- 5.6. Zero-shot Transfer to Video-Language Tasks(zero-shot迁移到视频语言任务)
- 6. Additional Ablation Study
- 7. Conclusion
1.背景动机
现有的VLP存在的两个问题:(擅长理解或生成任务,次优的监督数据源)
-
模型角度:大多数方法只采用基于编码器或编码器-解码器模型。
基于编码器的模型不能直接应用于文本生成任务(图像字幕生成,例如CLIP,ALBEF),而编码器-解码器模型不能直接应用于图像-文本检索任务(例如SimVLM)
-
数据视角:大多数最先进的方法(如 CLIP、ALBEF、SimVLM)都在从网络收集的图像-文本对上进行预训练。尽管扩大数据集后性能有所提高,
但有噪声的网络文本训练只是次优解,因为收集到的图文对中会有很多噪声数据,虽然通过以量取胜,降低噪声带来的影响,但是不可避免这种监督的结果不是最优的
。
为了克服现有VLP的缺陷,提出了BLIP:(擅长理解和生成任务,能过滤掉噪声字幕)
提出的BLIP:Bootstrapping Language-Image Pre-training(引导语言图像预训练),用于统一视觉语言理解和生成。BLIP 是一个新的 VLP 框架,它可以灵活地应用于视觉语言理解和生成任务。BLIP 通过引导字幕有效地利用了嘈杂的网络数据,字幕生成器生成合成字幕,过滤器去除嘈杂的字幕。
BLIP针对现有的两个问题,主要的优化思路和贡献:
-
多模态混合编码器-解码器(MED):用于有效的多任务预训练和灵活的迁移学习。MED 可以作为单模态encoder、基于image-grounded text encoder或image-grounded text decoder运行。该模型通过三个视觉语言目标进行联合预训练:
图像文本对比学习、图像文本匹配和图像条件语言建模
。 -
字幕生成和过滤(CapFilt):一种从噪声图像-文本对中学习的新数据集提升方法。 BLIP将预训练好的 MED 微调为两个模块:一个是字幕生成器,用于给网络图像生成合成字幕;另一个是过滤器,用于去除原始网络文本和合成文本中的噪声字幕。
BLIP的训练流程:
- 使用带噪声的网络数据训练BLIP
- 将预训练MED微调为Captioner和Filter两个模块
- 使用微调后的Captioner对训练数据生成一系列的字幕
- 把这些生成的字幕和原始网络文本通过预训练的 Filter 过滤,删除噪声文本字幕
- 最后将过滤后的图像-文本配对与人工标注的配对结合起来,形成一个新的数据集,重新训练一遍BLIP
2.Model
统一的 VLP 框架 BLIP,用于从噪声图像-文本对中学习,下面将从三个部分展开讲解BLIP模型框架:
-
新模型架构 MED
-
预训练目标
-
用于数据集引导的 CapFilt方法
2.1.MED架构
1.视觉编码器:提取图片特征:
如上图第一列,MED采用ViT作为图像编码器,它将输入图像分割成patches,并将其编码为嵌入序列,再加上一个[CLS]标记来表示全局图像特征。
2.文本编码器:提取文本特征:
如上图第二列,MED采用BERT作为文本编码器,其中在文本输入的开头附加一个 [CLS] 标记,以总结句子。
上述的ViT和BERT组合主要用于图文对比学习预训练任务
3.视觉文本编码器:Image-grounded text encoder:
如上图第三列,是MED的视觉文本编码器,其在每个transformer block中的bi-self-attention层(Bi-SA)和 feed forward network(FFN)之间插入一个额外的cross-attention(CA)以注入视觉信息。在输入端,[Encode]标记被附加到文本开头,用[Encode]的输出嵌入作为图像-文本对的多模态表示,
该模块主要用于图文匹配的二分类预训练任务。
4.视觉文本解码器:Image-grounded text decoder:
如上图第四列,是MED的视觉文本解码器,用causal self-attention层取代Image-grounded text encoder中的Bi-SA。添加一个额外的 [Decode] token 和结束 token,作为生成结果的起点和终点。
该模块主要用于字幕生成预训练任务。
5.MED中的权重共享:
Image-grounded text decoder和Image-grounded text encoder共享除 self-attention层之外的所有参数,另外,每个 image-text 在输入时,image 部分只需要过一个 ViT 模型,text 部分需要过3次文本模型。
2.2.预训练目标
BLIP在预训练过程中对三个目标进行了联合优化,其中包括两个基于理解的目标和一个基于生成的目标
1.图像-文本对比损失(Image-Text Contrastive Loss,ITC):
图像-文本对比损失(ITC)主要用于ViT和BERT的组合。其目标是使正样本图像-文本对的相似度更大,负样本图像-文本对相似度更低。
BLIP沿用了ALBEF的 ITC 损失法,即引入动量编码器来生成特征,并从动量编码器中创建软标签作为训练目标,以考虑负对中潜在的正标签。
2.图像-文本匹配损失(Image-Text Matching Loss,ITM):
图像-文本匹配损失(ITM)主要用于ViT和Image-grounded text encoder的组合。其目标是学习图像-文本多模态表征,捕捉视觉和语言之间的细粒度匹配。ITM 是一个二分类任务,模型使用 ITM 头(线性层)预测图像-文本对的多模态特征是正面(匹配)还是负面(不匹配)。
BLIP采用了ALBEF的hard negative mining策略,即批次中对比相似度更高的负面信息对更有可能被选中来计算损失。
3.语言建模损失(Language Modeling Loss,LM):
语言建模损失(LM)主要用于ViT和Image-grounded text dncoder的组合,其目标是生成给定图像的文本描述,以自回归的方式最大化文本的可能性。
在计算损失时,BLIP使用了 0.1 的标签平滑。与广泛用于 VLP 的 MLM 损失相比,LM 使模型具有将视觉信息转换为连贯标题的泛化能力。
2.3.CapFilt架构
现有的训练数据存在噪声干扰问题,其监督训练是次优的:
由于注释成本过高,高质量的人工注释图像-文本对 { ( I h , T h ) } \{(I_h, T_h)\} {(Ih,Th)} 数量有限(例如 COCO)。最近的工作ALBEF,SimVLM利用了从网络上自动收集的数量更多的替代图文对对 { ( I w , T w ) } \{(I_w, T_w)\} {(Iw,Tw)} 。然而,替代文本数据通常不能准确描述图像的视觉内容,即存在噪声。
噪声数据过滤架构CapFilt:(Caption和Filter)
CapFilt这一新方法来提高文本语料库的质量。上图是 CapFilt 的示意图。它引入了两个模块:一个是为网络图片生成标题的字幕器,另一个是去除图片-文本对噪声的过滤器。
字幕器和过滤器都从同一个预训练的 MED 模型初始化,并在 COCO 数据集上分别进行微调。
1.Captioning:
字幕器是一个image-grounded text decoder。它以给定图像解码文本为 LM 目标进行微调。给定网络图像 I w I_w Iw,字幕器生成字幕 T s T_s Ts。
2.Filtering:
过滤器是一个 image-grounded text encoder。它根据 ITC 和 ITM 目标进行微调,以了解文本是否与图像匹配。如果 ITM 头预测文本与图像不匹配,则该文本被视为噪声文本。
最后,我们将过滤后的图像-文本配对与人工标注的配对结合起来,形成一个新的数据集,用于预训练一个新的模型。
3.不同任务构造
1.图文检索:
BLIP在 COCO 和 Flickr30K数据集上使用 ITC 和 ITM 损失对预训练模型进行了微调。效仿ALBEF的做法,首先根据图像-文本特征的相似性选择k个候选对象,然后根据它们成对的ITM分数对所选对象进行重新排序
。
2.字幕生成:
BLIP使用在 COCO 上经过微调的模型和 LM 损失。与SimVLM类似,在每个标题的开头添加了 “a picture of”(一张图片)的提示,结果更好。
3.视觉问答:
VQA要求模型在给出图像和问题的情况下预测答案。BLIP没有将 VQA 视为多答案分类任务,而是效仿ALBEF,将其视为答案生成任务,从而实现了开放式 VQA。如上图所示,在微调过程中,重新排列预先训练好的模型,首先将图像问题编码为多模态嵌入,然后将其交给答案解码器。以真实答案为目标,利用 LM 损失对 VQA 模型进行微调。
4.自然语言视觉推理:
NLVR要求模型预测一个句子是否描述了一对图像。BLIP对预先训练好的模型进行了简单的修改。如上图所示,对于Image-grounded text encoder中的每个transformer块,都有两个cross-attention层来处理两幅输入图像,并将其输出合并后馈送到 FFN。 这两个 CA 层由相同的预训练权重初始化。合并层在编码器的前6层执行简单的平均池化,并在第 6-12 层执行连接和线性投影。MLP 分类器应用于[Encode] 标记的输出嵌入。
5.视觉对话:
VisDial不仅需要根据图像-问题对预测答案,还需要考虑对话历史和图像字幕。如上图所示,BLIP将图像和字幕嵌入连接起来,并通过cross-attention将它们传递给dialog encoder。在整个对话历史和图像-字幕嵌入的情况下,使用 ITM 损失对dialog encoder进行训练,以判别问题的答案是真还是假。
6.视频语言任务:
在处理视频输入时,BLIP对每段视频的 n 个帧进行均匀采样(检索为 n = 8,问题解答为 n = 16),然后将帧特征串联成一个序列。
4.原文阅读
Abstract
现有的VLP存在的问题:(擅长理解/生成任务,次优的监督数据源)
视觉语言预训练(VLP)提高了许多视觉语言任务的性能。然而,大多数现有的预训练模型只擅长基于理解的任务或基于生成的任务。此外,性能的提高主要是通过扩大从网络上收集的噪声图像-文本对数据集来实现的,而这是一种次优的监督来源。
BLIP的优势:(擅长理解和生成任务,能过滤掉噪声字幕)
在本文中,我们提出了一个新的 VLP 框架 BLIP,它可以灵活地应用于视觉语言理解和生成任务。BLIP 通过引导字幕有效地利用了嘈杂的网络数据,字幕生成器生成合成字幕,过滤器去除嘈杂的字幕。我们在一系列视觉语言任务中取得了最先进的结果,如图像文本检索(平均召回率@1+2.7%)、图像字幕(CIDEr+2.8%)和 VQA(VQA 分数+1.6%)。当以零镜头方式直接应用于视频语言任务时,BLIP 也表现出很强的泛化能力。代码、模型和数据集已发布。
1. Introduction
现在的VLP存在的局限性:
最近,视觉语言预训练在各种多模态下游任务中取得了巨大成功。 然而,现有方法有两大局限性:
(1) 模型角度:大多数方法要么采用基于编码器的模型,要么采用编码器-解码器模型。然而,基于编码器的模型不太容易直接应用于文本生成任务(如图像标题),而编码器-解码器模型尚未成功应用于图像-文本检索任务
(2) 数据视角:大多数最先进的方法(如 CLIP、ALBEF、SimVLM)都在从网络收集的图像-文本对上进行预训练。尽管扩大数据集后性能有所提高,但我们的论文表明,对于视觉语言学习来说,有噪声的网络文本并不是最佳选择
从现在的VLP存在的缺陷,引出BLIP的提出,并指出其贡献在现有缺陷基础上进行了改进:
为此,我们提出了 BLIP:Bootstrapping Language-Image Pre-training(引导语言图像预训练),用于统一视觉语言理解和生成。BLIP 是一个新的 VLP 框架,与现有方法相比,它能实现更广泛的下游任务。它分别从模型和数据角度引入了两个贡献:
(a) 多模态混合编码器-解码器(MED):一种新的模型架构,用于有效的多任务预训练和灵活的迁移学习。MED 可以作为单模态编码器、基于图像的文本编码器或基于图像的文本解码器运行。该模型通过三个视觉语言目标进行联合预训练:图像文本对比学习、图像文本匹配和图像条件语言建模
。
(b) 字幕制作和过滤(CapFilt):一种从噪声图像-文本对中学习的新数据集提升方法。 我们将预先训练好的 MED 微调为两个模块:一个是字幕制作器,用于给网络图像制作合成字幕;另一个是过滤器,用于去除原始网络文本和合成文本中的噪声字幕。
通过实验分析,发现两个重要结论:
我们进行了大量的实验和分析,并得出以下重要结论。
- 我们的研究表明,通过对字幕进行引导,Captioner和filter work可以在各种下游任务中共同实现性能的大幅提升。我们还发现,更多样化的字幕能带来更大的收益。
- BLIP 在图像文本检索、图像字幕、视觉问题解答、视觉推理和视觉对话等多种视觉语言任务上都取得了最先进的性能。在将我们的模型直接移植到两个视频语言任务(文本到视频检索和视频问答)中时,我们也实现了最先进的zero-shot性能。
2. Related Work
2.1. Vision-language Pre-training
指出现有的VLP都是利用存在噪声的图文对:
视觉语言预训练(VLP)旨在通过在大规模图像-文本对上对模型进行预训练,提高下游视觉和语言任务的性能。由于获取人类注释文本的费用过高,大多数方法都使用从网络抓取的图像和alt-文本对,尽管使用了简单的基于规则的过滤器,网络文本中仍然普遍存在噪声。然而,噪声的负面影响在很大程度上被忽视了,它被扩大数据集所获得的性能增益所掩盖。我们的论文表明,对于视觉语言学习来说,嘈杂的网络文本并不是最佳选择,因此我们提出了 CapFilt,以更有效的方式利用网络数据集。
指出现有的VLP利用编码器/编码-解码器不能同时处理理解和生成任务:
已有许多人尝试将各种视觉和语言任务统一到一个框架中。最大的挑战在于如何设计既能执行基于理解的任务(如图像-文本检索)又能执行基于生成的任务(如图像字幕)的模型架构。基于编码器的模型和编码器-解码器模型都不能同时胜任这两类任务,而单一统一的编码器-解码器也限制了模型的能力。我们提出的多模态混合编码器-解码器模型在广泛的下游任务中提供了更大的灵活性和更好的性能,同时保持了预训练的简单和高效。
2.2. Knowledge Distillation
指出现有的KD方法,以及BLIP提出的KD方法:
知识蒸馏(KD)旨在通过从教师模型中蒸馏知识来提高学生模型的性能。自我蒸馏是 KD 的一种特殊情况,在这种情况下,教师和学生的规模相等。它在图像分类和最近的 VLP中被证明是有效的。现有的 KD 方法大多只是强制学生与教师具有相同的类别预测,与之不同的是,我们提出的 CapFilt 可以被解释为在 VLP 背景下执行 KD 的一种更有效的方法
,在这种方法中,字幕制作者通过语义丰富的合成字幕来提炼知识,而过滤器则通过去除有噪声的字幕来提炼知识
。
2.3. Data Augmentation
指出BLIP中通过合成字幕以数据增强的优势:
虽然数据增强(DA)已被广泛应用于计算机视觉领域,但用于语言任务的数据增强却不那么简单。最近,生成语言模型被用于合成各种 NLP 任务的示例。与这些专注于低资源语言任务的方法不同,我们的方法展示了合成字幕在大规模视觉语言预训练中的优势。
3. Method
我们提出了一个统一的 VLP 框架 BLIP,用于从噪声图像-文本对中学习。本节介绍
-
新模型架构 MED
-
预训练目标
-
用于数据集引导的 CapFilt方法
3.1. Model Architecture
使用的ViT作为视觉编码器:
我们采用visual Transformer作为图像编码器,它将输入图像分割成patches,并将其编码为嵌入序列,再加上一个[CLS]标记来表示全局图像特征。与使用预先训练好的对象检测器进行视觉特征提取相比,使用 ViT 更便于计算,并已被最新的方法所采用。
介绍MED架构的具体组成:
为了预训练一个具有理解和生成能力的统一模型,我们提出了多模态混合编码器-解码器(MED),这是一个多任务模型,可以在三种功能中的一种中运行:
(1) Unimodal encoder,分别对图像和文本进行编码。文本编码器与 BERT相同,在文本输入的开头附加一个 [CLS] 标记,以总结句子。
(2) Image-grounded text encoder,通过在文本编码器的每个transformer块的self-attention层(SA)和 feed forward network(FFN)之间插入一个额外的cross-attention(CA)来注入视觉信息
。一个特定任务的[Encode]标记被附加到文本中,[Encode]的输出嵌入被用作图像-文本对的多模态表示。
(3) Image-grounded text decoder,用causal self-attention层取代Image-grounded text encoder中的双向自注意层。 [Decode]标记用于表示序列的开始,序列结束标记用于表示序列的结束。
3.2. Pre-training Objectives
介绍BLIP所使用的三个预训练目标:
在预训练过程中,我们对三个目标进行了联合优化,其中包括两个基于理解的目标和一个基于生成的目标。每个图像-文本对只需通过一次计算量较大的visual transformer,以及通过三次text transformer,其中不同的功能将被激活,以计算三种损失,如下所述。
图像-文本对比损失(Image-Text Contrastive Loss,ITC):
图像-文本对比损失(ITC)可激活单模态编码器
。其目的是通过鼓励正面图像-文本对与反面图像-文本对相比具有更高的相似性来调整visual transformer和text transformer的特征空间。它已被证明是提高视觉和语言理解能力的有效目标。我们沿用了ALBEF的 ITC 损失法,即引入动量编码器来生成特征,并从动量编码器中创建软标签作为训练目标,以考虑负对中潜在的正标签。
图像-文本匹配损失(Image-Text Matching Loss,ITM):
图像-文本匹配损失(ITM)激活了image-grounded text encoder。它旨在学习图像-文本多模态表征,捕捉视觉和语言之间的细粒度匹配。ITM 是一个二分类任务,模型使用 ITM 头(线性层)预测图像-文本对的多模态特征是正面(匹配)还是负面(不匹配)。为了找到信息量更大的负面信息,我们采用了ALBEF的hard negative mining策略,即批次中对比相似度更高的负面信息对更有可能被选中来计算损失。
语言建模损失(Language Modeling Loss,LM):
语言建模损失(LM)可激活image-grounded text decoder,该解码器旨在生成给定图像的文本描述。它通过优化交叉熵损失来训练模型,从而以自回归的方式最大化文本的可能性。在计算损失时,我们使用了 0.1 的标签平滑。与广泛用于 VLP 的 MLM 损失相比,LM 使模型具有将视觉信息转换为连贯标题的泛化能力。
指出BLIP中共享的参数信息:
为了在利用多任务学习的同时进行高效的预训练,文本编码器和文本解码器共享除 SA 层以外的所有参数。原因是 SA 层最能捕捉到编码和解码任务之间的差异
。特别是,编码器采用bi-directional self-attention来为当前输入标记建立表征,而解码器则采用causal self-attention来预测下一个标记。另一方面,嵌入层、CA 层和 FFN 在编码和解码任务之间的功能类似,因此共享这些层可以提高训练效率,同时受益于多任务学习
3.3. CapFilt
指出现有的训练数据存在噪声干扰问题,其监督训练是次优的:
由于注释成本过高,高质量的人工注释图像-文本对 { ( I h , T h ) } \{(I_h, T_h)\} {(Ih,Th)} 数量有限(例如 COCO)。最近的工作ALBEF,SimVLM利用了从网络上自动收集的数量更多的替代图文对对 { ( I w , T w ) } \{(I_w, T_w)\} {(Iw,Tw)} 。然而,替代文本数据通常不能准确描述图像的视觉内容,因此对于学习视觉-语言配准来说,它们是不理想的噪声数据。
介绍BLIP提出的噪声数据过滤架构CapFilt:(包含一个Caption和Filter)
我们提出了 " Captioning and Filtering"(CapFilt)这一新方法来提高文本语料库的质量。图3是 CapFilt 的示意图。它引入了两个模块:一个是为网络图片生成标题的字幕器,另一个是去除图片-文本对噪声的过滤器。字幕器和过滤器都从同一个预训练的 MED 模型初始化,并在 COCO 数据集上分别进行微调。 微调是一个轻量级程序。
Captioning:
字幕器是一个image-grounded text decoder。它以给定图像解码文本为 LM 目标进行微调。给定网络图像 I w I_w Iw,字幕器生成字幕 T s T_s Ts,每张图像一个字幕。
Filtering:
过滤器是一个 image-grounded text encoder。它根据 ITC 和 ITM 目标进行微调,以了解文本是否与图像匹配。该过滤器可去除原始网络文本 T w T_w Tw 和合成文本 T s T_s Ts 中的噪声文本,如果 ITM 头预测文本与图像不匹配,则该文本被视为噪声文本。
最后,我们将过滤后的图像-文本配对与人工标注的配对结合起来,形成一个新的数据集,用于预训练一个新的模型。
4. Experiments and Discussions
在本节中,我们首先介绍预训练的细节。然后,我们将对我们的方法进行详细的实验分析。
4.1. Pre-training Details
BLIP的实验设置:
我们的模型是用PyTorch实现的:
-
两个 16 GPU 节点上进行了预训练
-
image transformer由在 ImageNet 上预先训练好的 ViT 初始化,text transformer由BERT-base初始化。我们探索了 ViT 的两种变体:ViT-B/16 和 ViT-L/16。除非另有说明,本文中以 "BLIP "报告的所有结果均使用 ViT-B。
-
使用 2880(ViT-B)/2400(ViT-L)的Batch size对模型进行了 20 个epoch的预训练。
-
使用权重衰减为 0.05 的 AdamW优化器。
-
学习率预设为 3e-4 (ViT-B) / 2e-4 (ViT-L),并以 0.85 的比率线性衰减。
-
在预训练时,我们采用分辨率为 224 × 224 的随机图像裁剪,在微调时将图像分辨率提高到 384 × 384。
BLIP使用的预训练数据集:
我们使用了与ALBEF相同的预训练数据集,共有 1400 万张图片,其中包括两个人类注释数据集(COCO 和 Visual Genome)和三个网络数据集(Conceptual Captions 、Conceptual 12M、SBU captions)。我们还使用了另一个网络数据集 LAION进行了实验,该数据集包含 1.15 亿张图片和更多噪声文本。
4.2. Effect of CapFilt
在表 1 中,我们比较了在不同数据集上预先训练的模型,以展示 CapFilt 在下游任务中的功效,包括图像文本检索和图像字幕,以及微调和zero-shot设置。
指出使用CapFilt后的效果提升:
如果只将字幕器或过滤器应用于 1400 万张图片的数据集,可以观察到性能的提高。同时使用时,它们的效果相得益彰,与使用原始嘈杂网络文本相比,性能有了大幅提升。
CapFilt 可以通过更大的数据集和更大的视觉骨干进一步提高性能,这验证了它在数据大小和模型大小方面的可扩展性。此外,通过使用 ViT-L 的大型字幕器和过滤器,基础模型的性能也能得到提高。
在图 4 中,我们展示了一些标题及其相应图像的示例,从质量上证明了字幕器生成新文本描述的效果,以及过滤器去除原始网络文本和合成文本中嘈杂标题的效果。
图4中,作者展示了一些示例的字幕与对应的图片。 T w T_w Tw是直接从网络上爬取的原始字幕, T s T_s Ts是字幕器生成的字幕。图4中的红色文本是 Filter 删除的文本,绿色文本是 Filter 保留下来的文本。可以看出几张图片里面,红色的文本不是不好,只是没有绿色的文本对图片的描述更加贴切。这个结果说明了 CapFilt 方法确实是能够提升图文对数据集的质量。
4.3. Diversity is Key for Synthetic Captions (多样性是合成字幕的关键)
指出在生成的合成字幕中,使用随机的核采样方法对模型更有益:
在 CapFilt 中,我们采用核采样来生成合成字幕。核采样是一种随机解码方法,每个标记都是从累积概率质量超过阈值 p(我们的实验中 p = 0.9)的标记集中采样。在表 2 中,我们将其与波束搜索进行了比较,后者是一种确定性解码方法,旨在生成概率最高的字幕。尽管滤波器的噪声比更高,说明核采样的噪声更大,但显然核采样的性能更好。我们假设,原因是核采样生成的标题更多样化、更令人惊讶,其中包含更多新信息,模型可以从中受益。另一方面,波束搜索倾向于生成数据集中常见的安全标题,因此提供的额外知识较少。
4.4. Parameter Sharing and Decoupling(参数共享和解耦)
通过实验证明text endocer和decoder中共享除SA层外的其他参数对模型训练有益:
在预训练过程中,文本编码器和解码器共享除 self-attention层之外的所有参数。在表 3 中,我们对采用不同参数共享策略预训练的模型进行了评估,其中预训练是在包含网络文本的 1400 万张图像上进行的。结果表明,与不共享相比,共享除 SA 层以外的所有层会带来更好的性能,同时还能减少模型大小,从而提高训练效率。如果共享 SA 层,由于编码任务和解码任务之间的冲突,模型的性能会下降。
通过实验证明CapFilt中的Captioning和Filtering共享参数会使性能下降:
在 CapFilt 期间,字幕器和过滤器在 COCO 上进行端到端单独微调。在表 4 中,我们研究了如果字幕器和过滤器以与预训练相同的方式共享参数的效果。下游任务的性能有所下降,我们将其主要归因于确认偏差。由于共享参数,字幕器产生的噪声字幕被过滤器过滤掉的可能性较小,这一点可以从较低的噪声比(8% 比 25%)看出。
5. Comparison with State-of-the-arts
在本节中,我们将 BLIP 与现有的视觉语言下游任务的 VLP 方法进行比较。接下来,由于 SNLI-VE 的测试数据据报道存在噪声,我们在基准中省略了 SNLI-VE,并简要介绍了每个任务和微调策略。
5.1. Image-Text Retrieval(图像文本检索)
BLIP图像文本检索的配置信息:
我们在 COCO 和 Flickr30K数据集上对 BLIP 的图像到文本检索(TR)和文本到图像检索(IR)进行了评估。我们使用 ITC 和 ITM 损失对预训练模型进行了微调。为了加快推理速度,我们效仿ALBEF的做法,首先根据图像-文本特征的相似性选择 k 个候选对象,然后根据它们成对的 ITM 分数对所选对象进行重新排序
。 对于 COCO,我们设置 k = 256;对于 Flickr30K,我们设置 k = 128。
BLIP在图文检索中与其他VLP相比的结果:
如表 5 所示,与现有方法相比,BLIP 实现了性能的大幅提升。使用相同的 1400 万张预训练图像,BLIP 在 COCO 上的平均召回率@1 比之前的最佳模型 ALBEF 高出 2.7%。我们还将在 COCO 上经过微调的模型直接移植到 Flickr30K 上进行zero-shot检索,结果如表 6 所示,BLIP 也以较大优势超过了现有方法。
5.2. Image Captioning(图像字幕)
BLIP在字幕生成中与其他VLP相比的结果:
我们考虑了两个图像标题数据集:NoCaps和 COCO,这两个数据集均使用在 COCO 上经过微调的模型和 LM 损失进行评估。与SimVLM类似,我们在每个标题的开头添加了 “a picture of”(一张图片)的提示,结果稍好。如表 7 所示,使用 1400 万张预训练图像的 BLIP 大大优于使用类似预训练数据量的方法。使用 1.29 亿张图像的 BLIP 的性能可与使用 2 亿张图像的 LEMON 相媲美。需要注意的是,LEMON 需要一个计算量很大的预训练对象检测器和更高分辨率(800×1333)的输入图像,因此推理时间大大慢于使用较低分辨率(384×384)输入图像的无检测器 BLIP。
5.3. Visual Question Answering (VQA,视觉问答)
BLIP在视觉问答中的配置信息:
VQA要求模型在给出图像和问题的情况下预测答案。我们没有将 VQA 视为多答案分类任务,而是效仿ALBEF,将其视为答案生成任务,从而实现了开放式 VQA。如图 5(a)所示,在微调过程中,我们重新排列预先训练好的模型,首先将图像问题编码为多模态嵌入,然后将其交给答案解码器。以真实答案为目标,利用 LM 损失对 VQA 模型进行微调。
BLIP在视觉问答中与其他VLP相比的结果:
结果如表 8 所示。在使用 1400 万张图像的测试集上,BLIP 的性能比 ALBEF 高出+1.64%。在使用 1.29 亿张图像的情况下,BLIP 的性能优于 SimVLM,后者使用了多 13 倍的预训练数据和更大的视觉骨干,并增加了一个卷积阶段。
5.4. Natural Language Visual Reasoning (NLVR,自然语言视觉推理)
BLIP在自然语言视觉推理中的配置信息:
NLVR要求模型预测一个句子是否描述了一对图像。为了能够对两幅图像进行推理,我们对预先训练好的模型进行了简单的修改,从而得到了比以前的方法更高效的计算架构。如图 5(b)所示,对于Image-grounded text encoder中的每个transformer块,都有两个 cross-attention层来处理两幅输入图像,并将其输出合并后馈送到 FFN。 这两个 CA 层由相同的预训练权重初始化。合并层在编码器的前 6 层执行简单的平均池化,并在第 6-12 层执行连接和线性投影。MLP 分类器应用于 [Encode] 标记的输出嵌入
。
BLIP在自然语言视觉推理中与其他VLP相比的结果:
如表 8 所示,BLIP 的性能优于所有现有方法,只有 ALBEF 除外,因为 ALBEF 执行了额外的定制预训练步骤。有趣的是,NLVR的性能并没有从额外的网络图像中获益多少,这可能是由于网络数据和下游数据之间的领域差距造成的。
5.5. Visual Dialog (VisDial,视觉对话)
BLIP在视觉对话中的配置信息与对比结果:
VisDial在自然对话环境中扩展了 VQA,其中模型不仅需要根据图像-问题对预测答案,还需要考虑对话历史和图像字幕。我们采用的是辨别式设置,即模型对候选答案进行排序。如图 5©所示,我们将图像和字幕嵌入连接起来,并通过cross-attention将它们传递给dialog encoder。在整个对话历史和图像-字幕嵌入的情况下,使用 ITM 损失对dialog encoder进行训练,以判别问题的答案是真还是假。如表 9 所示,我们的方法在 VisDial v1.0 验证集上取得了最先进的性能。
5.6. Zero-shot Transfer to Video-Language Tasks(zero-shot迁移到视频语言任务)
BLIP在视频语言任务中的配置信息:
我们的图像语言模型对视频语言任务具有很强的泛化能力。在表 10 和表 11 中,我们对文本到视频的检索和视频问题解答进行了zero-shot迁移,分别直接评估了在 COCO 检索和 VQA 中训练的模型。在处理视频输入时,我们对每段视频的 n 个帧进行均匀采样(检索为 n = 8,问题解答为 n = 16),然后将帧特征串联成一个序列。请注意,这种简单的方法忽略了所有时间信息。
BLIP在视频语言任务中与其他模型相比的结果:
尽管存在领域差异且缺乏时间建模,但我们的模型在这两项视频语言任务中都取得了最先进的性能。在文本到视频的检索中,zero-shot BLIP 的召回率@1 甚至比在目标视频数据集上进行微调的模型高出 12.4%。如果 BLIP 模型被用于初始化具有时态建模的视频语言模型(例如,用 TimeSformer替换我们的 ViT),并在视频数据上进行微调,那么性能还能进一步提高。
6. Additional Ablation Study
在本节中,我们将对 CapFilt 进行更多的消融实验。
7. Conclusion
我们提出的 BLIP 是一种新的 VLP 框架,在广泛的下游视觉语言任务(包括基于理解的任务和基于生成的任务)中具有最先进的性能。BLIP 利用从大规模噪声图像-文本对中提取的数据集,通过注入不同的合成字幕和去除噪声字幕,预训练多模态混合编码器-解码器模型。我们发布的引导数据集有助于未来的视觉语言研究。
有几个潜在的方向可以进一步提高 BLIP 的性能:(1) 多轮数据集引导;(2) 为每幅图像生成多个合成字幕,以进一步扩大预训练语料库;(3) 通过训练多个不同的字幕器和过滤器来组合模型,并在 CapFilt 中结合它们的力量。我们希望我们的论文能激励未来的工作,专注于模型和数据两方面的改进,这是视觉语言研究的面包和黄油。