【ViT系列(1)】《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》论文超详细解读(翻译+精读)

前言 

之前我们介绍了Transformer在NLP领域大杀四方,广泛被应用,而今天要介绍的ViT 是Google团队于2021年发表在ICLR上的paper,用一句话总结本文工作就是直接将Transformer应用于视觉领域,同样也取得了较为不错的成绩。

学习资料: 

962f7cb1b48f44e29d9beb1d499d0530.gif​   🍀前期回顾

 【Transformer系列(1)】encoder(编码器)和decoder(解码器)

 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

 【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)

【Transformer系列(4)】Transformer模型结构超详细解读

【Transformer系列(5)】Transformer代码超详细解读(Pytorch)

目录

前言 

ABSTRACT—摘要

一、INTRODUCTION—简介

二、RELATED WORK—相关工作

三、METHOD—方法

3.1 VISION TRANSFORMER (VIT)—视觉Transformer(ViT)

3.2 FINE-TUNING AND HIGHER RESOLUTION—fine-tuning和更大的分辨率

四、EXPERIMENTS—实验

4.1 SETUP—搭建

4.2 COMPARISON TO STATE OF THE ART—和SOTA的比较

4.3 PRE-TRAINING DATA REQUIREMENTS—预训练数据要求

4.4 SCALING STUDY—缩放研究

4.5 INSPECTING VISION TRANSFORMER—检查vision transformer

4.6 SELF-SUPERVISION—自监督

五、CONCLUSION—结论

ABSTRACT—摘要

翻译

虽然Transformer 架构已经成为自然语言处理任务的实际标准,但它在计算机视觉中的应用仍然有限。在视觉中,注意力要么与卷积网络结合应用,要么用于替换卷积网络的某些组成部分,同时保持它们的整体结构。我们证明了这种对cnn的依赖是不必要的,而一个直接应用于图像补丁序列的纯Transformer 可以很好地执行图像分类任务。当对大量数据进行预训练,并转移到多个中型或小型图像识别基准数据集测试(ImageNet、CIFAR-100、VTAB等)时,与最先进的卷积网络相比,Vision Transformer(ViT)获得了良好的结果,同时需要更少的计算资源来训练。


精读

主要内容

(1)Transformer广泛用于NLP领域,但它在CV领域的应用仍然有限。

(2)本文证明了图像对CNN的依赖不是必要的,将纯Transformer直接用于图像patch序列可以很好地执行图像分类任务。

(3)和最先进的CNN相比,vision transformer(ViT)可以获得出色的结果,同时训练所需的计算资源也相对较少。


一、INTRODUCTION—简介

翻译

       基于自注意的架构,特别是Transformer (Vaswanietal.,2017),已经成为自然语言处理(NLP)的首选模型。主要的方法是在大型文本语料库上进行预训练,然后在较小的特定任务数据集上进行微调(Devlinetal.,2019)。由于变形金刚的计算效率和可伸缩性,训练具有超过100B参数的超大尺寸模型已经成为可能(Brown等人,2020年;Lepikhin等人,2020年)。随着模型和数据集的增长,仍然没有性能饱和的迹象。 

        然而,在计算机视觉中,卷积架构仍然占主导地位(LeCun等人,1989;克里日夫斯基等人,2012;he等人,2016)。受NLP成功的启发,多部作品尝试将类似cnn的架构与自我注意力结合起来(Wang等人,2018;Carion等人,2020年),一些完全取代卷积后一种模型虽然在理论上很有效,但由于使用了专门的注意模式,尚未在现代硬件加速器上有效地进行扩展。因此,在大规模图像识别中,经典的ResNet类架构仍然是最先进的技术。

        受NLP中Transformer 缩放成功的启发,我们实验将标准Transformer 直接应用于图像,以最少的修改。为此,我们将一个图像分割成一个patch,并提供这些patch的线性embeddings序列作为一个Transformer 的输入。图像patch的处理方式与NLP应用程序中的标记(单词)的处理方式相同。我们以有监督的方式训练该模型进行图像分类。

        当在中等大小的数据集,如ImageNet上进行训练,而没有强正则化,这些模型的精度比相当大小的ResNets低几个百分点。这种看似令人沮丧的结果是可以预料的:Transformer 缺乏一些cnn固有的归纳偏差,如翻译等方差和局部性,因此在数据量不足的训练下不能很好地泛化。

        然而,如果模型在更大的数据集(14M-3000M图像)上进行训练,图像就会发生变化。我们发现,大规模的训练胜过了归纳偏差。我们的Vision Transformer(ViT)在足够的规模的预训练和转移到数据点较少的任务时获得了优秀的结果。当在公共ImageNet-21k数据集或内部JFT-300M数据集上进行预训练时,ViT在多个图像识别基准上接近或击败了最新水平。特别是,最佳模型在ImageNet上准确率达到88.55%,在ImageNet-ReaL上准确率达到90.72%,在CIFAR-100上准确率达到94.55%,在VTAB的19个任务套件上准确率达到77.63%。 


