Vision Transformer这两年

作者|Maximilian Schambach
OneFlow编译
翻译|胡燕君、杨婷

在NLP范畴取得巨大成功后,Transformer架构在核算机视觉方面的效果日渐凸显,成为越来越遍及的CV东西。自2020年10月Vision Transformer模型推出以来,人们开端高度关注Transformer模型在核算机视觉上的运用。

Vision Transformer这两年

图 1:各类Vision Transformer模型的推出时刻(此处以论文在arXiv平台上的宣布时刻为准)

恰逢Vision Transformer推出两周年之际,借此机会咱们对其稍作介绍,并讨论这两年来开展出的多种Vision Transformer模型变体以及Transformer在核算机视觉运用方面面临的各种应战。本文由OneFlow社区编译。

1

自注意力机制和Transformer架构

从NLP说起,2017年,Attention is all you need一文提出了Transformer架构(Vaswani et al. 2017)。Transformer架构的本质是一个序列到序列模型:输入的是一种称为token的序列,token在NLP中是指对语句的数学表明。将语句转化为序列,要将语句中的每个词(或子词)映射为一个向量表明,该向量表明称为对应词的embedding(嵌入)。

生成的embedding token序列由Transformer编码器在几个自注意力层和全衔接层中处理,然后输出一个与输入长度相同的高档token表明序列。翻译等使命需求运用完好的输出序列,而分类等使命则只需用到单个表明。在分类使命中,要为整个语句或整个阶段生成单个表明用于分类,一般会为序列附加一个特殊的可学习嵌入向量 Class_Token([CLS] token)。能够将[CLS] token的表明传入classfier head(分类器头)。

下图是Transformer架构的总览,图左展示了Transformer编码器。自注意力机制是Transformer架构的关键。自注意力层中的一切中心token表明会通过核算成对类似性(pairwise similarities)进行互动,这些成对类似性会成为上一层相应token表明的权重。

Vision Transformer这两年

图 2:Transformer编码器和自注意力机制(图片来自原论文)

为了核算成对类似性,一般会通过简略可学习的线性层从embedding中核算query (Q)、key (K)和value (V)向量,然后一切K和Q之间进行双向softmax自注意力核算,取得各自的类似性,然后将类似性与V相乘。也就是说,在自注意力层中,每个token都通过各自K和Q的简略点积与其他token进行比较,随后再运转(scaled) softmax操作。

如图2右边所示,为了能够在每个阶段学习不同方式的自注意力,Transformer架构运用了多个self-attention head(自注意力头)。具体来说,每个head都映射了来自输入表明的不同Q、K、V向量。例如,在Transformer的某个固定级别,不同的attention head能够关注token之间的短、长距离或语义和句法联系。不同的attention head的输出由线性层进行衔接和处理,以便重新取得通过skip connection传递的输入表明的维度。不熟悉Transformers基本概念的读者能够参考原论文获取更多详细信息(proceedings.neurips.cc/paper/2017/… )。

2

Vision Transformer模型

从Transformer架构被引入NLP到它在核算机视觉范畴(ImageNet图画识别使命)取得SOTA功能,中心隔了3年,这和深度学习研讨的迅猛开展相比显得较为缓慢。但从笼统的视点讲,这并不令人意外。究竟Transformer是序列模型,无法直接兼容图画和视频等高维且近似接连的输入数据类型。与序列不同,图画和视频可被视为从底层接连信号中离散采样的数据。

此外,Transformer模型没有局部性(locality)和平移不变性(translational equivariance)等概括偏置(inductive bias),但概括偏置在处理图画等数据时非常有用。要让Transformer模型习得这些属性,需求运用很多的练习数据。相反,卷积神经网络(CNN)实施概括偏置,CNN曩昔十年在视觉范畴取得的成功很大程度归功于此。

不过,也有观点认为,没有概括偏置能够让Transformer架构更具通用性。例如,Transformer模型的浅层即可提取大局信息,但CNN因为感触野(receptive field)较小,只能在神经网络的深层提取大局信息。

从实践视点讲,Transformer模型在核算机视觉范畴运用开展缓慢的另一个原因是:Transformer模型的输入序列长度缺乏可扩展性。因为规范的双向自注意力机制中一切token表明都是成比照较的,所以规范的Transformer模型中,跟着input token序列变长,核算所需时刻和内存会呈二次方增加。因而,即使是分辨率只要256 256的小型图画,每个像素点为一个input token,总共就构成含65,000个token的超长序列,导致操作可行性极低。

