第30篇Vision Transformer

Posted AI浩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第30篇Vision Transformer相关的知识,希望对你有一定的参考价值。


论文连接:https://arxiv.org/abs/2010.11929
GitHub·:https://github.com/google-research/vision_transformer

摘要

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

1 简介

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

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

受 NLP 中 Transformer 缩放成功的启发,我们尝试将标准 Transformer 直接应用于图像,并尽可能减少修改。为此,我们将图像拆分为块,并提供这些块的线性嵌入序列作为 Transformer 的输入。图像块的处理方式与 NLP 应用程序中的标记(单词)相同。我们以监督方式训练模型进行图像分类。

当在没有强正则化的 ImageNet 等中型数据集上进行训练时,这些模型产生的准确度比同等大小的 ResNet 低几个百分点。这 可能会出现看似令人沮丧的结果:Transformers 缺乏 CNN 固有的一些归纳偏差,例如平移等效性和局部性,因此在数据量不足的情况下训练时不能很好地泛化。 但是,如果模型在更大的数据集(14M-300M 图像)上训练,情况就会发生变化。我们发现大规模训练胜过归纳偏差。我们的 Vision Transformer (ViT) 在以足够的规模进行预训练并转移到数据点较少的任务时获得了出色的结果。当在公共 ImageNet-21k 数据集或内部 JFT-300M 数据集上进行预训练时,ViT 在多个图像识别基准上接近或超过了最先进的水平。特别是,最好的模型在 ImageNet 上达到 88.55% 的准确率,在 ImageNet-ReaL 上达到 90.72%,在 CIFAR-100 上达到 94.55%,在 19 个任务的 VTAB 套件上达到 77.63%。

2 相关工作

Transformers是由 Vaswani 等人提出的,用于机器翻译,并已成为许多 NLP 任务中最先进的方法。基于大型 Transformer 的模型通常在大型语料库上进行预训练,然后针对手头的任务进行微调:BERT 使用去噪自监督预训练任务,而 GPT 工作线使用语言建模作为其预训练任务 。

将自注意力简单地应用于图像需要每个像素都关注其他每个像素。由于像素数量的二次成本,这不能扩展到实际的输入大小。因此, 为了在图像处理的上下文中应用 Transformer,过去曾尝试过几种近似方法。帕尔马等人仅在每个查询像素的局部邻域中应用自我注意,而不是全局。这种局部多头点积自注意力块可以完全替代卷积。在另一项工作中,Sparse Transformers 对全局自注意力采用可扩展的近似值,以便适用于图像。扩展注意力的另一种方法是将其应用于不同大小的块,在极端情况下仅沿单个轴应用。许多这些专门的注意力架构在计算机视觉任务上展示了有希望的结果,但需要复杂的工程才能在硬件加速器上有效实施。

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

将卷积神经网络 (CNN) 与自我注意形式相结合也引起了很多兴趣,例如通过为图像分类增加特征图或通过使用自我注意进一步处理 CNN 的输出,例如用于对象检测、视频处理、图像分类、无监督对象发现或统一的文本视觉任务。

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

我们的工作增加了越来越多的论文,这些论文探索了比标准 ImageNet 数据集更大规模的图像识别。使用额外的数据源可以在标准基准上实现最先进的结果。此外,Sun 等人研究了 CNN 的性能如何随数据集大小而变化,而 Kolesnikov 等人对来自大规模数据集(如 ImageNet-21k 和 JFT-300M)的 CNN 迁移学习进行了实证探索。我们也关注后两个数据集,但训练 Transformer 而不是之前工作中使用的基于 ResNet 的模型。

3 方法

在模型设计中,我们尽可能地遵循原始的 Transformer。 这种故意简单设置的一个优点是可扩展的 NLP Transformer 架构及其高效的实现几乎可以开箱即用。

3.1 VISION TRANSFORMER (VIT)

该模型的概述如图 1 所示。标准 Transformer 接收一维令牌嵌入序列作为输入。 为了处理 2D 图像,我们将图像 x ∈ R H × W × C \\mathbfx \\in \\mathbbR^H \\times W \\times C xRH×W×C 重塑为一系列扁平化的 2D 块 x p ∈ R N × ( P 2 ⋅ C ) \\mathbfx_p \\in \\mathbbR^N \\times\\left(P^2 \\cdot C\\right) xpRN×(P2C),其中 (H; W ) 是原始图像的分辨率,C 是 通道数,(P,P ) 是每个图像块的分辨率, N = H W / P 2 N=H W / P^2 N=HW/P2 是生成的块数,它也作为 Transformer 的有效输入序列长度。 Transformer 在其所有层中使用恒定的潜在向量大小 D,因此我们将补丁展平并使用可训练的线性投影映射到 D 维(方程式 1)。 我们将此投影的输出称为补丁嵌入。

