【Paper Note】An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

论文信息

文章题目:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
作者:Dosovitskiy, A., Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, M. Dehghani, Matthias Minderer, Georg Heigold, S. Gelly, Jakob Uszkoreit and N. Houlsby
时间:2020
来源:ICLR 2021 / ArXiv
paper:http://arxiv.org/pdf/2010.11929v1
code:https://github.com/google-research/vision_transformer , https://github.com/lucidrains/vit-pytorch , https://github.com/likelyzhao/vit-pytorch
引用:Dosovitskiy, A., Beyer, L., Kolesnikov, A., et al (2020). An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale.ArXiv, abs/2010.11929.

总体认知

  • 研究的基本问题
    Transformer直接应用于图像领域,进行图像分类任务,而不修改Transformer架构,也不使用CNN。
  • 主要想法
    image分割成大小一致的patch,对应于NLP中的token,再将其进行嵌入表示,成为Transformer的输入。在patch前加入一个class表示,对应全局信息(图片分类),进行最终的预测。
  • 结果与结论
    在中规模数据上,表现一般。在大规模数据集预训练下,表现优异。且节省训练开销。
  • 不足与展望
    1.无法保留图像的二维结构信息(局部特性,归纳偏置),要依靠大量数据来弥补。
    2.预训练与微调的开销问题。如何更有效利用自监督的预训练。
    3.将transformer应用于cv中的其他领域。

Introduction

先前的研究,attention经常要跟CNN结合使用,而在本篇文章中,在图像块(image patches)的序列上应用纯粹的Transformer模型也可以表现得很好。

将一个标准Transformer直接应用到图像上,尽可能少的修改。为此,我们将图像分割成小块,并将这些块转化为线性嵌入序列,作为Transformer的输入。图像块(image patches)就相当于NLP任务中的单词(token)来做处理。并以有监督的方式训练图像分类模型。

当在中等规模的数据集(如ImageNet)上进行训练时,模型的准确率比同等规模的resnet低几个百分点。这一看似令人沮丧的结果是意料之中的:Transformer缺乏cnn所固有的一些归纳偏置(inductive biases),如平移不变性(translation equivariance)和局部性(locality),因此在数据量不足的情况下训练时不能很好地泛化

然而,如果在更大的数据集(1400 -300万张图像)上训练模型,情况就会发生变化。我们发现大规模的训练可以克服归纳偏置(inductive biases)。当ViT在足够的规模上进行预先训练,并迁移到具有较少数据量的任务时,可以获得出色的结果。

Method

VISION TRANSFORMER (VIT)

在这里插入图片描述

预处理

将一张图片(H×W×C)分割为N个图像块(P×P×C),图像块长宽为P和P,那么 N = ( H ∗ W ) / P 2 N=(H*W)/P^2 N=(HW)/P2
再把每个图像块展平后连接得到一个N×P^2×C的二维矩阵,这样就可以作
为Transformer的输入了。

在这里插入图片描述

但有一个问题,因为P是不固定的,那么得到的的每个patch的向量长度也是不一样的,为了模型不受patch size 大小的影响,作者引入了Linear Projection of Flattened Patches来把每个 P 2 × C P^2×C P2×C 维的patch大小线性映射成固定的D维,就是上图的淡粉色椭圆;

左边的淡紫色椭圆的就是transformer里面的位置编码,目的是为了方便增加注意力权重。在原文中作者提到,位置编码的维度大小是1D还是2D没什么太大区别,所以作者直接将位置编码和patches以同一个维度1D相结合了。

标准的接受token的一维嵌入向量作为输入。为了处理二维数据,要进行reshape。
原始图像输入:(H,W)是图片分辨率,C是通道数
x ∈ R H × W × C \mathrm{x}\in\mathbb{R}^{\mathrm{H}\times\mathrm{W}\times\mathrm{C}} xRH×W×C
reshape之后,变为

其中P是patch的大小,N是patch的个数(Transformer的有效输入序列长度)
x p ∈ R N × ( P 2 . C ) \mathbf{x}_{p}\in\mathbb{R}^{N\times(P^{2}.C)} xpRN×(P2.C)

