Transformers - 1 - A Survey of Visual Transformers - 1

 

A Survey of Visual Transformers

Abstract

Transformer是一种基于注意力的编码器-解码器架构,它彻底改变了自然语言处理领域。受这一重大成就的启发,近年来在将类似transformer的架构应用到计算机视觉(CV)领域方面进行了一些开创性的工作,这些工作已经证明了它们在各种CV任务中的有效性。凭借具有竞争力的建模能力,与现代卷积神经网络(CNN)相比,视觉transformer在ImageNet、COCO和ADE20k等多个基准上取得了令人印象深刻的性能。在本文中,我们为三种基本的CV任务(分类、检测和分割)提供了超过100种不同的视觉transformer的全面回顾,其中提出了一种分类法,根据它们的动机、结构和使用场景来组织这些方法。由于训练设置和定向任务的差异,我们也在不同的配置,而不仅仅是在不同的基准上评估了这些方法,以方便和直观的比较。此外,我们还揭示了一系列重要但尚未开发的方面,这些方面可能使Transformer从众多架构中脱颖而出,例如,松弛高级语义嵌入,以拉近视觉和顺序Transformers之间的差距。最后,提出了三个值得进一步投资的研究方向。

 

I. INTRODUCTION

 transformer[1]作为一个基于注意力的结构,一开始在序列建模和机器翻译任务中展示了强大的能力。如图1所示,transformer逐渐成为自然语言处理(NLP)的主流深度学习模型。最近的主流模型是一些自监督的transformer模型,它们预先从足够的数据集中训练出来,然后在小且具体的下游任务[2]-[9]中进行微调。生成式预训练Transformer (Generative Pre-trained Transformer,GPT)系列[2]-[4]利用Transformer解码器执行自回归语言建模任务,而Transformer的Bidirectional Encoder Representations(BERT)[5]及其变体[6]、[7]作为构建在Transformer编码器上的自编码器语言模型。

在计算机视觉(CV)领域,在visual Transformer模型之前,卷积神经网络(CNN)已经成为主流的范式[10]-[12]。受到NLP[1]、[13]中自注意机制的巨大成功的启发,一些基于CNN的模型试图通过空间级[14]-[16]或通道级[17]-[19]的额外的自注意层捕捉长范围依赖,而另一些算法则试图用全局[20]或局部自注意块[21]-[25]完全替代传统的卷积。虽然Cordonnier等人从理论上论证了自注意块[26]的有效性和效率,但这些纯注意力模型在当前的基准上仍不如目前最先进的(SOTA) CNN模型。

如上所述,基于注意力的模型在视觉识别领域得到了大量的关注,而普通的Transformer在NLP领域取得了巨大的成功。受这些启发,许多作品最近将Transformer迁移到CV任务中,并取得了类似的结果。如Dosovitskiy et al.[27]提出了一个纯Transformer,使用图像patch作为图像分类的输入,在许多图像分类基准上实现了SOTA。此外,视觉transformer在其他CV任务中也取得了良好的性能,如检测[28]、分割[29]、跟踪[30]、图像生成[31]、增强[32]。

如图1所示,在[27]、[28]之后,在过去的一年中,各个领域中有数百个基于transformer的模型被提出。因此,我们迫切需要一个系统的文献调查来识别、分类和批判性地评价这些新出现的视觉transformer的表现。考虑到读者可能来自不同的领域,我们将重点放在这些现有的用于三个基本的CV任务的视觉transformer,包括分类、检测和分割。如图2所示,本调查根据这些方法的任务、动机和结构特征,将其分为多个组。其中一些可能部分重叠。例如,一些改进不仅提高了backbone在图像分类中的性能,而且还提高了密集预测任务(如检测和分割)的性能,许多深度和层次的方法也是通过对CNN和attention的改进实现的。

 

 

去年Transformer已发表了一些综述,如Tay et al. [86]检查了在NLP中Transformers的效率,Khan et al. [87] 和Han et al. [88]使用非系统的方法总结了早期视觉Transformers和先前的注意力模型以及一些语言模型。Lin等人介绍了Transformer的最新综述,他们系统地综述了Transformer的各种变体,并粗略地提到了视觉应用[89]。基于这些观察结果,本文旨在对最近的视觉Transformer进行全面回顾,并对这些现有方法进行系统分类: 

