<<多模态预训练>>2022:CoCa: Contrastive Captioners are Image-Text Foundation Models


目录

Abstract

1、Introduction

2、Related Work

3、Approach

3.1、Natural Language Supervision

3.2、Contrastive Captioners Pretraining

3.3、Contrastive Captioners for Downstream Tasks

4、Experiments

5、Conclusion


Abstract

        本文提出了Contrastive Captioner(CoCa)这一极简设计,它将图像-文本编码器-解码器基础模型与contrastive loss 和captioning loss结合起来进行预训练。与所有解码器层都参与编码器输出的标准编码器-解码器transformers不同,CoCa省略了解码器层前半部分中的cross-attention,来编码单模态文本表示,并级联了图像编码器的其余解码层,用于多模态图像文本表示。我们在单模态的图像和文本之间应用了对比损失,此外,多模态解码器输出上的captioning loss可以自动回归预测文本token。通过共享相同的网络层,可以以最小的开销高效地计算两个训练目标。

1、Introduction

        对于视觉和视觉语言问题,已经探索了一些基础的模型:

  1. [6、7、8]表明,在图像分类数据集(如ImageNet)上,使用交叉熵损失预训练的single-encoder模型是有效的[9]。图像编码器提供了通用的视觉表示,可用于各种下游任务,包括图像和视频理解[10,11],然而,这些模型在很大程度上依赖于人工图像注释,并且没有吸收自由形式的人类自然语言的知识,这阻碍了它们在涉及视觉和语言模式的下游任务中的应用。
  2. 最近,[12、13、14]表明,通过对两个并行的编码器进行预训练,并在web级有噪声的图像-文本对上进行对比损失预训练,证明了构建图像-文本基础模型的可行性。除了仅用于视觉任务的视觉嵌入外,生成的dual-encoder模型还可以将文本嵌入编码到相同的潜在空间,从而实现新的图像和文本跨模态对齐功能,如zero-shot图像分类和图像文本检索。但由于缺少学习融合图像和文本的组件,这些模型不直接适用于视觉问答(VQA)等联合视觉语言的理解任务。
  3. 另一项研究[15、16、17]探索了使用编码器-解码器模型进行生成性预训练,以学习通用的视觉和多模态表示。在预训练期间,该模型在编码器侧编码图像,并在解码器输出上应用语言建模(LM)损失(或PrefixLM[3,16])。对于下游任务,解码器输出可以用作多模态理解任务的联合表示。虽然通过预训练的编码器-解码器模型获得了优异的视觉语言结果,但它们不会生成与图像嵌入对齐的纯文本表示,因此对于跨模态对齐任务来说,可行性和效率较低。

       在这项工作中,我们统一了single-encoder, dual-encoderencoder-decoder范式,并训练了一个包含所有三种方法功能的图像-文本基础模型。我们提出了一个名为Contrastive Captioners (CoCa)的简单模型,采用了经过contrastive loss 和 captioning loss训练的改进的编码-解码器体系结构。如图1所示,我们将解码器解耦为两部分(蓝色方块和右橙色方块):单模态解码器和多模态解码器。我们省略了单模态解码器层中的cross-attention,只编码纯文本表示,而级联多模态解码器层与图像编码器的输出做cross-attention来学习多模态图像文本表示。我们在图像编码器和单模态文本解码器的输出之间应用对比学习,并在多模态解码器的输出处应用captioning损失学习。

2、Related Work

        Vision Pretraining. 单纯视觉的预训练模型。

        Vision-Language Pretraining. 视觉语言预训练,LXMERT、UNITER、VinVL依赖于预训练的对象检测模块,如Faster R-CNN来提取视觉表示。后来如ViLT和VLMo统一了视觉和语言transformer,并从头开始训练multi-modal transformer。

        Image-Text Foundation Models. 最近的工作提出了图像-文本基础模型,可以包含视觉和视觉语言预训练。CLIP和ALIGN证明,在噪声图像-文本对上使用对比损失进行预训练的dual-encoder模型可以学习用于跨模态对齐任务和zero-shot图像分类的强图像和文本表示。Florence利用统一的对比目标进一步发展了该方法,可适用于各种视觉和图像文本基准的基础模型。为了进一步提高zero-shot图像分类精度,LiT和BASIC首先在大规模图像注释数据集上利用交叉熵损失建立预训练模型,并在有噪声的alt-text图像数据集上进一步利用对比损失进行微调。[16、17、34]提出了使用生成性损失训练编码器-解码器模型,并在视觉语言基准测试中显示了强大的性能,同时其视觉编码器在图像分类方面仍具有竞争力。在这项工作中,我们专注于在单个预训练阶段从头开始训练图像-文本基础模型,以统一这些方法。虽然[35、36、37]也探索了图像-文本的统一,但它们需要对单模态和多模态模块进行多个预训练阶段才能获得良好的性能。例如,ALBEF将对比损失与MLM结合在一起,并采用了双编码器设计,然而,我们的方法更简单,训练效率更高,同时还支持更多的模型功能:(1)CoCa只对一批图像-文本对执行一次正向和反向传播,而ALBEF需要两次(2)CoCa仅从零开始就这两个目标进行预训练,而ALBEF则是通过预训练的视觉和文本编码器以及包括动量模块在内的其他训练信号进行初始化的(3)对于自然语言生成,具有生成性损失的解码器架构是首选,因此直接支持image caption和zero-shot learning。

