作者|Maximilian Schambach
OneFlow编译
翻译|胡燕君、杨婷
在NLP畛域获得巨大成功后,Transformer架构在计算机视觉方面的作用日渐凸显,成为越来越广泛的CV工具。自2020年10月Vision Transformer模型推出以来,人们开始高度关注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示意的权重。
图 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基本概念的读者能够参考原论文获取更多详细信息(https://proceedings.neurips.c...)。
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)。
图3:ViT模型架构。仅[CLS] token的输入示意被用于分类工作和有监督训练(图源:https://openreview.net/forum?...)
与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-152x4和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)的图像则调至更高分辨率。
图4:将positional embedding从4 × 4个图像块重采样为8 × 8个图像块
其次,这种办法会导致每个图像块内像素点之间的地位关系失落,还会导致密集预测(dense prediction)工作只能在图像块档次实现。 例如语义宰割中的逐像素点分类工作。这就要求咱们在表现力和吞吐量之间做出取舍:图像块尺寸较小(最小尺寸为1 × 1 px)能够更大程度地保留原图像的底层空间关系,取得密集的潜在表征(latent representation),但会导致吞吐量变小,所需内存空间也会大得难以实现。
为了解决这个问题,一些晚期论文提出将注意力机制限度在本地像素邻域中(http://proceedings.mlr.press/...),或者采纳下采样(downsampling),将输出图像的分辨率调整得十分小(http://proceedings.mlr.press/...;https://openreview.net/forum?...)。如果图像块大小达到最高限度,即单个图像块即蕴含整张原图,则没有可用的地位信息,这时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模型来晋升本身的训练速度和品质。
图5: DeiT的特色蒸馏(图片来自相应论文)
此外,更强的数据加强可能会导致图片不合乎其实在标签,例如当裁剪出的图像块没有蕴含原图标签所指物体(图6)。为了缓解这个问题,能够应用一个不仅基于实在标签,而且基于teacher模型所预测标签的损失。此外,一些图像的分类标签可能不够明确,因为只管图像可能蕴含多种物体,但每张图像只关联一个标签。
他们应用弱小的CNN分类器显著进步了student模型的基准体现,这可能是利用了teacher模型中蕴含的演绎偏置,采纳这种形式能够在不须要太多的训练数据的状况下从头开始训练Transformer模型。事实上,蒸馏得出的模型性能优于teacher模型,并在ImageNet图像分类工作上获得了SOTA性能,放大了Transformer模型和CNN模型之间的差距。
DeiT模型放慢了训练速度,用ImageNet训练DeiT只需4块GPU训练3天。尽管它的性能不如那些在JFT-300M等更大型数据集上预训练的ViT模型,但它的计算成本要小得多。
图6:来自ImageNet数据集的示例图像(左),对其进行裁剪会产生不同的标签(右)
Swin Transformer模型 (Shifted Windows Transformer)
为了解决ViT模型中图像块边缘空间信息局部失落和计算复杂度二次方增长的问题,Liu等人引入了一种基于分层特色图和移位窗口(shifted window, Swin)的ViT模型(Liu et al. 2021)。Swin Transformer有两个外围奉献,如图7所示。
图7:Swin中的分级特色图(上)与后续神经网络层窗口移位(下)(图源:https://openaccess.thecvf.com...)
首先,为了升高计算复杂度,自注意力机制的计算范畴限度在非重叠层本地窗口内,每个窗口默认蕴含7×7个图像块。(图3为了不便图解,将窗口描述为4×4个图像块。)Swin Transformer模型共有4个阶段,为了解决输出图像中的非本地大型空间关系信息,图像块序列通过每个阶段时都会被下采样。下采样由可训练的线性层实现,将2×2个图像块连接起来进行下采样,将特色维度扩充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,https://openaccess.thecvf.com...)办法。
图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中的图像块尺寸为4×4,比ViT和DeiT的都小得多。基于DINO示意的天然语义集群,近期一些论文还探讨了自监督语义宰割(Hamilton et al. 2022)。
图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. https://medium.com/merantix-l...;2. Merantix Momentum GitHub: https://github.com/merantix-m...)
欢送下载体验 OneFlow v0.8.0 最新版本:https://github.com/Oneflow-In...