AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE——ViT全文翻译

一文读懂ViTViT 快速理解 Vision in Transformer



全文翻译- Vision in Transformer-

2022年04月10日15:53:19


相关说明


基本信息介绍

  • 题目:AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

  • 期刊:Published as a conference paper at ICLR 2021

  • 博客推荐:ViT 快速理解 Vision Transformer

    • 原文链接
    • 代码实现
    • 过程理解
    • Self-Attention自注意力机制
  • 作者团队
    在这里插入图片描述


ABSTRACT

当Transformer成为NLP任务中的标准结构时,但它在机器视觉的应用中任然存在很多限制。在视觉任务中,注意力机制已经与卷积神经网络结合使用,或者被用作替换卷积中的某些组件来保持其结构完整性。卷积神经网络不是必要的,我们能够将原始的transformer直接应用在图像序列块上,且能够在图像分类任务中很好的work。当在大型数据集上进行预训练时,然后迁移到中小型数据集上进行识别(如,ImageNet、CIFAR-100、VTAB等),ViT能够比最sota的卷积神经网络模型还要达到更好的结果,相比而言还能够用更少的资源去训练。


1 INTRODUCTION

基于自注意力的结构,尤其是Transformers,逐渐成为了NLP所选择的模型。主要方法是基于大型文本资料库进行预训练,然后在更小的特定数据集上进行微调。感谢Transformer计算的有效性及可扩展性,它让训练前所未有规模的模型成为可能,模型超过100B的参数。随着模型和数据的不断增长和更新,性能还没有呈现出任何饱和状况。

机器视觉中,尽管卷积的结构保持着主要地位。受到NLP巨大成功的启发,很多工作都在努力尝试结合卷积和自注意力,一些工作完全去掉了卷积层。对于后面这种模型,它理论上是有效的;由于使用了特殊的注意力模式,它未能在现代硬件加速器上进行有效的扩展。因此,在大规模的图像分类中,基于ResNet的骨架网络任然能够取得sota。

受到Transformer在NLP领域大规模成功的启发,我们实验时直接将一个标准的Transformer应用到图像上,并伴随着尽可能少的改动。我们把图像划分成patch块并让它们经过序列映射linear embeddings,作为像Transformer一样的输入。图像块patch的处理方式与NLP中的token词向量是相同的。我们在图像分类中用有监督的方式训练模型。

当在中等规模的数据集如ImageNet上训练没有很好的regularization,这些模型的结果比同等规模的ResNet准确率要低几个百分点。这令人沮丧的结果似乎是可以预期的:Tranformers与CNN相比缺乏固定的inductive biases感应偏差,就像平移不变性、尺度不变性等(translation equivariance and locality),因此在数据量不足的训练集上训练没有产生一个很好的预期。

如果在足够的数据集上进行训练(14M-300M images),那么情况就会发生改变。我们发现在大规模数据集进行训练能够比卷积的归纳偏置更好。我们的ViT在足够规模数据进行预训练后再迁移到更小规模的任务中能够达到更好的结果。当在共有数据集ImageNet-21K或者JFT-300M上进行预训练后,ViT能够打败其它基于各种的识别骨干网络。特别的,在ImageNet上达到88.66%准确率、在ImageNet-ReaL上为90.72%、CIFAR-100为94.55%,在VTAB的19种任务中达到77.63%。