精读

之前工作的启发

Transformer有两个优点:计算效率高可扩展性

根据Transformer的可扩展性,随着参数和数据集的增多,训练出来的结构的性能也就越高,作者认为还能通过直接增加参数的方式来提升网络的性能

本文方法

(1)将图像拆分为patches,并提供这些patches的线性embeddings序列作为 Transformer 的输入。(图像patches和在NLP应用中的token相似)

(2)采用了有监督的方式对图像分类模型进行训练。

不足: 在不充足数据下训练,会导致模型泛化性不足。

取得成果

  • ImageNet上取得88.55%
  • 在ImageNet-ReaL上取得90.72%

  • 在CIFAR-100上取得94.55%

  • 在VTAB的19个基础任务上取得77.63%


二、RELATED WORK—相关工作

翻译

Transformer是由Vaswani等人(2017)提出的用于机器翻译的方法,并已成为许多NLP任务中的最新方法。基于大型transformer的模型通常在大型语料库上进行预训练,然后对手头的任务进行微调:BERT(Devlin等人,2019)使用去噪自我监督的训练前任务,而GPT工作线使用语言建模作为其训练前任务(雷德福等人,2018;2019;布朗等人,2020)。 

        对图像的纯注意力机制将要求每个像素关注每个其他像素。由于像素数的二次代价,这不能扩展到实际的输入大小。因此,为了将Transformer应用于图像处理中,过去已经尝试过几种近似方法。Parmar等人(2018)只在每个查询像素的局部社区中应用自注意力,而不是全局应用。这种局部多头点积自我注意块可以完全取代卷积(Hu等人,2019;拉马钱德兰等人,2019;赵等人,2020)。在另一项工作中,稀疏Transformer(Childetal.,2019)采用了对全局自关注的可扩展近似,以便适用于图像。另一种衡量注意力的方法是将其应用于不同大小的块中(韦森伯恩等人,2019),在极端情况下仅沿着个别轴(Ho等人,2019;Wang等人,2020a)。许多这些专门的注意力架构在计算机视觉任务上显示出了有希望的结果,但需要复杂的工程才能在硬件加速器上有效地实现。

        与我们最相关的是科登尼尔等人(2020)的模型,该模型从输入图像中提取大小为2×2的补丁,并在顶部应用完全的自我关注。这个模型与ViT非常相似,但我们的工作进一步证明,大规模的预训练使普通Transformer能够与最先进的cnn竞争(甚至比之更好)。此外,Cordonnier等人(2020)使用了2×2像素的小补丁尺寸,这使得该模型仅适用于小分辨率图像,而我们也处理中等分辨率图像。

        此外,人们对将卷积神经网络(CNN)与自我注意的形式结合感兴趣,例如增强图像分类(贝罗等,2019)或进一步处理CNN输出,例如目标检测(胡等,2018;卡里恩等,2020)、视频处理(王等,2018;孙等,2019年)、图像分类(Wu等,2020)、无监督对象发现(Locatelo等,2020年)或统一文本视觉等任务(陈等人,2020c;陆等人,2019年;李等人,2019年)。

        另一个最近的相关模型是图像GPT(iGPT)(Chenetal.,2020a),它在降低图像分辨率和颜色空间后,将Transformer应用于图像像素。该模型以无监督的方式作为生成模型进行训练,然后可以对结果表示进行微调或线性探测,以获得分类性能,在ImageNet上达到72%的最大准确率。 

        我们的工作增加了越来越多的论文收集,探索图像识别的规模比标准的图像网数据集。使用额外的数据源可以在标准基准上实现最先进的结果(Mahajan等人,2018年;Touvron等人,2019年;谢等人,2020年)。此外,Sun等人(2017)研究了CNN的性能如何随着数据集的大小而变化,科列斯尼科夫等人(2020);龙等人(2020)从ImageNet-21k和JFT-300M等大规模数据集对CNN迁移学习进行了实证探索。我们也关注这两个数据集,但训练Transformer,而不是之前工作中使用的基于resnet的模型。 


