深度学习:读论文《Vision Transformer (ViT)》-2021年

hello,大家好,我是小孟,欢迎来到我的频道,如果喜欢,请三连:关注、点赞、转发。您的支持是我创作的动力源泉。今天我们来读一篇论文,这篇论文的标题是《An Image Is Worth 16×16 Words: Transformers for Image Recognition at Scale》,但我们经常引用它都是用Vision Transformer,ViT是一种直接将 Transformer 应用于图像识别任务的方法,它将图像解释为一系列图像块(patch)序列,并使用标准的 Transformer 编码器进行处理。

注:文中的引用其他论文采用括号方式,为了阅读顺畅,我删除了相关引用,需要这些引用的读者可以参考原文。

一、作者简介

ViT(Vision Transformer)的作者是Alexey Dosovitskiy、Lucas Beyer、Alexander Kolesnikov、Dirk Weissenborn、和Xiaohua Zhai。在文中,这几位被标注为同等贡献的作者。他们都是 Google Research的成员。

Alexey Dosovitskiy是一位俄罗斯计算机科学家和计算机视觉、机器学习领域的研究员。Dosovitskiy以他在生成式模型和深度学习领域的工作而闻名。Lucas Beyer是一位德国计算机科学家和研究员,主要从事计算机视觉和机器学习领域的研究。Beyer在深度学习、自监督学习和视觉语义分割等领域做出了杰出的贡献。Alexander Kolesnikov是一位计算机科学家和机器学习研究员。他的研究方向包括计算机视觉、自监督学习和弱监督学习等。Kolesnikov的研究成果已经在多个领域产生了广泛的应用和影响。

Dirk Weissenborn是一位德国计算机科学家和研究员。他主要从事自然语言处理领域的研究,尤其是机器翻译、序列到序列模型和语言生成等方面。Xiaohua Zhai是一位中国计算机科学家和研究员。他主要从事计算机视觉和机器学习领域的研究,尤其是图像生成、视觉推理和弱监督学习等方面。

二、摘要

虽然Transformer架构已成为自然语言处理任务的事实标准,但它在计算机视觉中的应用仍然有限。在视觉领域,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构不变。我们展示了这种对CNN的依赖并非必要,直接将纯Transformer应用于图像补丁序列可以在图像分类任务上表现得非常好。当在大量数据上进行预训练并转移到多个中等大小和小型图像识别基准(ImageNet、CIFAR-100、VTAB等)时,Vision Transformer (ViT)相对于最先进的卷积网络取得了出色的结果,同时需要的计算资源大大减少。

三、引言

自注意力机制,尤其是Transformer,已成为自然语言处理(NLP)中的首选模型。主流方法是在大型文本语料库上进行预训练,然后在较小的任务特定数据集上进行微调。由于Transformer的计算效率和可扩展性,已经可以训练出具有超过100亿参数的前所未有的大型模型。随着模型和数据集的增长,仍没有出现性能饱和的迹象。

然而,在计算机视觉中,卷积架构仍然是主导的。受到NLP成功的启发,多个研究尝试将类似CNN的架构与自注意力相结合,有些完全替换了卷积。后者模型虽然在理论上高效,但由于使用了专门的注意力模式,尚未有效地扩展到现代硬件加速器上。因此,在大规模图像识别中,经典的类-ResNet架构仍然是最先进的。

受到 Transformer 在 NLP 中的可伸缩性成功的启发,我们尝试将标准 Transformer 直接应用于图像,尽可能少地进行修改。为此,我们将图像分成多个 patch,并将这些 patch 的线性嵌入序列作为 Transformer 的输入。图像 patch 被视为 NLP 应用中的标记(单词)。我们以监督学习的方式对模型进行图像分类训练。

当在中等规模的数据集(如ImageNet)上进行训练时,如果没有强的正则化,这些模型的准确率会略低于具有相似大小的ResNets。这种看似令人沮丧的结果可以预料到:相对于CNNs,Transformer缺少一些内在的归纳偏差,如平移等变性和局部性,因此当在不足够的数据上进行训练时,它的泛化能力较弱。

然而,如果在更大的数据集(1400万至3亿张图像)上训练这些模型,则情况就不同了。我们发现,大规模训练优于归纳偏差。我们的Vision Transformer(ViT)在足够大的规模上进行预训练,并将其迁移到具有较少数据点的任务上,可以取得出色的结果。当在公共ImageNet-21k数据集或内部的JFT-300M数据集上进行预训练时,ViT在多个图像识别基准测试上达到或超越最先进的水平。特别是,最佳模型在ImageNet上达到88.55%的准确率,在ImageNet-ReaL上达到90.72%,在CIFAR-100上达到94.55%,在VTAB套件的19个任务上达到77.63%的准确率。

四、相关工作

