ICLR2021 | ViT论文精读:用transformer 去做大规模的图像识别

AN IMAGE IS WORTH 16X16 WORDS:  TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE每一个方格都是 16 * 16 大小,一张图片有很多 16 * 16  patches

只是为了学习

【ViT论文逐段精读【论文精读】】 https://www.bilibili.com/video/BV15P4y137jb/?share_source=copy_web&vd_source=24a9db747e66eedd721d4dffea60f749

ICLR2021 | ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale-CSDN博客

论文链接

GitHub - google-research/vision_transformer

目录

ABSTRACT

ViT的影响

效果

引言

5 CONCLUSION  

2 RELATED WORK

3 METHOD

3.1 VISION TRANSFORMER (VIT)

Inductive bias.

Hybrid Architecture.

3.2 FINE-TUNING AND HIGHER RESOLUTION

APPENDIX  

A MULTIHEAD SELF-ATTENTION

B EXPERIMENT DETAILS  

B.1 TRAINING  

D ADDITIONAL ANALYSES

D.3 Head type and class token 作者的消融实验

D.4 POSITIONAL EMBEDDING

4 EXPERIMENTS

Model variants

4.3 PRE-TRAINING DATA REQUIREMENTS

4.4 SCALING STUDY

4.5 Inspecting Vision Transformer

1.ViT 第一层 Linear projection E 学到了什么?

2.Position embedding 能学到一些表示位置距离的信息

3.Self-attention 有没有起作用?

4.证明 自注意力 有学到 很远距离的 pixel 信息,证明 by 图6

4.6 self-supervision

further improvement


ABSTRACT

虽然 Transformer 架构已成为自然语言处理任务的事实(de-facto)标准,但它在计算机视觉方面的应用仍然有限。

在视觉领域,注意力要么与卷积网络结合使用,要么用来取代卷积网络的某些组件,同时保持其整体结构不变。

我们的研究表明,这种对卷积网络的依赖并非必要,直接应用于图像块序列的纯Transformer 可以在图像分类任务中表现出色。

在对大量数据进行预训练并将其应用于多个中型或小型图像识别基准(ImageNet、CIFAR-100、VTAB 等)时,Vision Transformer(ViT)与最先进的(state-of-the-art)卷积网络相比取得了优异的成绩,同时大大(substantially)减少了训练所需的计算资源。

Transformer 在 NLP 是基本操作,比如 BERT, GPT3, T5。

CV 里的 attention 是怎么用的呢?

attention + CNN, or attention 替换 CNN components 但依然保持 CNN 整体结构。

如何理解 CNN 整体结构不变?

ResNet 50 有 4 个 stages (res2 res3 res4 res5), stage 不变,attention 取代 每一个 stage 或 block 里的这个操作。

本文怎么看 CV 里的 attention?

attention 不用和 CNN 绑在一起,和 transformer 组队。

ViT的影响

  • 推翻了 2012 Alexnet 提出的 CNN 在 CV 的统治地位
  • 有足够多的预训练数据,NLP 的 Transformer 搬运到 CV,效果很好
  • 打破 CV 和 NLP 的壁垒,给 CV、多模态 挖坑

效果

 NeurIPS'21 (Spotlight) | Intriguing Properties of Vision Transformers

论文链接 https://arxiv.org/abs/2105.10497v3

代码链接:https://git.io/Js15X

ABSTRACT

视觉Transformers(ViT)在各种机器视觉问题上表现出令人印象深刻的性能。

这些模型基于多头自注意机制,可以灵活地处理一系列图像块,对上下文线索进行编码。

一个重要的问题是,以给定图块为条件处理图像范围上下文的灵活性如何有助于处理自然图像中的干扰,例如严重遮挡、域移动、空间排列、对抗攻击和自然干扰。

我们通过一系列广泛的实验系统地研究了这个问题,包括三个ViT家族,并与高性能卷积神经网络(CNN)进行了比较

我们展示并分析了ViT的以下有趣特性:

(a)Transformers对严重遮挡、扰动和域移动具有高度鲁棒性,例如,即使在随机遮挡80%的图像内容后,在ImageNet上仍保持高达60%的top-1精度。

(b) 对遮挡的鲁棒性能不是由于对局部纹理的偏置,相反,与CNN相比,VIT对纹理的偏置要小得多(The robustness towards occlusions is not due to texture bias, instead we show that ViTs are signifificantly less biased towards local textures, compared to CNNs.)。当适当训练以编码基于形状的特征时,VIT显示出与人类视觉系统相当的形状识别能力,这在以前的文献中是无与伦比的。

(c) 使用VIT对形状表示进行编码,可以在没有像素级监控的情况下实现精确的语义分割

(d) 来自单个ViT模型的现成特征可以组合起来创建一个特征集合,从而在传统和few-shot学习范式中,在一系列分类数据集中实现高准确率。我们发现ViTs的有效特征是通过自注意机制可能产生的灵活和动态的感受野。

更多信息:变换器鲁棒性-5:Intriguing Properties of Vision Transformers https://www.jianshu.com/p/7db8e9a2fb2a

图 1 的四种情况 ViT 都能处理

图1:我们展示了ViT的有趣特性,包括(a)严重遮挡,(b)分布变化(例如,去除纹理线索的风格化),(c)对抗性干扰,以及(d)图块排列。此外,我们的ViT模型训练为关注形状线索,可以在没有任何像素级监控(e)的情况下分割前景。最后,ViT模型的现成特征比CNNs(f)更具普遍性。

引言

第一段:Transformer 在 NLP 扩展的很好,没有因为大模型和大数据集而饱和,performance 一直有提升,Transformer 在 CV 里能不能也有大幅度的提升呢?

第二段:前人工作。这么好的 idea 有哪些人做过呢?要讲清楚自己的工作和 related works 的区别:之前的工作是 CNN + attention 或者 attention 替代 convolutions,没有工作将 transformer 用到 CV 领域,没有得到很好的扩展效果。

第三段:Vision Transformer 是 standard Transformer with the fewest possible modifications,ViT 融合了 CV 和 NLP 领域。

第四+五段:show 结果:足够多的数据集,ViT 能 SOTA

self-attention 架构,尤其是Transformers,是 NLP 必选模型。

主流方式是( BERT 提出)大规模数据集预训练,在 特定领域的小数据集做微调。

Transformer 的计算高效和可扩展性,1000亿参数都还没有 性能饱和 的现象。

Transformer 应用在 CV 有难点吗?

图像是2D的,把每个像素点变成1D的序列,要计算像素的 self-attention,序列长(因为一般也就是512),维度爆炸(Trnasformer 的计算复杂度是 序列长度 n 的 平方 )

以前的解决方式:

  • 降低序列长度:CVPR Wang et al. 2018, 把 网络中的特征图 做 transformer 输入,比如ResNet 50 最后一个 stage, res4 的 feature map 14 * 14= 196
  • 完全替换卷积:Ramachandran et al., 2019 stand-alone attention ; Wang et al., 2020 axial attention
  • 孤立自注意力:用局部小窗口 控制 transformer 的计算复杂度,有点像 局部窗口卷积。
  • axial attention 轴注意力 :图片的序列长度 n = H * W,2d 矩阵 拆分为 2个1d 向量,先在 H 维度做一次 self-attention,再在 W 维度 做一次 self-attention
  • replacing the convolutions entirely 好不好呢?

            理论高效,但硬件无法加速 --> 此类模型都还没有太大。

总结:在大规模的图像识别上,ResNet 还是效果最好的。

本文 ViT 的工作是什么?

Inspired by the Transformer scaling (可扩展性) success in NLP, we experiment with applying a standard Transformer directly to images, with the fewest possible modifications.

  • The fewest possible modifications 是什么呢?

把图片划分成很多 patches,每个 patch 元素 是 16 * 16,序列长度 14 * 14 = 196个元素

每一个 patch 经过一个 FC layer(fully connected layer)得到一个 linear embedding,作为Transformer 的输入。