(Fine-tuning code and pre-trained models are available at https://github.com/google-research/vision_transformer)


2 RELATED WORK

Transformers由Vaswani等人在机器翻译中提出,在许多NLP任务中都达到了sota。大型基于Transformer的模型,通常都是基于大型语义库预训练,然后微调去处理手头的工作:BERT(2019)使用去噪的自监督预训练任务,同时GPT工作线将语言建模作为其训练前的任务。

单纯的应用自注意力到图像需要每一个像素点都关注其它像素点。由于像素平方级的计算开销,无法扩展到实际的图像输入。因此,为应用Transformer到图像处理中,过去类似的工作在被展开。Parmar等人应用自注意力时仅仅是基于局部像素而不是全局。这样的局部多头自注意力块,能够完全取代卷积(2019-2020)。在不同的工作,Sparse Transformer近似可伸缩的全局注意力为了应用到图像中。一种可替代的方式是应用缩放的注意力针对其不同大小的块,在极端案例下仅沿单个维度进行操作。许多不同的特定注意力结构都很好的证明了Transformer在机器视觉任务中是很有前景,但是需要复杂的工程量以及高效的可加速计算的硬件。

与我们的模型最接近的是Cordonnier的工作(2020),从图像输入中提取2×2大小的patch并在顶部完全应用自注意力。这个模型和ViT非常相似,但我们的工作从更加长远的角度证明了在大规模预训练后Transformer能够取得甚至比sota-CNN模型更好的结果。此外,Cordonnier等人,使用一个2×2像素的小patch仅仅把模型应用在小分辨率的图像上,同时,我们处理了中等分辨率的图像。

也有很多人对结合CNN的自注意力网络感兴趣,如,增强特征映射图用于图像分类,或者利用自注意力处理CNN的输出,如目标检测,视频处理,图像分类,无监督的对象发现,或者统一的文本视觉任务。

另一个最近相关的模型是图像GPT(2020a),应用Transformer到减小分辨率之后的图像及颜色空间。这个模型是一种无监督的生成模型,结果表明模型能够被预训练微调或线性探测用于提高分类性能。在ImageNet实现了72%的准确率。

我们的工作增加了比标准ImageNet数据集更大范围内探索图像识别论文的数量。Mahajan等人使用额外的数据实现了sota的结果基于标准基准。此外,Sun等人研究了CNN的性能与数据大小的关系,Djolonga等人从大规模数据集ImageNet-21K和JFT-300M对CNN迁移学习进行实证探索。我们更加倾向这两个数据集,训练Transformer替代以前基于ResNet的模型。


3 METHOD

模型的设计我们尽可能遵循原始的Transformer(Vaswani 2017)。这种有意简化设计的一个优点就是,可扩展的NLP Transformer架构及能够及拿及用的高效的实现。


3.1 VISION TRANSFORMER (ViT)

模型的简要概述如图1:

在这里插入图片描述

图1 模型概述
  • 我们把图像划分成固定大小的图像块,对全部进行线性映射,增加位置信息编码,然后把序列的结果向量传入标准的Transformer Encoder。为了分类,我们使用标准的方法往序列中添加一个额外的可学习参数“classification token”。上图右边的Transformer Encoder插图灵感来源于Vaswani(2017)。

(回到原文)标准的Transformer接收的是1-维的token embedding序列。为了处理2-维的图像,我们reshape图像[x ∈ R(H×W×C)]成2-维的patch块[x_p∈ R(N×(P^2×C))],H和W原始图像的分辨率,C是通道数,(P,P)是每个图像块的分辨率, N=HW/P^2是patch块的数量,这也是作为Transformer有效输入的序列长度。Transformer所有层使用的都是固定的向量,大小为D;所以我们将patch块flatten拉平成一维序列然后通过线性映射到D维(如图1)。我们称线性映射层this projection的输出为patch embedding。

与BERT的[class] token相似,我们给序列映射后的编码准备了一个可学习的映射x_class,Transformer encoder的输出用序列的(z_0) 图像表示y(Eq.4)。基于预训练和微调,z_0用于分类头。分类头在预训练时,由一个隐含层的MLP实现,在微调时由简单的线性层来实现。

位置编码被用于增加patch embedding的原始位置信息。我们使用1维的位置信息编码,因为二维的位置信息编码并没有发现有更好的性能(D.4)。生成的序列向量被用于encoder的输入。

Transformer encoder包含交替的多头注意力机制及MLP块(Eq. 2,3)。LN层被用在每个MLP块前面,在每个块之后进行残差连接。

MLP多层感知机包含两层以及GELU非线性激活函数。

在这里插入图片描述

Inductive bias.

归纳偏置,我们注意到Vision Transformer比起CNN针对图像而言有更少的归纳偏置。CNN中,每一层卷积核的局部性、二维领域结构、平移不变性等始终贯穿整个模型。在ViT中,只有MLP层有这些特性,自注意力层都是全局信息。二维的结构很少被用在ViT中:模型最初,把图像剪切成很多图像块,在微调时调整不同图像分辨率的位置信息(如下所述)。位置信息编码在初始化时没有携带任何的2维图像块信息,所有位置信息的空间关系都需要从头开始学习。

Hybrid Architecture.

作为原始图像块的替代,输入的序列可以由卷积获取的特征图来替代。在这个hybrid模型中,patch embedding projection从CNN特征图中进行提取。特别的,特征图的大小可以是特殊的1×1,这意味着可以简单的把卷积的特征图拉平并投影变换到Transformer的维度。如上所示,添加了分类的输入及位置编码。

3.2 FINE-TUNING ADN HIGHER RESOLUTION

典型的,我们在大数据集上预训练ViT模型,在更小的下游任务中进行微调。我们移除了预训练好的预测头,从新加上一个全零初始化的D×K的前馈神经网络,K是下游任务的分类数。与训练前相比,使用更高分辨率的图像进行微调更有益。我们输入更高分辨率的图像,当保持相同大小的patch块时,可以得到更有效的序列长度。ViT尽管能够处理任意的序列长度(往往因为内存的限制),所以会导致这个预训练的位置编码不在有意义。因此,我们根据预训练位置编码在原始图像的位置进行二维的插值。因此,分辨率的调整以及patch块的提取是将二维结构对图像的归纳偏置传入Transformer的唯一的点,


4 EXPERIMENTS

我们评估了表征学习能力的代表网络ResNet,ViT及hybrid模型。为了理解每个模型的数据需求量,我们在不同大小数据集上进行预训练评估。当考虑预训练模型的计算花费时,ViT的表现很有优势,以较低的时间花费达到大多数基准网络的sota水平。最后,我们使用自监督进行小实验,表明自监督的ViT在未来是很有希望的。


4.1 SETUP

Datasets.

为了探索模型的可扩展性,我们使用拥有一千个类和1.3M图像的ILSVRC-2012 ImageNEt数据集(下文中称它为ImageNet),它的父集ImageNet-21k有21k个类和14M图像,以及JFT数据集有18k个类别和303M高分辨率的图像。我们根据Kolesnikov等人的研究结果对预训练前的数据集进行了重复,并对下游任务的数据集进行测试。我们将在这些数据集上训练的模型转移到几个基准任务中去:ImageNet的元素验证标准和清理后的真实标签,CIFAR-10/100,Oxford-IIIP Pets,Oxford Flowers-102。上述的数据集都想Kolesnikov等人的方法做处理。

我们还对19个VTAB分类任务进行评估。VTAB评估不同任务的低维转换,每个任务使用1000张训练样本。任务被分成三组:自然地——包含上述任务、Pets和CIFAR、专业的——医学和卫星图像、结构化的——需要几何理解的任务,如定位。

Model Variants.

我们将基于ViT的配置用于BERT,就像表1总结的那样。Base和Large直接基于BERT,我们还增加了更大的“Huge”模型。我们把模型的大小以及输入patch大小进行如下简记,如,ViT-L/16意味着“Large”变体及输入patch的大小为16×16。我们发现Transformer的序列长度与patch块的大小成反比,当更小的patch块会有更大的计算开销。
在这里插入图片描述

表1:ViT变体模型的细节


我们用RseNet作为CNN的基准,用GN层替代BN层,使用标准的卷积。这些改进是有提升的,我们把它称作“ResNet(BiT)”。hybrids模型,我们把中间的特征图映射成1×1的patch传入ViT。为了验证不同的序列长度,我们要么获取ResNet50第四阶段的输出,要么移除第四阶段;在第三阶段放置相同数量的层(保留总层数)并获取扩展第三阶段的输出。序列长度增加了四倍,比ViT也获得了更巨大的开销。

我们用RseNet作为CNN的基准,用GN层替代BN层,使用标准的卷积。这些改进是有提升的,我们把它称作“ResNet(BiT)”。hybrids模型,我们把中间的特征图映射成1×1的patch传入ViT。为了验证不同的序列长度,我们要么获取ResNet50第四阶段的输出,要么移除第四阶段;在第三阶段放置相同数量的层(保留总层数)并获取扩展第三阶段的输出。序列长度增加了四倍,比ViT也获得了更巨大的开销。

Training & Fine-tuning.

训练所有的模型,包含ResNet,使用Adam优化器,beta1=0.9,beta2=0.999,batchSize=4096以及weight_decay=0.1,我们发现这对所有的模型转换都很有用(D.1)。我们使用线性学习率的预热和衰减,细节在(B.1)。ImageNet的结果在表2,我们在高分辨率图像上进行微调:512 ViT-L/16及518ViT-H/14,还使用了一个为0.9999的系数。

在这里插入图片描述

表2
  • 与当前流行的图像分类基准进行比较,我们记录了准确率的平均值和标准差,三次微调的平均值。ViT在JFT-300M上进行预训练,在所有数据集上性能都胜过了基于ResNet的基准网络,预训练所需要的资源大大减少。ViT基于ImageNet-21k数据集性能也很好。比Slightly 的结果提升到88.5% 。

Metrics

我们也报告了下游任务数据集的识别结果,通过few-show或者fine-tuning。微调精度的方法获取每个模型的性能然后在各个数据集进行微调。Few-shot准确率通过解决最小二乘回归问题,将训练子集映射到{-1, 1}^k目标向量上。这个公式运行我们以封闭的形式恢复精确解。虽然我们主要关注微调的性能,有时我们使用few-shot准确率进行快速动态评估,因为微调花费的成本太高。


4.2 COMPARISION TO STATE OF THE ART

首先,我们比较了最大的模型——ViT-H/14以及ViT-L/16,与文献中达到sota的CNN模型。第一个比较的点是BiT(2020),基于大的ResNet进行无监督的迁移学习。第二个是Noisy Student(2020),基于半监督学习的在移除标签的ImageNet和JFT-300M数据集上使用一个大型的EfficientNet训练。现在,Noisy Student在ImageNet和BiT-L在其它数据集的表现上都是sota的。所有模型都使用TPUv3进行训练,我们报告了每个需要TPUv3核心预训练的天数,以天为单位等于TPUv3核心(2 per chip)乘以所训练的时间。

表2表明了训练所需要的时间。在所有任务中,更小的ViT-L/16基于JFT-300M数据集进行预训练都比BiT-L能获得更好的结果,同时需要更少的计算资源。更大的模型ViT-H/14,进一步提升了性能,尤其是在更具挑战的数据集上,ImageNet、CIFAR-100、系列VTAB。有趣的是,这个模型任然仅需要更少的计算资源对比与先前的sota。可能我们发现,预训练的效率不仅仅首先于模型的选择,也与相关参数有关,如学习率、优化器、权重衰减等。在Section4.4我们对不同的结构和性能做了详细比较。最终,ViT-L/16在ImageNet-21k进行预训练的性能优于大部分数据集,以及更少的预训练资源:用一个标准的8核TPUv3大约需要30天。

图2,分解了VTAB任务并在此基准上与先前的基准sota模型进行比较:BiT,VIVI-ResNet在ImageNet和Youtube联合训练,S3L-在ImageNet上进行无监督和半监督。ViT-H/14性能优于BiT-R152×4及其他方法,在自然地和结构化任务上。在专业的任务上与性能最好的两个模型很接近。

在这里插入图片描述

图2:VTAB在自然、专业和结构化任务组中的表现详细情况

4.3 PRE-TRAINING DATA REQUIRMENTS

ViT在JFT-300M数据集上进行预训练能够得到更好的结果。由于ViT比ResNet拥有更少的归纳偏置,关键的数据大小是多少呢?我们进行了两个系列的实验。

首先,我们在越来越大的数据集上训练我们的ViT模型,如ImageNet, ImageNet-21k, and JFT300M。为促进在小数据集上的表现,优化了三个正则化参数,weight decay, dropout, and label smoothing。图3表明在ImageNet上预训练的的结果,(其它结果在表5上面)。我们在更小的数据集ImageNet上进行预训练时,ViT-L模型没有ViT-Base性能好。只有在JFT-300M模型上充分训练时才能让大模型发挥它的性能。图3表明了不同BiT模型的表现。在ImageNet上BiT CNN性能比ViT更好,但在更大的数据集上,ViT胜出。

在这里插入图片描述

图3:迁移到ImageNet
  • 在小数据集上进行预训练时,大型ViT模型的表现没有BiT ResNets好,但在大型数据集训练时相反。随着数据的增长,大型ViT性能逐步优于较小的ViT。

第二,我们随机从JFT-300M中选择我们的子集,9M,30M,90M。我们不在小子集上使用额外的正则化,而是使用相同的超参数。我们评估固有的模型属性,而不是正则化的效果。我们任然使用早停,在训练时汇报最佳验证准确率。为节省计算,我们报告少量的线性精度而不是完全的微调精度。图4,包含结果。在小数据集上,ViT的计算成本比ResNet高。举个例子,ViT-B/32稍微比ResNet50快一点,在9M的子集上表现更差,在90M+的数据集上有更好的表现。ResNet152×2和ViT-L/16也有相同的表现。这很直接的表明了,卷积能够在小数据集上有益于归纳偏置,然后在更大的数据集上,直接学习数据的相关模式就足够了,甚至更好。

总的来说,在ImageNet上的结果如图4,此外,低维结果在VTAB(表2)似乎有望实现低维数据转换。进一步分析基于少量数据的ViT在未来是一个振奋人心的工作。
在这里插入图片描述

图4:在ImageNet上对预训练模型少量数据的线性评估。
  • 用小数据集进行预训练ResNet能够比ViT得到更好的结果,但是ViT更加平滑,且在大数据上表现更好。ViT-b是ViT-B所有隐含层维度减半的版本

4.4 SCALING STUDY

我们通过评估JFT-300M的传输性能,对不同模型进行受控比例的研究。在这种情况下,数据的大小不会限制模型的性能,我们会评估每个模型的性能和预训练成本。模型包裹:7ResNets,R50×1,R50x2,R101x1, R152x1, R152x2,预训练 for 7个epochs,plus R152x2 and R200x3预训练 for 14个epochs ;6个ViT, 其中,ViT-B/32, B/16, L/32, L/16, 预训练7 epochs,plus L/16 and H/14 预训练for 14个epochs;5 hybrids, R50+ViT-B/32, B/16, L/32, L/16预训练 for 7 epochs, plus R50+ViT-L/16 预训练 for 14 epochs(对于hybirds模型,型号名称结尾的数值不代表patch的大小,而是基于ResNet骨干网络的下采样率)

图5包含了对所有预训练模型的性能和计算前后结果的对比(D.5附录中包含计算的细节)。每个模型详细的结果在附录中的表6。一些模式可以被观测到。第一点,ViT与ResNet相比在性能和计算资源上占据主要地位。ViT仅用2-4倍或者更少的计算就达到与其相同的性能(超过5个数据集表明)。第二点,hybrids在小数据集上的性能优于ViT,但是在大数据集上这种差异就会消失。这个结果有点惊讶,人们也许期待卷积处理的局部特征能够在任意大小的ViT中都起作用。第三,ViT在所有的尝试上都没有表现出任何的饱和状态,这会鼓励我们去推动未来的研究。

在这里插入图片描述

图5:总的预训练计算
  • 在不同结构上预训练性能与训练前的计算:ViT ResNets hybrids。计算资源相同的情况下,ViT能够比ResNet有更好的表现;对于小模型,Hybrids比ViT表现更好,但在大模型上优势就没有了。

4.5 INSPECTING VISION TRANSFORMER

为了理解ViT是如何处理图像的,我们分析了它内部的表现。ViT的第一层是线性投影,将flatten拉平的patch块映射到低维空间(Eq.1)。图7(左边)表明学习到的embedding filter的主成分。这些成分是每个patch块与块内结构低维表示的似然基函数。

在这里插入图片描述

图7
  • 左边:ViT-L/32RGB图像的初始化线性映射层的滤波器
  • 中间:ViT-L/32位置编码的相似性图,标题表明块的位置编码的行与列的余弦相似度,以及位置编码与其它所有patch块的相似度
  • 右边:按多头和网络深度造成注意力区域的大小。每个点显示一层16个头的一个头在图像上的平均注意力距离,详情可看附录。

在projiection映射后,一个可学习的位置编码被增加到patch序列中。图7中间表示,模型学习到的编码距离与图像位置编码的相似性,如距离上接近的patch有更高的位置编码相似性。行和列的结构出现,patch在相同的行或者列有相似的embeddings。对于大型的网络正弦的结构有时候很明显(附录D)。位置编码学习的是2D图像拓扑,这解释了为什么二维的位置编码没有很好的提升。自注意力允许ViT在较低的层去整合图像信息,我们调查了网络能够多大限度的利用这种能力。特别的,我们计算了图像空间中信息整合的平均距离,基于注意力权重(图7右边)。这个注意力距离类似于CNN中的感受野。我们注意到,一些多头在最底层就能够注意到大部分图像,表明改模型确实有能够整合全局信息的能力。其它注意力头在低层里面的注意力距离一直很小。在Transformer前应用ResNet时,高度局部注意力在hybrid模型中不太明显(图7 右边),这表明它与CNN中早期的卷积层可能有相似的功能。注意力距离随着网络的深度增加而增加。最终的,我们发现模型关注的图像区域与分类的语义是相关的(图6)。

在这里插入图片描述

图6
  • 从输出标记到输入空间的注意力典型示范(详情见附录D.7)

4.6 SELF-SUPERVISION

Transformer表明在NLP任务上有很好的性能提升。然而他们的成功不仅源于出色的可扩展性,还源于大规模的自监督预训练。我们执行了一个初步的探索用自监督对patch进行mask并预测,模仿BERT中的mask任务。自监督预训练,小模型ViT-B/16实现了79.9%的准确率在ImageNet上。从零开始的训练显著提升了2%,但任然落后于有监督的预训练。附录包含了更多的细节。我们将在未来继续研究,不使用预训练的方法。


5 CONCLUSION

我们探索了直接在图像分类中应用Transformer。没有像先前的工作那样在机器视觉中使用自注意力,除开最初提取patch块外,我们不会再结构中引入任何基于图像的归纳偏置。相反,我们将图像转换成patch块序列,然后就像NLP中标准的Transformer encoder一样进行处理。这种简单的,可扩展性的,与大数据集与预训练进行结合是,效果出奇的好。因此,ViT在许多图像分类数据集上都达到了sota性能而且预训练成本较低。

这些初始化的结果都很鼓舞人心,但任然有很多挑战。一方面是应用ViT到其它机器视觉任务中,比如检测和分割。我们的结果,加上Carion等人的研究结果表明这是很有前景的。另外一种挑战是继续探索自监督的方法。我们的 实验结果表明,自监督的预训练对结果有所改善,但是在自监督和大规模监督预训练直接还存在很大的差距。最终的,进一步扩大ViT模型可能得到更好的性能。


ACKNOWLEDGEMENTS

这项工作是在柏林、居里希和阿姆斯特丹进行的。感谢许多谷歌同事的帮助,特别是Andreas Steiner对基础结构和代码的开源版本提供的关键帮助;Joan Puigcerver 和 Maxim Neumann帮助简历大规模的训练架构;Dmitry Lepikhin, Aravindh Mahendran, Daniel Keysers, Mario Luˇ ci´ c, Noam Shazeer, Ashish Vaswani, and Colin Raffel提高有用的讨论。


REFERENCES

  • 省略…见原文的10-11-12页。

APPENDIX

A MULTIHEAD SELF-ATTENTION

标准的qkv自注意机制(2017)是一种很流行的神经网络架构块。对于输入序列z∈N×D的每一个元素,我们计算序列中所有v值的加权和。注意力权重A_ij基于成对的序列中的2个元素query q和key k的相似性加权。

在这里插入图片描述

多头自注意力机制,是自注意力的一种扩展,我们在其中使用k个自注意力操作,被叫做多头”heads“,同时,将他们的映射输出拼接起来。当改变k时,计算和参数的个数不变,D_h(Eq.5)被设为D/k。
在这里插入图片描述


B EXPERIMENT DETAILS

B.1 TRAINING

表3总结了我们在不同模型上的训练设置。我们发现从头开始训练ImageNet的关键是使用较强的正则化。使用Dropout时,应用到每一个全连接层后,除开qkv映射以及在patch embedding映射后增加位置信息。训练的Hybrid模型与对应的ViT设置相同。最终,全部的训练数据都被采样到224的分辨率。

在这里插入图片描述

表3
  • 训练的超参数,所有模型的batchSize为4096,每10k个steps执行学习率预热rate warmup。我们发现在ImageNet数据集上,增加全局的L1范数处理梯度裁剪是有效的,训练的分辨率设为224。
B.1.1. FINE-TUNING

训练所有的ViT都使用SGD优化器及0.9动量。我们对学习率进行小范围的搜索如表4。我们将训练集的一小部分(10% for Pets and Flowers, 2% for CIFAR, 1% ImageNet)作为set集并对剩余数据进行训练。对于最终的结果,我们在整个训练集上进行训练并根据各自的测试数据进行评估。微调的ResNets和hybrid模型我们使用相同的参数设置,唯一的例外就是我们把额外的0.06添加到学习率扫描中去。对于ResNet我们也按照Kolesnikov的设置进行了训练,和我们的设置中挑选了最好的结果。最终,没有另外提及,所有预训练的结果都将在分辨率384下进行。(训练和微调使用不同分辨率是很常见的做法)

在这里插入图片描述

表4:微调的超参数
  • 所有模型都使用预选学习率衰减进行微调,batchSize=512,不使用weight decay,全局L1的梯度衰减。如果没有特别指出,微调的分辨率为384

在将ViT模型迁移到另一个数据集时,我们移除整个头部(两个线性层),并将其替换为一个简单的、全零初始化的线性层,输出的类别数为目标数据集所有的类别数。我们发现这样初始化比简单地重新初始化最后一层要更加具有鲁棒性。

对于VTAB系列任务,我们遵循Kolesnikov等人(2020)的协议,并对所有任务使用相同的超参数设置。我们使用0.01的学习率,训练2500步(表4)。我们通过对两个学习率和两个时间表进行小范围扫描,并在200个样例的验证集上选择VTAB分数最高的设置来确定此选择。我们遵循Kolesnikov等人(2020)中使用的预处理方法,但我们不使用特定于任务的输入分辨率。相反,我们发现ViT在所有任务中z在高分辨率(384×384)时达到最好的效果。


SELF-SUPERVISION

我们使用mask对预测目标进行初步的自我监督实验。为此,我们破坏了50%的patch编码,要么用可学习的[mask]编码(80%)、随机的其他patch编码(10%)替换它们的编码,要么仅保持它们原有的(10%)。这种设置与Devlin等人(2019年)的设置非常相似。最后,我们预测3-bit,即每个受损的patch都用各自的patch来表示平均颜色(即总共512种颜色)。

我们在JFT上训练了1M的step(约14个epoch)的自监督模型,batchSize=4096。我们使用Adam优化器,基本学习率为2×10−4、10k步长预热和余弦学习率衰减。作为预训练的预测目标,我们尝试了以下设置:1)仅预测平均值,3-bit颜色(即,预测512种颜色),2)预测4×4缩小版本的16×16大小的patch,3-bit颜色并行(即,16预测512种颜色),3)使用L2对整个patch进行回归(即,3个RGB通道上的256次回归)。令人惊讶的是,我们发现这一切都都很好,尽管L2略差。我们只报告选项1)的最终结果,因为它显示了最佳的few-show性能。我们还对Devlin等人(2019年)使用的15%的腐蚀率进行了试验,但在我们的几次测试中,结果也较差。

