AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
abstract
-
虽然Transformer系统结构已成为自然语言处理任务的代表性工作成果,但其在计算机视觉中的应用仍然有限。在视觉上,,同时保持其整体结构不变。
-
本文认为这是对的CNN的的,。
-
当预训练并传输到多个中小型图像识别基准(ImageNet、CIFAR-100、VTAB等),Vision Transformer (ViT)与最先进的卷积网络相比,它取得了优异的效果,但训练所需的计算资源要少得多。
-
CV边界上也有很多文章transformer迁移到CV一般来说,这些文章可以分为两类:
- 将self-attention机制与常见CNN架构;
- 用self-attention机制完全CNN。
-
本文的工作亮点是尽可能多地NLP领域的transformer。但是NLP语言数据的处理是序列化的,CV中处理的图像数据是三维的(长、宽和channels)。
- 所以需要一种方式。图像在本文的数据处理中被切割成patch,这些patch按一定顺序排列,就成了序列化数据。
-
在实验中观察,;当数据集的规模扩大时,transformer模型的效果接近或超过一些SOTA结果。作者认为大规模训练可以鼓励transformer学到CNN拥有结构translation equivariance 和locality.
- CNN有两种归纳偏置,一种是局部性(locality/two-dimensional neighborhood structure),也就是说,图片中相邻区域具有相似的特征;一种是平移不变形(translation equivariance),f(g(x))=g(f(x)) ,g代表卷积操作,f代表平移操作。当CNN有了以上两种归纳偏置,有很多先验信息,需要相对较少的数据来学习更好的模型
-
ViT是2020年Google团队提出的将军Transformer应用于图像分类模型,虽然不是第一篇文章transformer它应用于视觉任务论文,但因为(scalable,模型越大,效果越好。transformer在CV该领域应用的里程碑也引爆了后续的研究。
-
ViT原论文的核心结论是,当有足够的数据进行预训练时,ViT的表现就会超过CNN,突破transformer在下游任务中,缺乏归纳偏置的限制可以获得更好的迁移效果。
- 论文:https://arxiv.org/abs/2010.11929v2
- 跟着bryanyzhu学习:https://www.bilibili.com/video/BV15P4y137jb
INTRODUCTION
- 基于自我关注的架构,特别是Transformers,已成为自然语言处理(NLP)首选模型。主导方法是。由于Transformers计算效率和可扩展性,训练规模前所未有,参数超过100B随着模型和数据集的增长,。
- 然而,在计算机视觉中,卷积架构仍占主导地位。NLP受成功的启发,有些工作试图做类似的事情CNN结构与自注意力相结合,完全取代了卷积操作。理论上,后一种模型是有效的,。因此,在大规模图像识别中,经典ResNet-like架构仍然是state of the art。
- 受NLP中Transformer scaling 本文试图启发成功的标准Transformer直接应用于图像,尽量减少修改。。在NLP图像补片的处理方法与标记(单词)相同。。
- 没有强正则化的中型数据集(如ImageNet)在训练过程中,这些模型产生的适度精度比可比大小ResNets低几个百分点。这种看似效果不佳的结果可能是意料之中的:,比如翻译等变性和局部性,在数据量不足的情况下训练时不能很好的概括。
- 如果模型在更大的数据集(14M-300M在图像上训练,情况就不一样了。发现大规模训练胜过归纳偏差。本文的视觉transformer(ViT)以足够大的规模进行预训练并转移到具有较少数据点的任务中,可以取得优异的效果。
- 当在公共ImageNet-21k数据集或内部JFT-300M在数据集上进行预训练时,ViT接近或超过多个图像识别基准的最先进水平。特别是,最好的模型是ImageNet上达到88.准确率55%,在ImageNet-ReaL上达到90.72%,在CIFAR-100上达到94.55%,19个任务VTAB套件上达到77.63%。
RELATED WORK
- transformer是由Vaswani等人(2017)提出机器翻译,成为许多自然语言处理任务中最先进的方法。基于大规模transformer通常在大型语料库上进行预训练, (Devlin等人,2019年)使用去噪自我监督预训练任务GPT工作线使用语言建模作为训练任务(Radford等人,2018年;2019;布朗等人,2020年)。
- 直接将自注意机制应用到图像上。因为像素的数量quadratic cost,这不能缩放到实际输入尺寸。因此,为了应用于图像处理环境transformer,以前尝试过几种类似的方法。
- Parmar等人(2018)仅。这种局部多头点积自注意力模块可以完全卷积。
- Sparse Transformers (Child等人,2019年)。
- 另一种衡量注意力的方法是将注意力应用于不同大小的块中(Weissenborn等人,2019),在极端情况下,只沿单轴应用注意力。
- 这些特殊的注意力结构在计算机视觉任务中表现出了希望的结果,但在硬件加速器上有效地实现了复杂的工程。
- 与本文最相关的是Cordonnier等人(2020)模型,该模型。这个模型非常相似ViT,然而,本文的工作进一步证明了大规模的预训练使普通人变得普通transformer与最先进的CNN竞争(甚至更好)。Cordonnier等人(2020)使用2 ×2像素的小块尺寸,这个。
- 人们对我也很感兴趣,比如增强图像分类的特征图,或者,例如,对象检测、视频处理、图像分类、无监督对象发现或统一文本视觉任务。
- 另一个最近的相关模型是图像GPT (iGPT),在降低图像分辨率和颜色空间后transformer应用于图像像素。,在ImageNet最大精度为72%。
- 本文的工作。使用额外的数据源可以在标准基准上取得最先进的结果。此外,孙等人(2017)研究过CNN性能与数据集模成比例;Djolonga等人(2020)对来自大规模数据集(如ImageNet-21k和JFT-300M)的CNN迁移学习进行了实证研究。本文也关注后两个数据集,但是训练transformer而不是先前工作中使用的基于ResNet的模型。
METHOD
-
在模型设计中,本文尽可能遵循原始transformer。这种有意简化的设置的一个优点是,可扩展的NLP transformer架构及其高效实现几乎可以直接使用。
-
ViT将输入图片分为多个patch(16x16),再将每个patch投影为固定长度的向量送入Transformer,后续encoder的操作和原始Transformer中完全相同。但是因为对图片分类,因此在输入序列中加入一个特殊的token,该token对应的输出即为最后的类别预测
-
视觉transformer(VIT)
-
该模型的概述如下图所示。标准变换器接收token embeddings的一维序列作为输入。为了处理2D图像,本文将图像 x ∈ R H × W × C x ∈ R^{H×W×C} x∈RH×W×C整形为一系列平坦的2D patch x p ∈ R N × ( P 2 ⋅ C ) x_p∈R^{N×(P^2·C)} xp∈RN×(P2⋅C),其中(H,W)是原始图像的分辨率,C是通道数,, N = H W / P 2 N=HW/P^2 N=HW/P2是得到的patch数,它也用作transformer的有效输入序列长度。transformer通过其所有层使用恒定的潜在向量大小D,因此本文。本文将这种投影的输出称为patch embeddings。
- Model overview.本文将图像分割成固定大小的小块,线性嵌入每个小块,添加位置嵌入,编码器。为了执行分类,本文使用标准的方法,。
-
,本文将可学习的嵌入预先计划到嵌入的patch序列( z 0 0 = x c l a s s z_0^0=x_{class} z00=xclass),其在transformer编码器( z L 0 z^0_L zL0)的输出处的状态用作图像表示y.在预训练和微调期间, z L 0 z^0_L zL0上都安装了一个分类头。分类头在预训练时由具有一个隐藏层的MLP实现,在微调时由单个线性层实现。
-
位置嵌入被添加到patch嵌入中以保留位置信息。本文使用标准的可学习一维位置嵌入,因为本文没有观察到使用更高级的2D感知位置嵌入的显著性能增益。嵌入向量的结果序列用作编码器的输入。
-
transformer编码器由多头注意力机制和MLP块.Layernorm (LN)应用于每个块之前,残差连接应用于每个块之后。
-
MLP包含具有GELU非线性的两层:
- KaTeX parse error: Undefined control sequence: \ at position 99: …{(N+1)*D}}(1)\\\̲ ̲z^`_l=MSA(LN(z_…
-
-
一个ViT block可以分为以下几个步骤
-
- patch embedding:例如输入图片大小为224x224,将图片分为固定大小的patch,patch大小为16x16,则每张图像会生成224x224/16x16=196个patch,即输入序列长度为,每个patch维度16x16x3=,线性投射层的维度为768xD (D=768),因此输入通过线性投射层之后的维度依然为196x768,即一共有196个token,每个token的维度是768。这里,因此最终的维度是。到目前为止,已经通过patch embedding将一个视觉问题转化为了一个seq2seq问题.
- positional encoding(standard learnable 1D position embeddings):ViT同样需要加入位置编码,位置编码可以理解为一张表,表一共有N行,N的大小和输入序列长度相同,每一行代表一个向量,向量的维度和输入序列embedding的维度相同(768)。注意位置编码的操作是sum,而不是concat。加入位置编码信息之后,维度依然是.
- LN/multi-head attention/LN:LN输出维度依然是197x768。多头自注意力时,先将输入映射到q,k,v,如果只有一个头,qkv的维度都是197x768,如果有12个头(768/12=64),则qkv的维度是197x64,一共有12组qkv,最后再将12组qkv的输出拼接起来,输出维度是197x768,然后在过一层LN,维度依然是
- MLP:将维度放大再缩小回去,197x768放大为197x3072,再缩小变为。
-
一个block之后维度依然和输入相同,都是197x768,因此可以堆叠多个block。最后会将特殊字符cls对应的输出 z l 0 z_l^0 zl0 作为encoder的最终输出 ,代表最终的image presentation(另一种做法是不加cls字符,对所有的tokens的输出做一个平均),如上公式(4),后面接一个MLP进行图片分类。
-
LayerNorm
-
Norm最开始被提出的时候,是用来的,而后人的研究发现,Norm起作用的本质是它平滑了Loss,保持了梯度下降过程中的稳定。
-
若模型输入层数据分布发生变化,则模型在这波变化数据上的表现将有所波动,输入层分布的变化称为Covariate Shift,解决它的办法就是常说的Domain Adaptation。同理,在深度学习中,第L+1层的输入,也可能随着第L层参数的变动,而引起分布的变动。。
-
ICS所带来的问题
- 。
- 。
-
由于 ICS 问题的存在,x 的分布可能相差很大。要解决独立同分布的问题,“理论正确” 的方法就是。然而标准的白化操作代价高昂,且不可微不利于反向传播更新梯度。因此,以 BN 为代表的 Normalization 方法退而求其次,进行了简化的白化操作。Batch Normalization(以下简称BN)的方法最早由offe&Szegedy在2015年提出,主要用于解决在深度学习中产生的**ICS(Internal Covariate Shift)**的问题。
-
白化
(Whitening)是机器学习里面常用的一种规范化数据分布的方法,主要是PCA白化与ZCA白化。白化是对输入数据分布进行变换,进而达到以下两个目的:- 使得输入特征分布具有相同的均值与方差。其中PCA白化保证了所有特征分布均值为0,方差为1;而ZCA白化则保证了所有特征分布均值为0,方差相同。
- 去除特征之间的相关性。
-
基本思想是:在将 x 送给神经元之前,。
-
h = f ( g ⋅ x − μ δ + b ) , 最 终 得 到 的 数 据 符 合 均 值 为 b 、 方 差 为 g 平 方 的 分 布 。 h=f(g·\frac{x-μ}{\delta}+b),最终得到的数据符合均值为 b、方差为g平方的分布。 h=f(g⋅δx−μ+b),最终得到的数据符合均值为b、方差为g平方的分布。
-
第一步的规范化会将,仅利用到了线性变化能力,从而降低了神经网络的表达能力。而进行再变换,则可以将数据从线性区变换到非线性区,恢复模型的表达能力。
-
-
BN在batch维度的归一化,也就是对于每个batch,该层相应的output位置归一化所使用的mean和variance都是一样的。BN的学习参数包含rescale和shift两个参数。
- 1、BN在单独的层级之间使用比较方便,比如CNN。得像RNN这样层数不定,直接用BN不太方便,需要对每一层(每个time step)做BN,并保留每一层的mean和variance。不过由于RNN输入不定长(time step长度不定),可能会有validation或test的time step比train set里面的任何数据都长,因此会造成mean和variance不存在的情况。
- 2、BN会引入噪声(因为是mini batch而不是整个training set),所以对于噪声敏感的方法(如RL)不太适用。
-
BN的优势总结
- 通过解决ICS的问题,,在这个基础上可以使用较大的学习率,加速了模型的训练速度
- 起到一定的正则作用,进而减少了dropout的使用。当我们通过BN规整数据的分布以后,就
- ,避免梯度消失的问题
-
-
LayerNorm实际就是对隐含层做层归一化,即对某一层的所有神经元的输入进行归一化。(每hidden_size个数求平均/方差)
-
整体做法类似于BN,不同的是LN不是在特征间进行标准化操作(横向操作),而是在整条数据间进行标准化操作(纵向操作)。
-
LN使得各条数据间在进行标准化的时候相互独立,因此LN在训练和测试过程中是一致的。LN不需要保留训练过程中的 μ , σ 2 \mu,\sigma^2 μ,σ2 ,每当来一条数据时,对这条数据的指定范围内单独计算所需统计量即可。
-
l a y e r N o r m ( x ) = α ⊙ x − μ σ 2 + ε + β 其 中 层 计 算 均 值 : μ l = 1 H ∑ i = 1 H x i l , 其 中 x l = w i l h l 方 差 : σ l = 1 H ∑ i = 1 H ( x i l − μ l ) 2 layerNorm(x)=α\odot\frac{x-μ}{\sqrt{\sigma^2+\varepsilon}}+\beta\\ 其中层计算均值:μ^l=\frac{1}{H}\sum_{i=1}^Hx_i^l,其中x^l=w_i^lh^l\\ 方差:\sigma^l=\sqrt{\frac{1}{H}\sum_{i=1}^H(x_i^l-μ^l)^2} layerNorm(x)=α⊙σ2+ε x−μ+β其中层计算均值:μl=H1i=1∑Hxil,其中xl=wilhl方差:σl=H1i=1∑H(xil−μl)2
-
-
-
Inductive bias.
- 本文注意到,。在细胞卷积神经网络中,局部性、二维邻域结构和平移等价性贯穿于整个模型的每一层。在ViT中,。二维邻域结构的使用非常少:在模型开始时将图像切割成小块,。除此之外,。
-
Hybrid Architecture.
- 作为原始图像补片的替代,输入序列可以由CNN的特征图形成。在这个混合模型中,patch嵌入投影E应用于从CNN特征图提取的patch。作为一种特殊情况,。如上所述添加cls输入嵌入(对标NLP数据输入)和位置嵌入。
-
FINE-TUNING AND HIGHER RESOLUTION
- 通常,在大型数据集上预先训练ViT,并针对(较小的)下游任务进行微调。为此,本文去掉预训练的预测头,附加一个零初始化的D × K前馈层,其中K是下游类的个数。
- 在。当输入更高分辨率的图像时,本文保持patch大小不变,这导致更大的有效序列长度。视觉transformer可以处理任意的序列长度(直到存储器限制),。因此,。注意,这种。
EXPERIMENTS
-
本文评估了ResNet、视觉transformer(ViT)和混合模型的表征学习能力。为了解每个模型的数据需求,本文在不同大小的数据集上进行预训练,并评估许多基准测试任务。。最后,本文进行了一个使用自我监督的小实验,并表明自我监督的ViT具有未来的希望。
-
SETUP
- Datasets.
- 为了探索模型的可扩展性,本文使用了具有1千个类和130万图像的ILSVRC-2012 ImageNet数据集,其具有21000类和1400万图像的超集ImageNet-21k,以及具有18000类和3.03亿高分辨率图像的。
- 本文根据科列斯尼科夫等人(2020)的下游任务测试集,。本文将这些数据集上训练的模型转移到几个基准任务:原始验证标签和清理后的真实标签上的ImageNet,CIFAR-10/100,Oxford-IIIT Pets ,以及Oxford Flowers-102 。对于这些数据集,预处理遵循科列斯尼科夫等人(2020,Big transfer (BiT): General visual representation learning)。
- 本文还对19任务VTAB分类套件进行了评估。VTAB评估不同任务的低数据传输,每个任务使用1000个训练示例。任务分为三组:自然任务,如上述任务,宠物,CIFAR等。专业化的任务——医疗和卫星图像,以及结构化的任务——需要像定位这样的几何理解。
- Model Variants.
- 本文基于BERT 所用的ViT配置,如下表所示。“基本”和“大”模型直接采用了BERT的模型,本文添加更大的“巨大”模型。
- Vision Transformer型号变体的详细信息。
- 在下文中,本文使用简单的符号来表示模型大小和输入patch大小:例如,ViT-L/16表示具有16 × 16输入面片大小的“大”变体。请注意,transformer的序列长度与patch大小的平方成反比,因此patch大小越小的模型计算成本越高。
- 本文基于BERT 所用的ViT配置,如下表所示。“基本”和“大”模型直接采用了BERT的模型,本文添加更大的“巨大”模型。
- 对于基于卷积神经网络的模型,本文使用ResNet,但用Group Normalization(Wu & He,2018年)替换批归一化层(Ioffe和Szegedy,2015年),。这些修改改善了transfer,本文将修改后的模型称为“ResNet (BiT)”。
- 对于混合图,本文将中间特征图以一个“像素”的块大小送入ViT。为了试验不同的序列长度,本文
- (1)或者获取常规ResNet50的阶段4的输出
- (2)或者移除阶段4,在阶段3中放置相同数量的层(保持总层数),并获取该扩展阶段3的输出。
- 对于选项(2)导致4倍的序列长度,以及更昂贵的ViT型号。
- Training & Fine-tuning.
- 本文使用Adam训练所有模型,包括resnet,其中β1 = 0.9,β2 = 0.999,批量大小为4096,并应用0.1的高权重衰减,本文发现这对于所有模型的迁移都是有用的(与常见做法相比,在本文的设置中,Adam对于resnet的效果略好于SGD)。
- 本文使用。对于微调,本文使用具有动量的SGD,批量为512。对于下表中的ImageNet结果,本文以更高的分辨率进行了微调:ViT-L/16为512,ViT-H/14为518,并且还使用了系数为0.9999的平均值。
- Metrics.
- 本文通过 few-shot or fine-tuning 精度来调整下游数据集的结果。微调精确度在对相应数据集进行微调后,捕捉每个模型的性能。通过求解将训练图像子集的(冻结)表示映射到 { − 1 , 1 } K \{-1,1\}^K { −1,1}K个目标向量的正则化最小二乘回归问题,获得了Few-shot精度。
- 这个公式允许恢复封闭形式的精确解。虽然本文主要关注微调性能,但有时本文会使用线性少量采样精度进行快速即时评估,因为微调成本太高。
- Datasets.
-
COMPARISON TO STATE OF THE ART
- 首先将本文最大的模型型号ViT-H/14和ViT-L/16与目前其它工作文献中最先进的CNN进行比较。第一个比较点是Big Transfer(BiT),它用大ResNets执行监督迁移学习。第二个是Noisy Student,这是一个大规模的EfficientNet,使用ImageNet和JFT300M上的半监督学习进行训练,去除了标签。
- 目前,“Noisy Student”在ImageNet上是最先进的,BiT-L 在这里提及的其他数据集上是最好的。所有模型都在TPUv3硬件上进行了训练,本文报告了对每个模型进行预训练所需的TPUv3内核天数,即用于训练的TPU v3内核数(每个芯片2个)乘以训练天数。
- 下表显示了结果。在JFT-300M上预训练的较小的ViT-L/16模型在所有任务上都优于BiT-L(在同一数据集上预训练),同时需要少得多的计算资源来训练。更大的模型ViT-H/14进一步提高了性能,尤其是在更具挑战性的数据集上ImageNet、CIFAR-100和VTAB suite。
- Comparison with state of the art on popular image classification benchmarks.
- 本文报告三次微调运行的平均值和标准偏差。在JFT-300M数据集上预训练的Vision Transformer模型在所有数据集上都优于基于ResNet的基线,而预训练所需的计算资源却少得多。在较小的公共ImageNet-21k数据集上预训练的ViT也表现良好。表中的*号表示Touvron等人(2020年)报告的结果略有改善,为88.5%。
- 有趣的是,与现有技术相比,。然而,本文注意到,,如训练计划、优化器、权重衰减等。本文提供了不同架构的性能与计算的对照研究。最后,在公共ImageNet-21k数据集上预训练的ViT-L/16模型在大多数数据集上也表现良好,同时预训练所需的资源更少:它可以使用具有8个核心的标准云TPUv3在大约30天内进行训练。
- 下图将VTAB任务分解到各自的组中,并在此基准上与以前的SOTA方法进行比较:BiT、是一个在ImageNet和Youtube上共同训练的ResNet,以及是ImageNet上的监督加半监督学习。在自然和结构化任务上,ViT-H/14优于BiT-R152x4和其他方法。在专业化任务上,前两种模式的表现是相似的。
- VTAB在自然、专业和结构化任务组中的表现细分。
-
PRE-TRAINING DATA REQUIREMENTS
- 视觉transformer在大型JFT-300M数据集上进行预训练时表现良好。与ResNets相比,视觉的归纳偏差更少,数据集的大小有多重要?本文进行了两个系列的实验。
- 首先,本文在不断增加的数据集上预训练ViT模型:ImageNet、ImageNet-21k和JFT300M。为了提高较小数据集的性能,本文优化了三个基本的正则化参数——权重衰减、损失函数和label smoothing。
- 下图显示了微调到ImageNet后的结果(其他数据集的结果如下表所示)。当在最小的数据集ImageNet上进行预训练时,。用ImageNet-21k预训练,他们的表现差不多。只有使用JFT-300M,才能看到大型机型的全部优势。下图还显示了不同尺寸的位模型所跨越的性能区域。在ImageNet上,比特CNN优于ViT,但是在更大的数据集上,ViT超过了它。
- Transfer to ImageNet. 虽然在小数据集上进行预训练时,大型ViT模型的性能比BiT ResNets(阴影区域)差,但在大型数据集上进行预训练时,它们会大放异彩。同样,随着数据集的增长,较大的ViT变体会超过较小的。
- 在ImageNet、ImageNet-21k或JFT300M上进行预训练时,Vision Transformer在各种数据集