为了处理上述难题,Dosovitskiy等人提出了Vision Transformer模型(ViT,图3),该模型运用的是一种“简略粗暴”的办法:

首要,一张巨细为X X C的输入图画被分成M M个图画块(patch),每个图画块为固定巨细P P(为了简化问题,此处假定输入图画都是正方形)。每个图画块(P P C)被展平(flatten)为一个形状为P ⋅ P ⋅ C的向量,然后运用可练习的线性层将该向量映射为一个维度为D的embedding。展平得到的向量为图画块embedding,即input token,其中包括了每个图画块的信息。
最终,一个M M的图画块embedding阵列被展平为一个长度为N = M ⋅ M的token序列,然后喂入Transformer模型中。能够将分块、展平缓线性映射操作视为一个如下的2D卷积操作:运用D个形状为P P C 的卷积核(kernel),步长(stride)为(P, P),无填充(padding)。

Vision Transformer这两年

图3:ViT模型架构。仅[CLS] token的输出表明被用于分类使命和有监督练习

与NLP范畴的规范Transformer模型相同,embedding token和附加的[CLS] token一起传入Transformer编码器,编码器(图3右)包括几个多头自注意力机制(multi-headed self-attention)与MLP层。规范的ViT中,潜在的维度D从头到尾都是固定的。[CLS] token的输出被输入到classification head中,[CLS] token的输出表明包括输入图画的一切必要信息,即[CLS] token的输出表明被用作潜在图画表征,与CNN自编码器中的瓶颈表征(bottleneck representation)类似。[CLS] token在有监督分类使命中练习时需求与高度依赖图画的token embedding交互。

规范的ViT (ViT-B)中,图画块巨细为P = 16,因而一张巨细为64 64 3的RGB图画会被分为16个图画块。每个图画块被展平为一个长度为16 ⋅ 16 ⋅ 3 = 768的向量,向量被线性层映射为一个维度D = 768的向量。长度为1 + 16的input token序列被传入包括12层组件的编码器中进行处理,每个自注意力模块有12个head。ViT模型中约有8600万参数,更大型的ViT模型变体,如ViT-L和ViT-H分别有3亿和6亿参数。根底ViT模型的巨细相当于规范ResNet-152模型(6000万参数),而SOTA CNN模型的巨细则相当于ViT-L和ViT-H。Dosovitskiy等人在论文中将ViT与ResNet-152×4和Efficientnet-L2这两种CNN模型比照,前者有9亿参数,后者有5亿参数。

整体而言,ViT模型,特别是ViT-L和ViT-H,在JFT-300M大型数据集上预练习,然后迁移到ImageNet和CIFAR等中小型数据集上,都取得了SOTA功能体现。与根据CNN的视觉范畴大型骨干网络(backbone)相反,ViT需求的练习资源较少。不过,即便是相对较少的练习资源,中小型研讨机构也难以负担。此外,尽管上述办法在原理上能使Transformer模型更好地运用于视觉范畴,但还存在其他难点,ViT原始论文和后续论文也提出了相应的处理办法。

3

Transformer模型在视觉范畴的运用难点

第一个难点是,Transformer模型无法区别input token的排列方位变化。也就是说,Transformer模型不能了解input token之间的方位联系。 在NLP使命中,token在序列中的1D方位信息非常重要,因为方位信息代表了语序,对此,Transformer的处理办法是对token embedding进行方位编码。

将方位信息编码到一个token embedding,即为每个token的方位信息单独生成一个维度为D的向量,称为positional embedding,然后将它添加到token embedding中,再传入Transformer模型。Positional embedding或许是可学习的,也或许是固定的,它的生成方式是依据相应token的方位在不同频率的正弦曲线上的不同方位采点(Vaswani et al. 2017)。

Positional embedding也称为傅里叶特征。通过上述办法,能够为恣意长度的序列生成positional embedding,因而,Transformer模型能够处理恣意长度的语句。

但是,ViT模型更为棘手,因为它需求恢复图画块的2D方位信息——即该图画块截取自原图画的哪一个区域。要做到这一点,ViT对每N个input token运用可学习的1D positional embedding,由N个可学习的维度为D的向量组成。练习时,对positional embedding没有显式监督,也就是说,ViT并不能了解input token之间的实际2D联系。

