BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!...

关注公众号,发现CV技术之美


 写在前面

视觉语言预训练 (VLP) 提高了许多视觉语言任务的性能。但是,大多数现有的预训练模型仅在基于理解的任务或基于生成的任务中表现出色。此外,通过使用从web收集的嘈杂的图像-文本对来扩展数据集,在很大程度上实现了性能改进,但这是监督的次优来源。

在本文中,作者提出了BLIP,这是一个新的VLP框架,可以灵活地转换到视觉语言理解和生成任务。BLIP通过引导字幕有效地利用了嘈杂的web数据,其中字幕器(captioner)生成合成字幕,而过滤器(filter)则删除了嘈杂的字幕。

作者在广泛的视觉语言任务上获得了最先进的结果,例如图像文本检索 ,图像字幕和VQA。当以zero-shot方式直接转移到视频语言任务时,BLIP还表现出很强的泛化能力。

 1. 论文和代码地址

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第1张图片

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

论文:https://arxiv.org/abs/2201.12086

代码:https://github.com/salesforce/BLIP

 2. Motivation

视觉语言预训练最近在各种多模态下游任务上获得了巨大的成功。然而,现有的方法有两个主要的局限性:

1) 模型角度: 大多数方法要么采用基于编码器的模型,要么采用编码器-解码器模型。然而,基于编码器的模型不太容易直接转换到文本生成任务(例如图像字幕),而编码器-解码器模型尚未成功用于图像文本检索任务。

2) 数据角度: SOTA的方法(如CLIP、ALBEF等)都在从web上收集到的图文对上进行预训练。尽管通过扩展数据集获得了性能提升,但本文的研究表明,对于视觉语言学习来说,有噪声的网络文本是次优的。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第2张图片

为此,作者提出了BLIP: 引导语言图像预训练(如上图所示),以实现统一的视觉语言理解和生成。BLIP是一个新的VLP框架,与现有方法相比,它可以实现更广泛的下游任务。它分别从模型和数据角度有两个贡献:

1) 多模态编码器-解码器混合(MED):一种用于有效多任务预训练和灵活迁移学习的新模型架构。MED可以作为单模态编码器、基于图像的文本编码器或基于图像的文本解码器工作。该模型与三个视觉语言目标联合预训练:图像文本对比学习、图像文本匹配和图像条件语言建模。

2) 字幕和过滤(CapFilt):一种新的数据集增强方法,用于从噪声图像-文本对中学习。作者将预先训练的MED分为两个模块: 一个字幕器,用于生成给定web图像的合成字幕,以及一个过滤器,用于从原始web文本和合成文本中删除嘈杂的字幕。

通过广泛的实验和分析,作者发现了以下几个现象:

  • 作者表明,字幕器和过滤器通过引导字幕,在各种下游任务上实现显著的性能改进。作者还发现,更加多样化的字幕会带来更大的收益。

  • BLIP在广泛的视觉语言任务中实现了最先进的性能。当作者将模型直接转移到两个视频语言任务:文本到视频检索和videoQA时,本文的方法还实现了最先进的Zero-shot性能。


 3. 方法

3.1. Model Architecture

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第3张图片

作者使用视觉Transformer 作为图像编码器,该图像编码器将输入图像分成patch,并将它们编码为嵌入序列,并带有额外的 [CLS]  token来表示全局图像特征。与使用预训练的目标检测器进行视觉特征提取相比,使用ViT更易于计算,并且已被较新的方法采用。

为了预训练一个既有理解能力又有生成能力的统一模型,作者提出了多模态混合编码器-解码器(MED),这是一个多任务模型,可以在以下三种结构之一中运行:

1) 单模态编码器,分别对图像和文本进行编码。文本编码器与BERT相同,其中将 [CLS]  token附加到文本输入的开头以概括句子。

2) Image-grounded文本编码器,通过在文本编码器的每个transformer块的自注意 (SA) 层和前馈网络 (FFN) 之间插入一个额外的交叉注意 (CA) 层来注入视觉信息。文本中附加了一个特定于任务的[Encode] token,[Encode]的输出嵌入被用作图像-文本对的多模态表示。

3) Image-grounded文本解码器,将基于图像的文本编码器中的双向自注意力层替换为因果自注意力层。[Decode]  token用于表示序列的开始,而[EOS] token用于表示其结束。

3.2. Pre-training Objectives

作者在预训练期间共同优化了三个目标,其中两个基于理解的目标和一个基于生成的目标。每个图像-文本对仅需要一次通过计算较重的视觉Transformer的正向传递,而三次通过文本转换器的正向传递,以激活不同的结构以计算如下所述的三个损失函数。