最后,我们想指出的是,我们的mask patch预测实例不需要如此大量的预训练,也不需要像JFT这样的大型数据集,以便在ImageNet分类上获得类似的性能增益。也就是说,我们观察到在100k个预训练step后,下游性能的提升递减,并且在ImageNet上预训练时也看到了类似的效果。


C ADDITIONAL RESULTS

我们报告了与论文中给出的数字相对应的详细结果。表5对应于论文中的图3,显示了在越来越大的数据集上预训练的不同ViT模型的迁移性能:ImageNet、ImageNet-21k和JFT-300M。

在这里插入图片描述

表5
  • 在ImageNet、ImageNet-21k或JFT300M上进行预培训时,视觉转换器在各种数据集上的准确度(以百分比计)最高。这些值对应于正文中的图3。模型的分辨率为384。请注意,ImageNet结果的计算没有使用其他技术(Polyak平均和512分辨率图像),以获得表2中的结果

表6对应图5显示了不同大小的ViT、ResNet和混合模型的迁移性能,以及预训练的计算成本。

在这里插入图片描述

表6:模型scaling实验的详细结果
  • 这些对应于论文中的图5。我们展示了几个数据集的迁移精度,以及预训练计算(in exaFLOPs)。

D ADDITIONAL ANALYSES