flatten the patches然后利用可训练的线性投影E映射到D维
z 0 = [ x c l a s s ; x p 1 E ; x E 2 ; ⋯   , x E N ] + E p o s , E ∈ R ( P 2 ⋅ C ) × D , E p o s ∈ R ( N + 1 ) × D . \mathbf{z}_0=\left[\mathbf{x}_{\mathrm{class}};\mathbf{x}^1_\mathbf{p}\mathbf{E};\mathbf{x}^2_\mathbf{E};\cdots,\mathbf{x}^N_\mathbf{E}\right]+\mathbf{E}_{\mathrm{pos}},\mathbb{E}\in\mathbb{R}^{\left(\mathbf{P}^2\cdot\mathbf{C}\right)\times\mathrm{D}},\mathbf{E}_\mathrm{pos}\in\Bbb{R}^{(\mathbf{N}+1)\times\mathrm{D}}. z0=[xclass;xp1E;xE2;,xEN]+Epos,ER(P2C)×D,EposR(N+1)×D.

在这里插入图片描述

映射后的结果称为 patch embeddings。
在patch前面添加一个可学习的xclass,代表着图片的标签信息(全局信息)

特征处理

在这里插入图片描述

  • L×:重复L次这个结构
  • Norm(LayerNorm,可以简称LN):目的是使特征图满足均值为0,方差为1的分布,加速网络的收敛。对于一个D维的输入X,对其每一个维度进行标准化处理。
    • 由于BN不适合时序长度不固定的情形,所以提出LN,但是BN比LN在图像处理领域更有效.
  • 多头注意力
    • 在这里插入图片描述
  • MLP:先Linear一次维度变为原来四倍,然后Linear维度回去
    • 在这里插入图片描述
    • 比如 z1 就是输入的 z0 先LN标准化后进行多头注意力机制提取特征,然后与 z0进行残差操作,进入公式3的MLP层,之后出来得到 z1

分类

在这里插入图片描述
经过transformer encoder之后,输出的shape仍然是没有变的,但是我们在最初的想法就是在[class]token中保存着特征信息以便分类,所以在MLP Head过程中,我们将输出的shape(197,768)进行切片成需要的分类shape(1,768)。

补充说明

归纳偏差(Inductive bias)

vit比cnn有更少的特定于图像的归纳偏差。在cnn中,局部性、二维邻域结构和平移不变性贯穿整个模型的每一层。在ViT中,只有MLP层是局部和平移等变的,而Self-attention是全局的。二维邻域结构使用地非常少:在模型开始时,将图像切割成小块,并在微调时对不同分辨率的图像进行位置嵌入调整。除此之外,初始化时的位置嵌入不包含块的二维位置信息,所有块之间的空间关系都需要从头学习。

归纳偏差是CNN固有的,

定义:从现实归纳出一定的规则,然后对模型做出相应的约束,从而实现模型的选择。

常见的归纳偏差:

  • 局部相关性:图像的临近元素内容是相关的;
  • 权重共享:图像的不同部分应该用相同方式处理,而不论位置在哪;
  • 平移不变性:注意上面这些归纳偏差在CNN的每一层都会出现的,所以下一层可以继承上一层的空间关系。
  • 然鹅ViT模型中,只有在图像切patch,以及进行高分辨率微调时的2D差值过程会有图像块的位置信息外, 初始化没有位置信息,所以空间信息要从头开始;
  • 另外,只有MLP层有平移不变性和局部相关性,其他没有。
  • 因为ViT模型缺少了归纳偏差,这就导致了在数据集不够大的情况下容易出现过拟合现象,模型的表现效果不如CNN。
    在这里插入图片描述
    可以看到在300M的时候ViT模型还可以继续增长,这说明:

(1)ViT性能上限大于ResTNet,抽象说,在数据量足够大的情况下,注意力机制可以完全替代CNN;

(2)归纳偏置只在中小数据集中做出表现,在大型数据集下,学习相关模式就可以;

transformer和CNN混合结构(Hybrid Architecture)

混合结构是transformer迁移到CV领域的另一种思路,在本文中,作者将原来的图像块patches替换为CNN的feature map,由结果来看,在中小型数据集上,该结构效果不错,但随着数据集的增大,被纯transformer所超过(surprising)

在这里插入图片描述

微调和更高的分辨率 (FINE-TUNING AND HIGHER RESOLUTION)

通常,在大型数据集上预训练ViT,并微调到(较小的)下游任务
为此,我们去掉预先训练的预测头,并附加一个零初始化的D*K前馈层,其中K是下游类的数量
作者对于高分辨率的图像使用了个小trick:训练大模型的时候并没有扩大patch的大小,而是使用相同patch大小,对应的,图像块 N 的个数增多,变为 N’ 。

这样做的结果就是position embedding个数不足。

