ViT(Vision Transformer)论文速读

ViT是2020年Google团队提出的将 NLP 领域广泛使用的 Transformer 应用在计算机视觉领域的模型,虽然不是第一篇将 Transformer 应用在视觉任务的论文,但是因为其模型“简单”且效果好,可扩展性强(scalable,模型越大效果越好),成为了 Transformer 在CV领域应用的里程碑著作,也引爆了 Tansformer 在CV 领域的相关研究。

ViT原论文中最核心的结论是,当拥有足够多的数据进行预训练的时候,ViT的表现就会超过CNN,突破transformer缺少归纳偏置的限制,可以在下游任务中获得较好的迁移效果。

Introduction

1.Transformer 已经是 NLP 领域的必选模型,而Transformer的计算高效性和可扩展性没有因为大模型和大数据集而饱和,模型的performance 一直有提升。既如此,那么Transformer 在 CV 里能不能也有大幅度的提升呢?

2.本文之前的工作是 CNN + attention 或者 attention 替代 convolutions,没有工作将Transformer 用到 CV 领域,没有得到很好的扩展效果。

3.Vision Transformer 是 standard Transformer with the fewest possible modifications ,标准 Transformer 直接应用于图片,做最少的修改,不做任何针对视觉任务的特定的改变。

对图片做的修改:图片划分成很多patches,每个 patch 元素 是  16 * 16 的像素块,经过 一个 FC layer 得到 linear embeddings 输入Transformer。

以标准的 224*224*3 大小的图片为例,如果不划分 patch 而直接将图片输入模型,则序列长度将为 50176 ,这个数字显然太大了。而将图片划分 patch 以后,序列长度则大大降低为 196 。

4.如果不加比较强的约束,ViT 的模型比同等大小的残差网络相比其实是弱的,其原因在于 Transformer 与 CNN 相比,缺少一些归纳偏置(eg:locality、translation equivariance)。

ViT Model

ViT Process

Experiments

作者在 JFT 数据集上训练,并在 ImageNet 、ImageNet Real 等数据集上微调所得到的结果如下图,可以看到 ViT-H/14 的表现相比 ResNet152x4的 提升并不大,但是它在 运行速度( TPUv3-core-days)上秒杀了 ResNet152*4。

BiT-L: CNN比较大的模型,ViT论文作者团队自己的工作

Noisy Student: ImageNet 当时表现最好的方法。用 伪标签 pseudo-label 去 self-training

Conclusion

1.ViT直接 用 NLP 的 Transformer 来处理图片,而不是像之前的工作仅仅在CV中使用self-attention。

2.与其它 self-attention in CV 的工作不同:除了 将图片转成 16 * 16 patches + 位置编码 之外,没有额外引入 图像特有的 inductive bias

3.没有图片的 inductive bias 的好处是不需要对 vision 领域的了解,不需要 domain knowledge,直接把 图片理解成 a sequence of patches, i.e., 一个句子里的很多单词。

4.ViT Performence :image classification SOTA, relatively cheap to pre-train

资源下载: