Loading...

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

参考链接


Abstract

大多数现有的VLP模型大多仅仅在understanding-based tasks 或者 generation-based tsaks表现良好,但很少在这两方面都能取得较好的结果。
同时,性能的增大往往来自于数据集的扩大,但是现有的数据集大多数是web网络上采集下来的img-text pair。这些大规模从网络上采集下来的数据往往包含大量的noise,不利于模型的训练。
基于以上两点,作者提出了BLIP模型,能灵活的解决understanding-based tasks和generation-based tasks。同时运用知识蒸馏的思想,利用一个captioner和一个filter生成 synthetic captions和过滤掉noisy的pair,最终获得bootstrapping dataset,送入下一次pre-train。


Introduction

目前存在的问题

  • 现在大多数模型都选择的是encoder-based model或者encoder-decoder model。但是encoder-based model很难运用到生成任务中去,与此同时encoder-decoder model也很难运用到image-text retrieval 任务中去。
  • 如今SOTA的方法,大多运用到了web中搜集的大规模数据。但是在web中收集到的这些img-text pair大多数都是noisy的,不利于模型的训练。

创新之处

  • (a) 多模态混合编解码器(MED):MED包含unimodal encoder,image-grounded text encoder以及image-grounded text decoder三个部分。三个部分对应三个VL objectives来进行pre-train,分别是:: image-text contrastive learning, image-text matching, and imageconditioned language modeling
  • (b) 标注与过滤(CapFilt):是一种从noisy img-text pair中进行dataset bootstrapping的方法。将pre-train的MED分为两部分进行finetune,一部分是captioner,从web图像中生成synthetic captions; 另一部分是filter,过滤掉生成的caption以及web图像中noisy的图像文本对。

Vision-language Pre-training

视觉语言预训练(VLP)的目的和挑战: VLP通过在大规模图文对上预训练模型来提高下游视觉和语言任务的性能。由于获取人工标注文本的成本过高,大多数方法使用从网上爬取的图像和替代文本对。尽管使用了简单的规则过滤器,网络文本中的噪声依然普遍存在。这些噪声对学习的负面影响通常被忽视,因为数据规模的扩大带来了性能提升。文章指出网络文本的噪声对视觉语言学习是次优的,并提出了CapFilt方法以更有效地利用网络数据集。

文章还讨论了将各种视觉和语言任务统一到一个框架中的挑战。设计能够同时处理基于理解的任务(如图文检索)和基于生成的任务(如图像描述)的模型架构是一个重大挑战。现有的编码器模型和编解码器模型都无法在这两种任务上都表现出色。提出的多模态混合编解码器模型(MED)提供了更大的灵活性和更好的下游任务性能,同时保持了预训练的简洁高效。


Knowledge Distillation

知识蒸馏(KD)及其在视觉语言预训练(VLP)中的应用: 知识蒸馏是一种从“教师”模型向“学生”模型传递知识的方法,旨在提高学生模型的性能。自我蒸馏是知识蒸馏的一个特殊情况,其中教师和学生模型大小相同。在图像分类中已被证明是有效的,并且最近也被用于VLP。不同于大多数只要求学生模型有与教师相同的类别预测的KD方法,BLIP中提出的CapFilt可以被解释为一种在VLP背景下更有效进行知识蒸馏的方法。其中,标注器通过语义丰富的合成描述来传递其知识,过滤器则通过移除噪声描述来传递其知识。


Data Augmentation

数据增强(DA)在视觉语言预训练中的应用: 尽管在计算机视觉中数据增强已被广泛采用,但语言任务的数据增强不那么直接。最近,生成性语言模型被用于为各种自然语言处理任务合成示例。与这些主要针对低资源语言任务的方法不同,本文的方法展示了在大规模视觉语言预训练中合成描述的优势。


Method