与 BERT 的 [class] 令牌类似,我们在嵌入补丁序列 ( z 0 0 = x class  ) \\left(\\mathbfz_0^0=\\mathbfx_\\text class \\right) (z00=xclass ) 之前添加一个可学习的嵌入,其在 Transformer 编码器 ( z L 0 \\mathbfz_L^0 zL0) 输出的状态用作图像表示 y (Eq. 4) . 在预训练和微调期间,分类头都附加到 z L 0 \\mathbfz_L^0 zL0。 分类头由 MLP 实现,在预训练时具有一个隐藏层,在微调时由单个线性层实现。

位置嵌入被添加到补丁嵌入中以保留位置信息。 我们使用标准的可学习 1D 位置嵌入,因为我们没有观察到使用更高级的 2D 感知位置嵌入带来的显着性能提升(附录 D.4)。 生成的嵌入向量序列用作编码器的输入。

Transformer 编码器由多头自注意力(MSA,见附录 A)和 MLP 块(等式 2、3)的交替层组成。 在每个块之前应用 Layernorm (LN),在每个块之后应用残差连接。MLP 包含两个具有 GELU 非线性的层。
z 0 = [ x class  ; x p 1 E ; x p 2 E ; ⋯   ; x p N E ] + E p o s , E ∈ R ( P 2 ⋅ C ) × D , E p o s ∈ R ( N + 1 ) × D (1) \\mathbfz_0=\\left[\\mathbfx_\\text class ; \\mathbfx_p^1 \\mathbfE ; \\mathbfx_p^2 \\mathbfE ; \\cdots ; \\mathbfx_p^N \\mathbfE\\right]+\\mathbfE_p o s, \\quad \\mathbfE \\in \\mathbbR^\\left(P^2 \\cdot C\\right) \\times D, \\mathbfE_p o s \\in \\mathbbR^(N+1) \\times D \\tag1 z0=[xclass ;xp1E;xp2E;;xpNE]+Epos,ER(P2C)×D,EposR(N+1)×D(1)

z ℓ ′ = MSA ⁡ ( LN ⁡ ( z ℓ − 1 ) ) + z ℓ − 1 , ℓ = 1 … L (2) \\mathbfz_\\ell^\\prime=\\operatornameMSA\\left(\\operatornameLN\\left(\\mathbfz_\\ell-1\\right)\\right)+\\mathbfz_\\ell-1, \\quad \\ell=1 \\ldots L \\tag2 z=MSA(LN(z1))+z1,=1L(2)

z ℓ = MLP ⁡ ( LN ⁡ ( z ℓ ′ ) ) + z ℓ ′ , ℓ = 1 … L (3) \\mathbfz_\\ell=\\operatornameMLP\\left(\\operatornameLN\\left(\\mathbfz_\\ell^\\prime\\right)\\right)+\\mathbfz_\\ell^\\prime, \\quad \\ell=1 \\ldots L \\tag3 z=MLP(LN(z))+z,=1L(3)

y = L N ( z L 0 ) (4) \\mathbfy=\\mathrmLN\\left(\\mathbfz_L^0\\right) \\tag4 y=LN(zL0)(4)

感应偏置。 我们注意到,与 CNN 相比,Vision Transformer 的图像特定归纳偏差要少得多。 在 CNN 中,局部性、二维邻域结构和平移等效性被烘焙到整个模型的每一层中。 在 ViT 中,只有 MLP 层是局部的和平移等变的,而自注意力层是全局的。 二维邻域 结构的使用非常谨慎:在模型开始时,通过将图像切割成块,并在微调时调整不同分辨率图像的位置嵌入(如下所述)。 除此之外,初始化时的位置嵌入不携带有关补丁的 2D 位置的信息,并且必须从头开始学习补丁之间的所有空间关系。

混合架构。 作为原始图像块的替代方案,输入序列可以由 CNN 的特征图形成。 在这个混合模型中,补丁嵌入投影 E(等式 1)应用于从 CNN 特征图中提取的补丁。 作为一种特殊情况,patch 可以具有 1x1 的空间大小,这意味着输入序列是通过简单地将特征图的空间维度展平并投影到 Transformer 维度来获得的。 如上所述添加分类输入嵌入和位置嵌入。

3.2 微调和更高的分辨率

通常,我们在大型数据集上预训练 ViT,并微调到(较小的)下游任务。为此,我们移除预训练的预测头并附加一个零初始化的 D × K 前馈层,其中 K 是下游类的数量。与预训练相比,以更高的分辨率进行微调通常是有益的。当提供更高分辨率的图像时,我们保持补丁大小相同,从而产生更大的有效序列长度。 Vision Transformer 可以处理任意序列长度(直至内存限制),但是,预训练的位置嵌入可能不再有意义。因此,我们根据它们在原始图像中的位置对预训练的位置嵌入进行 2D 插值。请注意,这种分辨率调整和补丁提取是将有关图像 2D 结构的归纳偏差手动注入视觉转换器的唯一点。

4 实验

我们评估了 ResNet、Vision Transformer (ViT) 和混合的表示学习能力。为了了解每个模型的数据要求,我们对不同大小的数据集进行预训练并评估许多基准任务。在考虑预训练模型的计算成本时,ViT 表现非常出色,以较低的预训练成本在大多数识别基准上达到了最先进的水平。最后,我们使用自我监督进行了一个小型实验,并表明自我监督的 ViT 对未来充满希望。

4.1 设置

**数据集。**为了探索模型的可扩展性,我们使用具有 1k 类和 1.3M 图像的 ILSVRC-2012 ImageNet 数据集(我们在下文中将其称为 ImageNet),它的超集 ImageNet-21k 具有 21k 类和 14M 图像和 JFT 具有 18k 类和 303M 高分辨率图像。我们对预训练数据集进行去重。的测试集 Kolesnikov 等人 之后的下游任务。我们将在这些数据集上训练的模型转移到几个基准任务:原始验证标签上的 ImageNet 和清理后的 RealL 标签、CIFAR-10/100、Oxford-IIIT Pets (Parkhi et al.,2012) 和 Oxford Flowers-102 。对于这些数据集,预处理遵循 Kolesnikov 等人。

我们还评估了 19 任务 VTAB 分类套件。 VTAB 评估向不同任务的低数据传输,每个任务使用 1000 个训练示例。这些任务分为三组:自然 - 上述任务、宠物、CIFAR 等。专业 - 医学和卫星图像,以及结构化 - 需要几何理解的任务,如定位。

**模型变体。**我们将 ViT 配置基于用于 BERT 的配置,如表 1 所示。“Base”和“Large”模型直接来自 BERT,我们添加了更大的“Huge”模型。在下文中,我们使用简短的符号来表示模型大小和输入补丁大小:例如,ViT-L/16 表示具有 16×16 输入补丁大小的“大”变体。请注意,Transformer 的序列长度与块大小的平方成反比,因此块大小较小的模型计算成本更高。

对于基线 CNN,我们使用 ResNet,但将 Batch Normalization 层替换为 Group Normalization,并使用标准化卷积。这些修改改进了传输,我们将修改后的模型表示为“ResNet (BiT)”。对于混合体,我们将中间特征图输入到 ViT 中,补丁大小为一个“像素”。为了试验不同的序列长度,我们要么(i)获取常规 ResNet50 的第 4 阶段的输出,要么(ii)移除第 4 阶段,在第 3 阶段放置相同数量的层(保持总层数),然后取此扩展阶段 3 的输出。选项 (ii) 导致 4 倍更长的序列长度和更昂贵的 ViT 模型。

训练和微调。我们使用 Adam 训练所有模型,包括 β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。

指标。我们通过小样本或微调精度报告下游数据集的结果。在对相应数据集进行微调后,微调准确度可捕获每个模型的性能。通过解决将训练图像子集的(冻结)表示映射到 f-1 的正则化最小二乘回归问题,可以获得很少的准确率; 1gK 目标向量。该公式使我们能够以封闭形式恢复精确解。虽然我们主要关注微调性能,但有时我们会使用线性少样本精度来进行快速动态评估,而微调成本太高。

4.2 与现有技术的比较

我们首先将我们最大的模型——ViT-H/14 和 ViT-L/16——与文献中最先进的 CNN 进行比较。 第一个比较点是 Big Transfer (BiT) ,它使用大型 ResNets 执行监督迁移学习。 第二个是 Noisy Student,它是一个大型 EfficientNet,使用 ImageNet 和 JFT-300M 上的半监督学习训练,去除了标签。 目前,Noisy Student 是 ImageNet 和 BiT-L 在此处报告的其他数据集上的最先进技术。 所有模型都在 TPU v3 硬件上进行了训练,我们报告了对每个模型进行预训练所花费的 TPU v3 核心天数,即用于训练的 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 模型在大多数数据集上也表现良好,同时使用更少的资源进行预训练:它可以使用具有 8 个核心的标准云 TPU v3 进行训练,大约需要30天。

图 2 将 VTAB 任务分解为各自的组,并在此基准上与之前的 SOTA 方法进行了比较:BiT、VIVI——在 ImageNet 和 Youtube 上共同训练的 ResNet和 S4L——监督加半 ImageNet 上的监督学习(Zhai 等人,2019a)。 ViT-H/14 在自然和结构化任务上优于 BiT-R152x4 和其他方法。 在 Specialized 上,前两个模型的性能相似。

4.3 训练前数据要求

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

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

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

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

4.4 比例研究

我们通过评估 JFT-300M 的传输性能来对不同模型进行受控缩放研究。在这种情况下,数据大小不会成为模型性能的瓶颈,我们会评估每个模型的性能与预训练成本。模型集包括:7个ResNets,R50x1,R50x2 R101x1,R152x1,R152x2,预训练7个epoch,加上R152x2和R200x3预训练14个epoch; 6 个视觉变形金刚,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 Transformers 在性能/计算权衡上主导 ResNet。 ViT 使用大约 2 - 4 倍的计算来获得相同的性能(平均超过 5 个数据集)。其次,在较小的计算预算下,混合模型的性能略优于 ViT,但对于较大的模型,差异就消失了。这个结果有点令人惊讶,因为人们可能期望卷积局部特征处理可以帮助任何大小的 ViT。第三,Vision Transformers 似乎没有在尝试过的范围内饱和,从而激励了未来的扩展努力。

4.5 检查视觉变压器

为了开始了解 Vision Transformer 如何处理图像数据,我们分析了它的内部表示。 Vision Transformer 的第一层将展平的补丁线性投影到低维空间(方程式 1)。图 7(左)显示了学习的嵌入过滤器的顶部主成分。这些组件类似于合理的基函数,用于每个补丁内精细结构的低维表示。

在投影之后,将学习的位置嵌入添加到补丁表示中。图 7(中)显示该模型学习在位置嵌入的相似性中对图像内的距离进行编码,即更接近的块往往具有更相似的位置嵌入。进一步,出现了行列结构;同一行/列中的补丁具有相似的嵌入。最后,对于较大的网格,有时会出现正弦结构(附录 D)。位置嵌入学习表示 2D 图像拓扑解释了为什么手工制作的 2D 感知嵌入变体不会产生改进(附录 D.4)。

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

4.6 自我监督

Transformers 在 NLP 任务上表现出令人印象深刻的表现。 然而,它们的大部分成功不仅源于其出色的可扩展性,还源于大规模的自我监督预训练(Devlin 等人,2019;Radford 等人,2018)。 我们还对用于自我监督的掩码补丁预测进行了初步探索,模仿了 BERT 中使用的掩码语言建模任务。 通过自我监督预训练,我们较小的 ViT-B/16 模型在 ImageNet 上实现了 79.9% 的准确率,比从头开始训练显着提高了 2%,但仍落后于监督预训练 4%。 附录 B.1.2 包含更多细节。 我们将对比预训练的探索(Chen 等人,2020b;He 等人,2020;Bachman 等人,2019;Henaff 等人,2020࿰

以上是关于第30篇Vision Transformer的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch CIFAR10图像分类 Vision Transformer(ViT) 篇

Pytorch CIFAR10图像分类 Vision Transformer(ViT) 篇

Pytorch CIFAR10图像分类 Vision Transformer(ViT) 篇

论文解析[9] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

综述 | 计算机视觉Transformer 《Transformers in Vision: A Survey》

综述 | 计算机视觉Transformer 《Transformers in Vision: A Survey》