尽管Tansformer结构已经成为自然语言处理的事实标准,但是在计算机视觉上的应用还是非常有限。在视觉领域,注意力机制要么和卷积神经网络共用,要么在保持原有结构不变的情况下替换局部的卷积运算。我们证明对CNN的依赖不是必须的,纯Transformer可以直接应用在一系列小块图片上并在分类任务上取得很好的效果。当在大量数据预训练的模型转移到中小型图片识别测试集(ImageNet, CIFAR-100, VTAB, etc)上, 相对最优秀的卷积神经网络,视觉Transformer (ViT)可以取得非常优秀的结果并且大量较少训练的计算资源。
基于自注意力的架构,尤其是Transformer,已经成为自然语言处理(NLP)中选择的模型。主要的方法是在大型文本语料库上进行预训练,然后在较小的任务特定数据集上进行微调。由于Transformer 的计算效率和可扩展性,训练具有超过100B参数的空前规模的模型成为可能。随着模型和数据集的增长,仍然没有表现出饱和的迹象。
然而,在计算机视觉中,卷积架构仍然占主导地位。受到NLP成功的启发,许多作品尝试将CNN类架构与自注意力结合,一些完全取代卷积全部使用自注意力。后一种模型虽然理论上是有效的,缺点:但由于使用了专门的注意力模式,在现代硬件加速器上还没有得到有效的扩展。因此,在大规模图像识别中,经典的ResNetlike架构仍然是最先进的技术。
受NLP中Transformer缩放成功的启发,我们尝试将标准Transformer直接应用于图像,并尽可能减少修改。为此,我们将图像分割为多个小块,并将这些小块的线性嵌入序列作为Transformer的输入。图像补丁的处理方式与NLP应用程序中的标记(单词)相同。我们以监督的方式训练模型进行图像分类。
当在中等规模的数据集(如ImageNet)上进行训练时,如果没有很强的正则化,这些模型的精度将比同等规模的ResNet低几个百分点。这一看似令人沮丧的结果是可以预料的:Transformer 缺乏CNN固有的一些感应偏差,如平移等变和局部性,因此在数据量不足的情况下,不能很好地进行泛化。
然而,如果模型在更大的数据集(14M-300M图像)上训练,图像就会发生变化。我们发现大规模训练战胜了归纳偏置。我们的视觉Transformer (ViT)在足够规模的预训练和转移到具有更少数据点的任务时取得了优异的结果。当在公共的ImageNet-21k数据集或内部的JFT-300M数据集上进行预训练时,ViT在多个图像识别基准上接近或超过了最先进的水平。其中,最佳模型在ImageNet上达到88.55%,在ImageNet- real上达到90.72%,在CIFAR-100上达到94.55%,在19个任务的VTAB套件上达到77.63%。
Vaswani等人(2017)提出了用于机器翻译的Transformer ,并已成为许多NLP任务中的最先进方法。大型的基于transformer的模型通常在大型语料库上进行预训练,然后针对手头的任务进行微调:BERT使用去噪的自我监督训练前任务,而GPT工作则使用语言建模作为其训练前任务。
对图像进行单纯的自注意力需要每个像素注意其他像素。由于像素数量为二次元,因此不能按实际输入大小缩放。因此,为了将Transformer 应用于图像处理,过去已经尝试了几种近似方法。Parmar等人(2018)只对每个查询像素的局部邻域应用了自注意力,而不是全局。这种局部多头点积自注意力块可以完全替代卷积。在另一项工作中,稀疏Transformer (采用了可扩展的全局自注意力近似,以便适用于图像。衡量注意力的另一种方法是在不同大小的块上应用注意力,在极端情况下只沿着单个轴。这些专门的注意力架构在计算机视觉任务中展示了很好的结果,但需要复杂的工程在硬件加速器上有效地实现。
与我们最相关的是Cordonnier (2020)的模型,该模型从输入图像中提取大小为2 × 2的patch,并在上面应用完全自注意力。这个模型与ViT非常相似,但我们的工作进一步证明,大规模的预训练可以让vanilla Transformer 与最先进的CNN竞争(甚至更好)。此外,Cordonnier 等人(2020)使用了2 × 2像素的小尺寸patch,这使得该模型仅适用于小分辨率的图像,而我们也适用于中等分辨率的图像。
人们对将卷积神经网络(CNN)与自注意力形式相结合也有很多兴趣,例如通过增强图像分类的特征映射或通过使用自注意力进一步处理CNN的输出,例如用于目标检测,视频处理,图像分类,无监督对象发现,或统一的文本视觉任务。
另一个近期的相关模型是图像GPT (iGPT),它在降低图像分辨率和颜色空间后,将Transformer 应用于图像像素。该模型以一种无监督的方式作为生成模型进行训练,然后可以对产生的表示进行微调或线性探测,以提高分类性能,在ImageNet上达到72%的最大精度。
我们的工作增加了越来越多的论文集,这些论文在比标准ImageNet数据集更大的范围内探索图像识别。使用额外的数据源可以在标准基准上取得最先进的结果。此外,Sun等人(2017)研究了CNN的性能如何随数据集的大小而变化,Kolesnikov等人(2020);Djolonga等人(2020)对CNN从ImageNet-21k和JFT-300M等大规模数据集转移学习进行了经验性探索。我们也关注这两个数据集,但训练Transformers而不是之前工作中使用的基于ResNet的模型。
在模型设计中,我们尽可能地遵循最初的Transformer (2017)。这种故意简化的设置的一个优点是,可伸缩的NLP Transformer架构——及其高效实现——几乎可以开箱即用。
图1描述了该模型的概述。标准的Transformer接收一个1D符号嵌入序列作为输入。为了处理2D图像,我们将图像x∈RH×W ×C重构为平坦的2D patch xp∈RN ×(p2·C)序列,其中(H, W)为原始图像的分辨率,C为通道数,(P, P)为每个图像patch的分辨率,N = HW/ p2为得到的patch数,这也是Transformer的有效输入序列长度。Transformer在其所有层中使用恒定的潜在向量大小D,因此我们将补丁平铺并使用可训练的线性投影(公式1)映射到D维。我们将这个投影的输出称为补丁嵌入。
图1:模型概览。我们将图像分割成固定大小的小块,线性嵌入每个小块,添加位置嵌入,并将得到的向量序列输入标准的Transformer编码器。为了进行分类,我们使用标准的方法,在序列中添加一个额外的可学习的“分类标记”。Transformer 编码器的插图的灵感来自Vaswani等人(2017)。
类似于BERT的[类]标记,我们在嵌入补丁序列(z0 0 = xclass)前加上一个可学习的嵌入,其在Transformer编码器(z0L)输出处的状态作为图像表示y (式子4)。在预训练和微调期间,分类头都被附加到z0L上。该分类头在训练前由一个隐含层实现,在微调时由一个线性层实现。
在补丁嵌入中加入位置嵌入以保留位置信息。我们使用标准的可学习的一维位置嵌入,因为我们没有观察到使用更先进的2d感知位置嵌入的显著性能提高(附录D.4)。生成的嵌入向量序列作为编码器的输入。
Transformer编码器(Vaswani等人,2017)由多头自注意力(MSA,见附录A)和MLP块的交替层组成(公式2,3)。在每个区块之前应用Layernorm(LN),在每个区块之后应用剩余连接。MLP包含两个具有GELU非线性的层。
归纳偏置。我们注意到,与CNN相比,Vision Transformer具有更少的图像特定归纳偏置。在CNN中,局部性、二维邻域结构和平移等方差性被融入整个模型的每一层。在VIT中,只有MLP层是局部的和翻译等变的,而自注意力层是全局的。二维邻域结构的使用非常少:在模型开始时,通过将图像分割成块,并在微调时调整不同分辨率图像的位置嵌入(如下所述)。除此之外,初始化时的位置嵌入不携带关于面片的2D位置的信息,并且必须从头开始学习面片之间的所有空间关系。
混合架构。作为原始图像补丁的替代方案,输入序列可以由CNN的特征地图形成(1989)。在该混合模型中,将patch embedding投影E (Eq. 1)应用于从CNN特征图中提取的patch。作为一种特殊情况,patch的空间大小可以是1x1,这意味着只需将feature map的空间维度进行扁平化,投影到Transformer维度,就可以得到输入序列。分类输入嵌入和位置嵌入是按照上面的描述添加的。
通常,我们在大型数据集上预训练ViT,在(较小的)下游任务微调。为此,我们去掉预先训练的预测头,附加一个零初始化的D × K前馈层,其中K为下游类的数量。与训练前相比,在更高的分辨率下进行微调通常是有益的。当输入更高分辨率的图像时,我们保持patch的大小不变,从而得到更大的有效序列长度。Vision Transformer可以处理任意长度的序列(直到内存限制),然而,预先训练的位置嵌入可能不再有意义。因此,我们根据其在原始图像中的位置,对预训练的位置嵌入进行2D插值。请注意,这种分辨率调整和补丁提取是关于图像2D结构的归纳偏置被手动注入Vision Transformer的唯一点。
我们评估了ResNet、Vision Transformer(VIT)和混合模型的表征学习能力。为了了解每个模型的数据需求,我们对不同大小的数据集进行了预训练,并评估了许多基准任务。当考虑到预训练模型的计算成本时,VIT表现得非常好,以较低的预训练成本在大多数识别基准上达到了最先进的水平。最后,我们使用自我监督进行了一个小实验,并展示了自我监督的VIT对未来的前景。
数据集。为了探索模型的可扩展性,我们使用了ILSVRC-2012 ImageNet数据集,其中有1k个类和1.3M张图片(以下我们将其称为ImageNet),它的超级集合ImageNet-21k有21k个类和14M张图片(2009年),JFT (2017年)有18k个类和303M张高分辨率图片。在Kolesnikov等人(2020)之后,我们对预训练数据集w.r.t.下游任务的测试集进行重复删除。我们将在这些数据集上训练的模型转移到几个基准任务:原始验证标签上的ImageNet和清理后的ReaL标签(2020年),cifer -10/100 (2009年),Oxford- iiit Pets (2012年),以及Oxford Flowers-102 (2008年)。对于这些数据集,预处理遵循Kolesnikov等人(2020年)。
表1:Vision Transformer模型变量的详细信息
我们还评估了19个任务的VTAB分类套件(2019b)。VTAB评估不同任务的低数据传输,每个任务使用1 000个训练示例。任务分为三组:自然任务(如上述)、宠物任务(Pets)、CIFAR等。专业的-医疗和卫星图像,以及结构化的-需要几何理解的任务,如定位。
模型变体。我们基于BERT (2019年)使用的ViT配置,如表1所示。我们直接采用BERT中的“Base”和“Large”模型,并加入更大的“Huge”模型。下面我们用简单的符号来表示模型的大小和输入补丁的大小:例如,ViT-L /16表示输入补丁大小为16 × 16的“Large”变体。请注意,Transformer的序列长度与补丁大小的平方成反比,因此补丁大小较小的模型在计算上更昂贵。
对于基线CNN,我们使用ResNet,但将批归一化层替换为组归一化,并使用标准化卷积。这些改进改进了传输,我们将改进的模型命名为“ResNet (BiT)”。对于混合特征,我们将中间特征映射以一个“像素”的patch大小输入到ViT中。为了实验不同的序列长度,我们要么(i)取常规ResNet50的阶段4的输出,要么(ii)删除阶段4,在阶段3放置相同的层数(保持总层数),并取这个扩展阶段3的输出。选项(ii)导致4倍长的序列长度,和一个更昂贵的ViT模型。
训练和微调。我们使用Adam训练所有模型,包括ResNets, β1 = 0.9, β2 = 0.999,批量大小为4096,并应用0.1的高权重衰减,我们发现这对所有模型的转移是有用的(附录D.1显示,与常见做法相比,在我们的设置中,Adam对ResNets的工作比SGD略好)。我们使用线性学习率预热和衰减,详见附录B.1。对于所有型号,我们使用带动量的SGD进行微调,批大小为512,见附录B.1.1。对于表2中的ImageNet结果,我们微调了更高的分辨率:vitl /16的分辨率为512,vith /14的分辨率为518,还使用了Polyak & Juditsky(1992)平均系数为0.9999。
指标。我们通过少镜头或微调精度报告下游数据集的结果。微调精确性可以在各自的数据集上微调每个模型后捕获其性能。通过解决正则化的最小二乘回归问题,将训练图像子集的(冻结)表示映射到{−1,1}K目标向量,从而获得少量镜头精度。这个公式使我们能够以封闭的形式得到精确的解。虽然我们主要关注微调性能,但我们有时会使用线性的少镜头精度来快速实时评估,在这种情况下,微调的成本太高。
我们首先将我们最大的型号—— ViT-H/14和ViT-L/16与文献中最先进的CNN进行比较。第一个比较点是大转移(BiT),它使用大型ResNets执行有监督的转移学习。第二个是嘈杂的学生,它是一个大型的有效网络,使用ImageNet和JFT300M上的半监督学习进行训练,去除标签。目前,嘈杂的学生是ImageNet和BiT-L在这里报告的其他数据集上的艺术状态。所有模型在TPUv3硬件上训练,我们报告每个模型预训练的TPUv3核天数,即用于训练的TPUv3核数(每个芯片2个)乘以以天为单位的训练时间。
表2显示了结果。在JFT-300M上预训练的较小的ViT-L/16模型在所有任务上都优于BiT-L(在同一数据集上预训练),同时需要大量的计算资源来训练。较大的模型,ViT-H/14,进一步提高了性能,特别是在更具挑战性的数据集——ImageNet、CIFAR-100和VTAB套件。有趣的是,这个模型的预训练花费的计算量仍然大大低于之前的技术水平。然而,我们注意到,预训练的效率不仅会受到架构选择的影响,而且还会受到其他参数的影响,如训练计划、优化器、权重衰减等。我们在第4.4节中对不同架构的性能与计算量进行了对照研究。最后,在公共的ImageNet-21k数据集上预训练的ViT-L/16模型在大多数数据集上也表现良好,同时预训练所需的资源较少:它可以在大约30天内使用8个内核的标准云TPUv3进行训练。
表2:与目前流行的图像分类基准的比较。我们报告了精度的平均值和标准偏差,平均在三次微调运行。在JFT-300M数据集上预训练的Vision Transformer模型在所有数据集上都优于基于resnet的基线,同时大大减少了预训练所需的计算资源。在较小的公共ImageNet-21k数据集上预先训练的ViT表现也很好。∗Touvron等人报告的结果略有改善88.5%(2020年)。
图2:自然、专门化和结构化任务组中VTAB性能的分解。
图2将VTAB任务分解为各自的组,并在此基准上与之前的SOTA方法进行比较:BiT、VIVI -在ImageNet和Youtube上共同训练的ResNet (Tschannen等人,2020年),以及S4L -在ImageNet上监督加半监督学习(Zhai等人,2019a)。vith /14在自然和结构化任务方面优于BiT-R152x4和其他方法。在专门化方面,前两款车型的性能相似。
Vision Transformer在大型JFT-300M数据集上进行预训练时表现良好。由于对视觉的诱导偏差比ResNets更少,那么数据集的大小有多重要呢?我们进行了两个系列的实验。
首先,我们在越来越大的数据集上对ViT模型进行预训练。ImageNet、ImageNet-21k和JFT300M。为了提高在小数据集上的性能,我们优化了三个基本的正则化参数——权重衰减、剔除和标签平滑。图3显示了对ImageNet进行微调后的结果(其他数据集的结果见表5)。当在最小的数据集ImageNet上进行预训练时,尽管有(适度的)正则化,ViT-Large模型与ViT-Base模型相比表现不佳。在对ImageNet-21k进行预训练时,它们的表现相似。只有在JFT-300M中,我们才看到大型模型的全部优势。图3还显示了不同规模的BiT模型所跨越的性能区域。BiT CNN在ImageNet上的表现优于ViT,但在更大的数据集上,ViT超越了。
其次,我们在9M、30M和90M的随机子集以及完整的JFT300M数据集上训练我们的模型。我们不对较小的子集进行额外的正则化,并对所有设置使用相同的超参数。这样,我们评估的是模型的内在性质,而不是正则化的影响。然而,我们确实使用了早期停止,并报告了在训练中获得的最佳验证准确性。为了节省计算时间,我们报告了少镜头线性精度,而不是完整的微调精度。图4包含结果。在较小的数据集上,Vision transformer的过拟合比ResNets多,计算成本相当。例如,ViT-B /32比ResNet50略快;它在9M子集上表现得更差,但在90M+子集上表现得更好。ResNet152x2和ViT-L/16也是如此。这个结果强化了卷积归纳偏置对于较小的数据集有用的直觉,但对于较大的数据集,直接从数据中学习相关模式就足够了,甚至是有益的。
总的来说,ImageNet上的少拍摄结果(图4)以及VTAB上的低数据结果(表2)似乎很适合低数据传输。进一步分析ViT的少射性能是今后研究的一个重要方向。
图3:传输到ImageNet当在小数据集上进行预训练时,大型ViT模型的表现比BiT ResNets(阴影区域)更差,但当在更大的数据集上进行预训练时,它们会闪闪发光。同样,随着数据集的增长,较大的ViT变体超过较小的ViT变体。
图4:与训练前的大小相比,ImageNet上的线性少镜头评估。ResNets在较小的预训练数据集上表现更好,但与ViT相比,它在较大的预训练数据集上表现更好。ViT-b是所有隐藏维度减半的ViT-B。
图5:不同架构的性能对比:Vision transformer, ResNets和混合架构。在相同的计算预算下,Vision transformer的性能通常优于ResNets。对于小型模型来说,混合动力Transformer 优于纯Transformer ,但对于大型模型来说,这种差距消失了。
通过评估JFT-300M的传输性能,我们对不同的模型进行了控制缩放研究。在这种设置下,数据大小不会成为模型性能的瓶颈,我们对每个模型的性能和训练前的成本进行评估。模型集包括:ResNets、R50x1、R50x2、R101x1、R152x1、R152x2 7个预训练7个epoch,加上R152x2、R200x3 14个epoch预训练;6 Vision transformer, ViT-B/32, B/16, L/32, L/16,预训练7个epoch,加上L/16和H/14预训练14个epoch;5个混合模式,R50+ ViT-B/32, B/16, L/32, L/16预训练7个epoch,加上R50+ ViT-L/16预训练14个epoch(对于混合模式,模型名称末尾的数字不代表补丁大小,而是ResNet骨干中的总下采样比)。
图5包含了传输性能与总训练前计算的对比(参见附录D.5了解计算成本的详细信息)。各型号的详细结果见附录表6。可以观察到一些模式。首先,Vision transformer在性能/计算权衡上主宰ResNets。ViT使用大约2 - 4倍的计算量来获得相同的性能(平均超过5个数据集)。其次,在较小的计算预算下,混合动力的性能略优于ViT,但对于较大的模型,这种差异消失了。这个结果有些令人惊讶,因为人们可能会期望卷积局部特征处理在任何大小上都能辅助ViT。第三,Vision transformer似乎没有在尝试的范围内饱和,这激励了未来的扩展努力。
为了开始理解Vision Transformer如何处理图像数据,我们分析它的内部表示。Vision Transformer的第一层线性地将平坦的补丁投影到一个低维空间(Eq. 1)。图7(左)显示了学习到的嵌入过滤器的顶部主要组件。这些组件类似于合理的基函数,以低维表示每个补丁内的精细结构。
投影之后,将学习到的位置嵌入加入到补丁表示中。从图7(中)可以看出,模型学习了在位置嵌入相似度上对图像内部的距离进行编码,即越近的patch,其位置嵌入的相似度越高。此外,还会出现行-列结构;同一行/列中的补丁具有相似的嵌入。最后,对于较大的网格,正弦结构有时是明显的(附录D)。位置嵌入学会表示2D图像拓扑解释了为什么手工制作的2D感知嵌入变量不能产生改进(附录D.4)。
自注意力允许ViT在整个图像中集成信息,即使是在最低层中。我们研究了网络在多大程度上利用了这种能力。具体来说,我们根据注意力权重计算信息集成在图像空间中的平均距离(图7,右)。这种“注意距离”类似于CNN感受野大小。我们发现,一些头部关注的大部分图像已经在最底层,这表明该模型确实使用了全局集成信息的能力。其他注意力头在低层次的注意力距离一直很小。在Transformer之前应用ResNet的混合模型中,这种高度局部化的注意不太明显(图7,右),这表明它可能作为早期卷积层在CNN中发挥类似的功能。注意距离随着网络深度的增加而增加。在全局上,我们发现该模型关注与分类在语义上相关的图像区域(图6)。
图6:从输出标记到输入空间的典型注意示例。详见附录D.7。
图7:左:VIT-L/32的RGB值的初始线性嵌入的过滤器。中心:VIT-L/32的位置嵌入相似度。平铺显示具有所指示的行和列的面片的位置嵌入与所有其他面片的位置嵌入之间的余弦相似性。右图:按头数和网络深度计算的出席区域大小。每个点显示了一层中16个头中的一个在图像上的平均注意距离。详情见附录D.7。
Transformer 在NLP任务上表现出令人印象深刻的性能。然而,它们的大部分成功不仅源于其出色的可扩展性,还源于大规模的自监督预训练。我们还对自监督的屏蔽补丁预测进行了初步探索,模仿BERT中使用的屏蔽语言建模任务。通过自我监督的预训练,我们较小的ViT-B/16模型在ImageNet上取得了79.9%的准确率,与从头开始训练相比,有2%的明显改善,但仍比监督的预训练落后4%。附录B.1.2包含进一步的细节。我们将对比性预训练的探索留给未来的工作。
我们探索了Transformer 在图像识别中的直接应用。与之前在计算机视觉中使用自注意力的作品不同,我们没有在架构中引入特定于图像的归纳偏置,除了初始的补丁提取步骤。相反,我们将图像解释为一组补丁,并使用NLP中使用的标准Transformer编码器进行处理。当与大型数据集的预训练相结合时,这种简单但可扩展的策略出奇地有效。因此,Vision Transformer在许多图像分类数据集上匹配或超越了最先进的技术,同时相对于预训练来说成本较低。
虽然这些初步结果令人鼓舞,但仍存在许多挑战。一是将ViT应用于其他计算机视觉任务,如检测和分割。我们的结果,加上卡里恩等人(2020)的研究结果,表明了这种方法的前景。另一个挑战是继续探索自我监督的训练前方法。我们最初的实验表明,自我监督训练前的效果有所改善,但与大规模监督训练前相比,自我监督训练前的效果还存在较大差距。最后,ViT的进一步扩展可能会提高性能。
尽管Tansformer结构已经成为自然语言处理的事实标准,但是在计算机视觉上的应用还是非常有限。在视觉领域,卷积架构仍然占主导地位,①注意力机制和卷积神经网络结合,②保持原有结构不变的情况下替换局部的卷积运算,全部使用自注意力。(都或多或少依赖CNN,我们想使用纯Transformer用于分类任务,不依赖卷积。)
完全取代卷积而全部使用自注意力在理论上是有效的,但由于使用了专门的注意力模式,在现代硬件加速器上还没有得到有效的扩展。因此,在大规模图像识别中,效果还是不如ResNetlike。
受NLP中Transformer缩放成功的启发,我们尝试将Transformer直接应用于图像,并尽可能减少修改。
对图像进行单纯的自注意力需要每个像素注意其他像素。由于像素数量为二次元,因此不能按实际输入大小缩放。
前人将Transformer 用于图像处理做过的几种工作:
1. Parmar等人只对每个查询像素的局部邻域(而是不是全局)应用了自注意力。这种局部多头点积自注意力块可以完全替代卷积。
2. 稀疏Transformer (采用了可扩展的全局自注意力近似,以便适用于图像。衡量注意力的另一种方法是在不同大小的块上应用注意力,在极端情况下只沿着单个轴。
它俩缺点:这些专门的注意力架构在计算机视觉任务中展示了很好的结果,但需要复杂的工程在硬件加速器上有效地实现。
3. Cordonnier 的模型(与我们的最像)从输入图像中提取大小为2 × 2的patch(这使得该模型仅适用于小分辨率的图像)并在上面应用完全自注意力。
卷积神经网络(CNN)与自注意力形式相结合:
4. 图像GPT (iGPT),它在降低图像分辨率和颜色空间后,将Transformer 应用于图像像素。该模型以一种无监督的方式作为生成模型进行训练,然后可以对产生的表示进行微调或线性探测,以提高分类性能。
方法:
我们将图像分割为多个小块,并将这些小块的线性嵌入序列作为Transformer的输入。图像补丁的处理方式与NLP应用程序中的标记(单词)相同。我们以监督的方式训练模型进行图像分类。
框架:
模型:将图像分割成固定大小的小块,线性嵌入每个小块,添加位置嵌入(预处理),并将得到的向量序列输入标准的Transformer编码器(特征提取)。为了进行分类,我们使用标准的方法,在序列中添加一个额外的可学习的“分类标记”(分类)
1. Transformer接收一个1维符号嵌入序列作为输入。为了处理2维图像,我们将图像x∈RH×W ×C重构为平坦的2D patch xp∈RN ×(p2·C)序列,其中(H, W)为原始图像的分辨率,C为通道数,(P, P)为每个图像patch的分辨率,N = HW/ p2为得到的patch数,这也是Transformer的有效输入序列长度。
Transformer在其所有层中使用恒定的潜在向量大小D,因此我们将补丁平铺并使用可训练的线性投影(公式1)映射到D维。我们将这个投影的输出称为patch embeddings
2.可学习嵌入:类似于BERT的[类]标记,我们在嵌入补丁序列前加上一个可学习的嵌入。在预训练和微调期间,分类头都被附加到z0L上。该分类头在训练前由一个隐含层实现,在微调时由一个线性层实现。
3.位置嵌入:在补丁嵌入中加入位置嵌入以保留位置信息。我们使用标准的可学习的一维位置嵌入(我们发现2维并没有太多提高),生成的嵌入向量序列作为编码器的输入。
4.Transformer编码器由多头自注意力和MLP块的交替层组成(公式2,3)。在每个区块之前应用Layernorm(LN),在每个区块之后应用剩余连接。MLP包含两个具有GELU非线性的层。
提取分类结果
小型数据集上效果可能不如其他模型,但在大型数据集上差距就消失了