Vision-and-Language Pre-training(VLP)提高了各种视觉-语言联合的下游任务的性能。目前的VLP方法在很大程度上依赖于图像特征提取过程,其中大多数涉及region super-vision区域监督(如对象检测)和卷积结构(如ResNet)。虽然在文献中被忽视了,但我们发现两者都有问题(1)效率/速度,简单地提取输入特征比多模态交互步骤需要更多的计算;(2)表达能力,因为它是视觉嵌入器及其预定义的视觉词汇表达能力的上限。在本文中,我们提出了一个最小的VLP模型,Vision-and-Language Transformer(ViLT),在这个意义上,视觉输入的处理被大大简化为与我们处理文本输入相同的无卷积方式。我们表明,ViLT比以前的VLP模型快几十倍,但具有竞争力及更好的下游任务性能。
pre-train-and-fine-tune方案已经扩展到视觉和语言的联合领域,从而产生了Vision-and-Language Pre-training (VLP)模型的类别。
这些模型在图文匹配对预训练,在图像及其对齐描述进行masked语言建模,并在视觉-语言下游任务中进行微调,其中输入涉及两种模态。
为了输入VLP模型,图像像素最初需要以dense形式嵌入到语言tokens旁边。深度卷积网络被认为是这一视觉嵌入步骤的必要条件。大多数VLP模型都使用了在视觉基因组数据集上预先训练过的目标检测器。
Pixel-BERT是这个趋势一个例外,因为它使用ResNet变体,在ImageNet上的预训练,通过embedding pixels来代替对象检测模块。到目前为止,大多数工作都是通过增加图像嵌入器的能力来提高性能。在学术实验中,由于区域特征通常被预先缓存,以减轻特征提取对训练时间的影响,因此通常忽略了having a heavy visual embedder的缺点。然而,在现实世界的应用程序中,这种限制仍然很明显,因为现实中的查询必须经历缓慢的提取图像特征的过程。
为此,作者将注意力转移到 lightweight and fast embedding视觉输入上。
作者假设,在VLP模型中用于模态交互的transformer模块也可以设法处理视觉特征,而不是卷积视觉嵌入器,就像它处理文本特征一样。
本文提出了 Vision-and-Language Transformer(ViLT),它以一种统一的方式处理两种模式。
Fig.1 我们已经从VLP中完全删除了卷积神经网络,而没有损害下游任务的性能。ViLT是第一个特定模态组件比transformer组件需要更少的算力来计算多模态交互的VLP模型。Fig.1显示,我们的parameter-efficient模型比具有区域特征(region features)的VLP模型快几十倍,至少比具有网格特征(grid features)的VLP模型快4倍,同时在视觉和语言下游任务上表现出相似甚至更好的性能。
我们的主要贡献可以总结如下:
作者提出4种视觉和语言模型,主要依据有两点:
Fig2. 四类视觉和语言模型。每个矩形的高度表示其相对计算大小。VE、TE和MI分别是视觉嵌入器、文本嵌入器和模态交互的缩写。
visual semantic embedding (VSE) models视觉语义嵌入模型,比如VSE++和SCAN属于(a)类型。对图像和文本独立使用编码器,图像的更重,文本的更轻,使用简单的点积或者浅层注意力层来表示两种模态特征的相似性。
CLIP属于(b)类型。每个模态单独使用重的transformer 编码器,使用池化后的图像向量与文本向量进行点积计算特征相似性。尽管CLIP zero-shot在image-to-text检索上有卓越的性能,但无法在其他视觉和语言的下游任务上观察到相同水平的性能。这一结果支持了我们的推测:即使是来自高性能单峰嵌入器,简单输出融合也可能不足以学习复杂的视觉和语言任务,从而支持了对更严格的模态间交互方案的需求。
ViLBERT、UNTER和Pixel-BERT属于©类型。这些方法使用深层transformer进行交互作用,但是由于VE仍然使用重的卷积网络进行特征抽取,导致计算量依然很大。
作者提出的ViLT属于(d)类型。ViLT是首个将VE设计的如TE一样轻量的方法,该方法的主要计算量都集中在模态交互上。
模态交互则可以分成两种方式:一种是single-stream(如BERT和UNITER),另一种是dual-stream(如ViLBERT和LXMERT)。其中single-stream是将图像和文本拼接起来,进行交互操作;而dual-stream则不拼接。ViLT延用single-stream的交互方式,因为后者会引入额外的计算量。
各种VLP模型使用的文本嵌入方式与与BERT类似,而图像嵌入方法不尽相同,主要分为三类:(1)使用Faster-RCNN目标检测网络进行两阶段特征提取,即先以物体为单位分割图像区域,在对显著的图像区域提取特征;(2)在整张图片上提取特征;(3)将图像切分成小块(patch),对图片切片投影提取特征。ViLT是首个使用patch projection来做visual 嵌入的方法。
现在大部分VLP模型都有着相同的text embedder结构–tokens从预训练好的BERT获得,word and position embeddings都类似于BERT。但它们的visual embedders是不同的。在大多数情况下,visual embedding是现有VLP模型的瓶颈。作者通过引入patch projection而不是使用region or grid features。
Region Feature
介绍一下faster-RCNN
生成 region features 的一般 pipeline 如下。首先,一个区域提案网络region proposal network(RPN)基于从CNN主干中池化的网格特征,提出了感兴趣的区域(RoI)。非最大抑制(NMS)然后将roi的数量减少到几千个。在被RoI对齐等操作(Heetal.,2017)合并后,RoI通过RoI头,成为区域特征。NMS再次应用于每个类,最终将特性的数量减少到100个以下。
无论多么轻,目标探测器都不太可能比主干或单层卷积更快。提前冻结视觉主干和缓存区域特征只有在训练时才有帮助。
Grid Feature
除了检测器头外,resnet等卷积神经网络的输出特征网格也可以作为视觉和语言预训练的视觉特征。直接使用网格特征首先是由VQA特定模型提出的,主要是为了避免使用严重缓慢的区域选择操作。
Patch Projection
为了减少开销,我们采用了最简单的视觉嵌入方案:在image patches上操作的线性投影。Patch projection嵌入由ViT(Dosovitskiyetal.,2020)引入,用于图像分类任务。Patch projection极大地简化了可视化嵌入步骤到文本嵌入的级别,其中还包括简单的投影(查找)操作。
ViLT可以认为是目前最简单的多模态Transformer方法。ViLT使用预训练的ViT来初始化交互的transformer,这样就可以直接利用交互层来处理视觉特征,不需要额外增加一个视觉encoder。
ViT由包括一个多头自注意(MSA)层和一个MLP层的块堆叠组成。ViT中的层归一化(LN)的位置与BERT是唯一的区别:LN是在BERT中MSA和MLP之后(“后规范”),在ViT中(“前规范”)之前。
t ∈ R L ∗ ∣ V ∣ t\in R^{L*|V|} t∈RL∗∣V∣
T ∈ R ∣ V ∣ ∗ H T\in R^{|V|*H} T∈R∣V∣∗H
T p o s ∈ R ( L + 1 ) ∗ H T^{pos}\in R^{(L+1)*H} Tpos∈R(L+1)∗H
t ˉ ∈ R L ∗ H \bar{t}\in R^{L*H} tˉ∈RL∗H
I ∈ R C ∗ H ∗ W I\in R^{C*H*W} I∈RC∗H∗W is sliced into patches and flattened to
v ∈ R N ∗ ( P 2 ∗ C ) , N = H W / P 2 v\in R^{N*(P^2*C)},N = HW/P^2 v∈RN∗(P2∗C),N=HW/P2
V ∈ R ( P 2 ∗ C ) ∗ H V\in R^{(P^2*C)*H} V∈R(P2∗C)∗H
V p o s ∈ R ( N + 1 ) ∗ H V^{pos}\in R^{(N+1)*H} Vpos∈R(N+1)∗H
v ˉ ∈ R N ∗ H \bar{v}\in R^{N*H} vˉ∈RN∗H
将text and image embeddings与相应的模态类型嵌入向量(modal-type embedding)求和。 t t y p e , v t y p e ∈ R H t^{type},v^{type}\in R^H ttype,vtype∈RH
then are concatenated into a combined sequence z 0 z^0 z0。
z z z通过深度transformer层进行迭代更新,直到最终的序列 z D z^D zD。
P是整个多模态输入的pooled表示,通过对 z D z^D zD第一个元素 应用线性投影 W p o o l ∈ R H ∗ H W_{pool}\in R^{H*H} Wpool∈RH∗H然后进tanh得到。
对于所有的实验,我们使用了在ImageNet上预训练的ViT-B/32的权重,因此命名为ViLT-B/32。隐藏层大小H为768,层深度D为12,patch大小P为32,MLP大小为3072,注意力头的数量为12。
作者用常用于训练VLP模型的两个目标来训练ViLT:图像文本匹配image text matching (ITM) 和 masked language modeling (MLM)。
随机以0.5的概率将文本对应的图片替换成不同的图片,然后对文本标志位对应输出使用一个线性的ITM head将the pooled output feature p p p映射成一个二值logits,用来判断图像文本是否匹配。计算negative log-likelihood loss作为我们的ITM损失。
另外ViLT还设计了一个word patch alignment (WPA) 来计算textual subset和visual subset的对齐分数。
MLM的目标是通过文本的上下文信息去预测masked的文本tokens。随机以0.15的概率mask掉tokens,然后文本输出接两层MLP预测mask掉的tokens。
另外ViLT还使用了whole word masking技巧。whole word masking是将连续的子词tokens进行mask的技巧,应用于BERT和Chinese BERT是有效的。比如将“giraffe”词tokenized成3个部分[“gi”, “##raf”, “##fe”],那么可以mask成[“gi”, “[MASK]”, “##fe”],模型使用[“gi”,“##fe”]来预测mask的“##raf”,而不使用图像信息。
在预训练中,我们以0.15的概率mask整个单词。
现在有很多人发现图像增强有利于ViT训练,然而图像增强的效果尚未在VLP模型中进行探索。缓存视觉特征限制了region-feature-based的VLP模型无法使用图像增强。
作者在微调期间采用随机调整RandAugment。使用除了两种策略之外的所有原始策略:1、颜色倒置,因为文本通常也包含颜色信息,2、剪切,因为它可以清除分散在整个图像中的小而重要的对象。我们使用N=2,M=9作为超参数。
这是作者说明的另一种图像增强方式,采用高斯模糊这种操作来增强模型的泛化能力。
4个数据集用于预训练:Microsoft COCO(MSCOCO), Visual Genome(VG), SBU Captions(SBU), Google Conceptual Caption(GCC)
用两种语言下游任务对ViLT进行评估:对于分类,我们使用VQAv2和NLVR2,对于检索,使用MSCOCO和Flickr30K(F30K)
对于所有的实验,作者使用AdamW优化器,基础学习率为 1 0 − 4 10^{−4} 10−4,权重衰减为 1 0 − 2 10^{−2} 10−2。学习率在总训练步骤的10%中被热身,并在其余的训练中线性衰减到零。请注意,如果为每个任务自定义超参数,那么下游性能可能会进一步提高。
图像尺寸的调整:
一般的VLP模型:800x1333,作者将其限定为384x640,产生12x20=240个patches, 另外将patches填充到length=200用于batch training.
需要注意的是相比于800x1333小了4倍。
在预训练时并未使用bert的权重,而是scratch;
迭代100K,64块V100,3天~,batch=4096
在下游任务中训练10个epoch,batch=256/158
我们在两个常用的数据集:VQAv2和NLVR2上评估ViLT-B/32。我们使用一个隐藏层大小为1536的两层MLP作为微调的下游头。
VQAv2任务询问给定图像和问题的答案。
NLVR2任务是一个二分类任务,给两幅图片和一句话,判断哪个符合。
作者使用了成对的方法。在这里,三元体输入被重新表述为两个对: (question, image1)和(question, image2),每对都通过ViLT。头部将两个pooled representations§合并起来作为输入,并输出二元预测。
Table2. ViLT-B/32与其他模型在下游分类任务上的比较。
额外使用GQA、VQAv2、VG-QA进行预训练
使用了额外的图像数据集
表示在微调过程中应用了随机调整
表示模型接受了一个更长的200K预训练迭代次数step
对于image-to-text 和 text-to-image的检索,我们测量了零镜头和微调的性能。
我们在表3中报告了零镜头检索结果,在表4中报告了微调的结果。在零镜头检索时,尽管ImageBERT在更大的(14M)数据集上进行了预训练,但ViLT-B/32总体上比ImageBERT表现更好。在微调检索时,ViLT-B/32的召回率远远高于第二快的模型(Pixel-BET-RT-R50)。
R@K表示ground truth是否被包含在来自validation set验证集的top K个results里。
ViLT-B/32与其他VLP模型在下游零镜头检索任务上的比较。
十:除了GCC+SBU的400万数据集外,还使用1000万个专有的视觉和语言数据集进行预训练。
表示模型接受了一个更长的200K预训练迭代次数step
ViLT-B/32与其他模型在下游检索任务上的比较
额外使用GQA、VQAv2、VG-QA进行预训练
使用了额外的图像数据集
表示在微调过程中应用了随机调整
表示模型接受了一个更长的200K预训练迭代次数step
ViLT-B/32的消融研究。
更多的训练迭代次数,整个单词掩蔽,和图像增强是有益的,而一个额外的训练目标(additional training objective)没有帮助。
随着我们训练模型进行更长的训练步骤(第1行~3行),性能不断提高。
屏蔽MLM目标的整个单词(第3行~4行),并进行增强微调(第6行)性能也会提高。
进一步增加训练迭代到200K,提高了VQAv2、NLVR2和零镜头检索的性能。随着微调后的文本检索性能的下降,我们停止增加超过200K的迭代次数。
主要验证:
训练steps,也就是传说中的迭代次数;
越多越好
有无whole word masking
有肯定好呀
masked patch prediction(MPP)它以一种与补丁投影相容的形式模拟了masked region modeling(MRM)的效果。该模型从其上下文向量中预测了掩蔽patch的平均RGB值
MPP对下游的性能并没有贡献(第4行~5行)
有无RandAugment
可以,很强
主要强调一些参数量以及运行时间+输入bert模型的tokens长度
VLP模型在参数大小、flop和推断延迟方面的比较。
由于算力FLOPs与输入大小成正比,所以我们将输入tokens(image+text)上标“?”表示未报告text长度
word patch alignment (文字patch对齐)的可视化。
用粉红色突出显示的文本标记的热图。每个方形瓷砖代表一个补丁,它的不透明度表示从高亮显示的字标记传递了多少mass。
更多的IPOT迭代——在训练阶段超过50次——帮助可视化热图收敛;根据经验,1000次迭代足以得到一个清晰可识别的热图。我们对每个令牌的计划进行z-normalize,并将值设在[1.0,3.0]区间内。
通过可视化可以看出,ViLT学到了word和image patch之间的对应关系。
word patch alignment (文字patch对齐)的可视化。
用粉红色突出显示的文本标记的热图。每个方形瓷砖代表一个补丁,它的不透明度表示从高亮显示的字标记传递了多少mass。
更多的IPOT迭代——在训练阶段超过50次——帮助可视化热图收敛;根据经验,1000次迭代足以得到一个清晰可识别的热图。我们对每个令牌的计划进行z-normalize,并将值设在[1.0,3.0]区间内。
通过可视化可以看出,ViLT学到了word和image patch之间的对应关系。