【论文笔记】An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT)

本文主要是介绍【论文笔记】An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【论文笔记】An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale(Vision Transformer, ViT)

  • 文章题目: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中的其他领域。

理性认识

1. 摘要(abstract)

尽管Transformer架构已经在自然语言处理领域大杀特杀,但是在计算机视觉领域只有有限的应用。在视觉领域中,注意力机制要么与卷积网络结合使用,要么在保持整体结构不变的情况下,替换卷积网络的某些组件。我们证明了,对CNN的依赖不是必要的,在图象识别任务中,在图像块(image patches)的序列上应用纯粹的Transformer模型也可以表现得很好。当使用大量数据进行预训练,再迁移到多个中小型图象识别基准库后,ViT得到了优异的结果,相比于最先进(SOTA)的卷积网络,而训练所需要的计算资源更少。

2. 引言(INTRODUCTION)

基于Self-attention的架构,特别是Transformer,已经成为自然语言处理(NLP)的不二选择。其主要方法是在一个大型文本语料库上进行预训练,然后在一个较小的特定于任务的数据集上进行微调。得益于Transformer的计算效率和可扩展性,它可以训练具有超过100B的参数的超大模型。而且随着模型和数据集的增长,性能仍然没有饱和的迹象。

当然,在计算机视觉中,卷积仍然占主导地位。受NLP成功的启发,许多工作尝试将Self-attention融合进cnn架构,甚至一些人使用Self-attention替换卷积。后一种模型虽然理论上有效,但还没有在现代硬件加速器上得到有效扩展。因此,在大规模图像识别中,经典的ResNet(残差网络)式结构仍然是最先进的。

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

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

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

3.相关工作

Transformer是由Vaswani等人提出,应用于机器翻译,并已成为许多自然语言处理任务中最先进的方法。基于Transformer的大型模型通常在大型语料库上进行预先训练,然后针对当前的任务进行微调。

单纯地对图像进行Self-attention需要每两个像素计算attention。这是像素的平方倍的开销。为了将Transformer应用到图像中,尝试许多近似方法。Parmar等人对每个query像素只在局部邻域计算Self-attention,而非全局。这种局部多头点积Self-attention块可以完全替代卷积。其他的,稀疏Transformer采用可扩展的近似全局Self-attention,以适用于图像。计算attentio的另一种方法是将其应用于不同大小的块中,在极端情况下,仅沿着单个轴。这些专门的注意力架构在计算机视觉任务中表现出了很好的效果,但需要复杂的工程设计。

最为相关的是Cordonnier等人的模型,该模型从输入图像中提取大小为2 × 2的小块,并在之上使用完全的Self-attention。这个模型与ViT非常相似,但我们的工作进一步证明,大规模的预培训可以使香草Transformer与最先进的cnn竞争(甚至更好)。此外,Cordonnier 使用的是2 × 2像素的小块,这使得该模型仅适用于小分辨率的图像,而我们也可以处理中等分辨率的图像。

最近的另一种相关模型是image GPT (iGPT),它在降低图像分辨率和颜色空间后,对图像像素使用Transformer。该模型以无监督的方式作为生成模型进行训练,然后可以对结果表示进行微调或线性探测以提高分类性能,在ImageNet上达到72%的最大精度。

4.方法(Method)

在模型设计中,尽可能地遵循原Transformer结构。这样做的优点是可扩展性和易实现——几乎可以开箱即用。

4.1 VIT

结构图:
结构

标准的接受token的一维嵌入向量作为输入。为了处理二维数据,要进行reshape。
原始图像输入:(H,W)是图片分辨率,C是通道数 x  ∈ R H × W × C \text{x\ }\in \ \mathbb{R}^{H\times W\times C}  RH×W×Creshape(分割patch):P是patch的大小,N是patch的个数 x  ∈ R N × ( P 2 ⋅ C ) , N = H W / P 2 \text{x\ }\in \ \mathbb{R}^{N\times \left( P^2\cdot C \right)} , N=HW/P^2  RN×(P2C)N=HW/P2flatten(拍平,映射成Transformer接受的固定大小D,映射E是可学习的): 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 \mathbf{z}_0=\left[ \mathbf{x}_{class};\mathbf{x}_{p}^{1}\mathbf{E;x}_{p}^{2}\mathbf{E;}\cdots ;\mathbf{x}_{p}^{N}\mathbf{E} \right] +\mathbf{E}_{pos}\ ,\ \mathbf{E}\in \mathbb{R}^{\left( P^2\cdot C \right) \times D},\ \mathbf{E}_{pos}\in \mathbb{R}^{\left( N+1 \right) \times D} z0=[xclass;xp1E;xp2E;;xpNE]+Epos , ER(P2C)×D, EposR(N+1)×D映射后的结果称为 patch embeddings。
在patch前面添加一个可学习的xclass,代表着图片的标签信息(全局信息)

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

混合结构(Hybrid Architecture):输入序列可以由CNN的feature map组成,从而替代原始图像块。在这个混合模型中,将patch embedding 应用于从CNN feature map中提取的patches。作为一种特殊情况,patches的尺寸可以是1x1,即简单地将feature map平坦化,并映射到Transformer的尺寸即可得到输入序列。如上所述添加分类输入嵌入和位置嵌入。

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

通常,在大型数据集上预训练ViT,并微调到(较小的)下游任务。为此,我们去掉预先训练的预测头,并附加一个零初始化的D*K前馈层,其中K是下游类的数量。在输入高分辨率的图像时,我们保持了相同的patch大小,从而得到了更大的有效序列长度。视觉转换器可以处理任意序列长度(达到内存限制),然而,预先训练的位置嵌入不再有意义。因此,我们根据预先训练好的位置嵌入在原始图像中的位置,对其进行二维插值。分辨率调整和块提取是唯一一处人工将图像二维结构的归纳偏置注入vit的地方。

5.实验(EXPERIMENTS)

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

5.1 setup

数据集(datasets):各种大小的数据集以及测试基准。
模型变体(Model Variants):基于BERT配置VIT,各种大小的VIT(base,large,huge),patch的大小P也是可调的,P越大,序列长度越小。P越小,长度越长,计算开销越大。
尺寸

训练和微调(Training & Fine-tuning.):模型的参数配置,见附录。

5.2 与SOTA比

结果

6.结论(CONCLUSION)

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

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

小尾巴

1.归纳偏置
2.自监督预训练
3.像素级别的图像应用

重点相关论文

1.Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, 2017.
Transformer 的提出,祖师爷

2.Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In NAACL, 2019.
BERT 模型,这篇论文中大量的设计来自BERT,如xclass标志位,自监督预训练等

3.Jean-Baptiste Cordonnier, Andreas Loukas, and Martin Jaggi. On the relationship between selfattention and convolutional layers. In ICLR, 2020.
像素级,小块级别的attention,和vit很一致

4.Mark Chen, Alec Radford, Rewon Child, Jeff Wu, and Heewoo Jun. Generative pretraining from pixels. In ICML, 2020a.
像素级别,使用Transformer的图像生成模型

参考列表

1.https://blog.csdn.net/weixin_38443388/article/details/113059350
2.https://zhuanlan.zhihu.com/p/336911305
3.https://blog.csdn.net/qq_16236875/article/details/108964948
4.https://zhuanlan.zhihu.com/p/273652295
5.https://blog.csdn.net/weixin_44106928/article/details/110268312
6.https://blog.csdn.net/moxibingdao/article/details/109127507
7.http://www.360doc.com/content/21/0126/16/73546223_959052179.shtml
8.http://www.360doc.com/content/21/0116/16/32196507_957302113.shtml
9.https://zhuanlan.zhihu.com/p/266311690
10.https://openreview.net/forum?id=YicbFdNTTy

这篇关于【论文笔记】An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/702851

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

HDUPlay on Words

1.定理:无向图G有欧拉通路的充分必要条件是G为连通图,并且G仅有两个奇度结点或者无奇度结点。 (1)当G是仅有两个奇度结点的连通图时,G的欧拉通路必以此两个结点为端点。 (2)当G是无奇度结点的连通图时,G必有欧拉回路。 2.一个有向图D具有欧拉通路,当且仅当D是连通的,且除了两个顶点外,其余顶点的入度均等于出度,这两个特殊的顶点中,一个顶点的入度比出度大1,另一个顶点的入度比出度小1

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