(论文翻译)Vision Transformer(视觉Transformer ICLR2021)

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE(ICLR2021)


实验部分详见原文,文章为原文翻译,如有错误请参照原文

摘要

  • 挑战
    • 虽然Tansformer架构再NLP任务上已经成为实际标准,但是它对CV的应用仍存在限制
    • 在视觉中,注意力结合着卷积网络一起应用,或者替换卷积网络的某一部分,同时保持他们的整体结构不变
  • 方法
    • 我们证明了这种对CNN的依赖是不必要的,一种完全应用Tansformer直接将图片patches序列化可以在图形分类任务中性能更好
  • 贡献
    • 当大量数据的预训练并转移到中小型网络(数据集)的识别基准中时(ImageNet, CIFAR-100, VTAB, etc.),ViT对比SOTA卷积网络获得优异的结果,同时需要更少的计算资源训练
    • 预训练模型,微调code:https://github.com/google-research/vision_transformer

1.引言

1st Para: 背景

  • 基于自注意力的架构的Transformer(Vaswani et al., 2017)已经变成NLP的代表性模型
  • 这项领域研究是在大的语料库上预训练,然后在小的特定任务的数据集上进行微调
  • 由于Transformer高效的计算效率与可拓展性,可以在未见过的size上训练超过100B参数的模型
  • 随着模型与数据的发展,仍然没有饱和性能的迹象

2st Para: 挑战

  • 然而,在CV中,卷积架构仍保持统治地位
  • 受NLP的成功所鼓舞,多项研究在试图整合自注意力的类CNN架构,有一些完全代替了卷积
  • 在后来的模型中,虽然理论有效,但是由于使用了特定注意力模式仍没有在现代硬件加速器(如GPU)上有效的拓展
  • 因此,在大规模的图像识别中,经典的ResNet架构仍保持SOTA

3st Para: 方法

  • 受Transformer在NLP领域扩展的启发,我们进行了实验将标准Transformer做最小的修改直接用在图片上
  • 为了这么做,我们将图片分成多个patches并将patches的线性嵌入序列化作为Transformer的输入
  • 图像patches相当于NLP应用的tokens
  • 我们用有监督方式在图像分类任务上训练模型

4st Para: 存在的问题

  • 在中等规模数据集(如ImageNet)上不用强正则化训练时,这些模型准确率相比于RexNets低了几个百分点
  • 这中看似令人沮丧的结果可能是预料之中的,Transformers相比于CNNs缺乏归纳偏好(由网络自身的结构、参数设置等因素赋予网络特有的能力),例如平移等变性和局部性(平移等变性指图像中物体的位置变化不影响CNN的识别能力,局部性指CNN更关注图像中的局部特征而非整体图像),因此在训练不够充足的数据时没有很好的泛化性

5st Para: 贡献

  • 然而,如果模型在更大的数据集(14M-300M图像)上训练,图像就会发生变化
  • 我们发现大规模训练相比于归纳偏好更加重要
  • 我们的ViT在充足规模的预训练与转移到数据点较少的任务上获得了优异的效果
  • 在ImageNet-21K与JFT-300M的预训练中,ViT在多种图像识别数据集中超越了SOTA
  • 尤其是,最好的模型在ImageNet达到了88.55%,ImageNet-ReaL达到90.72%,CIFAR-100达到94.55%,77.63% on the VTAB suite of 19 tasks

2.相关工作

3.方法

  • 在模型设计中,我们尽可能接近原始Transformer
  • 这种有意的简单的设置的有点是可伸缩性NLP的Transformer架构与有效的实现,可以做到开箱即用

3.1.VISION TRANSFORMER (VIT)

在这里插入图片描述

Figure 1:Model overview. We split an image into fixed-size patches, linearly embed each of them, add position embeddings, and feed the resulting sequence of vectors to a standard Transformer encoder. In order to perform classification, we use the standard approach of adding an extra learnable “classification token” to the sequence. The illustration of the Transformer encoder was inspired by Vaswani et al. (2017).

1st Para: 方法描述

  • 模型概括在Figure 1.
  • 标准Transformer将token embedding的 1D序列作为输入
  • 为了处理 2D图像,我们将图像 x ∈ R H × W × C \mathbf{x}\in\mathbb{R}^{H\times W\times C} xRH×W×C reshape为展平的 2D patches的序列 x p ∈ r N × ( P 2 ⋅ C ) \mathbf{x}_p\in\mathbb{r}^{N\times(P^2\cdot C)} xprN×(P2C) ,其中 ( H , W ) (H,W) (H,W) 是原始图像的分辨率, C C C 为通道数, ( P , P ) (P,P) (P,P) 是每一个patches的分辨率, N = H W / P 2 N=HW/P^2 N=HW/P2 为patches的数量,它被当作Transformer的有效输入序列
  • Transformer使用恒定的潜在向量尺寸 D D D 在所有层,所以我们展平patches并用 Linear头( E \mathbf{E} E)映射到 D D D

z 0 = [ x c l a s s ; 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) \mathbf{z}_0=[\mathbf{x}_{\mathrm{class}};\mathbf{x}_p^1\mathbf{E};\mathbf{x}_p^2\mathbf{E};\cdots;\mathbf{x}_p^N\mathbf{E}]+\mathbf{E}_{pos},\quad\mathbf{E}\in\mathbb{R}^{(P^2\cdot C)\times D},\mathbf{E}_{pos}\in\mathbb{R}^{(N+1)\times D} \tag{1} z0=[xclass;xp1E;xp2E;;xpNE]+Epos,ER(P2C)×D,EposR(N+1)×D(1)