(1)全面性和可读性。本文全面回顾了在三个基本任务:分类、检测和分割中提出的100多个视觉Transformers。我们选择并分析了50多个具有代表性的模型,如图2所示。我们不仅从单个角度对每个模型进行详细的分析,还通过逐步分析、对比分析、多视角分析等方法来构建它们之间的内在联系。

(2)直观的比较。由于这些Transformers在不同的任务中遵循不同的训练方案和超参数设置,本调查通过将它们在不同的数据集和限制条件下分离,提出了多个横向比较。更重要的是,我们总结了针对每个任务设计的一系列有前景的组件,包括:基于层次结构的用于backbone的浅层局部卷积,基于稀疏注意的用于neck检测器的空间先验加速器,以及用于分割的通用mask预测方案(shallow local convolution with hierarchical structure for backbone, spatial prior acceleration with sparse attention for neck detector, and general-purpose mask prediction scheme for segmentation.)。

(3)深入分析。我们进一步在以下几个方面提供了重要的观点:从序列任务到视觉任务的转换过程、Transformer与其他视觉网络之间的对应关系,以及在不同任务中采用的可学习嵌入(如类token、对象查询、mask嵌入)的相关性。最后,提出了未来的研究方向。例如,编码器-解码器Transformer backbone可以通过可学习嵌入将三个子任务统一起来。

本文的其余部分组织如下。第II节介绍了原始Transformer的总体架构和关键组件。第III节总结了Transformer backbones的综合分类,并对图像分类进行了简要讨论。然后,在第IV节我们回顾了当代Transformer检测器,包括Transformer necks和backbones。第V节根据嵌入的形式(即patch embedding和query embedding),阐明了分割领域中的主流Transformer变体。此外,第II-第IV节还使用性能评估来简要分析了他们相应领域的细节。第VI章从三个方面进行了进一步的讨论,并指出了今后的研究方向。

 

II. ORIGINAL TRANSFORMER

最初的Transformer[1]首先应用于序列到序列的自回归任务。与之前的序列转导模型[90]、[91]相比,Transformer采用了多头注意机制和逐点前馈网络,继承了编码器-解码器结构,但完全抛弃了递归和卷积。在下面的小节中,我们将描述四个关键组件,并提供原始Transformer的体系结构概述。

A. Attention Mechanism

作为Transformer的基本成分,注意机制能被分成两部分:1)一个transformer层将输入序列映射到三个不同的序列向量(query Q、key K,和value V),其中n和d是输入序列的长和维度。每个向量为:

其中是线性矩阵,dk是query和key的维度,dv是value的维度。query从X投射而来,而key和value则从Y投射而来。这个双序列输入方案被称为cross-attention机制。具体来说,它可以被当作 Y = X 的self-attention。除此之外,self-attention被应用到了编码器和解码器上,而cross-attention被作为了解码器之间的连接。

2)一个注意层,如图3所示,将query和相应的key集合在一起,然后赋值给value,更新输出向量

对应的公式为:

 

其中注意的权重是使用query和key之间的点积操作生成的,比例因子和softmax操作用来将注意权重转换为一个归一化分布。最终权重被赋值给相应的value元素,然后得到最终的输出向量。

 

B. Multi-Head Attention Mechanism

由于特征子空间的限制,单头注意力块(single-head attention block)的建模能力较粗糙。为了解决这一问题,如图3所示,Vaswani等人提出了一种多头自注意机制(multi-head self-attention ,MHSA),该机制将输入线性投影到多个特征子空间中,并由多个独立的注意头(层)并行处理。得到的向量被串联并映射到最终的输出。MHSA的流程可以表述为:

其中h是头的数量,表示输出投射矩阵,表示每个头的输出向量,是三个不同的线性矩阵组

与卷积的稀疏连接类似,多头注意利用dmodel/h维向量将输入分离为h个独立的注意头,并将每个注意头特征并行集成。在没有额外计算代价的情况下,多头注意力丰富了特征子空间的多样性。

 

C. Position-wise Feed-Forward Networks

然后将MHSA的输出馈入两个连续的带有激活ReLU的前馈网络(FFN):

 

这个基于位置的前馈层可以被看作是一个基于点的卷积,它平等地对待每个位置,但在每个层之间使用不同的参数。

 

D. Positional Encoding