3、Approach

        首先回顾single-encoder分类预训练、dual-encoder对比学习和encoder-decoder image captioning。然后,我们介绍(CoCa),进一步讨论了CoCa模型如何在zero-shot transfer或最小任务适应的情况下快速转移到下游任务。

3.1、Natural Language Supervision

        Single-Encoder Classification. 经典的single-encoder通过对大型人工图像注释数据集(如ImageNet[9]、Instagram[20]或JFT[21])进行图像分类来预训练视觉编码器,其中注释文本的词汇通常是固定的(如:猫、狗),这些图像注释通常映射到离散的类向量中(如0,1,2),以使用交叉熵损失进行学习,学习到图像编码器用作下游任务的通用的视觉特征提取器:

         Dual-Encoder Contrastive Learning. 与使用single-encoder分类进行预训练(需要人工标注标签和数据清理)相比,dual-encoder方法利用了有噪声的web级文本描述,并引入了一个可学习的文本编码结构来编码自由格式的文本。通过将成对文本与batch中的其他文本进行对比,对两个编码器进行联合优化:

其中,x_{i}y_{j}是第i对中图像和第j对中文本的编码,N是batchsize,σ是缩放logits的系数。除了图像编码器外,dual-encoder方法还学习对齐文本编码器,该编码器支持图像文本检索和zero-shot图像分类等跨模态对齐应用。经验证据表明,对于损坏或分布不均的图像,zero-shot分类更为稳健[12、13、38]。

        Encoder-Decoder Captioning. 虽然dual-encoder方法将文本作为一个整体进行编码,但生成性方法(也称为captioner)要求模型以自回归的方式预测精确的token文本。按照标准编码器-解码器架构,图像编码器提供潜在的编码特征,并且文本解码器学习在前向自回归因式分解下最大化成对文本y的条件似然:

与以前的方法不同,captioner方法产生了一种可用于视觉语言理解的联合图像文本表示。

3.2、Contrastive Captioners Pretraining

        图2描述了(CoCa):一种简单的编码器-解码器方法,它无缝地结合了三种预训练范式。与标准图像-文本编码器-解码器模型类似,CoCa通过编码器将图像编码为潜在的表征,例如ViT(也可以是其他图像编码器,如ConvNets[40]),并使用masking transformer decoder解码文本。与标准解码器transformer不同,CoCa省略了前半个解码器层中的cross-attention,只编码单模态文本表示,并级联其余解码器层,与图像编码器进行cross-attention以实现多模态图像文本表示。因此,CoCa解码器同时产生单模态和多模态文本表示

其中λCon和λCap是损失加权超参数。我们注意到,当词汇表是所有标签名称的集合时,single-encoder交叉熵分类目标可以解释为应用于图像注释数据的生成性方法的特例(解释:词汇表若包含了所有的标签名称,那图像的类别名称如猫、狗等等,也就包含在词汇表里,那图像分类就可以看成生成性任务,以生成猫、狗等类别)

        Decoupled Text Decoder and CoCa Architecture. captioning方法优化文本的条件似然,而对比方法使用无条件文本的表示。为了解决这一难题并将这两种方法结合到一个模型中,我们提出了一种简单的解耦解码器设计,通过跳过单模态解码器层中的交叉注意机制,将解码器分为单模态和多模态组件。也就是说,底部的unimodal text decoder将文本编码为潜在向量,顶部的multimodal text decoder进一步与视觉编码器的输出做cross-attention。对于captioning目标LCap,使用多模态文本解码器输出非常简单,对于对比目标LCon,我们在输入文本的末尾添加一个可学习的CLS token,并使用其对应的单模态解码器输出作为文本的嵌入。我们将解码器一分为二,使得multimodal text decoder和unimodal text decoder相等。

