多模态之ViLT—简化视觉端嵌入,不使用区域/卷积的视觉语言模型,细节理解与论文详细阅读:Vision-Language Transformer Without Conv or Region

ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

ViLT:无卷积或区域监督的视觉语言Transformer

Paper: arxiv.org/pdf/2102.03334.pdf

Github: https://github.com/dandelin/vilt

本篇 ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

  1. 首先是对VILT文章的细节精简理解
  2. 然后附上原文精读

1.背景动机

现有大多数VLP方法都采用对象检测器/卷积架构作为视觉嵌入器,忽视其效率问题:

要将图像输入 VLP 模型,首先需要将图像像素以密集的形式嵌入语言tokens,在ViT(图片分Patch)出现之前,大多数的 VLP 方法严重依赖于图像特征提取过程,其中大部分涉及区域监督(如物体检测)和卷积架构(如 ResNet),大多数VLP研究都集中在通过增强视觉嵌入器的能力来提高性能

他们希望设计能力更强的视觉 Encoder。但是这会出现问题:在学术研究中,视觉encoder提取的区域特征可以提前缓存,但是在实际应用开发中,面对全新的数据,还是需要经历提取区域特征的过程,这是一个缓慢的过程,也就是说,拥有重型视觉嵌入器的缺点通常被忽视

采用对象检测器/卷积架构作为视觉嵌入器的缺陷:

  • 效率/速度,仅仅提取输入特征就需要比多模态交互步骤多得多的计算量;具体:通常在训练时提前缓存区域特征以减轻特征提取的负担,然而,在真实应用中,这些限制很明显,因为在真实的查询需要经过一个缓慢的提取过程。
  • 表达能力,它的上限是视觉嵌入器及其预定义视觉词汇的表达能力。

VILT目标:改进视觉嵌入(重型级->轻量级,专注交互模块的性能提升):

VILT将注意力放在轻量级和快速嵌入的视觉输入,在VLP模型中用于模态交互的Transformer模块也可以处理视觉特征,而不是使用卷积式视觉嵌入器,就像它处理文本特征一样。

受ViT的Patch Embedding 编码图像特征的启发VILT把每个模态的特征抽取部分做到了轻量级,把主要的计算量都放在Transformer交互模块中即去除了专门用于视觉输入的深层嵌入(对象检测器/卷积),只用简单的Linear Embedding,参考Patch Embedding生成图像嵌入。这样的结构不但效率得到了大幅度的提升,性能也更好。

VLIT将视觉语言模型进行分类:

根据以下两点对视觉语言模型方法进行分类:

  • 视觉和语言的Encoder是否在参数和/或计算方面相等;
  • 视觉和语言的编码结果是否在同一个深度网络中相互作用。
    在这里插入图片描述
    按照上述分类可以大致划分为4种架构,如图:

第一类:视觉嵌入器使用大量的算力

如上图a,视觉嵌入编码器使用大量的算力,只用简单的点乘或浅注意力层来表示两种模态的嵌入特征的相似性

第二类:视觉文本嵌入器都使用大量算力

如上图b,视觉和文本嵌入编码器都使用大量的算力,只用简单的点乘或浅注意力层来表示两种模态的嵌入特征的相似性,具有代表性的就是CLIP

尽管 CLIP 在图像到文本的检索中取得了出色的zero-shot性能,但在其他视觉语言下游任务中,却无法观察到相同水平的性能,这也说明,即使是来自表现优异的单模态嵌入器的简单融合输出,也可能不足以学习复杂的视觉和语言任务,这就更需要更多的关注多模态交互模块的构造。

第三类:视觉嵌入器使用大量的算力,使用Transformer建模多模态交互

如上图c,视觉嵌入编码器使用大量的算力,使用深度Transformer来模拟图像和文本特征的交互。

第四类:视觉文本嵌入器使用较小的算力,使用Transformer建模多模态交互

如上图d,视觉和文本嵌入编码器都使用简单较小的算力,使用深度Transformer来模拟图像和文本特征的交互。VILT就属于第四类

VILT将模态交互进行分类:

现在VL 模型的核心是Transformer。它们将视觉和文本嵌入序列作为输入,在各层中建立模式间和模式内交互模型,然后输出上下文特征。模态间的交互模型可以划分为:

  • 单流方法(如VisualBERT、UNITER),图像和文本的特征做拼接后输入到交互模块中,VILT输入单流方法
  • 双流方法(如ViLBERT、LXMERT),图像和文本的特征不做拼接就输入到交互模块中

视觉嵌入模式分类:

区域特征,Region Feature:

一部分VLP 模型主要利用区域特征,也称为自下而上特征。这些特征来自现成的物体检测器。

生成区域特征的一般流程如下

  1. 首先,区域提议网络(RPN)从CNN backbone网格提取出感兴趣的区域(RoI)
  2. 然后,非极大值抑制(NMS)将RoI的数量减少到几千个
  3. 经过诸如RoI Align等操作汇集后,RoI经过RoI head成为区域特征
  4. 再次对每个类别应用NMS,最终将特征数量减少到不到一百个

上述过程涉及影响性能和运行时间的几个因素:Backbone、NMS 的样式、RoI head

区域特征—视觉嵌入方式的缺陷:

  • 轻量级的物体检测器不可能比backbone或单层卷积更快
  • 冻结视觉backbone并提前缓存区域特征只能在训练时起到帮助作用,在推理过程中并无用处

网格特征,Grid Feature:

为了避免使用速度极慢的区域特征提取,卷积神经网络(如 ResNets)的输出特征网格也可用作视觉语言预训练的视觉特征