不过,Dosovitzky等人通过核算每对positional embedding之间的类似性后发现,ViT习得的positional embedding的确包括相应图画块的2D方位信息。这一重大发现证明了Transformer架构的强壮功能和通用性。

但是,这种办法需求在练习中将输入序列的长度N调整为固定值。图画块的巨细也需求固定(否则就会影响linear embedding层),这意味着要将输入图画调整为固定分辨率才能用于练习,因为小批次练习要求每批次中一切输入图画的分辨率相同,在CNN模型中则不需求这样做。在ViT模型中,推理时也需求调整图画块巨细,即调整输入图画的分辨率,因为分辨率过大会导致input token序列过长。

如图4中的例子,图画块巨细仍然是前面说到的16 16,那么一张巨细为128 128的图画就会被分为64个图画块。前面说到,练习时一张巨细为64 64的图画被分成16个图画块,那么ViT模型就只习得16个positional embedding,这时模型需求将这16个positional embedding泛化从而习惯不同的分辨率,一起确保它们所代表的2D方位信息仍然完好。

好在,代表同一2D方位联系的各个positional embedding具有类似性,因而能够选用2D插值(interpolation)将它们泛化,以习惯恣意分辨率,一起保留所习得的方位信息(图4)。这一办法由Dosovitskiy等人提出,它看似可行,但原始论文并没有对这种办法进行量化估量。原始论文中,一切用于练习的图画被下降至常用的224 224分辨率,用于微调(fine-tuning)的图画则调至更高分辨率。

Vision Transformer这两年

图4:将positional embedding从4 4个图画块重采样为8 8个图画块

其次,这种办法会导致每个图画块内像素点之间的方位联系丢掉,还会导致密布预测(dense prediction)使命只能在图画块层次完结。 例如语义切割中的逐像素点分类使命。这就要求咱们在体现力和吞吐量之间做出取舍:图画块尺度较小(最小尺度为1 1 px)能够更大程度地保留原图画的底层空间联系,取得密布的潜在表征(latent representation),但会导致吞吐量变小,所需内存空间也会大得难以实现。

为了处理这个问题,一些前期论文提出将注意力机制约束在本地像素邻域中(proceedings.mlr.press/v80/parmar1… ),或许选用下采样(downsampling),将输入图画的分辨率调整得非常小(proceedings.mlr.press/v119/chen20… )。如果图画块巨细达到最高约束,即单个图画块即包括整张原图,则没有可用的方位信息,这时token embedding层就会成为模型架构中的瓶颈,严重影响模型功能。

同样,各图画块边际的邻近像素点之间的方位联系也会丢掉。分块操作不受图画内容的影响,也就是说,图画的分块方式是随意的,有或许导致分出的每个图画块中各个像素点之间的情境相关并不大,从而导致从输入图画中习得的重要特征无法直接运用到图画块上,需求通过相应的token embedding进行重组。这就增加了下游使命(downstream task)的难度,也对patch embedding层提出了更高要求,还导致难以实现平移不变性。

最终,如前所述,规范的Transformer架构中,跟着输入序列变长,运转所耗费的时刻和内存空间都会呈二次方增加。 因而,ViT模型不适合处理高分辨率图画和其他高维数据,也不宜将图画块设置得太小。为了处理以上难题,ViT模型首度公开不久后就呈现了许多变体。

4

Vision Transformer模型开展现状

接下来咱们将介绍一些ViT模型变体,它们进一步推动了核算机视觉的SOTA功能,并处理了部分上述说到核算机视觉运用难题。

DeiT模型(Data-Efficient Image Transformer)

Touvron等人通过数据增强(data augmentation)等精密练习策略,在不依靠大型专有数据集的状况下实现了超卓的模型功能(仍然以ImageNet图画分类使命为衡量规范),这一点与原始ViT模型相反,ViT模型是在Google的JFT-300M闭源数据集上练习的。

Touvron等人还运用一种专门针对Transformer模型的蒸馏(distillation)技术进一步改进ViT模型。将一个功能强壮,但或许庞大而难以练习的teacher模型“蒸馏”为一个根据Transformer架构的student模型,做法和Hinton等人提出的”常识蒸馏“类似(Hinton et al. 2014)。这种模型称为DeiT模型(Data-Efficient Image Transformer)。