由于Transformer/Attention对输入嵌入的操作是同时且独立的,因此忽略了序列的顺序。为了利用顺序信息,一种常见的解决方案是在输入后附加一个额外的位置向量,因此有了“位置编码”这个术语。位置编码有许多选择。例如,一个典型的选择是使用不同频率的正弦和余弦函数:

 其中的i和d分别表示索引和向量的长度,pos是序列中每个元素的位置

 

E. Transformer Model

图4显示了Transformer模型的整体编码器-解码器架构。具体来说,Transformer由N = 6个连续的编码器块组成,每个编码器块由两个子层组成。一个MHSA层聚集了编码器嵌入的关系。基于位置的FFN层提取特征表示。对于解码器,它包含了编码器堆后面的六个连续块。与编码器相比,每个解码器块附加一个多头交叉注意层,对解码器嵌入和编码器的输出进行聚合,其中Y对应于前者,X对应于后者,如式(1)所示。编码器和解码器的所有子层都采用了残差连接[11]和layer归一化[92]来增强Transformer的可扩展性。为了记录序列信息,在编码器和解码器堆栈的开始处的每个输入嵌入都附加了一个位置编码。最后,利用线性层和softmax操作对下一个词进行预测。

Transformer是一种自回归语言模型,起源于机器翻译任务。给定一个单词序列,Transformer将输入序列向量化为单词嵌入,并添加位置编码,然后将生成的向量序列提供给编码器。在训练过程中,如图4所示,Vaswani等人根据自回归任务规则设计了一个masking操作,即当前位置只能依赖于之前的位置输出。基于这种masking,Transformer解码器可以对输入的标签序列进行并行处理。在推理过程中,将经过相同操作处理的前一个预测词序列送入解码器,生成下一个预测词。

 

III. TRANSFORMER FOR CLASSIFICATION

受Transformer在NLP[2] -[5],[8]中的突出发展的启发,一些研究者尝试将Transformer引入图像分类。Vision Transformer (ViT)[27]首先在主流分类基准上实现了与传统CNN相似甚至更高的性能。本节全面回顾了2021年6月之前发布的40多个Transformer backbones,根据它们的动机和实现,它们被分为6个类别,如图5所示。基于我们的分类方法,我们首先介绍了ViT,一种用于图像分类的原始视觉转换器。然后我们讨论了Transformer Enhanced CNN方法,这些方法利用Transformer来增强CNN backbong的远距离依赖。Transformers具有很强的全局建模能力,但在建模初期忽略了局部信息。因此,CNN Enhanced Transformer方法利用适当的卷积归纳偏差来增强Transformer,而 Local Attention Enhanced Transformer方法重新设计了patch分区和注意块,以增强Transformer的局域性,并保持无卷积架构。此外,根据经验,CNN在性能和计算效率方面都受益于分层和深层结构[93]。在此基础上,提出了Hierarchical Transformer和Deep Transformer 方法。前者用金字塔干(pyramid stem)取代固定分辨率的柱状结构,后者则能够防止注意图过于平滑,且增加了注意图在深层的多样性。此外,我们还回顾了目前对于visual Transformer来说可用的自监督方法。最后,我们评估这些Transformers的性能,分析有希望的改进,并且为了能够进一步研究,回答了一个普遍的问题。

 

A. Original Visual Transformer

由Dosovitskiy等人提出的ViT是第一个用于图像分类[27]的Transformer backbone。由于vanillas Transformer需要一个token序列输入,所以首先将输入图像分割成一系列非重叠的patch,然后投影成patch嵌入中。与Transformer的原始操作类似,对每个patch进行一维可学习的位置编码,保留其空间信息,然后将最终的合并嵌入输入编码器(图6)。ViT插入了一个经过学习的[class]嵌入,其在Transformer编码器输出处的状态作为执行分类的表示。此外,在输入任意分辨率的图像时,二维插值对预训练的位置编码进行补充,以保持图像patch的顺序一致。通过使用大型私有数据集(JFT-300M包含3亿张图像)进行预训练,ViT在多个图像识别基准(即ImageNet、CIFAR-10和CIFAR-100)上获得了与大多数主流CNN方法相似甚至更好的结果。ViT已经证明Transformer在CV任务中的有效性,但在训练数据不足的情况下不能很好地泛化。

 

B. Transformer Enhanced CNN