D.1 SGD VS. ADAM FOR RESNETS

Resnet通常使用SGD进行训练,我们使用Adam作为优化器是非常不传统的。这里我们展示了为什么进行这种选择的实验。也就是说,我们比较通过SGD和Adam一起在JFT上预训练微调的的两种ResNet(50x1和152x2)的表现。对于SGD,我们使用Kolesnikov等人(2020)推荐的超参数。结果见表7。Adam预训练在大多数数据集和平均水平上优于SGD预培训。这证明选择Adam作为优化器是合理的,该优化器用于在JFT上预训练ResNet。请注意,绝对数字低于Kolesnikov等人(2020年)报告的数字,因为我们只预训练了7个阶段,而不是30个阶段。

在这里插入图片描述

表7:用Adam和SGD微调预训练的ResNet模型

D.2 TRANSFORMER SHAPE

我们在Transformer架构的不同维度上进行了消融实验,以找出哪些最适合缩放到非常大的模型。图8显示了ImageNet在不同配置下的5-shot性能。所有配置均基于ViT模型,有8层,D=1024,D_MLP=2048,patch大小为32,所有直线的交点。我们可以看到,缩放深度会带来最大的改善,直到64层都清晰可见。然而,在16层之后,收益递减已经很明显。有趣的是,调整网络的宽度似乎会产生最小的变化。减少patch的大小,从而增加有效序列长度,在不引入参数的情况下显示出惊人的稳健改进。这些发现表明,与参数的数量相比,计算可能是更好的性能预测指标,而且缩放应该强调深度而不是宽度(如果有的话)。总的来说,我们发现按比例缩放所有维度会带来具有鲁棒的改进。