与图5所示类似,distillation token的输出表明被输入到额外的classification head中用于预测teacher模型的输出标签。[CLS] token依照惯常做法被传入(另一个)classifier head取得实在分类标签。总丢失函数是运用实在标签核算出的常规穿插熵丢失的加权均匀值和根据distillation classifier head的logit输出与teacher模型logit输出的KL散度(Kullback Leibler divergence)的丢失项。这样,Transformer中,student模型就能够凭借teacher模型来提高自身的练习速度和质量。

Vision Transformer这两年

图5: DeiT的特征蒸馏(图片来自相应论文)

此外,更强的数据增强或许会导致图片不符合其实在标签,例如当裁剪出的图画块没有包括原图标签所指物体(图6)。为了缓解这个问题,能够运用一个不只根据实在标签,并且根据teacher模型所预测标签的丢失。此外,一些图画的分类标签或许不够明确,因为尽管图画或许包括多种物体,但每张图画只相关一个标签。

他们运用强壮的CNN分类器显著提高了student模型的基准体现,这或许是利用了teacher模型中包括的概括偏置,选用这种方式能够在不需求太多的练习数据的状况下从头开端练习Transformer模型。事实上,蒸馏得出的模型功能优于teacher模型,并在ImageNet图画分类使命上取得了SOTA功能,缩小了Transformer模型和CNN模型之间的差距。

DeiT模型加快了练习速度,用ImageNet练习DeiT只需4块GPU练习3天。尽管它的功能不如那些在JFT-300M等更大型数据集上预练习的ViT模型,但它的核算成本要小得多。

Vision Transformer这两年

图6:来自ImageNet数据集的示例图画(左),对其进行裁剪会产生不同的标签(右)

Swin Transformer模型 (Shifted Windows Transformer)

为了处理ViT模型中图画块边际空间信息部分丢掉和核算复杂度二次方增加的问题,Liu等人引入了一种根据分层特征图和移位窗口(shifted window, Swin)的ViT模型(Liu et al. 2021)。Swin Transformer有两个中心奉献,如图7所示。

Vision Transformer这两年

图7:Swin中的分级特征图(上)与后续神经网络层窗口移位(下)

首要,为了下降核算复杂度,自注意力机制的核算范围约束在非重叠层本地窗口内,每个窗口默许包括77个图画块。(图3为了方便图解,将窗口描绘为44个图画块。)Swin Transformer模型共有4个阶段,为了处理输入图画中的非本地大型空间联系信息,图画块序列通过每个阶段时都会被下采样。下采样由可练习的线性层完结,将22个图画块衔接起来进行下采样,将特征维度扩展2倍,使下采样功率提高2倍。

由此构成了一个特征金字塔,能够用在需求密布本地核算和大局特征的使命中,与传统U-Net架构中生成的特征金字塔类似(Ronneberger et al. 2015)。与特征金字塔类似,SIFT和SURF等经典图画处理算法中会运用图画金字塔来获取尺度不变特征(scale-invariant feature)。默许状况下,Swin Transformer并不处理[CLS] token,而是将最终一个阶段已均匀的特征喂入classification head,后者用于依据ImageNet数据集对模型进行有监督练习。

此外,每个阶段中,根据移位窗口有两种不同的图画块切分方式(图7)。此处,移位窗口包括之前已分离且不参与自注意力机制核算的图画块。论文显示,在ImageNet图画分类使命、COCO方针检测使命和ADE20k语义切割使命中运用移位窗口,都能够实现比静态窗口高得多的功能。整体而言,因为每个窗口的图画块数量固定,因而Swin Transformer的内存和核算复杂度从二次方增加下降为线性增加,功能比原始ViT模型和DeiT模型愈加超卓。

除了Swin Transformer,NLP和核算机视觉范畴还有很多办法能够根据规范双向softmax自注意力机制下降Transformer模型的核算复杂度,包括运用softmax自注意力机制的稀疏近似或低秩近似(low-rank approximation)(Wang et al. 2020, Zaheer et al. 2020, Kitaev et al. 2020, Choromanski et al. 2021),调整注意力机制(Ali et al. 2021, Jaegle et al. 2021, Lu et al. 2021, Jaegle et al. 2022),优化规范办法——例如优化IO操作等(Dao et al 2022)。为了对不同的Transformer架构进行深度比较,咱们运用的是Long Range Arena这一较新的评估基准(Tay et al. 2021)。