比如:一个 224 * 224 图片 变成一个 196 个的 16 * 16 图片块(words in NLP)。

 ViT 的训练是 supervised fashion

NLP 的 Transformer 无监督训练 by language model  or mask language model ;

BUT, CV 任务的 大多baseline网络使用有监督训练。

ViT 把 CV 任务当成 NLP 任务,类似 BERT, 使用Transformer encoder 简洁框架。

Transformer in CV,之前有人做吗?

ICLR 2020 从输入图片里抽取 2 * 2 patches,在 patches 上 做 self-attention。 --> 技术上的 Vision Transformer

2 * 2 size enough的原因:CIFAR-10的数据是32 * 32 图片,16 * 16 会过大。 

ViT 和 ICLR 2 * 2 patches 的区别?

  • ViT证明了 大规模数据集预训练 (NLP 常用)之后的 Transformer,不需要做 针对视觉任务的 修改,比最好的 CNNs 效果差不多 or 甚至更好。
  • 2 * 2 patches applicable only to small-resolution images, ViT handles medium-resolution images as well.

ViT 任何情况都很强吗?

No,mid-sized datasets ImageNet without strong regularization,ViT 比 ResNet of comparable size 弱几个点。

Why 弱? 

Transformer 比 CNN 少 inductive biases 

归纳偏置:先验知识 or 提前的假设

CNN 的 inductive biases 是 locality 和 平移等变性 translation equaivariance--> CNN 有 很多先验信息 --> 需要较少的数据去学好一个模型。Transformer 没有这些先验信息,只能 从图片数据里,自己学习对 视觉世界 的感知。

locality: CNN用滑动窗口在图片上做卷积。假设是图片相邻的区域有相似的特征。i.e., 桌椅在一起的概率大,距离近的物品 相关性越强。

translation equaivariance:f (g(x)) = g( f(x) )

f:卷积 g:平移; 无论先做平移 g 还是先做卷积 f , 最后结果一样。

CNN 的卷积核 像一个 template 模板,同样的物体无论移动到哪里,遇到了相同的卷积核,它的输出一致。

大规模训练战胜了归纳偏差。ViT在进行足够规模的预训练并将其应用于数据点较少的任务时,可以获得出色的结果。

5 CONCLUSION  

探索了Transformer 在图像识别中的直接应用。

与之前在计算机视觉中使用自我注意的工作不同,除了最初的patch提取步骤,没有在架构中引入特定图像的归纳偏差。 相反,我们将图像解释为一连串patches,并使用 NLP 中使用的标准Transformer encoder进行处理。

这种简单但可扩展的策略与在大型数据集上预训练相结合,效果出奇地好。 因此,在许多图像分类数据集上,Vision Transformer 都能达到或超过目前的技术水平,同时预训练的成本也相对较低。  

但仍存在许多挑战。

  •  ViT 应用于其他计算机视觉任务,如检测和分割。

我们的研究结果以及 Carion 等人(2020 年)的研究结果都表明这种方法大有可为。

ViT-FRCNN  detection

SETR 分割 segmentation 

Swin Transformer 融合 Transformer 和多尺度设计

  • 继续探索自我监督预训练方法。

我们的初步实验表明,自监督预训练的效果有所改善,但自监督预训练与大规模监督预训练之间仍有很大差距。

  • ViT 的进一步扩展很可能会提高性能。

多模态,一个transformer同时处理图像和文本

2 RELATED WORK

Transformer 在 NLP 领域的应用:BERT, GPT

Transformer 先在大规模语料库上做预训练,再根据具体的任务数据集进行微调。

BERT: denosing mask挖词、完形填空,把masked的词预测出来

GPT: language modelling, 预测下一个词 next word prediction

完形填空 or 预测下一个词,人为设定。语料句子是完整的,去掉某些词(完形填空) or 最后词(预测下一个词) --> 自监督的训练方式。

self-attention 在视觉领域的应用

self-attention to each pixel:❌

224 * 224 image: O(n^2 = 50176)

