系列文章目录
第一章 AlexNet网络详解
第二章 VGG网络详解
第三章 GoogLeNet网络详解
第四章 ResNet网络详解
第五章 ResNeXt网络详解
第六章 MobileNetv1网络详解
第七章 MobileNetv2网络详解
第八章 MobileNetv3网络详解
第九章 ShuffleNetv1网络详解
第十章 ShuffleNetv2网络详解
第十一章 EfficientNetv1网络详解
第十二章 EfficientNetv2网络详解
第十三章 Transformer注意力机制
第十四章 Vision Transformer网络详解
第十五章 Swin-Transformer网络详解
第十六章 ConvNeXt网络详解
第十七章 RepVGG网络详解
第十八章 MobileViT网络详解
文章目录
- 0. 摘要
- 1. 前言
- 2.
- 1.
- 2.
- 总结
0、摘要
虽然Transformer架构已经成为自然语言处理任务的事实标准,但它在计算机视觉方面的应用仍然有限。在视觉中,注意力要么与卷积网络一起应用,要么用来替换卷积网络的某些组件,同时保持它们的总体结构。我们表明,这种依赖于CNN的做法并非必要的,一种纯Transformer可直接应用于图像块序列上,在图像分类任务中表现非常出色。当在大量数据上进行预训练并转移到多个中等或小型图像识别基准(ImageNet、CIFAR-100、VTAB等)时,Vision Transformer(ViT)可以比现有卷积网络表现更好,同时需要明显更少的计算资源来训练。
1、前言
1 引言 基于自注意力机制的架构,特别是 Transformer(Vaswani et al.,2017),已经成为自然语言处理(NLP)中的首选模型。主流方法是在大型文本语料库上进行预训练,然后在较小的任务特定数据集上进行微调(Devlin et al.,2019)。由于 Transformer 的计算效率和可伸缩性,现在可以训练规模空前的模型,参数超过 100B(Brown et al.,2020;Lepikhin et al.,2020)。随着模型和数据集的增长,性能仍未出现饱和的迹象。然而,在计算机视觉中,卷积架构仍然是主导的(LeCun et al.,1989;Krizhevsky et al.,2012;He et al.,2016)。受 NLP 成功的启发,多项研究尝试将类似于 CNN 的架构与自注意力相结合(Wang et al.,2018;Carion et al.,2020),有些将卷积完全替换(Ramachandran et al.,2019;Wang et al.,2020a)。后者虽然从理论上来说效率高,但由于使用了专门的注意力模式,在现代硬件加速器上尚未有效地扩展。因此,在大规模图像识别中,经典的 ResNet 类架构仍然是最先进的(Mahajan et al.,2018;Xie et al.,2020;Kolesnikov et al.,2020)。受 Transformer 在 NLP 中的缩放成功启发,我们尝试直接将标准 Transformer 应用于图像,并进行最少修改。为此,我们将图像分成补丁并将这些补丁的线性嵌入序列作为 Transformer 的输入。图像补丁与 NLP 应用中的标记(单词)被处理方式相同。我们以监督的方式对图像分类模型进行训练。
在像ImageNet这样的中型数据集上进行训练且没有强有力的正则化时,这些模型的准确性略低于相同大小的ResNet几个百分点。这看似令人沮丧的结果也是可以预料的:Transformer缺乏CNN固有的一些感应偏差,例如平移等变性和局部性,因此当训练数据不足时,无法很好地推广。然而,如果这些模型在更大的数据集(14M-300M张图像)上训练,则情况就会改变。我们发现大规模训练胜过于感应偏差。当Vision Transformer(ViT)在足够大的规模下预先训练并转移到数据较少的任务时,其结果非常出色。当在公共ImageNet-21k数据集或公司JFT-300M数据集上预先训练时,ViT在多个图像识别基准测试中接近或超越现有技术水平。特别是最佳模型在ImageNet上的准确率达到了88.55%,ImageNet-ReaL上为90.72%,CIFAR-100上为94.55%,VTAB一套19个任务上的准确率为77.63%。
2.正文分析
Transformer最初由Vaswani等人(2017)提出用于机器翻译,并且在许多自然语言处理任务中已成为最先进的方法。大型基于Transformer的模型通常会在大型语料库上预训练,然后针对当前任务进行微调:BERT(Devlin等人,2019)采用去噪自监督预训练任务,而GPT系列使用语言建模作为其预训练任务(Radford等人,2018; 2019; Brown等人,2020)。将自注意力应用于图像的简单应用需要每个像素对其他像素进行注意力计算。由于像素数量呈二次增长,这在实际输入尺寸上是不可扩展的。因此,为了在图像处理的上下文中应用Transformer,过去尝试过几种近似方法。Parmar等人(2018)仅在每个查询像素的局部邻域中应用自注意力,而非全局应用。这种局部多头点积自注意力块可以完全替代卷积(Hu等人,2019; Ramachandran等人,2019; Zhao等人,2020)。在不同的工作线路中,Sparse Transformers(Child等人,2019)采用可扩展的全局自注意力近似,以适用于图像。缩放注意力的另一种方法是将其应用于不同大小的块(Weissenborn等人,2019),在极端情况下仅沿着单个轴(Ho等人,2019; Wang等人,2020a)进行应用。这些专门的注意力架构中的许多都展示了在计算机视觉任务中有希望的结果,但需要复杂的工程才能有效地在硬件加速器上实现。
与我们最相关的模型是Cordonnier等人(2020)的模型,该模型从输入图像中提取2x2大小的补丁,并在其上应用完全自注意力。这个模型非常类似于ViT,但我们的工作进一步证明,大规模预训练使得vanilla transformers在(甚至比)最先进的CNN方面具有竞争力。此外,Cordonnier等人(2020)使用了2x2像素的小补丁大小,这使得该模型仅适用于小分辨率图像,而我们也处理中等分辨率的图像。另外,对于将卷积神经网络(CNNs)与自注意力的形式相结合也引起了很多兴趣,例如通过增强特征图进行图像分类(Bello等人,2019),或通过进一步使用自注意力处理CNN的输出以进行目标检测(胡等人,2018;Carion等人,2020),视频处理(Wang等人,2018;Sun等人,2019),图像分类(Wu等人,2020),无监督目标发现(Locatello等人,2020),或统一文本-视觉任务(Chen等人,2020c;Lu等人,2019;Li等人,2019)。另一个最近相关的模型是图像GPT(iGPT)(Chen等人,2020a),该模型通过降低图像分辨率和颜色空间,将Transformer应用于图像像素。该模型以无监督的方式进行训练,作为生成模型,并且结果表示可以进行线性微调或探测以进行分类性能,实现ImageNet最大准确率为72%。
我们的工作与探索比标准ImageNet数据集更大规模的图像识别论文库增添了一份贡献。使用额外的数据来源能够在标准基准测试中实现最先进的结果(Mahajan等,2018;Touvron等,2019;Xie等,2020)。此外,Sun等(2017)研究了CNN性能如何随着数据集大小扩展,Kolesnikov等(2020);Djolonga等(2020)对像ImageNet-21k和JFT-300M这样的大型数据集的CNN迁移学习进行了实证探索。我们也专注于这两个数据集,但是用的是Transformer而不是之前论文使用的ResNet-based模型进行训练。
(图1:模型概述。我们将图像分成固定大小的补丁,线性嵌入每个补丁,添加位置嵌入,并将产生的向量序列馈送到标准Transformer编码器。为了进行分类,我们使用添加额外的可学习“分类令牌”的标准方法,将其添加到序列中。Transformer编码器的插图灵感来自于Vaswani等人(2017年)的研究)
“3方法
在模型设计中,我们尽可能地遵循原始Transformer(Vaswani等人,2017)的设计。这种故意简化的设置的优点在于可以几乎无需修改即可使用可扩展的NLP Transformer架构及其高效的实现。”
3.1 视觉变换器(VIT)
该模型的概述如图1所示。标准Transformer接收一个一维序列的标记嵌入作为输入。为了处理二维图像,我们将图像x 2 RH×W×C重新调整为扁平化的二维补丁序列xp,其中(H;W)是原始图像的分辨率,C是通道数量,(P; P)是每个图像补丁的分辨率,N = HW / P2是补丁数量,也作为Transformer的有效输入序列长度。Transformer在所有层中使用恒定的潜在矢量大小D,因此我们将补丁展平并使用可训练的线性投影映射到D维(公式1)。我们将该投影的输出称为补丁嵌入。类似于BERT的[class] token,我们在嵌入补丁序列之前添加一个可学习的嵌入(z0 0 = xclass),其在Transformer编码器输出(z0 L)处的状态作为图像表示y(公式4)。在预训练和微调期间,分类头部附加到z0 L。分类头由具有一个隐藏层的MLP实现,在微调时间内由单个线性层实现。位置嵌入被添加到补丁嵌入中以保留位置信息。我们使用标准的可学习的一维位置嵌入,因为我们没有观察到使用更先进的2D感知位置嵌入的显着性能提高(附录D.4)。得到的嵌入向量序列作为编码器的输入。
Transformer(encoder)包括多头自注意力(MSA,见附录A)和MLP块(Eq.2,3)的交替层。在每个块之前应用Layernorm(LN),在每个块之后使用残差连接(Wang等人,2019;Baevski和Auli,2019)。
MLP 包含两个层,采用 GELU 非线性函数。z0 =[xclass;x1 pE;x2 pE;···;xN p E]+Epos;E 2 R(P 2·C)×D;Epos 2 R(N+1)×D (1)z0‘=MSA(LN(z‘−1))+z‘−1;‘=1 :::L (2)z‘=MLP(LN(z0‘))+z0‘;‘=1 :::L (3)y =LN(z0 L)(4)归纳偏置。我们注意到,相比于 CNNs,Vision Transformer 有更少的图像特定归纳偏置。在 CNNs 中,局部性、二维邻域结构和平移等价性被整个模型的每一层中固定。在 ViT 中,只有 MLP 层是局部的和平移等变的,而自注意力层是全局的。二维邻域结构的使用非常节约:在模型开始时,它将图像切成补丁;在微调时间,它用于调整分辨率不同的图像的位置嵌入。除此之外,初始时的位置嵌入不含有有关补丁的 2D 位置的信息,所有补丁之间的空间关系都需从头开始学习。混合架构。与原始图像补丁不同,输入序列可以由 CNN (LeCun 等,1989) 的特征图形成。在这个混合模型中,将补丁嵌入投影 E (方程 1) 应用于从 CNN 特征图中提取的补丁上。作为一种特殊情况,补丁可以有 1x1 的空间大小,这意味着输入序列仅通过展平特征图的空间维度并投影到变压器维度来获得。分类输入嵌入和位置嵌入与上述描述相同。
3.2 微调和更高分辨率
通常,我们会在大型数据集上预训练 ViT 模型并微调到(较小的)下游任务。为此,我们会移除预训练的预测头,并添加一个零初始化的 D×K 前馈层,其中 K 是下游类别的数量。在更高分辨率下微调模型往往是有益的(Touvron et al.,2019; Kolesnikov et al. ,2020)。当输入更高分辨率的图像时,我们保持相同的补丁大小,这将导致更大的有效序列长度。VisionTransformer 可以处理任意序列长度(受内存约束限制),但是预训练的位置嵌入可能不再有意义。因此,我们会根据原始图像中位置进行预训练位置嵌入的二维插值处理。需要注意的是,这个分辨率调整和补丁提取是 VisionTransformer 中手动注入 2D 结构归纳偏差的唯一点。
4个实验。
我们评估ResNet、Vision Transformer (ViT)和混合模型的表示学习能力。为了了解每个模型的数据需求,我们在不同大小的数据集上进行预训练,并评估许多基准任务。考虑到预训练模型的计算成本,ViT表现非常优异,在较低的预训练成本下达到了大多数识别基准的最新水平。最后,我们进行了一个小的自监督实验,并展示自监督的ViT在未来有很大的发展前景。
4.1 设置数据集。
为了探索模型的可扩展性,我们使用了具有1k类和1.3M图像的ILSVRC-2012 ImageNet数据集(我们在接下来称其为ImageNet),它的超集ImageNet-21k具有21k类和14M图像(Deng等,2009),以及具有18k类和303M高分辨率图像的JFT(Sun等,2017)。 我们按照Kolesnikov等人(2020)的方法对预训练数据集进行去重,针对下游任务的测试集。我们将在这些数据集上训练的模型转移到几个基准任务:ImageNet(原始验证标签和清理后的ReaL标签(Beyer等人,2020)),CIFAR-10/100(Krizhevsky,2009),Oxford-IIIT Pets(Parkhi等人,2012)和Oxford Flowers-102(Nilsback&Zisserman,2008)。 对于这些数据集,预处理按照Kolesnikov等人(2020)进行。
我们还在19个任务的VTAB分类套件(Zhai等人,2019b)上进行评估。VTAB评估低数据传递到各种任务中,每个任务使用1,000个训练示例。任务分为三组:自然任务(如上述任务,宠物,CIFAR等),专业任务(医学和卫星图像),结构化任务(需要几何理解,如定位)。模型变体。我们基于BERT(Devlin等人,2019)中使用的配置来设置ViT配置,如表格1所示。 “基本”和“大型”模型直接采用自BERT,并添加较大的“巨大”模型。接下来,我们使用简短的符号来表示模型大小和输入补丁大小:例如,ViT-L / 16表示具有16×16输入补丁大小的“大型”变体。请注意,变换器的序列长度与补丁大小的平方成反比,因此具有较小补丁大小的模型在计算上更昂贵。对于基线CNN,我们使用ResNet(He等人,2016),但将批量归一化层(Ioffe&Szegedy,2015)替换为组归一化(Wu&He,2018),并使用标准化卷积(Qiao等人,2019)。这些修改改进了传输(Kolesnikov等人,2020),我们将修改后的模型称为“ResNet(BiT)”。对于混合型,我们将中间特征映射馈送到具有一个“像素”补丁大小的ViT中。为了尝试不同的序列长度,我们(i)采用常规ResNet50的第4阶段的输出或(ii)移除第4阶段,在第3阶段中放置相同数量的层(保持总层数),并采用此扩展的第3阶段的输出。选项(ii)导致4倍的序列长度和更昂贵的ViT模型。
训练和微调。
我们使用Adam(Kingma&Ba,2015)训练所有模型,包括ResNets,使用β1 = 0.9,β2 = 0.999,批处理大小为4096,并采用0.1的高权重衰减,我们发现对于所有模型的转移很有用(附录D.1显示,与常见做法相反,在我们的设置中,Adam对于ResNets要略好于SGD)。我们使用线性学习率热身和衰减,请参阅附录B.1的详细信息。对于微调,我们使用带动量的SGD,批处理大小为512,适用于所有模型,请参阅附录B.1.1。对于表2中的ImageNet结果,我们以更高的分辨率进行微调:ViT-L/16为512,ViT-H/14为518,并且还使用Polyak&Juditsky(1992)平均值,因数为0.9999(Ramachandran等人,2019; Wang等人,2020b)。
指标。
我们通过少量样本或微调准确性报告下游数据集的结果。微调准确性捕捉每个模型在相应数据集上微调后的性能。少量样本准确性是通过解决一个正则化的最小二乘回归问题来获得的,该问题将训练图像子集的(冻结)表示映射到f−1;1gK目标向量。这种公式使我们能够以闭合形式恢复精确解。尽管我们主要关注微调性能,但有时我们使用线性少数派准确性进行快速的即时评估,其中微调将过于昂贵。
总结
5 结论
我们探讨了Transformer直接应用于图像识别的方法。与计算机视觉中使用自注意力的先前工作不同的是,除了初始的图块提取步骤外,我们没有将图像特定的归纳偏差引入架构中。相反,我们将图像解释为一个图块序列,并将其通过标准的Transformer编码器(与NLP中使用的相同)进行处理。当与大型数据集的预训练相结合时,这种简单但可扩展的策略表现出惊人的效果。因此,Vision Transformer在许多图像分类数据集上达到或超过了现有技术水平,同时预训练成本相对较低。尽管这些初步结果令人鼓舞,但仍面临许多挑战。其中之一是将ViT应用于其他计算机视觉任务,如检测和分割。我们的结果与Carion等人(2020)的结果一起表明了这种方法的潜力。另一个挑战是继续探索自监督预训练方法。我们的初步实验显示出自监督预训练的改进,但自监督与大规模监督预训练之间仍存在巨大差距。最后,进一步扩展ViT可能会导致性能提高。