Patch投影,Patch Projection:

Patch投影嵌入由 ViT引入,使用Patch投影,大大降低了视觉特征提取的时间开销,将视觉嵌入步骤大大简化到文本嵌入的水平

2.Model

ViLT 模型的总体架构如图所示:Transformer Encoder使用预训练的 ViT来初始化,Image Embedding使用ViT中的Patch投影来实现,Word Embedding使用BERT的tokenizer进行标记化,并学习一个全新的文本嵌入参数。
在这里插入图片描述

为什么不使用BERT来初始化:

这样的初始化利用了交互层处理视觉特征的能力,同时又不需要单独的深度视觉嵌入器(因为 ViLT 没有单独的 Image Encoder 了,所以借助 ViT 去做初始化)。

2.1.Model架构

VLIT公式:

t ˉ = [ t class ; t 1 T ; ⋯   ; t L T ] + T pos v ˉ = [ v class ; v 1 V ; ⋯   ; v N V ] + V pos z 0 = [ t ˉ + t type ; v ˉ + v type ] z ^ d = MSA ( LN ( z d − 1 ) ) + z d − 1 , d = 1 … D z d = MLP ( LN ( z ^ d ) ) + z ^ d , d = 1 … D p = tanh ( z 0 D W pool ) \begin{equation} \begin{split} \bar{t} &= [t_{\text{class}}; t_1 T; \cdots; t_L T] + T^{\text{pos}} \\ \bar{v} &= [v_{\text{class}}; v_1 V; \cdots; v_N V] + V^{\text{pos}} \\ z^0 &= [\bar{t} + t^{\text{type}}; \bar{v} + v^{\text{type}}] \\ \hat{z}^{d} &= \text{MSA}(\text{LN}(z^{d-1})) + z^{d-1}, d = 1 \ldots D \\ z^d &= \text{MLP}(\text{LN}(\hat{z}^{d})) + \hat{z}^{d}, d = 1 \ldots D \\ p &= \text{tanh}(z^D_0 W_{\text{pool}}) \end{split} \end{equation} tˉvˉz0z^dzdp=[tclass;t1T;;tLT]+Tpos=[vclass;v1V;;vNV]+Vpos=[tˉ+ttype;vˉ+vtype]=MSA(LN(zd1))+zd1,d=1D=MLP(LN(z^d))+z^d,d=1D=tanh(z0DWpool)

1.文本嵌入构造:

输入的文本 t ∈ R L × ∣ V ∣ t \in \mathbb{R}^{L \times |V|} tRL×V通过单词嵌入矩阵 T ∈ R ∣ V ∣ × H T \in \mathbb{R}^{|V| \times H} TRV×H和位置嵌入矩阵 T pos ∈ R ( L + 1 ) × H T^{\text{pos}} \in \mathbb{R}^{(L+1) \times H} TposR(L+1)×H嵌入到 t ˉ ∈ R L × H \bar{t} \in \mathbb{R}^{L \times H} tˉRL×H 中。

文本嵌入的预处理:
VILT使用基于 BERT 的tokenizer来标记文本输入,不使用预训练好的 BERT ,而是从头开始学习文本嵌入相关参数 t c l a s s t_{class} tclass、T 和 T p o s T^{pos} Tpos,因为有报告证明:使用预训练的 BERT 参数进行初始化比从头开始预训练的性能更弱

2.图像嵌入构造:

输入的图像 I ∈ R C × H × W I \in \mathbb{R}^{C \times H \times W} IRC×H×W被切成Patch并平铺为 v ∈ R N × ( P 2 ⋅ C ) v \in \mathbb{R}^{N \times (P^2 \cdot C)} vRN×(P2C),其中 ( P , P ) (P, P) (P,P)是Patch分辨率, N = H W / P 2 N = HW/P^2 N=HW/P2。通过线性投影 V ∈ R ( P 2 ⋅ C ) × H V \in \mathbb{R}^{(P^2 \cdot C) \times H} VR(P2C)×H和位置嵌入 V pos ∈ R ( N + 1 ) × H V^{\text{pos}} \in \mathbb{R}^{(N+1) \times H} VposR(N+1)×H v v v被嵌入到 v ˉ ∈ R N × H \bar{v} \in \mathbb{R}^{N \times H} vˉRN×H中。

图像输入的分辨率处理:

将输入图像的较短边缘调整为 384,将较长边缘限制在 640 以下,同时保留长宽比。对于分辨率为 384 × 640 的图像,ViLT-B/32 的patch投影可产生 12 × 20 = 240 个patch。VILT在预训练时最多取样200个patch,并对 ViT-B/32 的 V p o s V^{pos} Vpos进行插值,以适应每幅图像的大小,并填充用于批量训练的patch。

3.多模态交互构造:

文本和图像嵌入向量与相应的模态类型嵌入向量 t type , v type ∈ R H t^{\text{type}}, v^{\text{type}} \in \mathbb{R}^{H} ttype,vtypeRH 相加,然后串联成一个组合序列 z 0 z^0 z0。通过 D层深度Transformer迭代更新上下文向量 z z z,直到最终的上下文序列 z D z^D zD

p p p是整个多模态输入的池化表示,通过对序列 z D z^D zD的第一个索引应用线性投影 W pool ∈ R H × H W_{\text{pool}} \in \mathbb{R}^{H \times H} WpoolRH×H和双曲正切得到。

2.2.预训练目标

ViLT使用两个目标来训练:图像文本匹配 (ITM) 和MASK语言建模 (MLM)