1k, 4k image: 维度爆炸

self-attention to each image with approximation(近似值):

  • 不用整张图,只用 local neighborhoods,降低序列长度

Sparse(稀疏)transformer

  • 全局注意力的近似
  • 只对 稀疏的点 做注意力

scale attention by applying attention in blocks of varying size

  • 把自注意力用到不同大小的 blocks
  • 极端情况,只关心轴, axial self-attention,横轴 + 纵轴

小结:以上 self-attention + CV 效果不错,但工程实现加速很难。可在 cpu gpu跑,但大规模训练不行。

和 ViT 最相似的工作:

ICLR 2020 2 * 2 patches for CIFAR-10 32 * 32 图片

另一个相似工作:image GPT(无监督预训练,生成模型)。

applies Transformers to image pixels after降低分辨率和 color space。

用训练好的 image GPT or 直接把 image GPT 当成特征提取器, ImageNet 准确率 72%;

而ViT ImageNet 准确率 88.5%

ps:最近爆火的 MAE

在 BEiT 或 MAE 论文之前,生成式网络 在 CV 比 判别式网络 弱很多。

MAE 生成式模型 在 ImageNet-1k 做训练,比判别式模型好。分类 ✔,transfer learning(目标检测) ✔

还有其它和 ViT 相似的工作吗?

  • 用比 ImageNet 还大的数据集做预训练,大力出奇迹
  • Sun et al 2017 JFT-300M 数据集,CNN 的效果随数据集增加而提升
  • Djolonga et al 2020 研究大数据集预训练迁移到小数据集的效果
  • 在 ImageNet-21K 或 JFT-300M 数据集做预训练,迁移到 ImageNet 或 CIFAR-100 效果怎么样

本文 ViT 和这些相似论文的关系?

ViT 关注 ImageNet-21K 或 JFT-300M 数据集, 不训练 ResNet,训练 Transformer

3 METHOD

在模型设计中,我们尽可能地沿用了最初的 Transformer(Vaswani 等人,2017 年)。 这种有意简单设置的优势在于,可扩展的 NLP Transformer 架构及其高效实现几乎可以开箱即用。

Q: 每一个 token 都有输出,用哪个输出分类呢?

借鉴 BERT, extra learnable  embedding --> [CLS], a special classification token

[CLS] 也有 position embedding, 0(永远是0)

Q: Why [CLS] works?

self-attention in transformer encoder,所有的 tokens 在做两两的交互信息。因此,[CLS] 也会和所有的 图片 patches 的 token 交互,从而 [CLS] 从图片 patches + position 的 embedding 学到有用信息,最后用 [CLS] 做分类判断。

Q: 从 [CLS] 怎么得到最后的分类? 通用MLP Head

[CLS] 输入 一个通用的 MLP Head,得到 Class,然后cross-entropy 损失函数训练模型。

Q: ViT 用了标准的 transformer 结构,ViT的特点是什么?

图片 patches 化 + position embedding 转化为 tokens

3.1 VISION TRANSFORMER (VIT)

ViT 前向过程:Vision 问题 变成 NLP 问题

图片 X: 224 * 224 * 3 (RGB, 3 channels)                x ∈ R H×W ×C

patches 数 N: 224 *224 / 16 ^ 2 = 14 ^ 2 = 196          N = HW/P^2

每一个 patch 的维度:16 * 16 * 3 (RGB, 3 channels) = 768

Linear Projection 全连接层 E: 768 * D(embedding_dim) 768 或 更大

图片 X * E =[196,768]* [ 768 ,D ] = [196 , D]矩阵乘法

Vision to NLP done!

a 2d image --> a sequence 1d tokens

Q: 进入 transformer encoder 的序列长度?

196 * 768(图片对应的 tokens) 拼接 concatenate [CLS] token (1 * 768) = 197 * 768

Q: position embedding 怎么加 patch embedding?

实际有个position embedding 表

每行向量的维度是 1 * 768

相加 sum:patch embedding(197 * 768) + position embedding ((1 CLS + 196 patches) * 768)= (197 * 768)

transformer base: 12 heads,那么k,q,v=197*(768/12)

MLP:放大 4 倍,768*4=3012,再缩小到原维度大小

Transfomer encoder 输入输出维度一致,可以直接叠加 L 个

公式总结 ViT 的前向传播过程

Input: 1 张图

Process:  9 patches --> Flattened(扁平) Patches (3 * 3 --> 1 * 9 ) --> Linear Projections ---> Patch embedding

Why need position embedding?

Position embeddings are added to the patch embeddings to retain positional information. 

self-attention 所有元素两两算自注意力,和顺序位置无关。但图片的 patches 是有顺序的

Patch embedding + position embedding == token 包含 图片 patch 信息 和 patch 在原图中的位置信息。

Inductive bias.

Vision Transformer 的图像Inductive bias比 CNN 少得多。

在 CNN 中,局部性、二维邻域结构和平移等差性被植入到整个模型的每一层中

在 ViT 中, only MLP layers are local and translationally equivariant, while the self-attention layers are global.ViT 比 CNN 的 inductive bias 少, only MLP

图片 切成 patches;+ position embedding(随机初始化,没有携带 2d 位置信息)

ViT 的 patches 块的 2d 位置信息 + spatial relations 图像块之间的场景信息,都需要重新学。 ==》 ViT 没有很多 inductive bias ==》中小型数据集训练 ViT 效果不如 CNN

Hybrid Architecture.

As an alternative to raw image patches,输入序列可以由 CNN 的特征图形成。

在这种混合模型中,patch embedding projection E被应用到从 CNN 特征图中提取的patch。

作为一种特例,the patches can have spatial size 1x1,这意味着输入序列is obtained by simply flattening the spatial dimensions of the feature map and projecting to the Transformer dimension.

 The classification input embedding and position embeddings 的添加如上所述。

不同的图片预处理方式:不划分 patches,采用 CNN (Res50 的 feature map 14 * 14 = 196),过全连接层 E Linear projections 得到图片的 embedding

3.2 FINE-TUNING AND HIGHER RESOLUTION

  • 微调策略:通常先在大数据集上预训练ViT,然后针对下游任务微调。微调时移除预训练的预测头,添加zero-initialized D × K feedforward layer(K为下游类数量)。
  • 分辨率调整:微调时使用比预训练更高的分辨率有益。输入更高分辨率图像时,保持块大小不变,会使有效序列长度增加。由于预训练位置嵌入在新分辨率下可能不再有意义,需根据原始图像位置对其进行2D插值。此分辨率调整和块提取是向ViT手动注入图像2D结构归纳偏差的唯一步骤。

1 - 9 的九宫格 图片 patches 位置编码 --> patches 增多,1 - 25 位置编码

Q: patches 数增多,如何使用 已预训练好的 位置编码呢?

2d 插值,torch 的 interpolate 函数实现;但也不是任意长度增加都能保持效果。

256 --> 512 --> 768 长度的增加,直接使用差值,最后效果掉点。(采样定理)

插值 interpolate 临时解决方案,ViT 微调时的一个局限。

ViT 用了图片 2d 结构 的 inductive bias 地方:resolution adjustment 尺寸改变 和 patch extraction 

APPENDIX  

A MULTIHEAD SELF-ATTENTION

对于输入序列 z∈R  N×D 中的每个元素,我们计算序列中所有值 v 的加权和。 注意力权重 Aij 基于序列中两个元素与其各自的查询 qi 和关键 kj 表示之间的成对相似性。

多头self-attention(MSA)是self-attention的一种扩展,我们并行运行 k 个self-attention操作(称为 head),project their concatenated outputs。 为了在改变 k 时保持计算量和参数数不变,Dh通常设置为 D/k。

B EXPERIMENT DETAILS  

B.1 TRAINING  

在 ImageNet 上从头开始训练模型时,强正则化是关键。