z ′ ℓ = M S A ( L N ( z ℓ − 1 ) ) + z ℓ − 1 , ℓ = 1 … L (2) \mathbf{z'}_\ell=\mathrm{MSA}(\mathrm{LN}(\mathbf{z}_{\ell-1}))+\mathbf{z}_{\ell-1},\quad\ell=1\ldots L \tag{2} z=MSA(LN(z1))+z1,=1L(2)

z ℓ = M L P ( L N ( z ′ ℓ ) ) + z ′ ℓ , ℓ = 1 … L (3) \mathbf{z}_\ell=\mathrm{MLP}(\mathrm{LN}(\mathbf{z'}_\ell))+\mathbf{z'}_\ell,\quad\ell=1\ldots L \tag{3} z=MLP(LN(z))+z,=1L(3)

  • 我们将投影的输出作为patch embedding

y = L N ( z L 0 ) (4) \mathbf{y}=\mathrm{LN}(\mathbf{z}_L^0) \tag{4} y=LN(zL0)(4)

2st Para: class token

  • 与Bert的class token相似,我们设计了一个可学习的embedding到embedding patches序列中, z 0 0 = x c l a s s \mathbf{z}_0^0=\mathbf{x}_{\mathbf{class}} z00=xclass ,Transformer encoder( z L 0 \mathbf{z}_L^0 zL0)的输出作为图像的表示 y \mathbf{y} y​ (Eq. 4
  • 在预训练与微调期间,分类头连接在 z L 0 \mathbf{z}_L^0 zL0
  • 分类头由MLP实现

3st Para: position embedding

  • 位置编码被加入到patch embeddings用于得到位置信息
  • 我们使用标准可学习的 1D position embedding,因为我们没有观察到使用更先进的 2D感知位置嵌入的显著性能提升
  • 得到的嵌入向量序列作为编码器的输入

4st Para: 模型框架

  • Transformer encoder由交替的多头自注意力(MSA)与MLP block组成(Eq. 2,3)
  • Layernorm(LM) 在每个block前被应用,每个块后做残差连接
  • MLP包含两个带有含有GELU激活函数层的

5st Para: Inductive bias

  • 我们提出,ViT相比于CNN具有更少的图像特定的归纳偏好(Vision Transformer没有像CNN那样针对图像特征的特定假设或偏好,它更加通用,可能更适合处理各种类型的输入数据而不仅仅是图像)
  • 在CNNs中,局部性(意味着CNN关注数据的局部区域,而不是整体数据。这种设计使得CNN能够更好地捕获图像或其他数据中的局部特征),二维邻域结构(表示CNN中的卷积操作是在数据的二维邻域上进行的,这与图像等二维数据的特点相吻合)与平移不变性(意味着如果图像中的对象在空间上移动,CNN的输出应该相应地保持相对位置不变。这种性质使得CNN对于图像中物体的位置变化具有一定的鲁棒性)通过模型嵌入到每一层
  • 在ViT中,只有MLP层是局部与平移不变的,而自注意力是全局的
  • 二维邻域结构的使用很少,在模型初始阶段通过将图片分成patches,在微调阶段调整不同分辨率图像的位置嵌入
  • 除此之外,初始化时的位置嵌入不携带关于patch的二维位置信息,所有patch之间的空间关系都需要从头学习

6st Para: Hybrid Architecture

  • 作为原始图像patches的另一种方案,输入序列可以由CNN特征映射形成
  • 在这个混合模型中,patch embedding投影 E \mathbf{E} E(Eq. 1)被应用到CNN特征映射提取的patch上
  • 作为特例,patches可以是size 1x1,这意味着输入序列是由简单的展平特征映射的空间维度并映射到Transformer维度得到的
  • 分类输入embedding与position embedding加入到以上步骤

3.2.FINE-TUNING AND HIGHER RESOLUTION

  • 特别的,我们在大数据集上预训练ViT并微调到下游任务
  • 对此,我们去掉预训练投影头,加入初始化为零的 D × K D\times K D×K feedforward layer, K K K 代表下游任务类别数
  • 在更高的分辨率下进行微调通常比预训练更有益
  • 当喂入高分辨率图像时,我们保持patch size相同,这会导致很大的有效序列长度
  • ViT可以处理任意序列长度,然而,预训练的position embedding可能不在有意义
  • 因此,根据原始图片中他们的位置,我们执行预训练位置嵌入的二维插值
  • 注意,分辨率调整与patch的提取是将有关图像二维结构的归纳偏好手动注入到Vision Transformer中的唯一时机

4.实验

5.结论

1st Para: 贡献

  • 我们已经探索Transformer在图像识别上的应用
  • 不同于先前的工作使用自注意力在CV中,除了初始的patch提取步骤外,我们没有将特定于图像的归纳偏好引入架构中
  • 另外,我们将图片当作patch的序列,通过标准的Transformer encoder处理
  • 在大数据集上预训练时,这种简单可扩展的策略效果出奇的好
  • 那么,ViT持平与超越了汗多SOTA方法在图像分类数据集上,同时预训练也相对简单

2st Para: 未来展望

  • 虽然这些初步结果令人鼓舞,但仍存在许多挑战
  • 其一,应用ViT到检测与分割任务
  • 我们的结果再加上Carion等人(2020)的研究,表明了这种方法的前景
  • 其二,继续探索自监督的预训练方法
  • 我们的初步实验显示了自监督预训练的提升,但自监督预训练与大规模监督预训练之间仍有很大差距
  • 最后,进一步扩展ViT可能会提高性能
  • 35
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值