第一遍
-
标题
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
-
作者
Alexey Dosovitskiy 谷歌研究院 大脑团队
-
摘要
- 目前位置,注意力机制在计算机视觉中使用得不够充分
- 在图片分类任务上,用于图片块序列的纯transformer框架可以表现更好
- 通过在大的数据集上进行预训练,可以迁移学习到多个中小型图像识别基准
-
结论
- 不再是仅仅使用自注意力模块对视觉任务进行处理,而是在将图片变成patch序列后,直接使用transformer框架,在大的数据集上可以超过CNNs的表现。简单、可拓展、相对便宜。
- 展望:1. 将ViT用于目标检测和语义分割 2. 拓展自监督预训练方法 -
-
介绍
-
CV中之前的工作,局部使用注意力,在特征图中使用自注意力;全局使用注意力,local-attention(按照CNNs的想法,对图片局部使用attention),axis-attention(在宽和高两个维度上使用注意力)。
-
本文将16×16个像素作为一个patch,将一个patch看作是一个词,进行类似BERT的处理方式
-
由于ViT缺乏归纳偏置(先验知识),在较小数据集(ImageNet)上,ViT表现不如ResNet。1)translation equivariance(平移变化不变性,一层理解,由于卷积核在图片上滑动的特征提取器,那么无论特征出现在图像哪里,都可以提取出来;二层理解,由于特征图中的特征核图像中特征是相对应的,因此在上面继续进行卷积和池化操作,并不会破坏图像提取出来的信息,即卷积和池化操作是可以部分顺序的。) 2)locality。卷积核一次提取图像某个局部的信息,背后的含义是图像中相邻像素表达的是一个特征。
-
ViT在大的数据集上(JFT 300M)表现超过了所有其他模型
-
第二遍
重要图表
-
图1
-
表1
-
表2
-
图2
-
图3
-
图4
-
图5
-
图6
-
图7
第三遍
相关工作
方法
3.1 ViT
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlYgfilV-1638429128961)(C:\Users\nabai\Documents\markdown图片\image-20211201215154137.png)]
将图片变成patch embedding,图片 x ∈ R H × W × C x \in \mathbb R^{H \times W \times C} x∈RH×W×C转换为图像块 x p ∈ R N × ( p 2 ⋅ C ) x_p \in \mathbb R^{N \times (p^2 \cdot C)} xp∈RN×(p2⋅C)
一般对于图像分类中224 × 224 × 3的图片,变成图像块就是196 × 768
为了保持和BERT更大的相似性,patch embedding中也加入了[class]token, z 0 0 = x c l a s s z_0^0 = x_{class} z00=xclass,经过L个transformer后,输出为 z L 0 z_L^0 zL0
整个流程公式表示为:
z
0
=
[
x
class
;
x
p
1
E
;
x
p
2
E
;
⋯
;
x
p
N
E
]
+
E
pos
,
E
∈
R
(
P
2
⋅
C
)
×
D
,
E
pos
∈
R
(
N
+
1
)
×
D
z
ℓ
′
=
MSA
(
LN
(
z
ℓ
−
1
)
)
+
z
ℓ
−
1
,
ℓ
=
1
…
L
z
ℓ
=
MLP
(
LN
(
z
′
ℓ
)
)
+
z
ℓ
′
,
ℓ
=
1
…
L
y
=
LN
(
z
L
0
)
\begin{array}{rll} \mathbf{z}_{0} & =\left[\mathbf{x}_{\text {class }} ; \mathbf{x}_{p}^{1} \mathbf{E} ; \mathbf{x}_{p}^{2} \mathbf{E} ; \cdots ; \mathbf{x}_{p}^{N} \mathbf{E}\right]+\mathbf{E}_{\text {pos }}, & \mathbf{E} \in \mathbb{R}^{\left(P^{2} \cdot C\right) \times D}, \mathbf{E}_{\text {pos }} \in \mathbb{R}^{(N+1) \times D} \\ \mathbf{z}_{\ell}^{\prime} & =\operatorname{MSA}\left(\operatorname{LN}\left(\mathbf{z}_{\ell-1}\right)\right)+\mathbf{z}_{\ell-1}, & \ell=1 \ldots L \\ \mathbf{z}_{\ell} & =\operatorname{MLP}\left(\operatorname{LN}\left(\mathbf{z}^{\prime} \ell\right)\right)+\mathbf{z}_{\ell}^{\prime}, & \ell=1 \ldots L \\ \mathbf{y} & =\operatorname{LN}\left(\mathbf{z}_{L}^{0}\right) & \end{array}
z0zℓ′zℓy=[xclass ;xp1E;xp2E;⋯;xpNE]+Epos ,=MSA(LN(zℓ−1))+zℓ−1,=MLP(LN(z′ℓ))+zℓ′,=LN(zL0)E∈R(P2⋅C)×D,Epos ∈R(N+1)×Dℓ=1…Lℓ=1…L
MSA表示多头自注意力层
-
混合框架
先通过ResNet等卷积神经网络得到14×14特征图,然后再利用transformer结构。这种结构在数据量较小时,相较于ResNet和纯transformer都要好,相当于结合了这两者的优点,一个具有归纳偏置,一种具有全局注意力。
3.2 微调和更大的分辨率
当预训练模型在一个具有更高分辨率的图像上微调,如果保持图像块大小不变,那么图像块序列长度必然会增加,虽然transformer可以允许序列变长,但是之前预训练的位置编码可能就失去了意义。因此,这里采用了二维插值,根据预先训练好的position embedding嵌入到原始图像中。
实验
4.1 模型训练
训练了三种不同规模的ViT
4.2 模型比较
模型全面刷榜,而且训练时间相对也减少了
4.3 预训练数据要求
可以发现,随着数据的增加,卷积网络性能慢慢落后于ViT
4.5 ViT原理探究
如图可以看出,在图片分类任务中,自注意力机制缺失让模型注意到图片中需要识别的物体。
如左图可知,transformer结构也可以学习图片中,颜色或者纹理等信息。
中间图不同图像块的位置编码的余弦相似度,可以发现对应位置的行和列能够具有更高的关注度。
右图表示在特征图中,相互关联像素点之间的距离,可以发现在靠近图像的一些层,关注距离是有大有小的,随着网络层数加深,注意力机制开始关注距离较远的特征(由此可以假设,模型的深度建模能力增强了,能够表达更深的语义信息)。
4.6 自监督
BERT得益于MLM、NSP等无监督训练方法,具有很强的学习能力,因此作者希望找到一种针对图像的高效地无监督学习。
小结
- 本文是2020-2021期间的transformer跨界CV的重要论文,主要思想就是将图片变成图片块,然后变成类似token embedding形式,可以直接输入到类似BERT架构中,然后在大规模数据集上继续预训练可以得到很不错的效果。
- 表明着一方面transformer还没有达到性能的极限,另一方面也为CV和NLP大一统埋下了伏笔。
- 顺带一提,论文中还尝试多种不同的位置编码,但是对最终性能没有很大影响,因此论文中依然保留了一维的位置编码,侧面也表达了自注意力机制对位置的不敏感,可以对图片进行全局建模。