跨模态检索论文阅读:(ViLT)Vision-and-Language Transformer Without Convolution or Region Supervision

ViLT: Vision-and-Language TransformerWithout Convolution or Region Supervision
ViLT:无卷积或区域监督的视觉语言Transformer

在这里插入图片描述

此思维导图出处

目前大部分的Vision-and-Language Pre-training(VLP)在表达图片特征的时候都使用了区域监督(例如目标检测)和卷积操作(例如ResNet),这种方法存在一定缺陷:(1)速度慢;(2)表达能力有限。因此本文简化了多模态预训练模型图片编码器,提出了一种最简单的VLP模型——ViLT,主要对视觉特征提取进行了改进,使用简单的线性映射大大减少了视觉编码器的参数量,在保证效果的前提下大大减小了模型复杂度和运行时间。

贡献:
ViLT是迄今为止最简单的视觉语言模型架构,因为它委托transformer模块来提取和处理视觉特征,而不是单独的深度视觉嵌入器。这种设计从本质上提高了运行时间和参数效率。
首次在不使用区域特征或深度卷积视觉嵌入器的情况下,在视觉语言任务上取得了令人满意的性能。
首次通过实证研究表明,在VLP训练方案中前所未有的整词屏蔽和图像增强进一步推动了下游性能的提高。
在这里插入图片描述
图1. 传统VLP架构与我们提出的ViLT的直观对比。我们将卷积神经网络从VLP pipeline中完全移除,而不会影响下游任务的性能。ViLT是第一个VLP模型,其中特定模态组件所需的计算量少于多模态交互的transformer组件。

背景

视觉和语言模型的分类法

我们提出了一种基于两点的视觉和语言模型的分类 (准则):
1.在参数或者计算上,两种模态是否保持平衡。2.在网络深层中,两种模态是否相互作用。
这些要点的组合将得到图 2 中的四种原型。
在这里插入图片描述
图2。视觉语言模型的四种类型。每个矩形的高度表示它的相对计算大小。VE、 TE 和 MI 分别是视觉嵌入、文本嵌入和模态交互的简称。

视觉语义嵌入 (Visual Semantic Embedding, VSE) 模型,如 VSE++和 SCAN,属于(a)类型。使用单独的嵌入器来处理图像和文本,而前者要重量级得多。然后用 简单的点积 或 浅注意力层 表示两种模态的嵌入特征的相似度。

CLIP属于(b)类型,它对每个模态分别使用独立但同样昂贵的 Transformer 嵌入器。图像向量和文本向量之间的交互仍然很浅 (点积)。即使是来自高性能的 联合模态嵌入器的简单输出 的融合,也可能不足以学习复杂的视觉和语言任务,从而支持对更严格的跨模态交互方案的需求。

ViLBERT、UNTER和Pixel-BERT属于( c)类型。这些方法使用深层transformer进行交互作用,但是由于图像特征的提取和嵌入中仍涉及卷积网络,导致计算量依然很大。

作者提出的ViLT属于(d)类型。ViLT是首个将VE设计的如TE一样轻量的方法,该方法的主要计算量都集中在模态交互上。

模态交互模式

模态交互部分可以分成两种方式:一种是single-stream(如BERT和UNITER),另一种是dual-stream(如ViLBERT和LXMERT)。其中single-stream是对图像和文本concate然后进行交互操作,而dual-stream是不对图像和文本concate然后进行交互操作。ViLT延用single-stream的交互方式,因为dual-stream会引入额外的计算量。

视觉嵌入方式

现有的VLP模型的text embedding基本上都使用类BERT结构,但是visual embedding存在着差异。在大多数情况下,visual embedding是现有VLP模型的瓶颈。visual embedding的方法总共有三大类,其中region feature方法通常采用Faster R-CNN二阶段检测器提取region的特征,grid feature方法直接使用CNN提取grid的特征,patch projection方法将输入图片切片投影提取特征。ViLT是首个使用patch projection来做visual embedding的方法。

图像块投影patch projection
为最小化开销 (overhead),我们采用了最简单的视觉嵌入方案:操作于图像块上的 线性投影 (linear projection)。ViT引入了图像块投影嵌入用于图像分类任务。图像块投影极大地简化了达到文本嵌入的级别/水平的视觉嵌入步骤,它还包括简单的投影查找 操作。我们使用一个 32×32 图像块投影,它只需要 2.4M 参数。这与复杂的 ResNe(X)t 主干 (R50 的参数为 25M,R101 为 44M,X152 为 60M) 和检测组件形成鲜明对比。它的运行时间也可以忽略,如图 1 所示。

视觉和语言 Transformer

模型概述

ViLT使用预训练的ViT来初始化交互的transformer,这样就可以直接利用交互层来处理视觉特征,不需要额外增加一个视觉encoder。