在这里插入图片描述

图8:缩放Vision Transformer的不同模型尺寸

D.3 HEAD TYPE AND CLASS TOKEN

为了尽可能接近原始Transformer模型,我们使用了一个额外的[class]标记,作为图像表示。然后,将这个[class]标记作为类别预测的输出,放入一个小型的多层感知机(MLP)中,其中的隐含层使用Tanh非线性激活函数。

该设计继承了Transformer的文本模型,我们在整篇论文中都使用了它。最初尝试只使用图像patch作为输入,全局平均池(GAP)patch,然后使用线性分类器,就像ResNet的最终特征图一样,效果非常差。然而,我们发现这既不是由于额外的token,也不是由于GAP操作。相反的,不同学习率的要求充分解释了性能的差异,见图9。

请添加图片描述

图9:比较class-token和全局平均池化。两者的效果相似,但需要不同的学习速度

D.4 POSITIONAL EMBEDDING

我们在位置编码上对空间信息的不同编码方式进行了研究。我们尝试了以下情况:

  • 不提供位置信息:将输入视为a bag of patches
  • 一维位置编码:将输入视为一系列的patch在in the raster order(本文中所有其他实验的默认值)
  • 二维位置编码:将输入视为二维的patch网格。在这种情况下,设两组可学习的编码参数,每个编码用于其中一个轴,X和Y,每个编码的大小为D/2。然后,基于输入路径上的坐标,我们连接X和Y编码,以获得该patch的最终位置编码
  • 相对位置编码:考虑patch之间的相对距离,将空间信息编码为而不是绝对位置。为了做到这一点,我们使用了一维相对注意力,我们定义了所有可能的patch的相对距离。因此,对于每个给定的对(一个作为查询,另一个作为注意机制中的键值),我们都有一个偏移pq− pk,其中每个偏移量与编码相关联。然后,我们只需运行额外的注意,我们使用原始查询(查询的内容),但使用相对位置编码作为键。然后,我们使用相对的注意力作为偏置,并在应用softmax之前将其添加到基于内容的主要注意力中。