因为预训练时,position embedding 和 patch embedding 的个数是相同的,然而现在换成了高分辨率图像,patch embedding 个数增多,所以缺少了 N’ - N 个位置编码。

所以作者进行了2D差值解决这个问题。

在这里插入图片描述

transformer的合理性

作者给出的实验结果中,位置编码在每个位置与其他位置的余弦相似度可以看出来,距离越近的图像块更相似,同一行/列的图像块相似度比较大,

而且随着网络深度的增加,MSA的注意力距离达到平衡,并且注意力距离 ≈ CNN中感受大小;

那么就可以说明,transformer在某种情况下和CNN有一定的关系

另外transformer学习到的感兴趣区域和图像中的物体轮廓基本吻合,进一步验证了在CV领域使用transformer的合理性。

实验(EXPERIMENTS)

评估了ResNet、Vision Transformer (ViT)和hybrid的学习能力。为了了解每个模型的数据需求,对不同大小的数据集进行了预训练,并评估了许多基准任务。在考虑模型预训练的计算成本时,ViT表现得非常好,以较低的预训练成本在大多数识别基准上达到了最先进的水平。

setup

数据集(datasets):各种大小的数据集以及测试baseline。
模型变体(Model Variants):基于BERT配置VIT,各种大小的VIT(base,large,huge),patch的大小P也是可调的,P越大,序列长度越小。P越小,长度越长,计算开销越大。
在这里插入图片描述

与当前最佳工作 STATE OF THE ART(SOTA)对比

在流行的图像分类benchmark上与现有技术进行比较
在这里插入图片描述

卷积归纳偏差对于较小的数据集是有用的,但对于较大的数据集,直接从数据中学习相关模式是足够的,甚至是有益的。

结论(CONCLUSION)

探讨了Transformer在图像识别中的直接应用。与之前在计算机视觉中使用Self-attention的工作不同,除了初始的patch提取步骤,我们不引入图像特有的归纳偏差到架构中。相反,我们将图像解释为一系列块,并使用NLP中使用的标准Transformer编码器来处理它。这种简单但可扩展的策略,在与大型数据集的预训练相结合时,效果惊人地好。因此,视觉Transformer 在许多图像分类数据集上匹配或超过了最先进的水平,同时相对低成本地进行预训练。

仍然存在许多挑战。一种是将ViT应用于其他计算机视觉任务,如检测和分割。我们的研究结果,以及Carion等人(2020年)的研究结果,表明了这种方法的前景。另一个挑战是继续探索自监督的预训练方法。我们的初步实验表明,自监督的预训练有所改善,但自监督的预训练与大规模监督的预训练之间仍有很大的差距。最后,进一步扩展ViT可能会提高性能。

参考https://zhuanlan.zhihu.com/p/422144659

代码

可以查看【深度学习】详解 Vision Transformer (ViT)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据科技情报大数据挖掘与服务系统平台AMiner从人工智能领域国际顶会/期刊中提取出的“卷积神经网络”相关关键词,筛选推荐了100篇经典必读论文,内容包含CNN在检测/识别/分类/分割/跟踪等领域的理论与实践,并按被引用量进行了排序整理。此外,最新的卷积神经网络分类研究进展也会经常出现在计算机视觉相关的国际学术会议和期刊上,例如CVPR、ICCV、ECCV等会议和TPAMI、IJCV等期刊。以下是一些卷积神经网络的参考文献: 1. "ImageNet Classification with Deep Convolutional Neural Networks" by Alex Krizhevsky, Ilya Sutskever, and Geoffrey Hinton (2012) 2. "Very Deep Convolutional Networks for Large-Scale Image Recognition" by Karen Simonyan and Andrew Zisserman (2015) 3. "Going Deeper with Convolutions" by Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich (2015) 4. "Rethinking the Inception Architecture for Computer Vision" by Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, and Zbigniew Wojna (2016) 5. "Deep Residual Learning for Image Recognition" by Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun (2016) 6. "Mask R-CNN" by Kaiming He, Georgia Gkioxari, Piotr Dollar, and Ross Girshick (2017) 7. "YOLOv3: An Incremental Improvement" by Joseph Redmon and Ali Farhadi (2018) 8. "EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks" by Mingxing Tan and Quoc V. Le (2019) 9. "Vision Transformers" by Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, and Neil Houlsby (2020) 10. "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows" by Ze Liu, Yutong Lin, Yue Cao, Han Hu, Yixuan Wei, Zheng Zhang, Stephen Lin, and Baining Guo (2021)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值