文本特征输入部分,将文本看成一个词序列,通过word embedding matrix转化成word embedding,然后和position embedding进行相加,最后和modal-type embedding进行concate。

图像特征输入部分,将图像切块看成一个图像块序列,通过linear projection转化成visual embedding,然后和postion embedding进行相加,最后和modal-type embedding进行concate。

其中word embedding和visual embedding通过可学习的modal-type embedding标志位来区分,其中0标志位表示word embedding部分,1标志位表示visual embedding部分。wrod embedding和visual embedding分别都嵌入了一个额外的可学习[class] embedding,方便和下游任务对接。
在这里插入图片描述

预训练目标

用两个常用于训练 VLP 模型的目标 来训练 ViLT:图像文本匹配 (ITM) 和 掩码语言建模 (MLM)。

ImageText Matching:随机以0.5的概率将文本对应的图片替换成不同的图片,然后对文本标志位对应输出使用一个线性的ITM head将输出feature映射成一个二值logits,用来判断图像文本是否匹配。另外ViLT还设计了一个word patch alignment (WPA)来计算textual subset和visual subset的对齐分数。

Masked Language Modeling:MLM的目标是通过文本的上下文信息去预测masked的文本tokens。随机以0.15的概率mask掉tokens。

全词掩码

Whole Word Masking:将连续的子词tokens进行mask的技巧,避免了只通过单词上下文进行预测。比如将“giraffe”词tokenized成3个部分[“gi”, “##raf”, “##fe”],可以mask成[“gi”, “[MASK]”, “##fe”],模型会通过mask的上下文信息[“gi”,“##fe”]来预测mask的“##raf”,就会导致不利用图像信息。

图像增强

图像增强提高了视觉模型的泛化能力,有利于 ViT 训练。
我们在微调过程中应用了 RandAugment ,使用了所有的原始策略,除了两种策略:color inversion,因为 文本通常也包含颜色信息,以及 cutout,因为可能会删除分散在整个图像中的小但重要的物体。

实验

在这里插入图片描述
表 1:预训练数据集统计信息。描述文字长度 (caption length) 指的是经预训练 bert-base-uncased tokenizer 处理的 tokens 长度。GCC 和 SBU 仅提供了图像的 URLs,故我们从仍然可访问的 URL 中收集图像。

在 64 个 NVIDIA V100 GPU 上对 ViLT-B/32 进行 100K 或 200K 步的预训练,batch size = 4096。对于所有的下游任务,我们训练了10 个 epoch,检索任务的batch_size为 256。如图1所示,ViLT相比于region feature的方法速度快了60倍,相比于grid feature的方法快了4倍,而且下游任务表现出相似甚至更好的性能。
在这里插入图片描述

使用MSCOCO 和 F30K 数据集对 ViLT-B/32 进行了微调。表 3 中报告了zero-shot检索结果,在表 4 中报告了微调结果。在zero-shot检索时,尽管 ImageBERT 在更大的 (14M) 数据集上预训练,但ViLT-B/32 总体上优于 ImageBERT。在微调检索中,ViLT-B/32 的召回率远高于第二快的模型 (Pixel-BERT-R50)。

消融实验

表5中进行了各种消融。更多的训练步数,全词掩码,和图像增广都是有益的,而一个额外的训练目标则没有帮助。
在这里插入图片描述
表5.ViLT-B/32的消融研究。w表示预训练时是否使用了全词屏蔽。m表示预训练时是否使用了MPP目标。a表示微调时是否使用了RandAugment。

训练迭代的次数会影响自监督模型的性能,随着模型训练了更长的步数 (1-3 行),性能不断提升。为 MLM 目标 mask 全词 (3-4 行)和具有增广的微调 (第 6 行) 也提高了性能。进一步将训练迭代增加到 200K,提高了 VQAv2、NLVR2 和zero-shot检索的性能。随着微调后的文本检索性能的下降,我们停止增加迭代次数避免超过 200K。

一个额外的掩码区域建模 (MRM) 目标是提高 VLP 模型性能的关键,然而MPP对下游性能没有贡献 (4~5 行),与 MRM 对目标检测的监督信号的MRM目标形成鲜明对比。

结论

BERT和ViT给多模态Transformer提供了基础,通过巧妙的proxy task设计,ViLT成功将BERT和ViT应用于多模态Transformer。总体上来看基于patch projection的多模态方法速度优势非常大,但是整体上性能还是略低于region feature的方法,期待未来会有更强的基于patch projection的多模态方法出现。

参考文献:ViLT:最简单的多模态Transformer
全文翻译

猜你喜欢

转载自blog.csdn.net/zag666/article/details/131283950