精读

(1)Transformer: 用于机器翻译的方法,被广泛用于NLP领域

(2)BERT: 使用去噪自我监督的训练前任务

(3)局部多头点积自我注意块: 只在每个查询像素的局部社区中应用自注意力,可以完全取代卷积

(4)稀疏Transformer: 采用了对全局自关注的可扩展近似,以便适用于图像

(5)在不同大小的块中应用: 在极端情况下,只沿着个别轴线应用

(6)iGPT: 无监督的方式,在降低图像分辨率和色彩空间后将Transformers应用于图像像素


三、METHOD—方法

3.1 VISION TRANSFORMER (VIT)—视觉Transformer(ViT)

翻译

       标准 Transformer 的输入是一维标记嵌入序列(sequence of token embeddings)。 为了处理 2D 图像,我们将图像 X\in R^{H\times W\times C} reshape为一系列展平的 2D patches X_{p}\in R^{N\times (P^{2}\cdot C)} ,其中 (H, W ) 是原始图像的分辨率,C 是 通道数,(P, P ) 是每个图像patch的分辨率,N=HW/P^{2}是patches数目,它也用作 Transformer 的有效输入序列长度。 Transformer 在其所有层中使用恒定的潜在向量大小 D,因此我们将patches展平并使用可训练的线性投影映射到 D 维(方程 1)。 我们将此投影的输出称为patch embeddings。

 与 BERT 的 [class] token类似,我们在嵌入patches序列 (sequence of embedded patches) 中添加了一个可学习的embeddings,其在 Transformer encoder (Z_{L}^{0}) 的输出端的状态用作图像表示 y(方程 4) . 在预训练和微调期间,分类头都连接到Z_{L}^{0}。分类头由带有一个隐藏层的 MLP 在预训练时实现,在微调时由单个线性层实现。

      position embeddings被添加到patch  embeddings中以保留位置信息。 我们使用标准的可学习一维position embeddings,因为我们没有观察到使用更高级的二维感知position embeddings(附录 D.4)带来的显着性能提升。 得到的embeddings向量序列作为encoder的输入。

     Transformer encoder(Vaswani 等人,2017 年)由multi-head self-attention(MSA,参见附录 A)和 MLP blocks(方程 2、3)的交替层组成。 在每个块之前应用layerNorm (LN),在每个块之后应用残差连接(Wang 等人,2019 年;Baevski 和 Auli,2019 年)。

      归纳偏置:我们注意到 Vision Transformer 比 CNN 具有更少的特定于图像的归纳偏差。 在 CNN 中,局部性、二维邻域结构和平移等效性被传递到整个模型的每一层中。 在 ViT 中,只有 MLP 层是局部和平移不变的,而self-attention层是全局的。 二维邻域结构的使用非常谨慎:在模型开始时通过将图像切割成patches,并在微调时调整不同分辨率图像的position embeddings(如下所述)。 除此之外,初始化时的position embeddings不携带有关patches的 2D 位置的信息,patches之间的所有空间关系都必须从头开始学习。

    混合架构:作为原始图像patches的替代方案,输入序列可以由 CNN 的feature maps形成(LeCun 等,1989)。 在这个混合模型中,patch embedding投影 E(方程 1)应用于从 CNN featuremap中提取的patches。 作为一种特殊情况,patch 的空间大小可以为 1x1,这意味着输入序列是通过简单地将feature maps的空间维度展平并投影到 Transformer 维度来获得的。 如上所述添加了分类输入embedding和position embeddings。