图像文本匹配 (ITM,Image Text Matching):

VLIT以 0.5 的概率随机替换已对齐的图像。单线性层 ITM 头将池化输出特性 p p p投射到二元类的logits上,计算负对数似然损失作为 ITM 损失。

另外,VLIT设计了 word patch alignment(WPA),利用最优传输的非精确近点法(IPOT)计算 z D z^D zD的两个子集: z D z^D zD: z D ∣ t z^D|_t zDt(文本子集)和 z D ∣ v z^D|_v zDv(视觉子集)之间的配准得分,设置了 IPOT 的超参数( β = 0.5 , N = 50 \beta = 0.5, N=50 β=0.5,N=50),并在 ITM 损失中加入了乘以 0.1 的近似 wasserstein 距离。

MASK语言建模 (MLM)

这一目标是根据上下文向量 z masked D ∣ t z^D_{\text{masked}}|_t zmaskedDt 预测Mask文本标记 t masked t_{\text{masked}} tmasked的真实标签。以 0.15 的概率随机屏蔽 t t t

与 BERT 的 MLM 目标一样,使用双层 MLP,输入 z masked D ∣ t z^D_{\text{masked}}|_t zmaskedDt并输出单词的logits。然后将 MLM 损失计算为MASK tokens的负对数似然损失。

2.3.整个单词Mask

什么是整个单词Mask:

整个单词Mask是Mask构成整个单词的所有连续子词标记。

为什么要整个单词Mask:

例如,"giraffe"一词被预训练好的tokenizer标记为三个词片标记[“gi”, “##raf”, “##fe”]。如果不是所有词块都被屏蔽,例如[“gi”, “[MASK]”, “##fe”],那么模型可能只依靠附近的两个语言词块[“gi”, “##fe”]来预测被屏蔽的 “##raf”,而不是使用图像信息。

2.4.图像增强

大多数的图像增强手段无法应用于VLP:

因为之前的缓存视觉特征限制了基于区域特征的 VLP 模型使用图像增强即大多数VLP都使用了对象检测器,其一般是提前把输入喂入目标检测器,得到特征之后事先存起来,训练的时候就不用再通过一遍了。但是有了数据增强之后毫无疑问这就做不了了

VILT使用的图像增强RandAugment:(VILT不涉及对象检测器,所以可以使用图像增强)

VILT在微调过程中应用了 RandAugment,使用了所有原始策略,只有两个策略除外:颜色反转(因为文本通常也包含颜色信息)和剪切(因为它可能会清除分散在整个图像中的小而重要的物体)

3.不同下游任务

  1. 图文检索任务:图像-文本召回/文本-图像召回
  2. 视觉问题解答:用自然语言给出图像和问题对的答案,注释的答案原本是自由形式的自然语言,但通常的做法是将该任务转换为具有 3129 个答案类别的分类任务,因此也是分类任务
  3. 自然语言视觉推理:一项二元分类任务,由两幅图像和一个自然语言问题组成,判断文本属于哪一幅图片

4.原文阅读

Abstract

现有的VLP方法:

视觉语言预训练(VLP)提高了各种视觉语言联合下游任务的性能。目前的 VLP 方法严重依赖于图像特征提取过程,其中大部分涉及区域监督(如物体检测)和卷积架构(如 ResNet)

现有的VLP存在的缺陷:

我们发现它在以下两个方面都存在问题:

  • 效率/速度,因为仅仅提取输入特征就需要比多模态交互步骤多得多的计算量;
  • 表达能力,因为它的上限是视觉嵌入器及其预定义视觉词汇的表达能力。

针对上述问题,提出的VILT模型:(简化了图像输入的处理)

在这篇论文中,我们介绍了一个简约的VLP模型,名为Vision-and-Language Transformer(ViLT)。在这个意义上,该模型是单一体的,因为对视觉输入的处理被极大地简化为与我们处理文本输入完全相同的无卷积方式

我们的研究表明,ViLT 比以前的 VLP 模型快数十倍,但其下游任务性能却具有竞争力甚至更好。 我们的代码和预训练权重可在 https://github.com/dandelin/vilt 网站上获取。

1. Introduction

现有VLP模型方法:

预训练和微调方案已扩展到视觉和语言的联合领域,诞生了视觉和语言预训练(VLP)模型。这些模型以图像文本匹配和MASK语言建模为目标,对图像及其对齐描述进行了预训练,并在视觉和语言下游任务中进行了微调,其中输入涉及两种模式。

针对视觉嵌入器(图像输入),现有VLP采用对象检测器/卷积架构:

要将图像输入 VLP 模型,首先需要将图像像素以密集的形式嵌入语言tokens。 自 Krizhevsky 等人(2012 年)的开创性工作以来,深度卷积网络一直被认为是这一视觉嵌入步骤的关键。大多数 VLP 模型都采用了在Visual Genome dataset上预训练的对象检测器,该数据集注释了 1,600 个对象类别和 400 个属性类别,如 Anderson 等人(2018 年)的研究。Pixel-BERT是这一趋势的一个例外,因为它使用在ImageNet分类上预训练的ResNet变体入像素来代替对象检测模块

现有的VLP集中在增强视觉嵌入的能力,而忽视了视觉嵌入带来的效率问题:

迄今为止,大多数VLP研究都集中在通过增强视觉嵌入器的能力来提高性能。在学术实验中,拥有重型视觉嵌入器的缺点通常被忽视因为通常在训练时提前缓存区域特征以减轻特征提取的负担。然而,在真实世界的应用中,这些限制仍然明显,因为在野外的查询需要经过一个缓慢的提取过程。

VILT目标在于改进视觉嵌入(->轻量级):

为此,我们将注意力转向轻量级和快速嵌入视觉输入。最近的研究表明,使用简单的patch线性投影就足以在将其馈送到Transformer之前嵌入像素。尽管在文本方面是主流,但直到最近才开始将Transformer用于图像。我们推测,在VLP模型中用于模态交互的Transformer模块也可以处理视觉特征,而不是使用卷积式视觉嵌入器,就像它处理文本特征一样

提出的ViLT方法:(针对视觉嵌入进行了改进,减小模型大小/提升效率)

本文提出了视觉语言Transformer(ViLT),它能以单一统一的方式处理两种模式。它与以往 VLP 模型的主要区别在于对像素级输入的浅层、无卷积嵌入去除专门用于视觉输入的深层嵌入,可显著减少模型的大小和运行时间。图 1 显示,我们的大参数模型比具有区域特征的 VLP 模型快几十倍,比具有网格特征的模型至少快四倍,同时在视觉和语言下游任务中表现出相似甚至更好的性能。
在这里插入图片描述
在这里插入图片描述
我们的主要贡献可概括如下:

  • ViLT 是迄今为止最简单的视觉语言模型架构,因为它委托Transformer模块来提取和处理视觉特征,而不是单独的深度视觉嵌入器。这种设计从本质上大大提高了运行时间和参数效率。
  • 我们首次在不使用区域特征或深度卷积视觉嵌入的情况下,在视觉语言任务中取得了令人满意的性能。
  • 此外,我们还首次通过实证研究表明,VLP 训练方案中前所未有的全词MASK和图像增强技术进一步推动了下游性能的提高。

2. Background

2.1. Taxonomy of Vision-and-Language Models(视觉语言模型分类法)

视觉语言模型分类标准:

我们根据以下两点提出了视觉语言模型分类法:

  • 两种模式在专用参数和/或计算方面是否具有同等的表达能力;

  • 两种模式是否在深度网络中相互作用。

    综合以上两点,我们可以得出图 2 中的四种原型。
    在这里插入图片描述

第一类,视觉语义嵌入(VSE)模型,visual semantic embedding models:

视觉语义嵌入(VSE)模型,如 VSE++和 SCAN属于图 2a。它们对图像和文本分别使用不同的嵌入器,前者更重。然后,它们用简单的点乘或浅注意力层来表示两种模态的嵌入特征的相似性

第二类,CLIP:

CLIP属于图 2b,因为它对每种模式都使用了单独但同样昂贵的Transformer嵌入器Pool后的图像向量和文本向量之间的交互仍然是浅层的(点积)

CLIP的简单模式只适用图文检索,其他任务则性能较差:

尽管 CLIP 在图像到文本的检索中取得了出色的zero-shot性能,但在其他视觉语言下游任务中,我们却无法观察到相同水平的性能。例如:

当使用CLIP中来自汇总的视觉和文本向量的点积作为多模态表示来微调NLVR2上的MLP头时,得到的开发集准确率为50.99 ± 0.38(使用三种不同的种子计算)。鉴于随机水平准确率为0.5,我们可以得出结论,这些表示无法学习此任务。

这一结果与Suhr等人的发现一致,后者观察到所有仅具有简单融合的多模态表示的模型均无法学习NLVR2。这一结果证明了我们的推测,即即使是来自表现优异的单模态嵌入器的简单融合输出,也可能不足以学习复杂的视觉和语言任务,这就更需要一种更严格的跨模态交互方案。

第三类,深层嵌入层与深度Transformer交互:

与浅层交互模型不同,图 2c 中最新的 VLP 模型使用深度Transformer来模拟图像和文本特征的交互。然而,除了交互模块外,卷积网络仍参与图像特征的提取和嵌入,这占了图 1 所描述的大部分计算量。基于调制的视觉语言模型也属于图 2c 的范畴,其视觉 CNN 对应视觉嵌入器,产生调制参数的 RNN 对应文本嵌入器,调制 CNN 对应模态交互。

第四类,浅层嵌入层与深度Transformer交互:

我们提出的 ViLT 是第一个图 2d 类型的模型,在图 2d 中,原始像素的嵌入层较浅,与文本标记相比,计算量较小。因此,这种架构将大部分计算集中在模态交互建模上

2.2. Modality Interaction Schema(模态交互模式)

VLP的核心:多模态Transformer

当代 VLP 模型的核心是Transformer。它们将视觉和文本嵌入序列作为输入,在各层中建立模式间和模式内交互模型,然后输出上下文化的特征序列。

不同模态的交互模式:(两类)

Bugliarello等人将交互模式分为两类:

  • 单流方法(如VisualBERT、UNITER),其中各层共同对图像和文本输入进行串联操作
  • 双流方法(如ViLBERT、LXMERT),其中两种模式在输入层没有串联

我们的交互Transformer模块采用的是单流方法,因为双流方法会引入额外的参数。

2.3. Visual Embedding Schema(视觉嵌入模式)

现有VLP的视觉嵌入方法:

虽然所有性能良好的 VLP 模型都采用了相同的文本嵌入器-来自预训练 BERT 的tokenizer,以及与 BERT 相似的单词和位置嵌入,但它们在视觉嵌入器方面却存在差异。尽管如此,在大多数(如果不是全部)情况下,视觉嵌入仍是现有 VLP 模型的瓶颈。我们的重点是在这一步上少走弯路,引入patch投影,而不是使用区域或网格特征,因为区域或网格特征需要使用大量的提取模块。

区域特征,Region Feature:

区域特征。VLP 模型主要利用区域特征,也称为自下而上特征。这些特征来自现成的物体检测器,如 Faster R-CNN。

区域特征的生成流程:

生成区域特征的一般流程如下:

  1. 首先,一个区域提议网络(RPN)基于从CNN主干池化的网格特征提出感兴趣的区域(RoI)
  2. 然后,非极大值抑制(NMS)将RoI的数量减少到几千个
  3. 经过诸如RoI Align等操作汇集后,RoI经过RoI head成为区域特征
  4. 再次对每个类别应用NMS,最终将特征数量减少到不到一百个

上述过程涉及影响性能和运行时间的几个因素:Backbone、NMS 的样式、RoI head。以往的工作对这些因素的控制比较宽松,相互之间的选择各不相同,如表 7 所列。

  • Backbone:ResNet-101和 ResNext-152 是两种常用的骨干网。
  • NMS:NMS 通常是按类进行的。 在类数量较多(如 VG 数据集中的 1.6K 类)的情况下,对每个类应用 NMS 会成为主要的运行时间瓶颈。为了解决这个问题,最近推出了分类 NMS。
  • RoI head:最初使用的是 C4 head。后来引入了 FPN-MLP head。由于head对每个 RoI 都进行操作,因此它们会带来大量的运行时间负担。

指出区域特征—视觉嵌入方式的缺陷:

然而,轻量级的物体检测器不可能比backbone或单层卷积更快冻结视觉backbone并提前缓存区域特征只能在训练时起到帮助作用,在推理过程中并无用处,更何况这可能会降低性能。

网格特征,Grid Feature:

网格特征。除了detector heads,卷积神经网络(如 ResNets)的输出特征网格也可用作视觉语言预训练的视觉特征。直接使用网格特征最早是由 VQA 专用模型提出的,主要是为了避免使用速度极慢的区域选择操作。

网格类模型:X-LXMERT:

X-LXMERT通过将区域建议固定为网格而不是区域建议网络,重新审视了网格特征。然而,他们对特征的缓存排除了对backbone的进一步调整。

网格类模型:Pixel-BERT:

Pixel-BERT 是唯一一个用 ImageNet 分类预训练的 ResNet 变种骨干取代 VG 预训练对象检测器的 VLP 模型。与基于区域特征的 VLP 模型中的冻结检测器不同,Pixel-BERT 的主干是在视觉和语言预训练期间调整的。使用 ResNet-50 的 Pixel-BERT 的下游性能低于基于区域特征的 VLP 模型,但与使用更重的 ResNeXt-152 的其他竞争对手不相上下。

不过,我们认为网格特征并不是最佳选择,因为深度 CNN 仍然很昂贵,它们在整个计算中占了很大一部分,如图 1 所示

Patch投影,Patch Projection:

Patch投影。为了最大限度地减少开销,我们采用了最简单的视觉嵌入方案:对图像Patch进行线性投影。Patch投影嵌入由 ViT引入,用于图像分类任务。Patch投影将视觉嵌入步骤大大简化到文本嵌入的水平,文本嵌入也包括简单的投影(查找)操作。我们使用 32 × 32 Patch投影,只需要 240 万个参数。这与复杂的 ResNe(X)t backbones 和检测组件形成了鲜明对比。如图 1 所示,其运行时间也是可忽略的。我们将在第 4.6 节进行详细的运行时间分析。

3. Vision-and-Language Transformer

在这里插入图片描述

3.1. Model Overview

ViLT 采用简洁的架构,作为一个 VLP 模型,采用最小的视觉嵌入管道,并遵循单流方法。

与文献不同的是,我们通过预训练的 ViT 而不是 BERT 来初始化交互Transformer权重。这样的初始化利用了交互层处理视觉特征的能力,同时又不需要单独的深度视觉嵌入器。

t ˉ = [ t class ; t 1 T ; ⋯   ; t L T ] + T pos v ˉ = [ v class ; v 1 V ; ⋯   ; v N V ] + V pos z 0 = [ t ˉ + t type ; v ˉ + v type ] z ^ d = MSA ( LN ( z d − 1 ) ) + z d − 1 , d = 1 … D z d = MLP ( LN ( z ^ d ) ) + z ^ d , d = 1 … D p = tanh ( z 0 D W pool ) \begin{equation} \begin{split} \bar{t} &= [t_{\text{class}}; t_1 T; \cdots; t_L T] + T^{\text{pos}} \\ \bar{v} &= [v_{\text{class}}; v_1 V; \cdots; v_N V] + V^{\text{pos}} \\ z^0 &= [\bar{t} + t^{\text{type}}; \bar{v} + v^{\text{type}}] \\ \hat{z}^{d} &= \text{MSA}(\text{LN}(z^{d-1})) + z^{d-1}, d = 1 \ldots D \\ z^d &= \text{MLP}(\text{LN}(\hat{z}^{d})) + \hat{z}^{d}, d = 1 \ldots D \\ p &= \text{tanh}(z^D_0 W_{\text{pool}}) \end{split} \end{equation} tˉvˉz0z^dzdp=[tclass;t1T;;tLT]+Tpos=[vclass;v1V;;vNV]+Vpos=[tˉ+ttype;vˉ+vtype]=MSA(LN(zd1))+zd1,d=1D=MLP(LN(z^d))+z^d,d=1D=tanh(z0DWpool)

VILT模型架构:

ViT 由堆叠块组成,其中包括一个多头自注意(MSA)层和一个 MLP 层

在 ViT 中,层归一化(LN)的位置是与 BERT 的唯一区别:在 BERT 中,LN 位于 MSA 和 MLP 之后("后归一化"),而在 ViT 中,LN 位于 MSA 和 MLP 之前("前归一化")

文本嵌入构造:

输入文本 t ∈ R L × ∣ V ∣ t \in \mathbb{R}^{L \times |V|} tRL×V通过单词嵌入矩阵 T ∈ R ∣ V ∣ × H T \in \mathbb{R}^{|V| \times H} TRV×H和位置嵌入矩阵 T pos ∈ R ( L + 1 ) × H T^{\text{pos}} \in \mathbb{R}^{(L+1) \times H} TposR(L+1)×H嵌入到 t ˉ ∈ R L × H \bar{t} \in \mathbb{R}^{L \times H} tˉRL×H 中。

图像嵌入构造:

输入图像 I ∈ R C × H × W I \in \mathbb{R}^{C \times H \times W} IRC×H×W被切成Patch并平铺为 v ∈ R N × ( P 2 ⋅ C ) v \in \mathbb{R}^{N \times (P^2 \cdot C)} vRN×(P2C),其中 ( P , P ) (P, P) (P,P)是Patch分辨率, N = H W / P 2 N = HW/P^2 N=HW/P2。通过线性投影 V ∈ R ( P 2 ⋅ C ) × H V \in \mathbb{R}^{(P^2 \cdot C) \times H} VR(P2C)×H和位置嵌入 V pos ∈ R ( N + 1 ) × H V^{\text{pos}} \in \mathbb{R}^{(N+1) \times H} VposR(N+1)×H v v v被嵌入到 v ˉ ∈ R N × H \bar{v} \in \mathbb{R}^{N \times H} vˉRN×H中。

多模态交互构造:

文本和图像嵌入向量与相应的模态类型嵌入向量 t type , v type ∈ R H t^{\text{type}}, v^{\text{type}} \in \mathbb{R}^{H} ttype,vtypeRH 相加,然后串联成一个组合序列 z 0 z^0 z0。通过 D层深度Transformer迭代更新上下文向量 z z z,直到最终的上下文序列 z D z^D zD

p p p是整个多模态输入的池化表示,通过对序列 z D z^D zD的第一个索引应用线性投影 W pool ∈ R H × H W_{\text{pool}} \in \mathbb{R}^{H \times H} WpoolRH×H和双曲正切得到。

VILT模型参数设置:

在所有实验中,我们使用了在ImageNet上预训练的ViT-B/32的权重,因此命名为ViLT-B/32。隐藏大小H为768,层深度D为12,块大小P为32,MLP大小为3,072,注意力头的数量为12。

3.2. Pre-training Objectives

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

图像文本匹配 (ITM,Image Text Matching):

图像文本匹配。我们以 0.5 的概率随机替换已对齐的图像。单线性层 ITM 头将池化输出特性 p p p投射到二元类的logits上,我们计算负对数似然损失作为 ITM 损失。

另外,受 Chen 等人的词区域配准目标的启发,我们设计了 word patch alignment(WPA),利用最优传输的非精确近点法(IPOT)计算 z D z^D zD的两个子集: z D z^D zD: z D ∣ t z^D|_t zDt(文本子集)和 z D ∣ v z^D|_v zDv(视觉子集)之间的配准得分。我们按照 Chen 等人的方法设置了 IPOT 的超参数( β = 0.5 , N = 50 \beta = 0.5, N=50 β=0.5,N=50),并在 ITM 损失中加入了乘以 0.1 的近似 wasserstein 距离。

MASK语言建模 (MLM)

MASK语言建模。这一目标是根据上下文向量 z masked D ∣ t z^D_{\text{masked}}|_t zmaskedDt 预测Mask文本标记 t masked t_{\text{masked}} tmasked的真实标签。按照 Devlin 等人的启发式方法,我们以 0.15 的概率随机屏蔽 t t t

与 BERT 的 MLM 目标一样,我们使用双层 MLP,输入 z masked D ∣ t z^D_{\text{masked}}|_t zmaskedDt并输出词汇的logits。然后将 MLM 损失计算为MASK tokens的负对数似然损失。

3.3. Whole Word Masking(整个单词Mask)

整个单词的MASK是有效的:

整个单词Mask是一种Mask技术,可Mask构成整个单词的所有连续子词标记。在应用于原文和中文 BERT 时,它被证明对下游任务有效。

举例证明为什么要整个单词Mask:

我们假设,为了充分利用其他模态的信息,整个单词MASK对 VLP 尤为重要。例如,“giraffe”(长颈鹿)一词被预训练好的tokenizer标记为三个词片标记[“gi”, “##raf”, “##fe”]。如果不是所有词块都被屏蔽,例如[“gi”, “[MASK]”, “##fe”],那么模型可能只依靠附近的两个语言词块[“gi”, “##fe”]来预测被屏蔽的 “##raf”,而不是使用图像信息。

在预训练过程中,我们以 0.15 的掩码概率对整个单词进行Mask。我们将在第 4.5 节讨论其影响。

3.4. Image Augmentation(图像增强)

大多数的图像增强手段无法应用于VLP:

图像增强可以提高视觉模型的泛化能力。 基于ViT的DeiT尝试了各种增强技术,发现这些技术有利于ViT训练。然而,人们尚未在 VLP 模型中探索图像增强的效果。缓存视觉特征限制了基于区域特征的 VLP 模型使用图像增强。Pixel-BERT 也没有研究其效果。因为大多数VLP都使用了对象检测器,其一般是提前把输入喂入目标检测器,得到特征之后事先存起来,训练的时候就不用再通过一遍了。但是有了数据增强之后毫无疑问这就做不了了

VILT使用的图像增强RandAugment:(VILT不涉及对象检测器,所以可以使用图像增强)

为此,我们在微调过程中应用了 RandAugment。我们使用了所有原始策略,只有两个策略除外:颜色反转(因为文本通常也包含颜色信息)和剪切(因为它可能会清除分散在整个图像中的小而重要的物体)。 我们使用 N = 2、M = 9 作为超参数。我们将在第 4.5 节和第 5 节讨论其影响。

4. Experiments

4.1. Overview

我们使用四个数据集进行预训练:Microsoft COCO(MSCOCO)、Visual Genome(VG)、SBU Captions(SBU)和 Google Conceptual Captions(GCC)。表 1 报告了数据集的统计数据。
在这里插入图片描述

在分类任务和图文检索任务中对VILT性能分析:

我们在两类广泛探索的视觉语言下游任务中对 ViLT 进行了评估:在分类任务中,我们使用了 VQAv2和 NLVR2;在检索任务中,我们使用了 MSCOCO 和 Flickr30K (F30K),由 Karpathy 和 Fei-Fei重新拆分。对于分类任务,我们使用不同的初始化种子对头部和数据排序进行了三次微调,并报告了平均得分。我们在表 5 中报告了标准偏差以及消融研究。对于检索任务,我们只进行了一次微调。

4.2. Implementation Details

训练超参设置:

在所有实验中,我们使用了 AdamW 优化器,其基本学习率为 1e-4,权重衰减为 1e-2。学习率在总训练步数的 10% 中预热,并在其余训练中线性衰减为零。请注意,如果我们根据每个任务定制超参数,下游性能可能会进一步提高。

图像端输入分辨率处理:

我们将输入图像的较短边缘调整为 384,将较长边缘限制在 640 以下,同时保留长宽比。其他 VLP 模型在进行物体检测时也采用了这种调整方案,但短边的尺寸更大(800)。对于分辨率为 384 × 640 的图像,ViLT-B/32 的patch投影可产生 12 × 20 = 240 个补丁。由于很少能达到这个上限,我们在预训练时最多取样200个patch。我们对 ViT-B/32 的 V p o s V^{pos} Vpos进行插值,以适应每幅图像的大小,并填充用于批量训练的patch。需要注意的是,这样得到的图像分辨率比 800 × 1,333 小四倍,而其他所有 VLP 模型都是将 800 × 1,333 作为视觉嵌入器的输入尺寸。

文本端输入处理:(BERT从头开始训练)

我们使用基于 BERT 的tokenizer来标记文本输入。我们不是从预训练好的 BERT 中进行微调,而是从头开始学习文本嵌入相关参数 t c l a s s t_{class} tclass、T 和 T p o s T^{pos} Tpos虽然从表面上看是有益的,但采用预训练的纯文本 BERT 并不能保证视觉和语言下游任务的性能提升。Tan & Bansal已经报告了反证,使用预训练的 BERT 参数进行初始化比从头开始预训练的性能更弱

我们在 64 个英伟达 V100 GPU 上对 ViLT-B/32 进行了 100K 或 200K 步的预训练,批量大小为 4,096。对于所有下游任务,我们对 VQAv2/检索任务和 NLVR2 分别以 256 和 128 的批量大小进行 10 个 epoch 的训练。

4.3. Classification Tasks

我们在两个常用数据集 VQAv2 和 NLVR2 上对 ViLT-B/32 进行了评估。我们使用隐藏大小为 1,536 的双层 MLP 作为微调下游head。

视觉问题解答,Visual Question Answering:

视觉问题解答。VQAv2 任务要求用自然语言给出图像和问题对的答案注释的答案原本是自由形式的自然语言,但通常的做法是将该任务转换为具有 3129 个答案类别的分类任务。按照这种做法,我们在 VQAv2 训练集和验证集上对 ViLT-B/32 进行了微调,同时为内部验证保留了 1,000 张验证图片及其相关问题。

我们报告了提交给评估服务器的测试-开发得分结果。与其他使用大量视觉嵌入器的 VLP 模型相比,ViLT 在 VQA 分数上有所欠缺。 我们认为,由于 VQA 中的问题通常都是关于物体的,因此由物体检测器生成的分离式物体表示法可简化 VQA 的训练

自然语言视觉推理,Natural Language for Visual Reasoning:

自然语言视觉推理。NLVR2 任务是一项二元分类任务,由两幅图像和一个自然语言问题组成。由于与预训练设置不同,有两幅输入图像,因此存在多种策略。继 OSCAR和 VinVL之后,我们采用了配对法。在这里,三元组输入被重构为两对(问题、图像 1)和(问题、图像 2),每对都要经过 ViLT头部将两个池化表示(p)的连接作为输入,并输出二元预测

表 2 显示了结果。考虑到其出色的推理速度,ViLT-B/32 在两个数据集上都保持了具有竞争力的性能。
在这里插入图片描述

4.4. Retrieval Tasks

图文检索任务的性能测试:

我们对 ViLT-B/32 进行了微调,采用的是 Karpathy & Fei-Fei对MSCOCO 和 F30K 的拆分。对于图像到文本和文本到图像的检索,我们测量了 zero-shot 和微调后的性能。我们从预训练ITM head中初始化了相似性分数head,特别是true-pair logits的部分。我们随机抽取了 15 个文本作为负样本,并使用交叉熵损失对模型进行微调,以最大化positive pairs的分数。
在这里插入图片描述
我们在表 3 中报告了zero-shot检索结果,在表 4 中报告了微调结果。尽管 ImageBERT 在一个更大(1400 万)的数据集上进行了预训练,但在zero-shot检索中,ViLT-B/32 的总体表现优于 ImageBERT。在微调检索中,ViLT-B/32 的召回率远远高于第二快的模型(Pixel-BERT-R50)。
在这里插入图片描述

4.5. Ablation Study

探索各种训练STEP对模型性能的影响:

在表 5 中,我们进行了各种消融实验。更多的训练步骤、整词MASK和图像增强都会带来益处,而额外的训练目标则无济于事
在这里插入图片描述
据报道,训练迭代次数会影响自监督模型的性能。由于 VLP 也是自我监督训练的一种形式,我们研究了训练持续时间的影响。不出所料,随着训练时间的延长,模型的性能会不断提高(第 1~3 行)。MASK整词以实现 MLM 目标(第 3~4 行)和通过增强进行微调(第 6 行)也会提高性能。训练迭代次数进一步增加到 20 万次后,VQAv2、NLVR2 和zero-shot检索的性能都有所提高。当迭代次数超过 20 万次时,我们停止增加迭代次数,因为微调后的文本检索性能会下降。

探索MASK patch预测(MPP)对模型性能的影响:

额外的MASK区域建模(MRM)目标是提高 VLP 模型性能的关键。我们尝试使用MASK patch预测(MPP),它以与patch预测兼容的形式模拟了 MRM 的效果。patch v 以 0.15 的概率被mask,模型根据其上下向量 预测被mask patch的平均 RGB 值。这一结果与 MRM 对来自物体检测的监督信号的目标形成了鲜明对比。

4.6. Complexity Analysis of VLP Models

VLP模型复杂度分析:

我们从多个方面分析了 VLP 模型的复杂性。 在表 6 中,我们报告了视觉嵌入器和Transformer的参数数、浮点运算次数(FLOPs)以及推理延迟。我们不包括文本嵌入器,因为它为所有 VLP 模型所共享。延迟是在 Xeon E5-2650 CPU 和 NVIDIA P40 GPU 上 10K 次的平均值。
在这里插入图片描述
在这里插入图片描述
以图像分辨率表示的输入大小和串联多模态输入序列的长度会影响 FLOP 的数量。我们对序列长度进行了联合注释。基于区域的 VLP 模型和 Pixel-BERT-R50 的图像分辨率为 800 × 1 333,Pixel-BERT-X152 为 600 × 1 000,ViLT-B/32 为 384 × 640。

在 Pixel-BERT 和 ViLT 中,视觉token在预训练时采样,并在微调时全部使用。我们报告的是视觉标记的最大数量。

我们观察到,对于长度小于 300 的输入序列,类似 BERT-base Transformer的运行时间变化仅小于 1 毫秒。由于 ViLT-B/32 的patch投影最多会生成 240 个图像标记,因此即使我们的模型接收图像和文本标记的组合,它仍然是高效的。

4.7. Visualization

图 4 是一个跨模式排列的例子。WPA 的运输计划表达了以粉红色突出显示的文本标记的热图。每个方形tile代表一个patch,其不透明度表示从高亮显示的文字标记传输的质量。
在这里插入图片描述
IPOT的迭代次数越多-超过训练阶段的 50 次-有助于可视化热图的收敛;根据经验,1000 次迭代足以获得清晰可辨的热图。我们对每个标记的计划进行了z归一化处理,并将值钳制在 [1.0, 3.0]。

5. Conclusion and Future Work

在本文中,我们提出了一种最小的 VLP 架构-视觉语言Transformer(ViLT)。ViLT 可与大量卷积视觉嵌入网络(如 Faster R-CNN 和 ResNets)的竞争对手相媲美。我们要求 VLP 的未来工作更加关注Transformer模块内部的模态交互,而不是只为单模态嵌入器提供动力。

尽管 ViLT-B/32 非常出色,但它更像是一个概念证明,即无需卷积和区域监督的高效 VLP 模型仍然可以胜任。最后,我们指出了一些可能会为 ViLT 家族增光添彩的因素。

可扩展性,Scalability:

可扩展性。正如有关大规模Transformer的论文所示,在数据量适当的情况下,预训练Transformer的性能具有良好的扩展性。这一观察结果为开发性能更好的 ViLT 变体(如 ViLT-L(大型)和 ViLT-H(超大型))铺平了道路。我们将训练更大的模型留待未来的工作,因为对齐的视觉和语言数据集还很少。

视觉输入的MASK建模,Masked Modeling for Visual Inputs:

视觉输入的MASK建模。考虑到 MRM 的成功,我们推测视觉模态的MASK建模目标有助于将信息保留到Transformer的最后一层。然而,如表 5 所示,在图像Patch上的 MRM 原始变体(MPP)失败了。

Cho 等人建议在MASK物体分类(MOC)任务中训练他们的网格 RoIs。然而,这项工作中的视觉词汇集群是在视觉和语言预训练期间与视觉骨干一起固定下来的。对于可训练的视觉嵌入器来说,一次性聚类并不可行。我们认为,可以采用视觉无监督学习研究中的交替聚类或同步聚类方法。

增强策略,Augmentation Strategies:

增强策略。此前关于对比视觉表征学习的研究表明,与更简单的增强策略相比,RandAugment 未采用的高斯模糊能显著提高下游性能。针对文本和视觉输入探索适当的增强策略将是一项有价值的补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值