自注意力模型,特别是Transformer模型,已经成为自然语言处理(NLP)中的首选模型。主要方法是在大型文本语料库上进行预训练,然后在小型任务特定数据集上进行微调。由于Transformer的计算效率和可扩展性,已经可以训练规模前所未有的大型模型,参数数量超过1000亿。随着模型和数据集的增长,性能仍未出现饱和迹象。

然而,在计算机视觉中,卷积神经网络仍然是主流。受到NLP的成功启发,多项工作尝试将CNN样式的体系结构与自注意力相结合,有些甚至完全替代卷积。尽管理论上是高效的,但后一种模型还未能在现代硬件加速器上有效扩展,因为使用了专门的注意力模式。因此,在大规模图像识别中,类似ResNet的经典体系结构仍然是最先进的。

最相关的是Cordonnier等人(2020)的模型,该模型从输入图像中提取2×2大小的图像块,并在其上应用全自注意力。这个模型非常类似于ViT,但我们的工作进一步证明了大规模预训练使得普通的transformers可以与甚至优于最先进的CNN。此外,Cordonnier等人(2020)使用了2×2像素的小块大小,这使得该模型仅适用于小分辨率的图像,而我们也处理中分辨率的图像。

也有很多人对卷积神经网络(CNN)与自注意力形式的结合产生了兴趣,例如通过增强图像分类的特征映射,或通过进一步使用自注意力处理CNN的输出,例如用于目标检测,视频处理,图像分类,无监督对象发现或统一的文本-视觉任务。

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

我们的工作是探索比标准ImageNet数据集更大规模的图像识别任务的众多论文之一。使用额外的数据源使得我们能够在标准基准测试中取得最先进的结果。此外,Sun等人(2017)研究了卷积神经网络随着数据集规模的扩大性能如何提高,而Kolesnikov等人(2020)和Djolonga等人(2020)则对来自大规模数据集(例如ImageNet-21k和JFT-300M)的CNN转移学习进行了实证探索。我们的研究重点也在这两个数据集上,但我们训练的是Transformer而不是先前工作中使用的基于ResNet的模型。

图1:模型概览。我们将图像分割成固定大小的补丁,线性嵌入每个补丁,添加位置嵌入。

五、方法

在模型设计方面,我们尽可能地遵循了原始Transformer。这种有意简单的设置的优点是可以几乎直接使用可扩展的NLP Transformer架构及其高效实现。

5.1、VISION TRANSFORMER (VIT)

模型概述如图1所示。标准Transformer接收一个一维(1D)的token embedding序列作为输入。为了处理2D的图像,我们将图像重塑为一个扁平化的2D patch序列 ,其中是原始图像的分辨率, 是通道数,是每个图像patch的分辨率,是结果patch数,也是Transformer的有效输入序列长度。Transformer在所有层中使用恒定的潜在向量大小,因此我们对patch进行扁平化,并使用可训练的线性投影(公式1)将其映射到 维。我们将该投影的输出称为patch embeddings。

类似于BERT的[class] token,我们在嵌入的patch序列之前添加了一个可学习的嵌入 ,其在Transformer编码器输出时的状态 用作图像表示 (公式4)。在预训练和微调期间,分类头连接到上。分类头由一个MLP和一个隐藏层在预训练时实现,由一个单一的线性层在微调时实现。

为了保留位置信息,我们添加了位置嵌入到patch嵌入中。我们使用标准的可学习1D位置嵌入,因为我们没有观察到使用更先进的2D位置嵌入会带来显著的性能提升。结果嵌入向量序列作为编码器的输入。

Transformer编码器由多头自注意力和MLP块(公式2、3)交替组成。在每个块之前应用LayerNorm(LN),在每个块之后应用残差连接。

MLP指的是多层感知机(Multilayer Perceptron),其包含两层,每层使用GELU非线性激活函数。

归纳偏置。我们注意到Vision Transformer比CNN具有更少的图像特定归纳偏置。在CNN中,局部性、二维邻域结构和平移等变性被整个模型的每个层中融合在一起。在ViT中,只有MLP层是局部的和平移等变的,而自注意力层是全局的。二维邻域结构被非常节制地使用:在模型开始时将图像切成补丁,在微调时用于调整不同分辨率图像的位置嵌入(如下所述)。除此之外,初始化时的位置嵌入不携带有关补丁的2D位置的任何信息,并且所有补丁之间的空间关系都必须从头学习。

混合架构。除了使用原始的图像patch作为输入序列外,还可以使用CNN的特征图(feature maps)形成输入序列。在这种混合模型中,将图像的CNN特征图中的patch进行嵌入映射(Eq.1)。作为特殊情况,patch可以具有空间大小为1×1,这意味着输入序列仅通过将特征图的空间维度展平并投影到Transformer维度来获得。分类输入嵌入和位置嵌入如上所述添加到输入序列中。

5.2 微调和更高的分辨率

通常,我们会在大规模数据集上预训练ViT,然后对(更小的)下游任务进行微调。为此,我们移除预训练的预测头,并连接一个零初始化的D×K前馈层,其中K是下游任务的类别数。通常微调的分辨率比预训练的分辨率要高。当输入更高分辨率的图像时,我们保持补丁大小不变,这导致有效序列长度变大。Vision Transformer可以处理任意序列长度(受内存限制),但是预训练的位置嵌入可能不再有意义。因此,我们根据它们在原始图像中的位置进行预训练位置嵌入的二维插值。请注意,这种分辨率调整和补丁提取是手动注入关于图像二维结构的唯一的归纳偏置点。

六、实验

我们评估了ResNet、Vision Transformer(ViT)和混合模型的表示学习能力。为了了解每个模型的数据需求,我们在不同规模的数据集上进行预训练,并评估许多基准任务。在考虑预训练模型的计算成本时,ViT表现非常优秀,在较低的预训练成本下达到了大多数识别基准的最先进水平。最后,我们进行了一个小型的自监督实验,并展示了自监督ViT在未来的发展中具有潜力。

6.1、步骤

数据集。为了探索模型的可扩展性,我们使用了包含1k类别和1.3M张图像的ILSVRC-2012 ImageNet数据集(以下简称ImageNet),以及包含21k类别和14M张图像的ImageNet-21k数据集,以及包含18k类别和303M高分辨率图像的JFT数据集。我们根据Kolesnikov等人(2020)的方法,将预训练数据集与下游任务的测试集进行去重。我们将训练在这些数据集上的模型迁移到几个基准任务上:在原始验证标签和经过清理的ReaL标签上的ImageNet、CIFAR-10/100、Oxford-IIIT宠物数据集和Oxford Flowers-102数据集。对于这些数据集,我们按照Kolesnikov等人(2020)的方法进行预处理。

表1:Vision Transformer模型变化的细节。

我们还在19个任务的VTAB分类套件上进行了评估。VTAB评估对不同任务的低数据转移,每个任务使用1,000个训练样本。这些任务分为三组:自然任务-如上述任务、宠物、CIFAR等。专业任务-医学和卫星图像,结构化任务-需要几何理解的任务,如定位任务。

模型变种。我们基于BERT所使用的ViT配置,如表1所总结。 “Base”和“Large”模型直接采用自BERT,我们增加了更大的“Huge”模型。在接下来的内容中,我们使用简短的符号来表示模型的大小和输入补丁大小:例如,ViT-L/16表示输入补丁大小为16×16的“Large”变体。请注意,Transformer的序列长度与补丁大小的平方成反比,因此补丁大小较小的模型计算上更昂贵。

对于基线CNN,我们使用ResNet ,但将批归一化层 (Ioffe&Szegedy,2015) 替换为组归一化 (Wu&He,2018),并使用标准化卷积。这些修改提高了迁移性能,我们将修改后的模型称为“ResNet(BiT)”。对于混合模型,我们将中间特征映射馈送到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结果,我们在更高的分辨率下微调:对于ViT-L/16为512,对于ViT-H/14为518,并且还使用了Polyak&Juditsky(1992)平均值,其因子为0.9999。

指标。我们通过少量样本或微调准确度来报告下游数据集的结果。微调准确度捕捉了在微调各自数据集后每个模型的性能。少量样本准确度是通过解决一个正则化最小二乘回归问题获得的,该问题将一小部分训练图像的(冻结)表示映射到{-1,1}K目标向量。这种形式允许我们以封闭形式恢复精确解。虽然我们主要关注微调性能,但有时我们使用线性少量样本准确度进行快速的即时评估,其中微调成本太高。

6.2、与SOTA相比

本文首先比较了我们最大的模型——ViT-H/14和ViT-L/16与文献中的最先进的卷积神经网络(CNN)的表现。第一个比较对象是Big Transfer(BiT),它使用大型ResNets进行监督迁移学习。第二个是Noisy Student,它是一种使用无标签的ImageNet和JFT300M进行半监督学习的大型EfficientNet。目前,Noisy Student是ImageNet的最新技术,而BiT-L是在这里报告的其他数据集上的最新技术。所有模型都在TPUv3硬件上训练,并报告每个模型所需的TPUv3核心天数,即用于训练的TPU v3核心数(每个芯片2个)乘以训练时间(天数)。

表2:与流行的图像分类基准的最新技术的比较。

表2显示了结果。使用JFT-300M预训练的较小的ViT-L/16模型在所有任务上均优于BiT-L(在相同数据集上进行预训练),同时需要的计算资源更少。较大的模型ViT-H/14进一步改善了性能,特别是在更具挑战性的数据集ImageNet、CIFAR-100和VTAB套件上。有趣的是,这个模型的预训练计算仍然比之前的最新技术要少得多。然而,我们注意到,预训练效率可能不仅受到架构选择的影响,还受到其他参数的影响,如训练计划、优化器、权重衰减等。我们在第4.4节提供了一个控制研究,比较了不同架构的性能与计算资源的关系。最后,使用公共ImageNet-21k数据集预训练的ViT-L/16模型在大多数数据集上表现良好,同时需要更少的计算资源进行预训练:它可以使用标准云TPUv3,在大约30天内训练8个核心。

图2:VTAB性能在自然、专业和结构化任务组中的分解。

图2 将 VTAB 任务分解成它们各自的组,并将其与先前在该基准测试上的 SOTA 方法进行比较:BiT、VIVI(一种在 ImageNet 和 Youtube 上共同训练的 ResNet)和 S4L(在 ImageNet 上进行监督加半监督学习)。ViT-H/14 在自然任务和结构化任务上优于 BiT-R152x4 和其他方法。在专业化任务上,前两个模型的表现相似。

6.3、与训练数据需求

Vision Transformer模型在大规模的JFT-300M数据集上进行预训练后表现良好。由于其对于视觉的先验知识较ResNets较少,因此数据集大小对于其性能有多大的影响呢?我们进行了两个系列的实验。

首先,我们在数据集大小逐步增加的情况下,对ViT模型进行预训练:ImageNet、ImageNet-21k和JFT300M。为了提高在较小数据集上的性能,我们优化了三个基本的正则化参数——权重衰减、dropout和标签平滑。图3展示了在微调到ImageNet之后的结果(其他数据集的结果显示在表5中)。当在最小的数据集ImageNet上进行预训练时,ViT-Large模型的表现不如ViT-Base模型,尽管有(适度的)正则化。在ImageNet-21k预训练下,它们的性能相似。只有在JFT-300M上,我们才看到更大模型的完全好处。图3还显示了不同大小的BiT模型的性能区域。在ImageNet上,BiT CNN优于ViT,但是随着数据集的增大,ViT超过了BiT。

图3 图4

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

总的来说,ImageNet的few-shot结果(见图4),以及VTAB的低数据结果(见表2),似乎对于非常低数据的迁移具有良好的前景。对ViT的few-shot属性进行进一步分析是未来工作的一个激动人心的方向。

6.4、缩放研究

我们进行了一个有控制的规模研究,通过评估从JFT-300M进行的转移性能来评估每个模型的预训练成本与性能。模型集包括:7个ResNets,R50x1、R50x2、R101x1、R152x1、R152x2,预训练7个时期,以及预训练14个时期的R152x2和R200x3;6个Vision Transformers,ViT-B/32、B/16、L/32、L/16,预训练7个时期,以及预训练14个时期的L/16和H/14;还有5个混合模型,R50+ViT-B/32、B/16、L/32、L/16,预训练7个时期,以及预训练14个时期的R50+ViT-L/16(对于混合模型,模型名称末尾的数字代表ResNet主干网络中的总下采样比率,而不是补丁大小)。

图5

图5显示了转移性能与总预训练计算量的关系。附录中的表6提供了每个模型的详细结果。可以观察到一些模式。首先,Vision Transformers在性能/计算效率方面优于ResNets。ViT使用的计算资源约为ResNets的2-4倍,即在5个数据集上的平均性能相同。其次,在小的计算预算下,混合模型略优于ViT,但对于更大的模型,差异消失了。这个结果有些令人惊讶,因为人们可能会预期卷积局部特征处理在任何大小的ViT上都有所帮助。第三,Vision Transformers似乎在尝试的范围内没有达到饱和状态,这促使未来的规模扩展工作。

七、结论

我们探索了直接将 Transformer 应用于图像识别。与在计算机视觉中使用自注意力的先前工作不同,我们除了初始的补丁提取步骤外,在架构中没有引入图像特定的归纳偏差。相反,我们将图像解释为一系列补丁,并通过标准的 NLP 中使用的 Transformer 编码器处理它。当与大型数据集的预训练相结合时,这种简单但可扩展的策略在许多图像分类数据集上表现出色,甚至超越了现有的技术水平,同时相对容易预训练。 尽管这些初步结果令人鼓舞,但仍存在许多挑战。其中一个是将 ViT 应用于其他计算机视觉任务,例如检测和分割。我们的结果,加上 Carion 等人的结果,表明这种方法的前景。另一个挑战是继续探索自监督的预训练方法。我们的初步实验显示自监督预训练的改进,但自监督和大规模有监督预训练之间仍存在巨大差距。最后,进一步扩展 ViT 可能会导致更好的性能。

注:作者还有一些附录材料,有兴趣可以看原文。

论文地址:

https://arxiv.org/abs/2010.11929

    THE END
    喜欢就支持一下吧
    点赞13 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容