除了编码空间信息的不同方式外,我们还尝试了将这些信息纳入模型的不同方式。对于一维和二维位置编码,我们尝试了三种不同的情况

  1. 在输入之后立即添加位置编码,在将输入喂到Transformer encoder之前(本文中所有其他实验的默认值)
  2. 学习并将位置编码添加到每层开头的输入中
  3. 在每一层的开始处(各层之间共享)向输入中添加可学习到的位置编码

表8,总结了ViT-B/16模型消融研究的结果。正如我们所看到的,虽然没有位置编码的模型和有位置编码的模型的性能之间存在很大的差距,但不同的位置信息编码方式之间几乎没有差异。我们推测,由于我们的Transformer编码器在patch上输入运行,而不是在像素级。因此,空间信息编码方式的差异就不那么重要了。更准确地说,在patch级输入中,空间维度比原始像素级输入小得多,例如,14×14而不是224×224,对于这些不同的位置编码策略,学习以这种分辨率表示空间关系同样容易。即便如此,网络学习到的位置编码相似性的具体模式取决于训练超参数(图10)。

在这里插入图片描述

表8:在ImageNet 5-shot linear上评估ViT-B/16模型位置编码的消融研究结果

在这里插入图片描述

图10:使用不同超参数训练的模型的位置编码

