内容纲要

这是一篇投稿ICLR2021的文章。图像对CNN的依赖不是必要的,并且将纯transformer直接应用于图像patch序列可以很好地执行图像分类任务。当对大量数据进行预训练并将其传输到中等大小或较小的图像识别基准(ImageNet,CIFAR-100,VTAB等)时,与最先进的卷积网络相比,Vision Transformer(ViT)可获得出色的结果,同时训练所需的计算资源也大大减少。

Introduction

Transformer的计算效率和可伸缩率,可以训练很大的模型,比如超过100B的参数,当模型和数据集增加时,仍然没有饱和的现象。
受transformer在NLP上的启发,我们使用transformer用在图像分类上,只做了很少的改动:把图片分成patches,提供这些patches的线性嵌入作为transformer的输入。图像pates在NLP应用中和tokens相似,我们以监督的方式来训练。

当在中等大小的数据集(例如ImageNet)上进行训练时,此类模型的精度低于可相似尺寸的ResNets几个百分点。 这可能会产生令人沮丧的结果:transformer缺少CNN固有的一些归纳偏差,例如平移和局限性,因此效果表达不好,当数据量不充足时。

然而,当在大型数据集上训练时(14M-300M)训练时,我们发现大规模训练可以越过传导偏差。我们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等人提出的,进行机器翻译,并已成为许多NLP任务中最先进的方法。 基于大型transformer的模型通常在大型语料库上进行预训练,然后针对手头的任务进行微调:使用去噪自我监督的预训练任务,而GPT使用语言建模作为其预训练任务。
朴素的自注意力通常需要每个像素都与每个其他像素相比较。由于像素数成倍增加,因此无法缩放到实际的输入大小。 因此,为了在图像处理的上下文中应用transformer,过去曾提出过几种近似方法,这样的局部多头点积自关注块可以完全取代卷积。另外,稀疏transformer采用可缩放的近似值来全局自适应,以便适用于图像。 这些专业注意力架构中的许多架构在计算机视觉任务上显示出可喜的成果,但需要在硬件加速器上有效地实施复杂的工程。
同时还有结合CNN和各种attention。
相似的还有iGPT,应用transformer到图像像素,通过见到图像分辨率到颜色空间。同时它是以无监督的方式训练。

Transformer

transformer的解读文章很多了:https://baijiahao.baidu.com/s?id=1651219987457222196&wfr=spider&for=pc
zhu主要是self-attention

Method

model overview

file

ViT

首先将图像分成小块,数量为N,作为Transformer的输入。Transformer使用大小为D的向量作为层,因此我们可以得到一些列线性投影的D维嵌入。我们将此投影的输出称为面片嵌入。
和BERT相似,我们在嵌入补丁的序列之前添加了可学习的嵌入z作为token,表述Transformer encoder的输出,充当图像的表达。在预训练和微调阶段,分类头都是依附于Z0l。分类头是多层感知器,在预训练时有一个隐含层,在fine-tuning时只是一个单独的层。
同时加入位置嵌入来保留位置信息。我们使用标准的1D位置嵌入,因为@D嵌入并没有显着提高性能。

transformer encoder包含多头注意力和MLP层。MLP包含2个层,和GELU非线性。
file

FINE-TUNING AND HIGHER RESOLUTION

删除预训练的预测头并附加零初始化的前向层D * K。当提供更高分辨率的图像时,我们将补丁大小保持不变,这会导致更大的有效序列长度。 不过Tranformer可以处理任意序列长度(直到内存限制),但是,预训练的位置嵌入可能不再有意义。 因此,我们根据预训练位置在原始图像中的位置,对预训练的位置嵌入执行2D插值。

Result

file

真是财大气粗,batch——size=4096

最后修改日期:2020年10月27日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。