An image is worth 16x16 words-transformers for image recognition at scale
论文题目:An image is worth 16x16 words-transformers for image recognition at scale
单位:Google Research, Brain Team
贡献
1.是将Transformer应用到Image classification任务的第一篇研究工作; 2.当前CV这块,CNN架构是主流, 这篇文章所提出的Vision Transformer (ViT)在Image classification任务上取得了很好效果, 证明了CNN并不是CV任务所必须的;
Vision Transformer
如图展示的是将Transformer应用于image任务上的一个示意图,
由于Transformer最早是在NLP领域中被提出的,其输入为向量序列, 即Sequence of tokens/vectors, 为了把Transformer用到CV中,肯定要先对Image做一些处理,使其与Transformer的输入格式相匹配。怎么做呢?
首先通过网格化把image转化为固定大小的patches (即得到sequence of patches), 然后把每个patch拉成一个向量,再经过Linear projection (实际上就是通过矩阵乘法来改变token的维度), 最终得到Sequence of Vectors/Tokens。
上述过程的形式化定义如下:
假设输入
X
∈
R
H
x
W
x
C
X \in R^{H {\rm x} W {\rm x} C}
X∈RHxWxC,
X
^
=
R
e
s
h
a
p
e
(
X
,
P
)
\hat{X}=Reshape(X, P)
X^=Reshape(X,P),
X
^
∈
R
H
W
P
2
x
P
x
P
x
C
\hat{X} \in R^{\frac{HW}{P^{2}} {\rm x} P {\rm x} P {\rm x} C }
X^∈RP2HW?xPxPxC,
P
P
P为每个Patch的大小, 每个Patch 的size为
R
P
x
P
x
C
R^{P {\rm x} P {\rm x} C}
RPxPxC.
X
^
f
l
=
F
l
a
t
t
e
n
(
X
^
)
\hat{X}_{fl}=Flatten(\hat{X})
X^fl?=Flatten(X^),
X
^
f
l
∈
R
H
W
P
2
x
(
P
2
C
)
\hat{X}_{fl} \in R^{\frac{HW}{P^{2}} {\rm x} (P^{2}C) }
X^fl?∈RP2HW?x(P2C)
X
e
m
b
e
d
=
L
P
(
X
^
f
l
,
D
)
X_{embed}=LP(\hat{X}_{fl}, D)
Xembed?=LP(X^fl?,D),
X
e
m
b
e
d
∈
R
H
W
P
2
x
D
X_{embed} \in R^{\frac{HW}{P^{2}} {\rm x} D}
Xembed?∈RP2HW?xD
最终得到的
X
e
m
b
e
d
X_{embed}
Xembed?每一行即为一个token,对应一个Patch, Patches的总数为
H
W
P
2
\frac{HW}{P^{2}}
P2HW?.
上述Patch Embedding存在的一个问题是:在将image转化为Patches的过程中,丢失了Patches之间的位置信息 , 为了保持输入中缺失的信息,作者提出所谓的Positing Embedding, 即对Patches间的相对位置进行编码,然后将其加到
X
e
m
b
e
d
X_{embed}
Xembed?中, 最终就得到带有位置信息的Sequence of tokens.
接下来将其Feed进Transformer, Transformer的介绍请参见, 最终Transformer的输出尺寸不变,依然为
R
H
W
P
2
x
D
R^{\frac{HW}{P^{2}} {\rm x} D}
RP2HW?xD,
后面可以连接具体的任务网络执行具体的任务。
点评
这篇论文并没有提出新的模型, 新的优化算法, 只是将NLP中的Transformer应用到了CV中一个新的的任务场景:image classification, 实际上是拓展了Transformer的应用范围。
总结
Reference
1.ICLR,2021-An image is worth 16x16 words-transformers for image recognition at scale
|