VIT论文介绍

1. 引言

本文来讲解一篇论文 VIT, 这篇算是引起VIT跟CNNs之争的开端。

论文链接: 戳我

Transformer结构原本应用于自然语言处理,本篇希望找到可以在不用CNN情况下使用纯Transformer构架在图像分类任务上使用少量运算资源来训练达到更好的结果。

闲话少说,我们直接开始吧!

2. TransFormer特点

一般来说,Transformer的一些优点如下:

  • 具有优秀的运算效率与扩展性
  • 可以透过大量数据做预训练并微调在其他数据集来减少运算资源
  • Attention(注意力机制)

Transformer缺乏的部分:

  • 需要大量训练数据
  • 缺乏像CNN固有的归纳偏差(Inductive bias)如平移不变性(translation equivariance)、局部性(locality)
  • 训练数据量不足时会无法达到很好的泛化能力

3. 相关工作

以前就有许多实验希望将图像应用在Transformer上,大致可以分为以下三种方式:

  • 将图像每个pixel对局部做attention(local multi-head dot-product self attention),基本上可以完全取代CNN
  • 采用稀疏Transformer,利用估计方式取得Global self-attention,目的是为了关注整张图像
  • 利用不同大小的Blocks来衡量attention,但在极端情况下只能沿着轴做

以上三种方式虽然均可以应用在图像任务上,但需要大量运算资源与硬件需求。

2020年Cordonnier提出一种方式,从输入图片取出2 x 2大小的patch并采用full self-attention,这与本篇采用的方式最为接近,但本篇进一步证明了使用大量训练数据训练的Transformer就比CNN SOTA具有更高的性能。

4. 实现方法

VIT的网络结果如下图所示:

VIT论文介绍_第1张图片
主要的处理流程如下:

  • Path-embeddings: 将输入为 [H, W, C] 的图像,依照 [P, P, C] 的大小切成 N 份,再通过linear projection 到 D维,输出尺寸变为 [N, D]。
  • Append class token embedding: 像 BERT 一样在第0位添加一个可以学习的 embedding 来作为类别的token,输出为 [N+1, D]。
  • Concat position-embeddings: 直接用1D的position embeddings,从0开始到N,文中有实验用2D的也差不多,输出为 [N+1, D+1]。
  • 经过 L 层 transformer encoder: Transformer encoder 如上图右。
  • 做 classification: 在 class token 那个位置上的输出后接 MLP head 用以做分类classification。

5. 实验结果

最终的定量的实验结果如下:
VIT论文介绍_第2张图片
定性的结果如下:
VIT论文介绍_第3张图片

通过上面的实验可以说明 Transformer 可以经过足够大量数据做预训练后,最终的效果会比 CNN 的效果要好。

进而我们来观察不同数据规模的影响,如下所示:
VIT论文介绍_第4张图片
上面的图片为作者将模型经过不同大小训练子集 (9M、30M、90M) 做预训练,随着数据量的提升发现 ViT 的性能也逐渐增强,表示卷积的归纳偏差使用于较小的训练数据集,大规模的数据集可以使用 Transformer。

我们将学到的Attention进行可视化,如下:

VIT论文介绍_第5张图片
上图为作者将训练模型的 Attention map可视化后的效果,可以发现注意力机制在图像分类任务上具有语义上的关联性。

6. 总结

本篇论文实现将Transformer应用于图像分类任务上,不同于其他方式将特定图像归纳偏差引入模型构架,而是将一张图片拆解成多个大小相同的patch块,透过在大量数据集上预训练进而达到比CNN构架更好的结果; 同时ViT 可以适用于输入各种大小尺寸的图像,推荐大家多多使用!

在这里插入图片描述
关注公众号《AI算法之道》,获取更多AI算法资讯。

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