• (ICLR-2021)一幅图像相当于16X16个words:大规模图像识别的Transformer


    一幅图像相当于16X16个words:大规模图像识别的Transformer

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

    paper是Google发表在ICLR 2021的工作

    paper地址:链接

    ABSTRACT

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

    1 INTRODUCTION

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

    然而,在计算机视觉中,卷积架构仍然占主导地位(LeCun 等人,1989;Krizhevsky 等人,2012;He 等人,2016)。受 NLP 成功的启发,多项工作尝试将类似 CNN 的架构与自注意力相结合(Wang 等人,2018;Carion 等人,2020),其中一些完全取代了卷积(Ramachandran 等人,2019;Wang 等人, 2020a)。后一种模型虽然理论上有效,但由于使用了专门的注意力模式,尚未在现代硬件加速器上有效地扩展。因此,在大规模图像识别中,经典的 ResNet-like 架构仍然是最先进的(Mahajan 等人,2018;Xie 等人,2020;Kolesnikov 等人,2020)。

    受 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 RELATED WORK

    Transformers是由Vaswani等人提出的(2017)用于机器翻译,并已成为许多 NLP 任务中最先进的方法。基于大型 Transformer 的模型通常在大型语料库上进行预训练,然后针对当前的任务进行微调:BERT (Devlin et al., 2019) 使用去噪自监督预训练任务,而 GPT 使用语言建模作为其预训练任务(Radford 等人,2018;2019;Brown 等人,2020)。

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

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

    将卷积神经网络 (CNN) 与自注意力形式相结合也引起了很多兴趣,例如通过为图像分类增加特征图(Bello et al., 2019)或通过使用自注意力进一步处理 CNN 的输出,例如用于目标检测(Hu et al., 2018; Carion et al., 2020)、视频处理(Wang et al., 2018; Sun et al., 2019)、图像分类(Wu et al., 2020)、无监督目标发现(Locatello 等人,2020)或统一的文本视觉任务(Chen 等人,2020c;Lu 等人,2019;Li 等人,2019)。

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

    我们的工作增加了越来越多的论文,这些论文探索了比标准 ImageNet 数据集更大规模的图像识别。使用额外的数据源可以在标准基准上实现最先进的结果(Mahajan 等人,2018;Touvron 等人,2019;Xie 等人,2020)。

    此外,Sun等人(2017) 研究 CNN 性能如何随数据集大小扩展,以及 Kolesnikov 等人(2020); Djolonga 等人(2020) 对 ImageNet-21k 和 JFT-300M 等大规模数据集的 CNN 迁移学习进行了实证探索。我们也关注后两个数据集,但训练 Transformer 而不是之前工作中使用的基于 ResNet 的模型。

    3 METHOD

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

    3.1 VISION TRANSFORMER (VIT)


    图1

    图 1:模型概述。我们将图像分割成固定大小的patch,线性嵌入每个patch,添加位置嵌入,并将生成的向量序列馈送到标准的 Transformer 编码器。为了执行分类,我们使用向序列添加额外可学习的“分类标记”的标准方法。 Transformer 编码器的插图受到 Vaswani 等人的启发(2017)。

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

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

    位置嵌入被添加到patch嵌入中以保留位置信息。我们使用标准的可学习 1D 位置嵌入,因为我们没有观察到使用更高级的 2D 感知位置嵌入可以显著提高性能。生成的嵌入向量序列用作编码器的输入。

    Transformer 编码器(Vaswani 等人,2017)由多头自注意力(MSA)和 MLP 块(等式 2、3)的交替层组成。在每个块之前应用 Layernorm (LN),在每个块之后应用残差连接 (Wang et al., 2019; Baevski & Auli, 2019)。

    MLP 包含两个具有 GELU 非线性的层。
    z 0 = [ x class  ; x p 1 E ; x p 2 E ; ⋯   ; x p N E ] + E pos  , E ∈ R ( P 2 ⋅ C ) × D , E p o s ∈ R ( N + 1 ) × D ( 1 ) z ℓ ′ = MSA ⁡ ( LN ⁡ ( z ℓ − 1 ) ) + z ℓ − 1 , ℓ = 1 … L ( 2 ) z ℓ = MLP ⁡ ( LN ⁡ ( z ℓ ′ ) ) + z ℓ ′ , ℓ = 1 … L ( 3 ) y = LN ⁡ ( z L 0 ) ( 4 ) z0=[xclass ;x1pE;x2pE;;xNpE]+Epos ,ER(P2C)×D,EposR(N+1)×D(1)z=MSA(LN(z1))+z1,=1L(2)z=MLP(LN(z))+z,=1L(3)y=LN(z0L)(4)

    z0zzy=[xclass ;xp1E;xp2E;;xpNE]+Epos ,=MSA(LN(z1))+z1,=MLP(LN(z))+z,=LN(zL0)(4)ER(P2C)×D,EposR(N+1)×D(1)=1L(2)=1L(3)

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

    混合结构。作为原始图像patch的替代品,输入序列可以由CNN的特征图形成(LeCun等人,1989)。在这个混合模型中,patch嵌入投影 E \mathrm{E} E(公式1)被应用于从CNN特征图中提取的patch。作为一种特殊情况,patch的空间尺寸可以是1x1,这意味着输入序列是通过简单地将特征图的空间维度压平并投射到Transformer维度而得到的。分类输入嵌入和位置嵌入如上所述被添加。

    3.2 FINE-TUNING AND HIGHER RESOLUTION


    通常情况下,我们在大型数据集上对ViT进行预训练,然后针对(较小的)下游任务进行微调。为此,我们去掉预训练的预测头,附加一个零初始化的D×K前馈层,其中K是下游类别的数量。在比预训练更高的分辨率下进行微调通常是有益的(Touvron等人,2019;Kolesnikov等人,2020)。当输入更高分辨率的图像时,我们保持patc大小不变,这导致有效序列长度更大。Vision Transformer可以处理任意的序列长度(达到内存限制),然而,预先训练好的位置嵌入可能不再有意义了。因此,我们对预训练的位置嵌入进行二维插值,根据它们在原始图像中的位置。请注意,这种分辨率的调整和patch的提取是关于图像的二维结构的归纳偏差被手动注入到视觉transformer的唯一点。

    参考文献

  • 相关阅读:
    Win10系统开机启动文件夹在哪里找?
    linux中git的使用
    物理学中的不确定性的根源,有哪些看法
    【JAVA多线程】JMM,成体系聊一下JAVA线程安全问题
    前端面试题之HTML篇
    单线程Jedis管道实现批量写入数据
    【TA-霜狼_may-《百人计划》】美术3.1 动作理论基础
    用frp搞个内网穿透
    26、JavaScript学习笔记——定时器
    【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础
  • 原文地址:https://blog.csdn.net/wl1780852311/article/details/125906758