D.5 EMPIRICAL COMPUTATIONAL COSTS

我们还对硬件上架构的真实速度感兴趣,由于lane宽度和缓存大小等细节,理论上的FLOPs并不总能很好地被预测。我们在TPUv3加速器上对感兴趣的主要模型进行推理速度计时;推理和后推速度之间的差异是一个与模型无关的常数。

图12(左)显示了一个内核在不同输入大小下每秒可以处理多少图像。每一个点都是指在大范围的批量中测量的峰值性能。可以看出,ViT的理论双二次缩放与图像大小仅在最大分辨率下的最大模型中才开始发生。

在这里插入图片描述

图12
  • 左:不同输入大小的各种体系结构的真实计时。ViT型号的速度可与类似的ResNet相媲美。右图:最大的单核批量大小,适用于不同输入大小的不同架构的设备,ViT模型显然更节省内存。

D.6 AXIAL ATTENTION

轴向注意(Huang et al.,2020;Ho et al.,2019)是一种简单但有效的技术,用于为多维张量的大输入上运行自增强。轴向注意的一般思想是执行多个注意操作,每个操作沿着输入张量的单个轴进行,而不是对输入的扁平版本应用一维注意。在轴向注意中,每个注意沿特定轴混合信息,而沿其他轴保持信息独立。沿着这条线,Wang等人(2020b)提出了一个轴网模型,在该模型中,一个ResNet50中的所有卷积核大小为3×3的卷积都被轴自注意力所取代,即通过相对位置编码增加的行和列关注。我们已经将AxialResnet作为一个基线模型实现。(脚注:我们的实现基于https://github.com/csrhddlam/axial-deeplab。在我们的实验中,我们复制了(Wang et al.,2020b)中报告的准确度分数,然而,我们的实现与开源实现类似,在TPU上非常缓慢。因此,我们无法将其用于大规模的实验。这些可以通过仔细优化的实现来解锁)

此外,我们对ViT进行了修改,以处理二维形状的输入,而不是一维的patch序列,并加入了轴向变换块,其中不是一个自我注意力后接一个MLP,而是一个行自注意力后接一个MLP,再接一个列自我注意力后接一个MLP。

图13显示了当在JFT数据集上预训练时,与预训练计算相比,ImageNet 5shot linear上的轴向ResNet、轴向ViT-B/32和轴向ViT-B/16在失败次数和推断时间(例如每秒)方面的性能。正如我们所看到的,Axial-ViT-B/32和Axial-ViT-B/16在性能上都比它们的ViT-B同类产品好,尽管它的性能非常好,但,需要更多计算的成本。这是因为在轴向ViT模型中,每个具有全局自注意力的Transformer块被两个轴向Transformer块取代,一个具有行,一个具有列自注意力,尽管在轴向情况下,自注意力操作的序列长度较小,但每个轴向ViT块有一个额外的MLP。对于AxialResNet来说,虽然它在精度/计算权衡方面看起来合理(图13,左),但在TPU上的朴素实现速度非常慢(图13,右)。

在这里插入图片描述

图13
  • 基于轴向注意的模型的性能,在ImageNet 5-shot linear上的精度排名第一,与它们的速度在失败次数(左)和推理时间(右)的对比

D.7 ATTENTION DISTANCE

为了了解ViT如何利用自我注意整合图像中的信息,我们分析了不同层次的注意权重所跨越的平均距离(图11)。这种“注意距离”类似于CNN中的感受野大小。在较低层次的头部中,平均注意距离是高度可变的,一些头关注图像的大部分,而另一些头关注查询位置或其附近的小区域。随着深度的增加,所有头部的注意力距离都会增加。在网络的后半部分,大多数头广泛的与token交互。

在这里插入图片描述

图11
  • 图11:按注意力头和网络深度划分的受访区域大小。通过对查询像素和所有其他像素之间的距离进行平均,计算128幅示例图像的注意力距离,并通过注意权重进行加权。每个点显示一层16个头中的一个头在图像上的平均注意力距离。图像宽度为224像素。

D.8 ATTENTION MAPS

为了计算注意力从输出标记到输入空间的映射(图6和14),我们使用了Attention Rollout (Abnar&Zuidema,2020)。简单地说,我们平均了所有头部ViTL/16的注意力权重,然后递归地乘以所有层的权重矩阵。这就解释了注意力在所有层次上的混合。

在这里插入图片描述

图14:进一步的注意力图示例如图6(随机选择)

D.9 OBJECTNET RESULTS

我们还按照Kolesnikov等人(2020年)的评估设置,在ObjectNet基准上评估了我们的标准ViT-H/14模型,获得了82.1%的前5名准确率和61.7%的前1名准确率。


D.10 VTAB BREAKDOWN

表9显示了每项VTAB-1k任务的得分。

在这里插入图片描述

表9:VTAB-1k在不同任务中的性能细分

更新记录

  • 2022年04月13日21:37:20…完成
  • 全文内容待矫正
  • 格式待修改完善
  • 相关资料需补充(已完成)
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈嘿萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值