如前所述,Transformer有两个关键部分:MHSA和FFN。最近,Cordonnier等人证明了卷积层可以用有足够的heads的MHSA来替代[26]。Dong等人已经表明,MHSA可能对没有skip连接和FFN的“token uniformity”有很强的归纳bias[94]。因此,理论上,Transformer的建模能力比CNN更强大。但由于自注意机制的存在,其计算量不可避免地会随着特征分辨率的增大而幂次增大,对于浅层尤其如此。与以往基于注意的方法[14],[22],[95]类似,一些方法尝试将Transformer插入CNN的backbone中,或者用Transformer层[43],[44]替换部分卷积块。

VTs:考虑到卷积平等地对待每个像素,Visual Transformer(VT)将输入图像的语义概念解耦到不同的channels,然后通过Transformer编码器块将他们关联起来。VT-block包含了三部分。1)一个tokenizer,通过使用一个scaling注意力层来将输入解耦为不同语义的视觉token集。2)一个Trandformer编码器,合并这些视觉tokens的语义信息。3)一个projector,使用一个tokens-image cross-attention层来实现原始像素空间特征的重合并。而且,其通过将ResNets[11]的最后一个卷积层替换为VT-blocks来构建一个Visual-Transformer-ResNets(VT-ResNets)。与标准的ResNet相比,VT-ResNet在ImageNet上获得了高于原来4.6-7%的更好准确度,并使用了更少的参数和FLOPs

BoTNet:与之前的基于注意力的模块相比,之前的模块只是在结构上用注意力块取代了最后阶段的卷积,Vaswani等人提出了一个概念性的重新定义,将具有自注意机制的连续bottleneck块视为Bottleneck Transformer(BoTNet)[44]块,尽管短连接形式有所不同。受到[22]-[24],[95]中相对位置编码[96]有效性的启发,BoTNet利用这种位置感知进一步逼近Transformer。基于ResNet-50,在ImageNet基准测试中,BoTNet的性能优于大多数参数设置相似的CNN模型,top1精度为84.7%,参数为75.1M。这种模拟Transformer的方法进一步证明了Transformer在标准卷积模型之上的有效性。

 

C. CNN Enhanced Transformer

归纳偏差可以表示为一组关于数据分布或解空间的假设,其在卷积中的表现是局部性和平移不变性。局部性集中于空间上接近的元素,并将其与远端隔离开来。翻译不变性体现了相同匹配规则在输入的不同位置的重用[97]。由于局部邻域内的协方差较大,且在整个图像中趋于平稳,所以这些卷积偏差可以有效地处理图像数据。然而,在数据集充足的情况下,强烈的偏差也会限制CNN的上界。最近的努力试图利用适当的卷积偏差来增强Transformer并加速其收敛。这些应用可以概括为:软近似[38]、[45],直接局部化处理[46]、[47],直接替换位置编码[48]、[49]和结构组合[37]、[50]。

DeiT: 为了缓解ViT对大数据集的依赖,Touvron等人提出了一种高效数据图像转换器(DeiT)[38],以提高其在ImageNet-1k上训练时的适用性。DeiT-B基于ViT-B[27],利用现有的数据增强和正则化策略,在ImageNet上获得了83.1%的top-1准确率。此外,teacher-student 策略应用于预训练,这是一个形式上类似于类token的蒸馏token,但由teacher的伪标记监督。根据经验,CNN是一个比Transformer更好的teacher,一个有趣的发现是,经过提炼的模型比它的teacher表现更好。这些观察结果可以用[98]来解释:CNN teacher可以通过知识蒸馏的方式将其归纳偏差以一种soft的方式传递给Transformer student。基于这种基于token的蒸馏方法,DeiT-B在无外部数据的情况下获得了85.2%的top-1准确率。此外,协同训练是否可以作为一种为Transformer集成归纳偏差的新方法,是值得研究的问题[99]。

ConViT:类似于基于双边注意的模型[22],[100],ConViT[45]在Transformer分支上附加一个并行卷积分支,通过Gated Positional Self-Attention (GPSA)柔和地施加卷积归纳偏差。具体来说,GPSA可以分为原始的自注意权值和模拟卷积权值。该算法首先初始化卷积层的局部性,然后通过调整学习门控参数显式地赋予每个注意head新的局部性。GPSA函数可表示为:

 其中是一个可学习的嵌入,用于模拟卷积,是一个固定相关位置的嵌入。λh是一个可学习的门控参数,用来规划相对于内容信息,要给位置信息多少注意。总之,ConViT在ImageNet上的Top-1精确率比DeiT高0.6-3.2%

