跳到正文

2020视觉理解

ViT

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

ViT 把图像切成一串 patch token,再交给标准 Transformer 编码器处理。它几乎不预设卷积的局部结构;效果的关键,是足够大的预训练数据和之后的迁移。

  • Alexey Dosovitskiy 等 12 位作者 · Google Research
  • ICLR 2021 · arXiv v2(2021-06-03)
查看论文原文

01研究问题

少了卷积的先验,Transformer 还能看懂图像吗?

卷积神经网络(CNN)并不是从零开始认识图像:卷积层会优先处理局部邻域,而且同一组卷积核会在不同位置重复使用。Transformer 则把输入当成一串 token,通过自注意力学习不同位置之间的关系。

作者的问题很直接:如果把图像分成小块,像处理词语一样交给标准 Transformer,能不能不靠复杂的视觉专用模块,也做好图像分类?论文把这套方法称为 Vision Transformer(ViT)。

答案要加上条件。在中等规模数据集上训练时,ViT 的准确率会比相近规模的 ResNet 低几个百分点;当预训练数据扩展到 1400 万至 3 亿张图像,再迁移到较小的识别任务时,表现明显改善。

这篇论文要说明的不是“卷积没有用”,而是:数据足够大时,模型可以从数据中学到许多视觉关系,不必把所有视觉先验都写进网络结构。

依据:原论文 §1:研究动机与数据规模。

02图像变成 token

先把一张图片改写成一串向量

图像 patch 对应输入 token;位置向量补上空间位置信息,分类 token 汇总整张图的表示。

图 01 · 依据原论文图 1 重绘的信息流示意。点阵只表示图像被切块,不是实际图片或模型注意力结果。

切块、投影、加位置

设图片大小为 H × W,每个 patch 是 P × P 像素,那么 Transformer 接收的 patch 数量是 N = HW / P²。举例来说,224 × 224 的图片使用 16 × 16 的 patch,会得到 14 × 14 = 196 个 patch。这个数字是便于理解的算术示例,不是单独的实验结果。

每个 patch 先展平,再经过可学习的线性投影,变成 D 维向量。模型给这些向量加上可学习的位置编码,并在序列开头放入一个可学习的 [CLS] 分类 token。经过多层标准 Transformer 编码器后,取最后一层的 [CLS] 表示交给分类头预测类别。

图像结构从哪里来?

ViT 的自注意力可以让任意两个 patch 交换信息,但它不像 CNN 那样预设哪些 patch 是相邻的。论文使用一维可学习位置编码;作者观察到模型会从数据中学出行列与距离关系。微调到更高分辨率时,patch 数量会增加,论文通过二维插值调整预训练的位置编码。

依据:原论文 §3.1:ViT 结构、§3.2:高分辨率微调、§4.5:位置编码与注意力分析。

03实验结果

预训练数据越大,ViT 越能发挥优势

作者用不同规模的数据做预训练,再把模型迁移到图像识别基准。规模从 ImageNet 的 130 万张图像,到 ImageNet-21k 的 1400 万张,再到 JFT-300M 的 3.03 亿张。下表选取原论文表 2 中 ViT-H/14 与 BiT-L(ResNet-152×4 基线)在 JFT-300M 上预训练后的三项结果。

准确率(%),在 JFT-300M 上预训练;柱长使用 0–100% 标尺。
基准任务ViT-H/14BiT-L
ImageNet
ViT-H/14 · JFT88.55 ± 0.04
BiT-L · JFT87.54 ± 0.02
CIFAR-100
ViT-H/14 · JFT94.55 ± 0.04
BiT-L · JFT93.51 ± 0.08
VTAB · 19 项任务
ViT-H/14 · JFT77.63 ± 0.23
BiT-L · JFT76.29 ± 1.70

表中是原论文报告的均值 ± 标准差,来自三次微调运行;只在同一基准任务内比较数值,不把不同任务的准确率横向比较。表 2 还报告了 ImageNet-ReaL 90.72%、CIFAR-10 99.50% 等结果。

准确率之外,还比较了预训练计算量

在 JFT-300M 上更受控的规模研究中,作者报告:在五个数据集的平均性能与计算量折中上,ViT 达到同等表现所需的预训练计算量约为 ResNet 的 1/2 至 1/4。作者也提醒,优化器、训练时长和权重衰减等设置会影响效率比较,因此这不是对所有训练条件都成立的定律。

依据:原论文 §4.2 与表 2:基准结果、§4.4:计算量受控的规模研究。

04适用边界

它的优势,建立在规模和任务范围上

  • 数据较少时,CNN 的先验仍然有价值。在较小预训练数据集上,ViT 更容易过拟合;作者发现卷积对小数据训练有帮助,较大的数据集则让 ViT 学到足够多的视觉模式。
  • 最强结果依赖大规模预训练。领先的 ViT-H/14 结果使用了含 3.03 亿张图像的 JFT-300M。论文也报告了 ImageNet-21k 预训练模型,但不同训练数据和规模会带来结果差异。
  • 核心评估仍是图像分类与迁移。VTAB 包含多类视觉数据,但评估形式仍是分类。作者把目标检测、分割等视觉任务列为后续挑战,不能把本论文当成 ViT 已经在所有视觉任务上胜出。
  • 自监督结果还只是初步尝试。遮盖 patch 预测让 ViT-B/16 在 ImageNet 上达到 79.9%,比从头训练高约 2 个百分点,但仍比监督预训练低约 4 个百分点。

ViT 证明的是:在足够大的数据上预训练,再迁移到多个图像识别任务,标准 Transformer 可以成为很强的视觉模型;它没有证明卷积在小数据或所有任务里都多余。

依据:原论文 §4.3:预训练数据需求、§4.6:自监督实验、§5:结论与后续挑战。