图像文本对比损失 (ITC) 激活单模态编码器。其目的是对齐视觉transformer和文本transformer的特征空间,通过鼓励正图像-文本对具有相似的表示来实现。事实证明,这是提高视力和语言理解的有效目标。

图像文本匹配损失(ITM)激活图像文本编码器。它的目的是学习图像-文本多模态表示,捕捉视觉和语言之间的细粒度对齐。ITM是一个二分类任务,给定其多模态特征,模型使用ITM头 (线性层) 来预测图像-文本对是正 (匹配) 还是负 (不匹配)。

语言建模损失(LM)激活image-grounded文本解码器,该解码器旨在生成给定图像的文本描述。它优化了交叉熵损失,从而训练模型以自回归方式最大化文本的可能性。在计算损失时,作者采用0.1的标签平滑。与广泛用于VLP的MLM损失相比,LM使模型具有将视觉信息转换为连贯字幕的泛化能力。

为了在利用多任务学习的同时进行有效的预训练,文本编码器和文本解码器共享除SA层之外的所有参数。原因是编码和解码任务之间的差异最好由SA层捕获。尤其是,编码器采用双向自注意来构建当前输入token的表示,而解码器采用因果自注意来预测下一个token。另一方面,嵌入层、CA层和FFN在编码和解码任务之间的作用类似,因此共享这些层可以提高训练效率,同时受益于多任务学习。

3.3. CapFilt

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第4张图片

由于高昂的标注成本,存在有限数量的高质量人工标注图像文本对 ,如COCO。最近的研究利用了大量从网络上自动收集的图像和文本对。但是,这些文本通常无法准确描述图像的视觉内容,从而使它们成为嘈杂的信号,对于学习视觉语言对齐不是最佳的。

作者提出了字幕和过滤(Captioning and Filtering,CapFilt),这是一种提高文本语料库质量的新方法。上图给出了CapFilt的图示。它引入了两个模块:一个用于生成给定web图像的字幕的字幕器,以及一个用于去除噪声图像-文本对的过滤器。字幕器和过滤器都是从同一个预训练过的MED模型中初始化的,并在COCO数据集上单独微调。微调是一个轻量级的过程。

具体地说,字幕器是一个基于图像的文本解码器。它与LM目标相结合,对给定图像的文本进行解码。给定web图像,字幕器生成合成字幕。过滤器是一个基于图像的文本编码器。它与ITC和ITM的目标相结合,以了解文本是否与图像匹配。

过滤器会去除原始web文本和合成文本中的噪声文本,如果ITM头预测文本与图像不匹配,则该文本被视为噪声文本。最后,作者将过滤后的图像-文本对与人类标注对结合起来,形成一个新的数据集,并使用该数据集预训练一个新模型。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第5张图片

上图展示了被过滤器接受和拒绝的文本可视化。

 4.实验

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第6张图片

上表展示了字幕器(C)和过滤器(F)对数据集bootstrapping的影响。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第7张图片

上表展示了合成字幕生成中beam search和nucleus sampling的比较。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第8张图片

上表展示了在预训练期间比较文本编码器和解码器的不同参数共享策略的实验结果。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第9张图片

上表展示了字幕器和过滤器之间共享参数的影响。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第10张图片

上表展示了与COCO和Flickr30K数据集上SOTA的图像文本检索方法进行比较。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第11张图片

上表展示了Flickr30K上的Zero-shot图像文本检索结果。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第12张图片

上表展示了与NoCaps和COCO字幕上最先进的图像字幕方法进行比较。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第13张图片

上表展示了与VQA和NLVR 2的最新方法进行比较。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第14张图片

上表展示了与VisDial v1.0验证集的最新方法进行比较。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第15张图片

在MSRVTT数据集的1k测试集上,与最先进的文本到视频检索方法进行比较。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第16张图片

上表展示了与VideoQA上最新方法对比的实验结果。

 5. 总结

在本文中,作者提出了BLIP,这是一个新的VLP框架,在广泛的下游视觉语言任务上具有最先进的性能,包括基于理解和基于生成的任务。BLIP通过注入不同的合成字幕和去除带噪字幕,使用从大规模带噪图像-文本对中引导的数据集,预训练多模态混合编码器-解码器模型。

作者发现,有几个潜在的方向可以进一步提高BLIP的性能:

1)多轮数据集的bootstrapping;

2)为每幅图像生成多个合成字幕,进一步扩大预训练语料库;

3)通过训练多个不同的字幕器和过滤器,并在CapFilt中组合他们的力量,来模拟模型集成。

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第17张图片

END

欢迎加入「视觉语言技术交流群备注:VL

BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!..._第18张图片

你可能感兴趣的:(计算机视觉,机器学习,人工智能,深度学习,java)