精读

图一:ViT模型

(1)第1部分:将图形转化为序列化数据

  • 首先输入为一张图片,将图片划分成9个patch,然后将每个patch重组成一个向量,得到所谓的flattened patch
  • 如果图片是H×W×C维的,就用P×P大小的patch去分割图片可以得到N个patch,那么每个patch的大小就是P×P×C,将N个patch 重组后的向量concat在一起就得到了一个N×P×P×C的二维矩阵,相当于NLP中输入Transformer的词向量。
  • patch大小变化时,重组后的向量维度也会变化,作者对上述过程得到的flattened patches向量做了Linear Projection,将不同长度的flattened patch向量转化为固定长度的向量(记作D维向量)。

综上,原本H×W×C 维的图片被转化为了N个D维的向量(或者一个N×D维的二维矩阵)。

(2)第2部分:Position embedding

由于Transformer模型本身是没有位置信息的,和NLP中一样,我们需要用position embedding将位置信息加到模型中去。

如上图所示,编号有0-9的紫色框表示各个位置的position embedding,而紫色框旁边的粉色框则是经过linear projection之后的flattened patch向量。

文中采用将position embedding(即图中紫色框)patch embedding(即图中粉色框)相加的方式结合position信息。

(3)第3部分:Learnable embedding

将 patch 输入一个 Linear Projection of Flattened Patches 这个 Embedding 层,就会得到一个个向量,通常就称作 tokenstokens包含position信息以及图像信息。

紧接着在一系列 token 的前面加上加上一个新的 token,叫做class token,也就是上图带星号的粉色框(即0号紫色框右边的那个),注意这个不是通过某个patch产生的。其作用类似于BERT中的[class] token。在BERT中,[class] token经过encoder后对应的结果作为整个句子的表示;class token也是其他所有token做全局平均池化,效果一样。

(4)第4部分:Transformer encoder

最后输入到 Transformer Encoder 中,对应着右边的图,将 block 重复堆叠 L 次,整个模型也就包括 L 个 Transformer。Transformer Encoder结构和NLP中Transformer结构基本上相同,class embedding 对应的输出经过 MLP Head 进行类别判断。

关于encoder和decoder的详解,可以看这篇:【Transformer系列(1)】encoder(编码器)和decoder(解码器)


3.2 FINE-TUNING AND HIGHER RESOLUTION—fine-tuning和更大的分辨率

翻译

通常,我们会在大型数据集上对ViT进行预训练,并对(较小的)下游任务进行微调。为此,我们去掉了预先训练好的预测头,并附加了一个零初始化的D×K前馈层,其中K是下游类的数量。与训练前相比,以更高的分辨率进行微调往往有益的(Touvron等人,2019;科列斯尼科夫等人,2020年)。当输入更高分辨率的图像时,我们保持patch大小不变,这导致更大的有效序列长度。视觉转换器可以处理任意的序列长度(直到内存限制),然而,预先训练的位置embeding可能不再有意义。因此,我们根据预先训练好的位置embeding在原始图像中的位置,进行二维插值。请注意,这种分辨率调整和patch提取是将图像二维结构的感应偏差手动注入视觉transformer的唯一点。 


精读

存在的问题

在fine-tuning过程中,到下游任务时图像的分辨率会变得更大(图像的长和宽会增加),但是ViT会保持patch大小不变,那么最后得到的patch个数将增加。

但是由于在预训练时,position embedding的个数和pretrain时分割得到的patch个数相同,那么预训练的position embeddings就不再有意义

解决方法

文章中提出用2D插值的方法,基于原图中的位置信息,将预训练中的 position embedding的数量经过插值变成增加之后的。这样在得到对应数目的position embedding的同时也保证了position embedding的语义信息。