BLIP,一个统一的视觉语言预训练(VLP)框架,用于学习噪声图文对。本节首先介绍了新的模型架构MED及其预训练目标,然后详细描述了用于数据集引导的CapFilt方法。BLIP通过这些创新有效地处理网络图文对中的噪声问题,增强了模型在多种视觉语言任务中的性能。


Model Architecture

MED的设计:图像编码器使用视觉变换器(ViT),它将输入图像分割成多个区块并将它们编码为一系列嵌入,加上一个额外的[CLS]标记来表示全局图像特征。与使用预训练对象检测器相比,ViT更适合计算处理,并且已被最新方法采用。

MED是一个多任务模型,具有三种功能:

  • (1) 单模态编码器: 分别对image和text进行编码。其中对image的编码是使用的ViT的模式,先把一个图片打成一块一块的patch再输入transformer;对text的编码就和BERT一致,添加一个[CLS]token表示全局的文本信息。
  • (2) 图像基础文本编码器: 在BERT的基础上,在FFN和SA之间增加了一个Cross Attention层,以为网络注入图像信息。文本中附加了一个[Encoder]token,用于表示img-text pair的多模态表示信息。
  • (3) 图像基础文本解码器: 在Image-grounded Text encoder的基础上,将Bi self-attention层换为了casual self-attention层,用于decoder操作。decoder即为bert的decoder形式,调用BertLMHeadModel(is_decoder=true), 常用在language modeling里面,添加mask,预测下一个词。同时文本中附加一个[Decoder]token用于表示序列的开始,[EOS]表示序列的结束。


Pre-training Objectives

BLIP框架的预训练过程中,共同优化了三个目标:两个基于理解的目标和一个基于生成的目标。这些目标分别是:

  • 图文对比损失(ITC):通过contrastive learning 的思想,对齐视觉transformer和文本transformer的特征空间,目的是为了获得更加优质的image和text的representation,具体操作可以参考ALBEF这篇文章。
  • 图文匹配损失(ITM):旨在学习image-text multimodal representation,来捕获视觉和语言的细粒度对齐。简单的来啊说就是图文匹配,最后输出一个二分类,positive or negative。
  • 语言建模损失(LM):三个tasks中的生成任务,为给定的图片生成对应的 description与。广泛用于VLP的MLM损失相比,LM使模型具有将视觉信息转换为连贯字幕的泛化能力。

CapFilt

CapFilt是一种新方法,旨在改善文本语料库的质量。由于高质量人工标注图文对数量有限,大量从网络自动收集的图像和替代文本对常常不准确描述图像内容,导致噪声信号。

CapFilt引入了两个模块:

  • 一个用于生成网图的标注器
  • 一个用于移除噪声图文对的过滤器。

这两个模块都基于预训练的MED模型初始化,然后在COCO数据集上单独微调。标注器是一个图像基础文本解码器,生成给定网图的合成描述。过滤器是一个图像基础文本编码器,通过ITC和ITM目标微调以学习文本是否与图像匹配。过滤器移除原始网文和合成文本中的噪声文本。最终,结合过滤后的图文对和人工标注对形成新数据集,用于预训练新模型。

如上图所示,其中 (Iw,Tw)(I_w, T_w) 代表网页图文对,(Ih,Th)(I_h, T_h) 代表高质量的手工标签的图像-文本对。

它引入了两个模块:一个基于web图像生成caption的captioner,以及一个用于消除图像文本对噪声的filter。captioner和filter都是来自同一个预训练过的MED模型中初始化的,并在COCO数据集上有单独的配置。配置是一个轻量级的过程。

整个过程大概为:先进行pre_train,之后利用 (Ih,Th)(I_h, T_h) 分别对captioner和filter进行finetune,captioner给定web图片生成对应的caption,filter利用ITM判断web图片-文字对和web图片-生成caption对是否匹配,如果不匹配,则过滤掉,最后将过滤后剩余的图片-文字对和 (Ih,Th)(I_h, T_h) 组合在一起预训练一个新模型。个人理解类似于一个新颖的在线自我知识蒸馏。