DINO模型(Self-distillation with no labels)

现在谈及的ViT模型都通过有监督的分类使命(预)练习。Caron等人从另一个方向进行研讨,在DeiT的根底上构建了一种自监督练习ViT模型,也取得了良好成果。这种模型无需运用DeiT所用的显式teacher模型,而是引入了一种无标签自蒸馏(self-distillation with no labels, DINO,openaccess.thecvf.com/content/ICC… )办法。

Vision Transformer这两年

图8:DINO架构。图源Meta AI文章

如图8所示,teacher模型被定义为student模型的指数移动均匀值(EMA),student模型是一个规范的ViT模型。NLP范畴常见的自监督练习办法运用遮罩(masking)和input token序列补全办法来防止模型崩塌(Devlin et al. 2019, Brown et al. 2020),而视觉范畴的自监督学习一般运用的是比照丢失(contrastive loss)。在比照学习框架中,两个版别的神经网络处理相同(或不同)的增强图画,通过练习尽力输出相同(或不同)的表明。

但是,与近来的BYOL (Grill et al. 2020)、Barlow Twins (Zbontar et al. 2021)和VICReg (Bardes et al. 2022)等自监督学习办法类似,DINO并不通过比照丢失显式利用负样本。相反,DINO将同一输入图画的两个增强版别分别传入student模型和teacher模型,teacher模型处理一张原图画的大局裁剪(包括输入图画的较大区域),student模型处理一张原图画的局部裁剪(包括输入图画的较小区域)。运用简略的MLP projection head从[CLS] token的输出表明中得到预测的softmax logit,然后用穿插熵丢失与teacher模型中的logit进行比较。梯度只在student模型网络中传达。

还有其他工程办法能够防止模型崩塌,这些办法的中心概念都是使student模型预测出一个与teacher模型的预测结果类似的图画表明——teacher模型处理的输入图画与student模型的略有不同——这样能够提高从局部到大局的相关性。用ImageNet图画和自蒸馏办法练习DINO(不运用标签),结果发现DINO能够在无监督的状况下为同一标签下的图画生成类似的表明。DINO通过简略的KNN分类器和潜在图画表征就在无监督ImageNet图画分类使命上取得了超卓体现。

论文还显示,DINO能够高效学习包括输入图画语义切割信息的表明(图9)。为了供给合理分辨率的语义切割映射,DINO中的图画块尺度为44,比ViT和DeiT的都小得多。根据DINO表明的天然语义集群,近期一些论文还探讨了自监督语义切割(Hamilton et al. 2022)。

Vision Transformer这两年

图9:规范视觉骨干网络无监督练习得到的切割图(上)DINO无监督练习得到的切割图(下)

5

总结

多年来,Transformer模型成为NLP的首选模型,如今,Transformer也逐渐替代CNN成为核算机视觉范畴的SOTA模型。ViT-L和ViT-H等大型Transformer模型也被视为根底模型,它们在作为通用型视觉骨干网络运用时也体现出优异功能,特别是利用大型数据集练习之后。

但是,Transformer模型运用于图画和视频时还存在不少难点,业内正在进行积极研讨。咱们还须探究高样本功率的自监督学习策略和使Transformer模型更习惯特定范畴或数据集的办法,信任也会引发更多运用型核算机视觉研讨。

许多主流的Vision Transformer架构都由Google (原始ViT)、Microsoft (Swin)、Huawei (TNT)、 OpenAI (iGPT)、Meta (DINO)等科技巨头研制,需求运用很多核算资源。为了下降从零开端练习Vision Transformer的核算复杂度、硬件要求和数据要求,业内进行了很多研讨。本文介绍了一部分但未能穷举。信任Vision Transformer在视觉范畴的运用将会越来越成功。
(本文经授权后由OneFlow编译发布,译文转载请联系OneFlow取得授权。原文:1. medium.com/merantix-la… ; 2.Merantix Momentum GitHub: github.com/merantix-mo…

欢迎下载体会 OneFlow v0.8.0 最新版别:

github.com/Oneflow-Inc…