论文: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:
-
从模型角度来看,大多数方法要么采用基于编码器的模型,要么采用编码器-解码器模型。编码器的模型不太容易直接迁移到文本生成的任务中,如图像标题(image captioning)等;编码器-解码器模型还没有被成功用于图像-文本检索任务。
-
从数据角度来看,大多数sota的方法,如CLIP都是对从网上收集的图像-文本对(image-text pair)进行预训练。尽管可以通过扩大数据集的规模来获得性能上的提高,但研究结果显示,有噪声的网络文本对于视觉语言学习来说只能得到次优的结果。
模型结构
为了预训练一个具有理解和生成能力的统一模型,论文提出了多模态混合编码器-解码器(Multimodal mixture of Encoder-Decoder,MED),通过一个“模型”处理多个子任务。
-
单模态编码器(Unimodal encoder),对图像和文本分别进行编码。文本编码器(text encoder)与BERT相同,在文本输入的开头附加一个[CLS]标记,以总结句子。
-
以图像为基础的文本编码器(Image-grounded text encoder),通过在自注意力(SA)层和前馈网络(FFN)之间为文本编码器的每个Transformer块插入一个额外的交叉注意力(CA)层来注入视觉信息。一个特定任务的[Encode]标记被附加到文本上,[Encode]的输出embedding被用作图像-文本对的多模态表示。
-
以图像为基础的文本解码器(Image-grounded text decoder),用因果自注意力层(causal self-attention layer)替代编码器中的双向自注意力层。用[Decode]标记来表示一个序列的开始。
模型1和模型2是同一个模型2,当模型1预测时不用crossattention
训练目标主要有三个:
-
图像-文本对比损失(Image-Text Contrastive Loss, ITC)激活单模态编码器,目的是通过促进正向的图像-文本对与负向的图像-文本对有相似的表示,来对齐ViT和text Transformer的特征空间。
-
学习MoCo思想,引入momentum encoder和Queue扩大对比学习的batch大小,base encoder用于梯度更新产生新的embedding,momentum encoder根据以下公式更新,k表示momentum encoder参数,q表示base encoder参数,主要为了提升embedding的一致性,维持队列大小,将最新的embedding入队列,弹出队列头embedding。
-
-
图像-文本匹配损失(Image-Text Matching Loss, ITM)激活以图像为基础的文本编码器。它的目的是学习图像-文本的多模态表示以捕捉视觉和语言之间的细粒度对齐。ITM是一个二元分类任务,模型根据多模态特征使用一个ITM头(一个线性层)来预测一个图像-文本对是positive(匹配的)还是negative(不匹配的)。输入数据的pair对为正例,根据任务1的相似度采用多项式采样补充每个text/image的最佳负例增强训练。
-
语言建模损失(Language Modeling Loss, LM)激活了以图像为基础的文本解码器,其目的是生成给定图像的文本描述。它优化了交叉熵损失,训练模型以自回归的方式最大化文本的概率。
数据增强
论文采用标题和过滤策略(Captioning and Filtering, CapFilt)来提高文本语料库的质量,包含了两个模块:一个是给定网络图像生成字幕的Captioner,另一个是去除噪声图像-文本对的Filter。
Captioner和Filter都是从同一个预训练的MED模型初始化的,在COCO数据集上单独进行微调。Captioner以LM为目标进行微调,对给定的图像进行文本解码生成caption;Filter以ITC和ITM的目标进行微调,以学习文本是否与图像匹配,该Filter去除原始网络文本和合成文本中的噪音文本,如果ITM头预测一个文本与图像不匹配,则该文本被认为是噪音。
最后,论文将过滤后的图像-文本对与人工标注的文本对结合起来,形成一个新的数据集用它来预训练一个新模型。
实验结果
文章来源:https://www.toymoban.com/news/detail-451104.html
text encoder和text decoder 共享除了SA layers的参数,encoder参数指向decoder参数。文章来源地址https://www.toymoban.com/news/detail-451104.html
到了这里,关于[BLIP]-多模态Language-Image预训练模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!