Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions
PVT
论文链接: https://arxiv.org/abs/2102.12122
一、 Problem Statement
提出一个类似于CNN中的pyramid 结构,使得Transformer结构适用于多种dense prediction task。
二、 Direction
- 采用4x4大小的image patch作为输入
- 引入一个progressive shrinking pyramid,随着网络加深,减少transformer序列长度
- 采用一个spatial-reduction attention(SRA)层,当学习high-resolution特征的时候,进一步减少资源消耗
三、 Method
先来看看整体的结构:
1. Feature Pyramid for Transformer
PVT使用的是progressive shrinking strategy来控制feature maps的大小。假设patch size在 i t h i_{th} ith stage为 P i P_i Pi。在stage i i i的最开始阶段,把输入特征图平均分为 H i − 1 W i − 1 P i 2 \frac{H_{i-1}W_{i-1}}{P_i^2} Pi2Hi−1Wi−1patches,因此特征图的大小为 F i − 1 ∈ R H i − 1 × W i − 1 × C i − 1 F_{i-1} \in \R^{H_{i-1}\times W_{i-1}\times C_{i-1}} Fi−1∈RHi−1×Wi−1×Ci−1。然后把每个path flatten,变成 C i C_i Ci维度的embedding。通过线性变化之后,embedded patches的大小为 H i − 1 P i × W i − 1 P i × C i \frac{H_{i-1}}{P_i} \times \frac{W_{i-1}}{P_i}\times C_i PiHi−1×PiWi−1×Ci。这样的话,高度和宽度都是 P i P_i Pi倍小于输入。所以,通过改变patch size的大小,可以灵活地调节每个阶段feature maps的大小。
2. Spatial-reduction Attention
Transformer包括两个部分:attention layer和feed-forward layer。作者提出了spatial-reduction attention(SRA) layer 来取代传统的multi-head attention(MHA) layer。
SRA层也是接收Q, K, V作为输入。区别是在SRA在attention operation之前,降低了K和V的空间尺度,极大地减少了计算和存储资源消耗。
SRA
(
Q
,
K
,
V
)
=
Concat
(
head
0
,
.
.
.
,
head
N
i
)
W
o
head
j
=
Attention
(
Q
W
j
Q
,
S
R
(
K
)
W
j
K
,
S
R
(
V
)
W
j
V
)
\text{SRA}(Q,K,V) = \text{Concat}(\text{head}_0,...,\text{head}_{N_i})W^o \\ \text{head}_j = \text{Attention}(QW_j^Q, SR(K)W_j^K,SR(V)W_j^V)
SRA(Q,K,V)=Concat(head0,...,headNi)Woheadj=Attention(QWjQ,SR(K)WjK,SR(V)WjV)
其中
W
j
Q
∈
R
C
i
×
d
h
e
a
d
,
W
j
K
∈
R
C
i
×
d
h
e
a
d
,
W
j
V
∈
R
C
i
×
d
h
e
a
d
,
W
o
∈
R
C
i
×
C
i
W_j^Q \in \R^{C_i \times d_{head}}, W_j^K \in \R^{C_i \times d_{head}},W_j^V \in \R^{C_i \times d_{head}}, W^o\in \R^{C_i\times C_i}
WjQ∈RCi×dhead,WjK∈RCi×dhead,WjV∈RCi×dhead,Wo∈RCi×Ci 都是线性变换的参数。
N
i
N_i
Ni是attention layer中head的数量。因此,每个head的维度
d
h
e
a
d
d_{head}
dhead就是
C
i
N
i
\frac{C_i}{N_i}
NiCi。
S
R
(
⋅
)
SR(\cdot)
SR(⋅)是降低spatial dimension的操作:
S
R
(
x
)
=
Norm
(
Reshape
(
x
,
R
i
)
W
S
)
SR(x) = \text{Norm}(\text{Reshape}(x,R_i)W^S)
SR(x)=Norm(Reshape(x,Ri)WS)
其中
x
∈
R
H
i
W
i
×
C
i
x \in \R^{H_iW_i\times C_i}
x∈RHiWi×Ci代表输入,
R
i
R_i
Ri表示reduction ratio。
Reshape
(
x
,
R
i
)
\text{Reshape}(x, R_i)
Reshape(x,Ri)表示把输入序列
x
x
x reshap成大小为
H
i
W
i
R
i
2
×
(
R
i
2
C
i
)
\frac{H_iW_i}{R^2_i}\times(R^2_iC_i)
Ri2HiWi×(Ri2Ci)的序列。
W
S
∈
R
(
R
i
2
C
i
)
×
C
i
W^S \in \R^{(R_i^2C_i)\times C_i}
WS∈R(Ri2Ci)×Ci是线性变化,用来减少输入序列的维度到
C
i
C_i
Ci。
Norm
(
⋅
)
\text{\text{Norm}}(\cdot)
Norm(⋅)表示layer normalization。Attention操作为:
Attention
(
q
,
k
,
v
)
=
Softmax
(
q
k
T
d
h
e
a
d
)
v
\text{Attention}(q, k, v)=\text{Softmax}(\frac{qk^T}{\sqrt{d_{head}}})v
Attention(q,k,v)=Softmax(dheadqkT)v
通过对比,计算量会比传统的MHA少 R i 2 R^2_i Ri2倍。
3. PVT 结构
其中 R i R_i Ri是SRA中的reduction ratio。 N i N_i Ni是SRA中head的数量。 E i E_i Ei是feed-forward层中的expansion ratio。
四、 Conclusion
纯粹的transformer backbone,用于下游的一些任务,比如目标检测,语义分割等等。不需要dense anchors和NMS操作,较为简洁,表现SOTA。
Reference
- https://zhuanlan.zhihu.com/p/80226180