CeiT & LocalViT: 除了柔和地学习归纳偏差的方法[38]、[45]外,还有一些直接的方法。CeiT[46]和LocalViT[47]通过直接在FFN中添加depth-wise卷积来提取位置。基于point-wise卷积和position-wise FFN的等价性,LocalViT将这个卷积版本的FFN扩展到一个inverted残差块[101],以构建一个depth-wise卷积框架。使用相同的操作,CeiT还重新设计了一个patch-to-tokens方案,并在Transformer的顶部附加一个Layer-wise Class token Attention (LCA),以聚合多级表示。这样,两者的性能都优于原来的DeiT[38]。

CPVT & ResT: 一些方法尝试利用卷积的固有位置信息来泛化分辨率不同的输入。从一个角度来看,ResT[49]假设位置编码和输入之间存在相关性。因此,它们之间的求和操作可以看作是对像素级输入进行加权的乘法,通过padding为1的3 × 3depth-wise卷积来实现。另一方面,根据[102]的观察,用零填充的卷积的边界可以对绝对位置信息进行编码,CPVT[48]用一系列卷积代替了位置编码。这两种方法都受益于这种卷积位置嵌入,特别是当模型很小时,ResT-Lite和PVT-Tiny分别提高了1.3%和1.4%。

 Early Conv. & CoAtNet: 除了“internal”融合之外,目前更多的方法关注的是根据不同的视觉Transformer结构进行“apparent”组合。对于标准的柱状结构,Xiao等人将原来的patchify stem(单个不重叠的大核)替换为若干个重叠的stride为2的3 × 3核[50]。这个简单但强大的stem在ImageNet-1k上提高了1-2%的top-1精度,并促进了ViT的稳定性和下游任务的泛化。对于层次结构,Dai等人[37]研究了混合模型的最佳组合,以有利于性能权衡。通过比较一系列混合模型,他们提出了一个Convolution and Attention Network (CoAtNet),以结合CNN和Transformer的力量。具体来说,他们观察到depth-wise卷积可以自然地集成到注意块中,而浅层的垂直重叠卷积比原来的分层方法更有效。CoAtNet实现了跨多个数据集的最新SOTA性能。

 

D. Local Attention Enhanced Transformer

ViT[27]将输入的图像看作是一系列的patch。这种粗糙的patch嵌入过程忽略了语言与图像之间的差别,可能会损害图像的局部信息。卷积作为一种局部提取器,通过相对固定的滤波器对特征进行聚合。这种模板匹配过程可以有效地处理大多数小型数据集,但在处理大型数据集时面临表示的组合爆炸。与卷积相比,局部注意机制可以根据局部元素[51]之间的关系动态生成注意权值[95]。为了增强局部特征提取能力,保留无卷积结构,[33]、[52]、[53]、[56]等尝试通过局部自注意机制适应patch结构。

TNT: ViT[27]只关注全局的patch聚合,忽略了内部的相互作用。类似于Network In Network (NIN)系列[103],Han等人利用Transformer-iN-Transformer (TNT)[52]模型来聚合patch级和像素级表示。具体来说,每一层TNT由两个连续的块组成,内部块模拟每个patch内部像素级的交互作用,外部块从patch嵌入中提取全局信息。它们由一个线性投影层连接,该投影层将像素映射到相应的patch上。因此,TNT在浅层保存了比以前更丰富的局部特征。

Swin Transformer: Temporal Shift Module (TSM)[104]通过沿时间维度移动部分channels,促进了相邻帧之间的信息交换(图7(a))。与2D TSM类似,Liu等人提出了一个Shifted windows (Swin) Transformer[33],它利用沿空间维度的移位窗口来建模全局和边界特征。其中,采用分层结构进行空间减少和通道扩展,通过patch分区和patch合并操作来实现。此外,两个连续的window-wise注意层促进了跨窗口交互(图7(b)-(c)),这与CNN中的接受域扩展概念相似。它将注意层的计算复杂度从O(2n2C)降低到O(4M2nC),其中n和M分别表示patch长度和窗口大小。Swin Transformer在ImageNet-1K上获得84.2%的top-1精度,和在多个密集预测基准,如COCO和ADE20k得到了最新的SOTA。

 