四、EXPERIMENTS—实验

4.1 SETUP—搭建

翻译

     Datasets. 探索模型的可伸缩性,我们使用ILSVRC-2012图像数据集1k类和1.3M图像(我们称之为“ImageNet如下),其超集ImageNet-21k 21k类和14M图像(邓等,2009),和JFT(sun等,2017)18k类和303高分辨率图像。我们将训练前的数据集w.r.t.在Kolesnikov等人(2020年)之后的下游任务的测试集。我们将在这些数据集上训练的模型转移到几个基准任务中:原始验证标签和清理后的ReaL标签(Beyer等人,2020年),CIFAR-10/100(克里热夫斯基,2009年),Oxford-IIIT Pets (Parkhi et al., 2012), and Oxford Flowers-102 (Nilsback & Zisserman, 2008)。对于这些数据集,预处理遵循Kolesnikov等人(2020年)。  

        我们还评估了包含19个任务的VTAB分类套件(Zhai等人,2019b)。VTAB为每个任务使用1 000 个训练示例。这些任务被分为三组:Natural – tasks ,如上述任务,宠物,CIFAR等。专业的医疗和卫星图像,以及结构化的任务,需要几何理解,如局部化。 

        Model Variants.  我们基于BERT中使用的ViT配置(Devlinetal.,2019),如表1所示。“base”和“Large”模型直接采用了BERT,我们添加了更大的“huge”模型。在接下来的内容中,我们使用简短的符号来表示模型大小和输入patch大小:例如,ViT-L/16表示具有16×16输入patch大小的“Large”变体。请注意,transformer的序列长度与patch大小的平方成反比,因此具有较小patch大小的模型的计算成本更高。

        对于基线cnn,我们使用ResNet(He等人,2016年),但将批处理归一化层(Wu&He)替换为组归一化(Ioffe&ϟ,2015年),并使用标准化卷积(Qiao等人,2019年)。这些修改改善了转移(科列斯nikov等人,2020年),我们将修改后的模型表示为“ResNet(BiT)”。对于混合体,我们将中间特征映射输入具有一个“像素”的patch大小的ViT。为了实验不同的序列长度,我们要么(i)取常规ResNet50的第4阶段的输出,或者(ii)删除第4阶段,在第3阶段中放置相同数量的层(保持层的总数),并取这个扩展阶段3的输出。选项(ii)导致一个4倍长的序列长度,和一个更昂贵的ViT模型。

      Training & Fine-tuning.   我们使用Adam(Kingma&Ba,2015)和β1=0.9,β2=0.999,批处理大小为4096,并应用0.1的高weight decay,我们发现这对所有模型的转移都很有用(附录D.1表明,与常见的做法相比,Adam对resnet的设置效果比SGD稍好)。我们使用线性学习率预热和衰减,见附录B.1的细节。对于微调,我们使用具有动量的SGD,批处理大小为512,对于所有模型,请参见附录B.1.1。对于表2中的ImageNet结果,我们以更高的分辨率进行了微调:ViT-L/16为512,ViT-H/14为518,同时还使用了Polyak&朱迪茨基(1992),平均系数为0.9999(拉曼钱德兰等人,2019;Wang等人,2020b)。         

      Metrics.  我们通过few-shot或微调精度来报告下游数据集的结果。微调精度可以在对各自的数据集进行微调后捕获每个模型的性能。few-shot精度是通过求解一个正则化最小二乘回归问题来获得的,该问题将训练图像子集的(冻结)表示映射到{−1,1}^K个目标矢量。这个公式使我们能够恢复封闭形式的精确解。虽然我们主要关注微调性能,但我们有时会使用线性的few-shot精度来进行快速的动态评估,因为微调成本太高。


精读

数据集: ImageNet,ImageNet-21k,以及JFT、VTAB

模型: 论文共设计了Base、Large和Huge三款不同大小的ViT模型,分别表示基础模型、大模型和超大模型,三款模型的各参数如下表所示。

  • 以BERT使用的ViT配置为基础
  • 对于标准CNNs,使用了ResNet,修改后的模型表示为 ResNet(BiT)
  • 对于混合体,将中间特征图输入到ViT中​​​​​

