论文解析:一文弄懂Vision Transformer!
目录
一、相关资源
二、Motivation
三、技术细节
1.借鉴BERT,使用CLS
2.位置编码(Position embeddings)
3.归纳偏置(Inductive bias)
4.模型处理高分辨率图像方法(2D插值法)
四、网络结构及工作流程
1.网络结构
(1)Embedding层
(2)Transformer Encoder
(3)MLP Head
2.工作流程
五、实验过程
1.不同网络结构在数据集上表现
2.主要对比resNet和ViT
3.ViT模型中间数据可视化
六、创新点
1.引入Transformer模型到计算机视觉领域
2.分块策略(Patch Embedding)
3.图像与文本结合
七、启发/idea
1.全局信息的重要性
2.序列建模的重要性
3.要提高问题迁移和转化能力
一、相关资源
论文题目:AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
链接:[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
参考代码:GitHub - google-research/vision_transformer
二、Motivation
背景:transformer已经成为NLP领域的主流方法,BERT提出来的训练transformer模型方法也成为了主流方法;在计算机视觉领域,卷积神经网络占据主导地位。与此同时,自注意力机制在视觉领域早就有所应用,也有了用注意力去完全取代卷积操作进行图像任务处理。
受Transformer在NLP中成功应用的启发,尝试将标准Transformer直接应用于图像,并尽可能少地进行修改,目的是想证明在大规模数据集上可以使用跟NLP一样的处理逻辑来处理视觉问题。
三、技术细节
方法原则:强调按照传统的transformer迁移到vision领域,目的是证明transformer可以原封不动在vision使用。因为BERT当时已经作为训练transformer的主流方法,所以作者在这里很多技术都借鉴了BERT。
1.借鉴BERT,使用CLS
为了分类,借鉴BERT里面的token,这里的具体是怎么应用的token操作可以等看完BERT论文再来写
2.位置编码(Position embeddings)
跟BERT用到的位置编码是一样的,使用1-D位置编码,后序作者还用实验证明了使用1-D和2-D对于ViT的效果是一样的。
这里用公式描述了ViT进行embedding的过程:
把卷积过程得到token+位置编码作为transformer输入(z0)放入encoder,然后描述了多头自注意力(zl’)和transformer block输出(zl),经过l层循环后,把最后一层输出的第一个位置zL0作为整体图像的特征,进而做图像的分类任务。
3.归纳偏置(Inductive bias)
ViT比CNN少很多的归纳偏置条件,因此ViT模型跟同等大小的ResNet网络相比要弱一点,“归纳偏置”其实就是一种先验知识,指的一种提前做好的假设。
归纳偏置有两种:
①locality:卷积神经网络是用滑动窗口去卷积处理,假设图片上相邻的区域会有相似的特征。
②平移等变性translation equivariance:其本质可以表示为f(g(x))=g(f(x)),f可以理解为卷积操作,g可以是平移操作。
然而当这种自注意力机制应用到大规模数据集上时,其效果比先验知识CNN的效果会好,后面就讲述了在大规模数据集上的准确率和稳健性。
4.模型处理高分辨率图像方法(2D插值法)
这里采用2D插值方法来实现大分辨率图像分割后位置信息与预训练网络位置信息的适应问题,“其实是一种临时解决方案,算是ViT在微调部分局限的地方”,这里是ViT唯一使用2D的归纳偏置方法。
四、网络结构及工作流程
1.网络结构
(1)Embedding层
图像分割:将输入图像分割成多个固定大小的patches(例如16x16像素)。
线性嵌入:每个patch通过线性层转换为固定长度的向量(即patch embeddings)。
位置嵌入:由于Transformer模型本身不具有处理序列位置信息的能力,因此ViT引入了可学习的位置嵌入来弥补这一缺陷。位置嵌入与patch嵌入相加,使模型能够捕捉到图像中不同位置的信息。
(2)Transformer Encoder
编码器层:由多个堆叠的编码器层组成,每个编码器层包含自注意力机制和前馈神经网络。
自注意力机制:能够捕捉到输入序列中所有位置之间的依赖关系,从而提取图像中的全局信息。
前馈神经网络:进一步增强模型的表示能力。
(3)MLP Head
输出层:通常由一个全连接层和一个softmax层组成,用于对输入的表示向量进行分类或回归。
2.工作流程
①将输入图像(224×224×3)分割成多个固定大小的patches(16×16=196块,每块14×14×3=768【1-D处理】),并通过线性嵌入层转换为patch embeddings(X·E=(196×768) × (768×768)=196×768)。
②为每个patch embeddings添加位置嵌入((196+1)×768=197×768),以保留位置信息 。
③将包含位置信息的patch embeddings输入到Transformer Encoder中(输入197×768,输出也是197×768),通过多层堆叠的编码器层处理,提取图像中的全局信息。
④将Transformer Encoder的输出输入到MLP Head中,得到最终的预测结果。
五、实验过程
1.不同网络结构在数据集上表现
左图:最重要的take home message(论文所表达的最核心、最重要的观点或结论),最想让读者知道的是在各种数据集上的对比效果图,其中BiT是各种大小的ResNet,所以这里用区间来表示了。
右图:在同一个数据集(JFT),分别抽取不同数量的数据(10M,30M,100M,300M),避免不同数据集之间的gap,同时不适用额外的regularization,超参数保证相同。linear evaluation是指直接把预训练模型当做特征提取器,不fine-tune,拿提取到的特征直接做logistic regression。
few-shot是指在evaluation的时候,每一类只sample五张图片。可以看到当数据集很小时,CNN预训练模型表现更好,证明了CNN归纳偏置的有效性,但是当数据集足够大时,归纳偏置和Transformer比较就失去了优势,甚至没有归纳偏置,直接从数据learn patterns会更有效。同时细心观察会发现即使预训练的数据集很大,最后ViT的性能提升也不是很明显,因此如何使用ViT来做这种小样本学习任务,是一个有待继续研究的方向
2.主要对比resNet和ViT
Hybrid指的前面是卷积神经网络,后面是卷积神经网络,后面是transformer。
左图是在五个数据集上评估取平均值。
3.ViT模型中间数据可视化
左图:ViT 第一层(linear projection)的前28个主成分,表现E是如何embed RGB value的。
中间:位置编码(Position embedding)的相似性分析(cos),位置越接接近,patches之间的相似度越高;相同行/列的patches有相似的embeddings;后面D4中有详细实验介绍。
右图:为了理解self-attention是如何聚合信息的,基于attention weight计算不同layer不同head的average attention distance。
每一个layer的每一个head的average attention distance,类似于CNN感受野的概念,可以发现一些head在第一个layer就attent到了几乎整张图片的范围。
六、创新点
1.引入Transformer模型到计算机视觉领域
ViT将原本在自然语言处理(NLP)领域广泛应用的Transformer模型成功引入到计算机视觉领域,为图像处理和识别任务提供了一种全新的神经网络架构。
通过自注意力机制,ViT能够捕捉图像中不同位置之间的全局依赖关系,这是传统卷积神经网络(CNN)难以实现的。
2.分块策略(Patch Embedding)
为了应对图像数据的高维度和大尺寸,ViT采用了分块策略,将输入图像分割成多个小块(patches),并在每个小块上应用Transformer模型。这种策略不仅降低了计算复杂度,还使得模型能够处理更大尺寸的图像。
通过分块操作,ViT将图像问题转化为序列问题,使得Transformer模型能够直接应用于图像数据,进一步拓展了Transformer的应用范围。
3.图像与文本结合
ViT不仅限于计算机视觉领域的应用,还可以与文本数据相结合,构建跨模态模型,用于图像和文本的分类、生成等任务。这种跨模态应用为计算机视觉和自然语言处理之间的交互提供了新的思路。
七、启发/idea
1.全局信息的重要性
ViT通过自注意力机制成功捕捉了图像中不同位置之间的全局依赖关系,这证明了在图像处理中,全局信息是非常重要且有益的。
2.序列建模的重要性
将图像分割成小块(patches)并视为序列处理,是ViT的一大创新。这种处理方式不仅降低了计算复杂度,还展示了序列建模在处理图像数据方面的巨大潜力。