Twins & ViL:作为一个local-global分离的Transformer, Twins[53]用一个Spatially Separable Self-Attention mechanism (SSSA)取代了Swin Transformer[33]的复杂设计。它在形式上类似于depth-wise的卷积[101]或windows-wise的TNT块[52]。其中,局部注意层对每个子窗口内的相邻patch进行聚合,增强细粒度特征;全局下采样注意层用于捕获长距离特征。另一种单独的形式是ViL[55],它将单个全局token替换为一系列局部嵌入(称为全局内存)。每个局部嵌入只与其他局部嵌入及其相应的二维空间邻居相互作用。受益于这样简单的形式,两者都获得了能够和Swin Transformer相比的性能。

VOLO: Vision outlook (VOLO)[42]使用outlook注意力专注于比其他基于注意力的模块更精细的特性。形式上,它由三种操作组成:unfold, linear-wights attention和 refold。尽管VOLO强调它是一个无CNN的模型,但该管道类似于patch-wise动态卷积。基于LV-ViT [41], VOLO将LV-ViT的top-1精度提高了0.4%-1.2%,这是ImageNet-1k基准测试中的一个新的SOTA,且无需外部数据。

 

E. Hierarchical Transformer 

由于ViT[27]在整个网络中继承了原始的柱状结构,具有固定的分辨率,因此忽略了细粒度特征,带来了沉重的计算代价。在分层CNNs之后,最近的工作[34]、[39]、[55]-[57]对Transformer应用了类似的结构。

T2T-ViT:分层Transformer的范例首先由Tokens-to-Token ViT (T2T-ViT) ViT[56]引入。在T2T-ViT中,使用layer-wise T2T 转换将邻近的tokens聚合成单个token。这种由重叠unfold操作实现的包围聚合可以同时实现层次结构和局部性。但是,由于转换层存在重叠冗余,给存储和计算带来了很大的负担。

PVT:分层Transformer的另一个例子是Pyramid Vision Transformer (PVT)[39]。如前所述,重复使用冗余tokens会导致T2T-ViT效率低下。与重叠unfold转换不同,PVT依赖于非重叠的patch分区来减少序列长度,并依赖于线性patch嵌入来保持通道维数一致。这种金字塔结构可以使Transform适应于需要大量输入和计算效率高的细粒度特征的密集预测任务。具体来说,spatial-reduction attention(SRA)层通过在每个注意块中学习低分辨率的键值对,显著降低了计算复杂度(图9)。PVT在许多基准上展示了分层Transformer的可用性。

PiT & CvT:类似于PVT[39]的收缩策略,PiT (pooling-based Vision Transformer)[57]和Convolutional Vision Transformer (CvT)[34]分别利用pooling和convolution来实现token嵌入。此外,CvT通过用卷积投影代替线性层,改善了PVT的SRA。基于卷积引入的这些局部上下文信息,CvT可以在不进行位置编码的情况下对变量输入进行泛化。

 

F. Deep Transformer 

从经验上看,增加模型深度可以使网络学习更复杂的表示形式[11]。最近的工作将这种深层结构应用到Transformer中,通过分析跨patch[60]和跨层[35]、[59]相似性以及残差块[40]的贡献,对其可扩展性进行了大量实验研究。在deep Transformer中,更深层次的特征往往不太具有代表性(注意力崩溃[59]),patch被映射为不可区分的潜在表示(patch over-smoothing[60])。为了弥补上述局限性,这些方法也从多个方面给出了相应的解决方案。

CaiT: Touvron等人从结构方面提出了高效的Class-attention in image Transformers (CaiT[40]),其包括两个阶段。1)无类token的多个自注意阶段。在每一层中,利用使用小值初始化的可学习的对角矩阵动态更新channel权值,从而为channel调整提供一定的自由度。2)使用frozen patch嵌入的最后几个类注意阶段。稍后类token被插入到建模全局表示中,类似于带有编码器-解码器结构(图9(c))的DETR。这种显式的分离是基于类token对于正向传递中的patch嵌入梯度无效的假设。利用蒸馏训练策略[38],CaiT在不需要外部数据的情况下,在imagenet-1k上获得了新的SOTA (86.5% top-1精度)

DeepViT & Refiner: Deep Transformer存在注意力崩溃和过度平滑问题,但仍在很大程度上保留了不同头部之间注意力map的多样性。基于这一观察,Zhou等人提出了Deep Vision Transformer(DeepViT),该方法利用线性层来聚合cross-head注意map,并重新生成一个新的cross-head注意map来增加cross-layer的特征多样性。而且,Refiner[35]应用一个线性层去扩展注意maps

的维度(不直接地增加heads数量),以增强多样性。然后,一个Distributed Local Attention (DLA) 被用来更好地构建局部和全局特征,其是使用一个被注意map影响的head-wise卷积来实现的。最后,Refiner在ImageNet上获得了86%的top-1准确度,参数大小为81M。

Diverse Patch: 从训练策略方面来说,Gong等人提出三个用于深度Transformer的patch-wise的损失函数,能够显著提高patches的多样性且抵消过度平滑问题[60]。与[105]相似,一个patch-wise cosine损失最小化了patches中的成对cosine相似度。一个patch-wise对抗损失将更深的patches与其浅层的相关patches进行归一化。受Cutmix[106]启发,一个patch-wise mixing损失将两个不同的图像混合,使得每个patch只与相同图像的patches相关,忽略不相关的patches。与LV-ViT[41]相比,他们有着相似的损失函数,但动机不同。前者专注于patch的多样性,后者更注重token标签的数据增强。

 

G. Transformers with Self-Supervised Learning

 自监督Transformer在NLP[5]上获得了成功,但是监督预训练Transformer仍主导着CV领域[33],[38].最近的工作试图设计多种用于视觉Transformer的生成[61]-[63]和判别[64]-[66]中的自监督学习方案。

 iGPT: 对于生成任务,Chen等人提出了 image Generative Pre-training Transformer (iGPT),用于视觉自监督学习。与ViT的patch嵌入不同,iGPT直接将图像的大小重置为更小的分辨率,然后将其拉平变为1D的像素序列,接着将最终序列输入到用于自回归像素预测任务的GPT-2[4]中。iGPT能够直接建模像素级信息,并能在低分辨率数据集中获得一个中等的准确度,但其需要相当大的计算(roughly 2500 V100-days for pretraining)。然而,生成视觉Transformer仍是一个值得进一步研究的有前景的方向。

BEiT: 比起直接生成原始的像素,Bao等人通过重新构造潜在空间中的masked图像,提出了一个BERT-style的视觉Transformer(BEiT)[63]。与BERT中的字典相似,基于variational autoencoder (dVAE) [107] 的图像tokenizer将图像向量化为离散的视觉tokens。这些tokens作为了预训练的伪标签集。然后,一个带有随机masked patches的图像被输入到一个Transformer backbone中。每个output-masked嵌入旨在通过在预训练过程中最大化后验概率对数似然函数来恢复其相关联的视觉token。这种方法中,BEiT避免了学习冗余的pixel-wise表示,优于最新的自监督方法(DINO[65] with 0.4%) 和 典型监督方法(DeiT-B[38] with 1.4%),在ImageNet-1K中获得了83.2%的top-1准确度。

MoCo v3: 对于判别任务,Chen等人[64]从基础开始,调查了几种基础组成对自监督ViT训练的影响(e.g., batch size, learning rate, and normalization)。通过对ViT准确度曲线的密集监测,他们观察到它“很好”,但是在训练过程中会遭受一些空间极具下降(term as dip),这对最终的性能有所影响。为了最终这个不稳定的原因,他们还监测了梯度幅度,发现在第一层(patch projection)的突然的梯度变化会延迟一组迭代,然后导致最终的准确度下降。因此,他们提出MoCo v3,一系列用于ViT的基础改善(e.g., freezing the patch projection layer, BatchNorm, and small patch size),使其优于ResNets,尤其是在大模型中

DINO: Caron[38]等人说明了蒸馏对于监督Transformer的有效性。最近,他们进一步将teacher-student方法使用到自监督学习中,并提出DINO[65]。DINO的核心概念可以总结为三点。一个有着额外中心和锐化层的momentum encoder被作为一个teacher模型,输出带有batch的平均表示的居中伪标签,其遗传自他们早期的SwAV[109]。一个没有预测head的online encoder,其作为一个student模型去拟合teacher的输出。一个标准的交叉熵损失来连接自训练和知识蒸馏。在线性评估中,DINO在ImageNet中取得了80.1%的准确度。更有意思的是,自监督ViT能够学习分割的繁荣特性,这一般是监督Transformer或CNN做不到的。

 