训练&微调:

  • Adam训练、批次大小为4096
  • SGD微调、批量大小为512

衡量标准:少数镜头或微调精度


4.2 COMPARISON TO STATE OF THE ART—和SOTA的比较

翻译

我们首先将我们最大的模型-ViT-H/14和ViT-L/16与文献中最先进的cnn进行了比较。第一个比较点是Big Transfer(BiT)(Kolesnikovetal.,2020),它使用大型ResNets执行监督迁移学习。第二个是Noisy Student(Xieetal.,2020),这是一个大型的EffificientNet ,使用在ImageNet和JFT-300M上的半监督学习训练,去掉标签。目前,Noisy Student是最新的先进模型在ImageNet和BiT-L在其他数据集报告在这里。所有模型都在TPUv3硬件上进行训练,我们报告了对每个模型进行预训练所需的TPUv3核天数,即用于训练的TPU v3核数(每个芯片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将VTAB任务分解为各自的组,并与此基准上之前的SOTA方法进行比较:BiT,VIVI-在ImageNet和Youtube上共同训练的ResNet(沙宁等人,2020),以及在ImageNet上的监督加半监督学习(Zhai等人,2019a)。ViT-H/14在自然和结构化任务上优于BiT-R152x4和其他方法。在专业化方面,前两种模型的性能相似。


精读

表2是将最大的模型ViT-H/14和ViT-L/16,与BiT和Noisy Student进行比较

结论:我们的模型计算量要小得多,并且精度更高

图2将 VTAB 任务分解为各自的组,并在此基准测试中与之前的 SOTA 方法进行比较

结论:ViT和BiT类似,并高于别的方法


4.3 PRE-TRAINING DATA REQUIREMENTS—预训练数据要求

翻译

 Vision Transformer 在大型 JFT-300M 数据集上进行预训练时表现良好。 视觉的归纳偏差比 ResNet 少,数据集大小有多重要? 我们进行了两个系列的实验。

    首先,我们在越来越大的数据集上预训练 ViT 模型:ImageNet、ImageNet-21k 和 JFT-300M。 为了提高较小数据集的性能,我们优化了三个基本的正则化参数——权重衰减、dropout 和label smoothing。 图 3 显示了微调到 ImageNet 后的结果(其他数据集上的结果见表 5)。 当在最小的数据集 ImageNet 上进行预训练时,尽管(中等)正则化,ViT-Large 模型与 ViT-Base 模型相比表现不佳。 使用 ImageNet-21k 预训练,它们的性能相似。 只有使用 JFT-300M,我们才能看到更大型号的全部优势。 图 3 还显示了不同大小的 BiT 模型所跨越的性能区域。 BiT CNN 在 ImageNet 上的表现优于 ViT,但在更大的数据集上,ViT 超过了BiT。

ResNets(阴影区域)差,但在大型数据集上进行预训练时,它们表现出色。 同样,随着数据集的增长,较大的 ViT 变体会超过较小的变体。

    其次,我们在 9M、30M 和 90M 的随机子集以及完整的 JFT-300M 数据集上训练我们的模型。我们不对较小的子集执行额外的正则化,并为所有设置使用相同的超参数。这样,我们评估内在模型属性,而不是正则化的效果。但是,我们确实使用了early-stopping,并报告了在训练期间实现的最佳验证准确度。为了节省计算,我们报告了几次线性精度而不是完整的微调精度。图 4 包含结果。 Vision Transformers 在较小的数据集上比 ResNets 过拟合更多,具有可比的计算成本。例如,ViT-B/32 比 ResNet50 稍快;它在 9M 子集上的表现要差得多,但在 90M+ 子集上表现更好。 ResNet152x2 和 ViT-L/16 也是如此。这一结果强化了这种直觉,即卷积归纳偏差对较小的数据集很有用,但对于较大的数据集,直接从数据中学习相关模式就足够了,甚至是有益的。    

总体而言,ImageNet 上的少量结果(图 4)以及 VTAB 上的低数据结果(表 2)对于极低数据传输似乎很有希望。 进一步分析 ViT 的少样本特性是未来工作的一个令人兴奋的方向。


精读

图3展示了模型在 ImageNet 数据集上的性能

图4展示了在 JFT300M 数据集的随机子集以及完整数据集上进行了模型训练的结果

结论:卷积归纳偏置对于规模较小的数据集较为有用,但对于较大的数据集而言,学习相关模式就足够了,甚至更加有效。


4.4 SCALING STUDY—缩放研究

翻译

我们通过对不同模型进行了受控缩放研究评估 JFT-300M 的迁移性能。 在这种情况下,数据大小不会限制模型的性能,我们评估每个模型的性能与预训练成本。 模型集包括:7个ResNets,R50x1、R50x2、R101x1、R152x1、R152x2,预训练了7个epochs,加上预训练了14个epochs的R152x2和R200x3; 6个Vision Transformers,ViT-B/32、B/16、L/32、L/16,预训练7个epochs,加上L/16和H/14预训练14个epochs; 和 5 个混合,R50+ViT B/32、B/16、L/32、L/16 预训练了 7 个 epoch,加上 R50+ViT-L/16 预训练了 14 个 epoch(对于混合,最后的数字 模型名称不代表patch大小,而是代表 ResNet 主干中的总下采样率)。

    图 5 包含迁移性能与总预训练计算(有关计算成本的详细信息,请参见附录 D.5)。 每个模型的详细结果在附录的表 6 中提供。 可以观察到一些模式。 首先,vision transformer在性能/计算权衡方面主导了 ResNet。 ViT 使用大约 少了2 - 4 倍的计算来获得相同的性能(5 个数据集的平均值)。 其次,混合模型在较小的计算预算下略胜于 ViT,但对于较大的模型,这种差异消失了。 这个结果有些出人意料,因为人们可能期望卷积局部特征处理能够在任何规模下辅助 ViT。 第三,Vision Transformers 似乎不会在尝试的范围内饱和,从而推动未来的扩展工作。

其次,我们在9M、30M和90M的随机子集以及完整的JFT-300M数据集上训练我们的模型。我们不对较小的子集执行额外的正则化,而是对所有设置使用相同的超参数。这样,我们就可以评估模型的内在性质,而不是正则化的影响。然而,我们确实使用了early stoping,并报告了在训练期间获得的最佳验证准确性。为了节省计算量,我们报告了Few-shot的线性精度,而不是全微调精度。图4包含了这些结果。在较小的数据集上,Vision Transformer比ResNets过拟合更多。例如,ViT-B/32比ResNet50略快;它在9M子集上表现得更差,但在90M+子集上表现得更好。ResNet152x2和ViT-L/16也是如此。这一结果强化了一种直觉,即卷积归纳偏差对于较小的数据集是有用的,但对于较大的数据集,直接从数据中学习相关模式就足够了,甚至是有益的。 

        总的来说,ImageNet上的Few-shot结果(图4),以及VTAB上的低数据结果(表2)似乎很适合非常低的数据传输。进一步分析ViT的Few-shot特性是未来工作的一个令人兴奋的方向。 


精读

图5展示了模型在不同预训练计算成本情况下的迁移性能

表6展示了模型缩放实验的详细结果

结论:ViT在性能 / 算力权衡中显著优于 ResNet。


4.5 INSPECTING VISION TRANSFORMER—检查vision transformer

翻译

为了开始理解视觉转换器如何处理图像数据,我们分析了它的内部表示。Vision Transformer的第一层线性地投射了扁平的patch到一个低维空间(Eq. 1).图7(左)显示了学习到的embeding过滤器的顶部主成分。这些组件类似于每个patch内精细结构的低维表示的可信基函数。 

        投影结束后,将学习到的位置embeding添加到patch表示中。从图7(中)可以看出,模型通过位置embeding的相似性来学习对图像内的距离进行编码,即越近的斑块往往具有更多相似的位置embeding。此外,还会出现行-列结构;同一行/列中的patch具有类似的embeding。最后,对于较大的网格,正弦结构有时是明显的(附录D)。位置embeding学习了表示二维图像拓扑,这解释了为什么手工制作的二维感知嵌入变体没有产生改进(附录D.4)。 

        自我注意允许ViT整合整个图像的信息,即使是在最低的层。我们将研究该网络在多大程度上利用了这种能力。具体来说,我们根据注意力权重计算信息在被整合过的图像空间中的平均距离(图7,右)。这种“注意距离”类似于cnn中的接受野大小。我们发现,一些头部关注了已经在最低层的大部分图像,这表明模型确实使用了全局集成信息的能力。其他的注意力头脑在低层的注意距离一直很小。这种高度局部化的注意在transformer之前应用ResNet的混合模型中不那么明显(图7,右),这表明它可能在cnn中具有与早期卷积层类似的功能。此外,注意距离随着网络深度的增加而增加。在全球范围内,我们发现该模型关注的是与分类有语义相关的图像区域(图6)。 


精读

图7:左图:ViT-L/32 RGB 值的初始线性embedding滤波器。 中:ViT-L/32 的position embedding的相似性。 右图:按heads和网络深度划分的参与区域大小。

图6:从输出token到输入空间的注意力的代表性示例

结论:

(1)模型使用了全局集成信息的能力。其他注意力head在低层中始终具有较小的注意力距离

(2)该模型关注与分类语义相关的图像区域


4.6 SELF-SUPERVISION—自监督

翻译

 transformer在NLP任务上的表现出了令人印象深刻的表现。然而,他们的成功不仅来自于他们优秀的可伸缩性,而且还来自于大规模的自我监督的预训练.我们还模拟了BERT中使用的掩码语言建模任务,对自我监督的掩码patch预测进行了初步的探索。通过自我监督预训练,我们较小的ViT-B/16模型在ImageNet上达到了79.9%的准确率,比从头开始训练显著提高了2%,但仍比监督预训练低4%。附录B.1.2包含了更多的细节。我们将对比预训练的探索(Chen等人,2020b;他等人,2020年;Bachman等人,2019年;H‘enaff等人,2020年)留给未来的工作。


精读

作者模仿了 BERT 中使用的masked语言建模任务,比从头训练精确度高,但效果还不如监督训练,这就留给未来的探索了。


五、CONCLUSION—结论

翻译

我们探索了transformer在图像识别中的直接应用。与之前在计算机视觉中使用自注意的工作不同,除了最初的patch提取步骤外,我们没有在架构中引入特定于图像的归纳偏差。相反,我们将图像解释为一系列patch,并使用NLP中使用的标准变压器编码器对其进行处理。这种简单但可扩展的策略在结合大型数据集上的预训练时,工作得惊人地好。因此,Vision Transformer在许多图像分类数据集上匹配或超过了最先进的状态,而是相对便宜的预训练。 

        虽然这些初步结果令人鼓舞,但仍存在许多挑战。一是将ViT应用于其他计算机视觉任务,如检测和分割。我们的研究结果,加上Carion等人(2020年)的研究结果,表明了这种方法的前景。另一个挑战是继续探索自我监督的训练前方法。我们最初的实验表明,自我监督预训练有所改进,但自我监督预训练和大规模监督预训练之间仍存在很大的差距。最后,ViT的进一步扩展可能会导致性能的提高。 


精读

本文工作

本文主要将图片处理成 patch 序列,然后使用 Transformer 去处理,取得了接近或超过卷积神经网络的结果,同时训练起来也更快。

未来展望

(1)将ViT应用于其他计算机视觉任务,如检测和分割。

(2)继续探索自我监督的预训练方法。

(3)可以进一步扩大ViT的规模,随着模型尺寸的增加,性能似乎还没有饱和。


本文参考:

 用Transformer完全替代CNN - 知乎 (zhihu.com)

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路人贾'ω'

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

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

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

打赏作者

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

抵扣说明:

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

余额充值