文章目录
- 原文链接
- 主要内容
- 模型图
- 技术细节
- 实验结果
原文链接
AN IMAGE IS WORTH 16X16 WORDS:
TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
主要内容
这篇文章的主要内容是介绍了一种新的计算机视觉模型——Vision Transformer(ViT),这是一种将自然语言处理中广泛使用的Transformer架构直接应用于图像识别任务的尝试。文章通过大量实验验证了ViT在多个图像识别基准上的有效性,并与当时的最先进卷积神经网络(CNN)模型进行了比较。
以下是文章的主要内容概述:
引言:介绍了Transformer架构在自然语言处理(NLP)任务中的成功,并探讨了其在计算机视觉领域的潜在应用。指出以往的工作尝试将注意力机制与卷积网络结合,或者用注意力机制替换卷积网络的某些部分,但整体结构保持不变。
方法:提出了Vision Transformer(ViT),它将图像分割成一系列小块(patches),然后将这些块作为序列输入到标准的Transformer编码器中。这种方法避免了依赖于CNN,并且通过在大量数据上进行预训练,ViT在多个中等规模或小规模的图像识别基准上取得了与最先进CNN相比肩甚至更好的结果,同时训练所需的计算资源更少。
相关工作:回顾了Transformer在NLP中的应用,以及在图像处理中的一些尝试,包括局部自注意力和稀疏变换器等。
实验:详细描述了ViT在不同数据集上的预训练和微调过程,包括ImageNet、CIFAR-100和VTAB等,以及与其他模型的比较结果。
结论:文章总结了ViT的主要发现,并讨论了未来的研究方向,包括将ViT应用于其他计算机视觉任务、探索自监督预训练方法以及进一步扩展ViT的规模。
文章的主要贡献在于展示了Transformer架构在没有CNN特有的归纳偏差(如平移不变性和局部性)的情况下,通过大规模预训练,仍然能够有效地处理图像识别任务。这一发现为未来的图像处理模型提供了新的设计思路。
模型图
ViT将图像分割成固定大小的块,线性嵌入每个块,添加位置嵌入,并将生成的矢量序列提供给标准Transformer编码器。为了执行分类,使用向序列添加额外可学习的“分类标记”的标准方法。
技术细节
模型输入就是把图像切成小块,然后排列整齐输入,就像文本一样,可以简单将一块图片当作一个单词。
但是由于transformer输入是1D的,但是图像是2D的,所以需要reshape维度
例如原始图片高x宽x颜色数
reshape成:
其中N就是多少个小块,P就是一个小块的边长,C是颜色通道数
那么此时一个小块xp的维度就是P*P*C
此时再进行线性变换,就得到了小块的embedding了
E就是进行线性变换,Epos就是添加位置编码。
上标表示第几个小块的编码信息,下标表示经过了几层encoder(0表示输入,L就表示输出)
因为BERT中有[CLS]用来标记分类,这里多加了个xclass也用来分类
LN就是layer normalization
然后这就是对应编码部分,MSA就是multiheaded self-attention,L表示有L层来编码
实验结果
‘训练时间少、效果好。
左图:预训练数据集越大,模型越大效果越好
右图:预训练数据集越大,ViT模型效果越好,并实现反超。
先这样吧。