# 图像编码器、query和attention pooler的定义
self.img_encoder = img_encoder
self.img_queries = nn.Parameter(torch.randn(num_img_queries + 1,dim))
self.img_attn_pool = CrossAttention(dim=dim, context_dim=image_dim, dim_head=dim_head, heads=heads,norm_context=True)
self.img_attn_pool_norm = LayerNorm(dim)
# 先对image编码,再生成query,再进行cross-attention pooling
image_tokens = self.img_encoder(images)
img_queries = repeat(self.img_queries, 'n d -> b n d', b=image_tokens.shape[0])
img_queries = self.img_attn_pool(img_queries, image_tokens)# img_queries作为query,image_tokens作为key、value
img_queries = self.img_attn_pool_norm(img_queries)
return img_queries[:, 0], img_queries[:, 1:]

        Attentional Poolers. 代码如上图值得注意的是,对比损失对每个图像都做一个单独的embedding,而解码器通常关注的是encoder-decoder captioner中的一系列图像输出token。我们的初步实验表明,单个经过池化的image embedding有助于视觉识别任务作为全局的表征,而更多的视觉token(更细粒度)有利于需要区域、对象级特征的多模态理解任务。因此,CoCa采用任务特定的attentional pooling [42]来产生视觉表征,以用于不同类型的预训练目标和下游任务。在这里,pooler是一个具有n个可学习的query的单个多头注意力层,编码器输出为key和value。通过这一点,模型可以学习对两个预训练目标池化为不同长度的embedding,如图2所示。使用特定于任务的pooler不仅可以满足不同任务的不同需求,还可以将pooler作为自然的任务适配器引入。我们在预训练中使用attentional pooling来计算生成性损失nquery=256和对比损失nquery=1。

        Pretraining Efficiency. 解耦自回归解码器设计的一个关键优点是,它可以有效地计算两个训练损失。由于单向语言模型在完整句子上进行训练的,解码器可以通过一次正向传播有效地生成对比损失和生成性损失的输出。因此,大部分计算是在两个损失之间共享的,与标准编码器-解码器模型相比,CoCa只会产生最小的开销。另一方面,虽然许多现有方法[30、32、33、35、36、37]在不同的数据源和/或模式上训练具有多个阶段的模型组件,但通过将所有标签视为对比和生成目标的文本,CoCa从零开始直接与不同的数据源(即注释图像和有噪声的alt-text图像)进行端到端的预训练。

3.3、Contrastive Captioners for Downstream Tasks

        Zero-shot Transfer. 预训练的CoCa模型通过利用图像和文本输入以zero-shot方式执行许多任务,包括zero-shot图像分类、zero-shot图像文本交叉检索、zero-shot视频文本交叉检索。按照之前的方法[12,32],这里的“zero-shot”不同于经典的zero-shot learning,因为在预训练期间,模型可能会看到相关的监督信息,但在迁移期间没有使用监督示例。对于预训练数据,我们遵循[13,32]中介绍的严格的重复数据消除过程,将所有near-domain 样本过滤到下游任务中。

        Frozen-feature Evaluation. 如前一节所述,CoCa在共享主干编码器的同时,采用特定于任务的attentional pooling[42]来定制不同类型下游任务的视觉表示。这使得该模型能够作为一个冻结编码器获得强大的性能,我们只需要学习一个新的attentional pooling来聚合功能,对于共享相同冻结图像编码器计算但不同任务特定头的多任务问题,它也有好处。

        CoCa for Video Action Recognition. 我们使用一种简单的方法为视频动作识别任务启用一个可学习的CoCa模型。我们首先获取视频的多个帧,并将每个帧分别送到共享的图像编码器中,如图3所示。对于frozen feature evaluation或微调,我们在具有softmax交叉熵损失的时空特征token之上学习一个额外的pooler。注意,pooler只有一个query token,因此在所有时空 token上进行计算并不昂贵。对于zero-shot视频文本检索,我们使用了一种更简单的方法,即计算16帧视频的平均嵌入向量(帧从视频中均匀采样)。在计算检索度量时,我们还将每个视频的caption编码为目标嵌入。

4、Experiments

5、Conclusion

        在这项工作中,我们提出了(CoCa),这是一个新的图像-文本模型,它将现有的视觉预训练范式纳入自然语言监督。CoCa在单个阶段对来自不同数据源的图像-文本对进行了预训练,在编解码模型中有效地结合了对比和caption目标。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值