H. Discussion

1) 实验评估和对比分析:根据我们的分类法,经过审查的监督模型可分为六类。表一总结了主流分类基准上引人注目的Transformer,并为每个模型指定了专用颜色。为了客观和直观地评估它们,以下三幅图展示了它们在ImageNet-1k上不同配置(例如模型大小、FLOPs和训练方案)下的比较。图10(a)总结了2242输入分辨率下每个模型的性能。由于Transformer中的FLLOPs随输入大小呈幂次增长,因此图10(b)将FLOPs做为水平轴,并关注其在更高分辨率下的性能。图10(c)着重于带有外部数据集的预训练模型。根据这些数字,我们简要分析了有利于模型性能、效率和可扩展性的几项改进,如下所示:

 

 (表过大,只截取了一部分)

 

 

  •一般来说,大多数结构改进方法针对特定的模型尺寸、问题或特定的输入分辨率进行了优化,而其他基本训练策略,如DeiT[38]和LV ViT[41],则更适用于各种模型、任务和输入。
  •对于Transformer来说,位置是必不可少的,这反映在VOLO[42]和Swin[33]分别在分类和密集预测任务中占主导地位。
  •卷积patchify stem(ViTc[50])和早期卷积阶段(CoAtNet[37])显著提高了Transformer的精度,尤其是在大型模型上,因为这样的组合可以相互帮助捕获浅层的细粒度局部特征。
  •深层Transformer潜力巨大,如Refined-ViT[35]和CaiT[40]。随着模型尺寸随channel尺寸的幂次增长,深度Transformer中模型尺寸和channel尺寸之间的权衡值得进一步研究。
  •CeiT[46]和CvT[34]在训练 中小型模型(0−40M)方面显示出显著优势,这表明这种用于轻型模型的混合注意块值得进一步探索。

 

2) 视觉Transformer的发展趋势概述:Transformer backbones在过去的一年里出现了。当我们的系统与这些模型的时间轴相匹配时,我们可以清楚地追踪图像分类Transformer的发展趋势(图1)。作为一种自注意机制,视觉Transformer主要根据NLP中的原始结构(ViT[27]和iGPT[61])或CV中基于注意的模型(VTs[43]和BoTNet[44])重新设计。

然后,许多方法开始将CNN的层次结构或深层结构扩展到视觉Transformer。T2T ViT[56]、PVT[39]、CvT[34]和PiT[57]的共同动机是将层次结构转移到Transformer中,但它们执行下采样的方式不同。CaiT[40]、Diversity Patch[60]、DeepViT[59]和Refiner[35]专注于deep Transformer中的问题。此外,一些方法转向内部组件,以进一步增强先前Transformer中的图像处理能力,即位置编码[48]、[112]、[113]、MHSA[26]和MLP[94]。

下一波Transformer趋势是局部性范式。他们大多通过引入局部注意机制[33]、[42]、[52]、[53]或卷积[45]–[47]将局部性引入Transformer。如今,最新的监督Transformer正在探索结构组合[37],[50]和scaling定律[36],[114]。除了有监督的Transformer之外,自监督学习在视觉Transformer[61]–[66]中占了很大一部分。然而,目前尚不清楚哪些任务和结构对CV中的自监督Transformer更有利。

3) 关于替代方案的简要讨论:在视觉Transformer的开发过程中,最常见的问题是Transformer能否取代卷积。通过回顾过去一年的改善历史,这里没有替换方法效果更差的迹象。视觉Transformer已经从一个纯粹的结构回归到一种混合形式,全局信息逐渐回归到与局部信息混合的阶段。虽然Transformer可以等价于卷积,甚至比卷积具有更好的建模能力,但简单有效的卷积运算已经足以处理浅层的局部性和低层语义特征。未来,二者结合的想法将推动图像分类的更多突破。

 

IV. TRANSFORMER FOR DETECTION

省略

posted @ 2022-03-10 17:52  慢行厚积  阅读(639)  评论(0编辑  收藏  举报