[BLIP]-多模态Language-Image预训练模型

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

 代码:GitHub - salesforce/BLIP: PyTorch code for BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

demo:BLIP - a Hugging Face Space by akhaliq

motivation:

  1. 从模型角度来看,大多数方法要么采用基于编码器的模型,要么采用编码器-解码器模型。编码器的模型不太容易直接迁移到文本生成的任务中,如图像标题(image captioning)等;编码器-解码器模型还没有被成功用于图像-文本检索任务。

  2. 从数据角度来看,大多数sota的方法,如CLIP都是对从网上收集的图像-文本对(image-text pair)进行预训练。尽管可以通过扩大数据集的规模来获得性能上的提高,但研究结果显示,有噪声的网络文本对于视觉语言学习来说只能得到次优的结果。

模型结构

[BLIP]-多模态Language-Image预训练模型_第1张图片

为了预训练一个具有理解和生成能力的统一模型,论文提出了多模态混合编码器-解码器(Multimodal mixture of Encoder-Decoder,MED),通过一个“模型”处理多个子任务。

  1. 单模态编码器(Unimodal encoder),对图像和文本分别进行编码。文本编码器(text encoder)与BERT相同,在文本输入的开头附加一个[CLS]标记,以总结句子。

  2. 以图像为基础的文本编码器(Image-grounded text encoder),通过在自注意力(SA)层和前馈网络(FFN)之间为文本编码器的每个Transformer块插入一个额外的交叉注意力(CA)层来注入视觉信息。一个特定任务的[Encode]标记被附加到文本上,[Encode]的输出embedding被用作图像-文本对的多模态表示。

  3. 以图像为基础的文本解码器(Image-grounded text decoder),用因果自注意力层(causal self-attention layer)替代编码器中的双向自注意力层。用[Decode]标记来表示一个序列的开始。

模型1和模型2是同一个模型2,当模型1预测时不用crossattention

训练目标主要有三个:

  1. 图像-文本对比损失(Image-Text Contrastive Loss, ITC)激活单模态编码器,目的是通过促进正向的图像-文本对与负向的图像-文本对有相似的表示,来对齐ViT和text Transformer的特征空间。

    1. 学习MoCo思想,引入momentum encoder和Queue扩大对比学习的batch大小,base encoder用于梯度更新产生新的embedding,momentum encoder根据以下公式更新,k表示momentum encoder参数,q表示base encoder参数,主要为了提升embedding的一致性,维持队列大小,将最新的embedding入队列,弹出队列头embedding。

      [BLIP]-多模态Language-Image预训练模型_第2张图片

  2. 图像-文本匹配损失(Image-Text Matching Loss, ITM)激活以图像为基础的文本编码器。它的目的是学习图像-文本的多模态表示以捕捉视觉和语言之间的细粒度对齐。ITM是一个二元分类任务,模型根据多模态特征使用一个ITM头(一个线性层)来预测一个图像-文本对是positive(匹配的)还是negative(不匹配的)。输入数据的pair对为正例,根据任务1的相似度采用多项式采样补充每个text/image的最佳负例增强训练。

  3. 语言建模损失(Language Modeling Loss, LM)激活了以图像为基础的文本解码器,其目的是生成给定图像的文本描述。它优化了交叉熵损失,训练模型以自回归的方式最大化文本的概率。

数据增强

[BLIP]-多模态Language-Image预训练模型_第3张图片

论文采用标题和过滤策略(Captioning and Filtering, CapFilt)来提高文本语料库的质量,包含了两个模块:一个是给定网络图像生成字幕的Captioner,另一个是去除噪声图像-文本对的Filter。

Captioner和Filter都是从同一个预训练的MED模型初始化的,在COCO数据集上单独进行微调。Captioner以LM为目标进行微调,对给定的图像进行文本解码生成caption;Filter以ITC和ITM的目标进行微调,以学习文本是否与图像匹配,该Filter去除原始网络文本和合成文本中的噪音文本,如果ITM头预测一个文本与图像不匹配,则该文本被认为是噪音。

最后,论文将过滤后的图像-文本对与人工标注的文本对结合起来,形成一个新的数据集用它来预训练一个新模型。

[BLIP]-多模态Language-Image预训练模型_第4张图片

 

实验结果

[BLIP]-多模态Language-Image预训练模型_第5张图片

[BLIP]-多模态Language-Image预训练模型_第6张图片

text encoder和text decoder 共享除了SA layers的参数,encoder参数指向decoder参数。

你可能感兴趣的:(论文阅读,深度学习,人工智能,计算机视觉)