Dropout, when used, is applied( after every dense layer except for the the qkv-projections )and directly( after adding positional- to patch embeddings

混合模型的训练设置与 ViT 模型完全相同。 最后,所有训练都是在分辨率 224 上完成的。

D ADDITIONAL ANALYSES

D.3 Head type and class token 作者的消融实验

ViT 除了标准的 transformer,关键部分是 怎么对图片进行预处理 和 怎么对图片最后的输出进行后处理。

  1. CLS token + MLP (tanh acitvation) == 分类

用 BERT 的 CLS,CLS 在 NLP 理解为 一个全局的对句子理解的特征;ViT 的 CLS 理解为 一个图像的整体特征。

CV 通常的 全局特征:i.e., Res50

2. 类似的,Transformer 的 输出元素 + GAP 可以用做全局信息 + 分类吗? Ok.

feature map (14 * 14) --> GAP globally average-pooling 全局平均池化 --> a flatten vector 全局的图片特征向量 --> MLP 分类

CV 的 GAP 和 NLP 的 CLS token效果差异不大。注意调参。

D.4 POSITIONAL EMBEDDING

1d:NLP 1, 2, 3, ..., 9 D

2d:D / 2 * D / 2

relative: offset 绝对距离转相对距离

为啥都是 0.64 左右,无所谓?

ViT 直接作用于 14 * 14 patches,而不是 224 * 224 像素。较少数量的 patches 之间的相对位置信息,容易学到。

CLS 可用 GAP global average pooling 替换

1d position embedding 可用 2d or relative 替换

ViT 对齐 标准的 transformer,选用 NLP 里常用的 CLS 和 1d position embeddin

4 EXPERIMENTS

Model variants

ViT Base, Large, Huge  ->  Layers, Hidden size D, MLP size, Heads 相应增加

模型变体 = (Base, Large, Hugh) + (patch size 表示)

ViT-L/16 使用 Large 参数 和 patch 16 * 16 输入

Q: Why patch size in name of model variants?

ViT 模型的 patch size 变化时, i.e., 16 * 16 --> 32 * 32 or 8 * 8, 模型的位置编码会变化

  • transformer 输入的序列长度 与 patch size 成反比
  • patch size 越小,一张图片的 patches 数越多,训练越贵 because of 序列长度的增加

4.3 PRE-TRAINING DATA REQUIREMENTS

如果想用 ViT,至少需要 ImageNet-21K 14M 大小的数据集

  • 小于时,CNN 更合适,更好的利用 inductive bias,ViT 没有特别多 inductive bias 需要更多数据训练。
  •  更大时,Vision Transformer 效果更好,因为可扩展性 scaling 更好。

图 3 ViT 和 ResNet 比,加了强约束:dropout、weight decay、label smoothing,约束了 ViT 的发挥

linear evalution: 把 ViT 预训练好的模型直接作为特征提取器不 fine-tune,+ 一个 logistic regression 得到分类结果。

Few-shot:5-shot,在 ImageNet 做 linear evaluation 时,每类图片随机选取 5 个 samples,evaluation 很快,做 消融实验。

linear few-shot evaluation 采用 JFT 数据集 10M, 30M, 100M, 300M。来自同一个数据集,数据没有 distribution gap,模型的效果更能体现 Vision Transformer 本身特质。

4.4 SCALING STUDY

Q: Hybrid 模型,CNN 抽取出来的特征,能不能帮助 Transformer 更好的学习呢?

  • 小模型,Hybrid 模型吸收 CNN 和 Transformer 的优点,效果好。不需要很多的数据预训练,达到 Transformer 的效果
  • 大模型,Hybrid 模型 和 Transformer 差不多,甚至不如 Transformer 模型。Why?

如何 预处理图像,如何做 tokenization 很重要,后续论文有研究

整体趋势:模型增加,除了 Hybrid 模型有点饱和(饱和:增加到一个平台值后,不增加了)。ResNet 和 Transformer 都没有饱和。

4.5 Inspecting Vision Transformer

可视化分析 ViT 内部表征: Patch embedding, position embedding

1.ViT 第一层 Linear projection E 学到了什么?

Vision Transformer 和 CNN 学到的很像,类似 gabor filter 有颜色、纹理, 可以做 plausible basis functions,可以描述每个图像块的底层信息( a low-dimensional representation of the fine structure within each patch)

2.Position embedding 能学到一些表示位置距离的信息

  • patch 自己本身 相似度高 黄色 1
  • 学到了距离的概念
  • (4, 4) 黄色中心点,越边缘,相似度越低,颜色越蓝
  • 学到了 行 和 列 的距离规则
  • 同行同列,颜色条 的表示

虽然是 1d 的 position embedding,但已经学到了 2d 的图像位置概念;所以换成 2d position 提升不多。

3.Self-attention 有没有起作用?

用 Transformer 的原因:自注意力 能模拟长距离的关系。

  • NLP 一个很长的句子里,开头的一个词和结尾的一个词 可能互相有关联。
  • CV 里 很远的两个像素点之间 也能做自注意力。

ViT 的 self-attention 是不是 很远的像素点也能有交互?

ViT-L/16 有 24 层(横坐标值),五颜六色的点:transformer 每层 multi-head 的heads,ViT-L 16 heads, 每一列有 16 个点

纵轴是 mean attention distance

d_ab = l_ab * A_ab = ab 两点 pixel 之间的距离差 * ab 两点之间的attention weights

d_ab 的大小,反映模型能不能注意到很远的 2 个 pixels

  • self-attention 刚开始能注意到 10 - 110 pixels
  • self-attention 刚开始就注意到全局的信息;CNN 刚开始第一层的感受野 receptive filed 很小,只能看到附近的 pixel

网络加深,模型学到的特征越来越 high level,越来越有语义信息,像素的自注意力距离 越来越远,不是靠邻近的像素点做判断。

4.证明 自注意力 有学到 很远距离的 pixel 信息,证明 by 图6

ViT 最后一层 output 的 token 的 self-attention 折射(逆向映射)回 原来的输入图片。ViT 真的学到了一些概念:狗、飞机

我们发现,有些注意头已经在最低层注意到了大部分图像,这表明模型确实使用了全局整合信息的能力。 此外,注意力距离随着网络深度的增加而增加。

总体而言,输出的 token 是融合全局的特征信息,ViT 模型可以关注到 和 classfication 分类语义相关的图像区域(图 6)。

4.6 self-supervision

如何用 自监督 的方式 训练一个 vision transformer?

因为 NLP 的 transformer 都是用 large scale self-supervised pre-training

NLP 的 自监督:BERT 完形填空 Mask language model,GPT 生成,预测下一个词 by language model

ViT 借鉴 BERT,创建一个专属于 vision 的目标函数,masked patch prediction。一张图片的某些 patches 随机抹掉,ViT 重建缺失的patches

但是,ViT-B/16 with masked patch prediction 在 ImageNet ~80% 准确率。~80% 比 从头训练 ViT 好 2%,比 supervised pre-training 低 4%。

ViT 和 contrastive pre-training 的结合: future work i.e., MOCOv3, DINO

contrastive learning: 2020 年 CV 最火的 topic,是所有 自监督学习方法表现最好的。

further improvement

ViT 结构的角度:

  • 改刚开始的 tokenization
  • 改 transformer block, i.e., self-attention 换成 MLP works
  • MetaFormer 认为 transformer work 的原因是 transformer 的架构,不是 transformer 某些特殊的算子
  • MetaFormer,self-attention 改成 (不能学习的)pooling 池化操作;甚至改成 Identity,不用注意力
  • 改 目标函数:有监督、or 不同的自监督训练方式

ViT 的大坑:

  • 打通了 CV 和 LP 之间的鸿沟
  • 挖了一个更大的多模态的坑
  • 视频、音频、基于 touch 的信号
  • 各种 modality 的信号都可以拿来用

CNN, self-attention, MLP 鹿死谁手?

犹未可知,期待下一个改进的 vision transformer

  • 一个简洁、高效、通用的视觉骨干网络 CV backbone,甚至完全不用任何标注信息