ViT阅读笔记

文章目录

  • 一、介绍
  • 二、实现细节
  • 三、实验
  • 四、结论

一、介绍

  该论文最终修订于2020年10月22日,全名是《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》,在这篇论文提出之前,在计算机视觉领域,attention机制要么与CNN结合应用(比如增强特征图、用self-attention进一步处理CNN的输出,方法是大多是2018、2019年提出的),要么替换CNN的某些组件,同时保持CNN的整体结构,或者使用self-attention完全代替卷积(虽然理论上是有效的,但由于使用了专门的attention,在现代硬件加速器上还没有得到有效的扩展),本文使用ViT说明了将纯transformer网络用于图像分类可以获得十分不错的效果,当对大量数据进行预训练,然后迁移学习到中型或小型图像识别benchmark时(ImageNet, CIFAR-100, VTAB等),ViT与SOTA相比具有优异的结果,并且训练所需的计算资源大大减少。
  ViT对Transformer使用了较少的修改就将其用于计算机视觉,首先将图像分成小的patch,然后将这些patch的linear embeddings序列输入到transformer中,transformer对patch的处理和对nlp中的token处理方式相同,然后使用有监督的方式对训练模型以对图像分类。如果在中型数据集训练,模型的准确率比同等大小的ResNet低几个百分点,作者解释是缺少归纳偏置(机器学习算法在学习过程中对某种假设的偏好),比如平移不变性和局部性,导致在数据量不充足的数据集上训练时不能很好泛化。如果在大型数据集上训练,然后在小数据集上微调,ViT取得了很好的效果,表明大规模训练优于归纳偏置。

二、实现细节

  模型框架如下:
ViT阅读笔记_第1张图片
  Transformer本来是解决nlp问题的,它的输入就是一串单词序列,而图像是矩阵,所以把大的图像拆成小的patch(比如每个小patch尺寸是16*16),然后把每个patch展成162=256长度的向量,这个向量叫做flattened patch,然后使用几层MLP对它进行projection,就得到了patch embedding。
  为了进行分类,我们使用添加可学习的“class embedding”,用于收集图像的feature,初始值为零。
  由于把原始图像拆成patche时丢失了每个patch相对原始图像中的位置信息,因此需要把图像的原始位置信息编码加入到patch embedding,即positional embedding(维度为(N+1)D)。通过实验发现无位置编码的token比有位置编码的token效果差,而二维位置编码和一维位置编码效果差不多,所以采用一维位置编码。一维位置编码过程:先对数据按行编号,然后送入几层MLP,最后输出长度为D的vector。
  以上三个组合就是输入transformer的token,若输入10个token,transformer会输出10个token,但是会选用 class embedding的对应的token接入到MLP Head,然后输出图像分类结果。
  Transformer由multiheaded self-attention(MSA)和MLP交替组成,应用之前用LN标准化,应用之后用残差连接。MLP包含两层,使用GELU激活函数。
上述过程也可用如下公式表述:
在这里插入图片描述
  作者还提出了可以使用CNN生成的特征图作为输入transformer的patch embedding,即Hybrid架构。
  训练:一般是在大型数据集预训练,然后在(较小的)下游任务微调,微调时去掉预训练的预测头,增加一个初始值为零的D
K前馈层,K是类别数。并且作者还发现,对高分辨率的图像(相对于预训练图像分辨率来说)微调效果比较好,微调时不改变patch大小,改变序列长度。

三、实验

  作者主要对比了ResNet,ViT和Hybrid三种模型的效果,对不同规模的数据集进行预处理,在很多benckmark上评估。考虑到预训练模型的计算成本,ViT的表现非常好,以较低的预训练成本在大多数识别基准上达到了SOTA。最后用自监督方法做了一个小实验,发现比有监督的效果差几个百分点。
  不同配置的ViT如下:
在这里插入图片描述
  不同配置ViT实验结果如下:
ViT阅读笔记_第2张图片
  ViT-H/14中的14表示patch的边长是14,此时可以拆出1616个patch,对应了论文标题1616 words,JFT数据集是谷歌内部使用的图像数据集。
  三者对比如下:
ViT阅读笔记_第3张图片
  ResNet效果明显比另两个差,同量级的ViT和Hybrid上准确率和FLOPs差不多。

四、结论

  ViT使用纯transformer模型,在多个大型数据集上预训练结果超过了SOTA,并且计算成本也低。但是也存在如下挑战:将ViT应用于检测和分割等领域;改进ViT的自监督学习方法。

你可能感兴趣的:(深度学习,计算机视觉)