Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions
论文名称:Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions
作者单位:
1 Nanjing University
2 The University of Hong Kong
3 Nanjing University of Science and Technology
4 IIAI
5 SenseTime Research
基础知识
1.常见的CNN arch. vs. vision transformer (ViT) arch. vs. pyramid ViT.
如图(a), 经典的CNN arch通过stack CNN 层来学习一个层次化的feature representations, 并且随着层数的增加, 感受野越来越大, channel数越来越大, feature map尺寸越来越小,然后后边连接一到多个特定的任务网络来执行具体的任务;
如图(b), 经典的ViT是一个柱式结构,实际上就是stack transformer block, 为了把NLP中的Transformer用到Vision中, 惯用做法是通过网格化把figure转化为sequence of patches, 每个patches的尺寸一般为32 x 32, ViT目前主要用于image classification等image-levely预测任务;
如图©, 即为所提出的Pyramid Vision Transformer (PVT), 也是首先把figure 转化为Sequence of patches, 从结构来说也是学习一个层次化的representation,只不过基本的building block 已经由 Conv. 替换为 Attention module.
2.
Image-level prediction task: 图像级别的预测任务, 如 image classification;
Pixel-level dense prediction task: 像素级别的密集预测任务, 如 instance/semantic segmentation, object detection/recogniton;
动机
尽管目前ViT已经普遍应用到 image classification 等预测任务, 但是将其应用到像素级别的密集预测任务上依然很难, 原因在于:
(1) ViT输出的Feature map 为单一尺度,且分辨率低;
注:尺度单一指的是其尺度没有变化, 不像CNN arch那样可以学到层次化的representation, CNN stride也可以控制scale
(2) 直接应用的话memory consumption和computation cost 都是不可接受的;
贡献
1.提出了所谓的Pyramid Vision Transformer (PVT), PVT可以作为各种密集预测任务的backbone。进一步将PVT个DETR结合可以构建端到端的目标检测系统, 无需Conv. operation, 无需dense anchors和non-maximum supression 等人工设计成分;
2.在PVT设计中,提出渐进收缩的特征金字塔pyramid结构和所谓的 spatial reduction attention (SRA)使其成功应用于密集预测任务,这两个部件保证PVT可以输出多尺度的高分辨率feature map;
3.作者展示了几种不同配置的PVT, 在各种预测任务上都取得了优于当前最好的结果, 如下图
PVT architecture
如上图所示, PVT由多个Stage
{
S
t
a
g
e
i
}
i
=
1
4
\{Stage_{i}\}_{i=1}^{4}
{Stagei}i=14堆砌组成,每个Stage 由一个Patch embedding层和多个building blocks (即图中的Transformer Encoder)组成, 其中:
Patch embedding的作用是将上一个Stage的输出转化为Sequence of tokens以为后面的attention做准备, 每个tokens实际上对应一个patch, 直观地看是见笑了spatial size。
每个building block (即attention module) 实际上就是在sequence of tokens上计算全局global的attention, 而CNN 总是在提取局部local的pattern.
与Transformer类似, 每个building block由一个attention module (即SRA)和一个Feed Forward层组成。
假设输入 X ∈ R H x W x 3 X \in R^{H {\rm x} W {\rm x} 3} X∈RHxWx3, 经过第一个Stage的输出为 F 1 ∈ R H 4 x W 4 x C 1 F_{1} \in R^{\frac{H}{4} {\rm x} \frac{W}{4} {\rm x} C_{1}} F1∈R4Hx4WxC1, 经过第二,三,四个Stage的分别 F 2 ∈ R H 8 x W 8 x C 2 F_{2} \in R^{\frac{H}{8} {\rm x} \frac{W}{8} {\rm x} C_{2}} F2∈R8Hx8WxC2, F 3 ∈ R H 16 x W 16 x C 3 F_{3} \in R^{\frac{H}{16} {\rm x} \frac{W}{16} {\rm x} C_{3}} F3∈R16Hx16WxC3, F 4 ∈ R H 32 x W 32 x C 4 F_{4} \in R^{\frac{H}{32} {\rm x} \frac{W}{32} {\rm x} C_{4}} F4∈R32Hx32WxC4, 这样一来, { F i } 1 4 \{F_{i}\}_{1}^{4} {Fi}14就形成了一个层次化的feature representation,
下面介绍PVT中的几个关键部分:
Patch Embedding
PVT实际上就是在利用Patch Embedding来控制feature map的尺度, 通过在每个Stage中加上一层Patch Embedding 从而渐进式地得到一个层次化的多尺度Feature map.
Patch Embedding操作首先把figure分割为多个patches ,然后对每个Patch进行Linear Projection即可。 形式化定义:
假设第
i
i
i个Stage的的patch size 为
P
i
P_{i}
Pi, 对于输入
F
i
−
1
∈
R
H
i
−
1
x
W
i
−
1
x
C
i
−
1
F_{i-1} \in R^{H_{i-1} {\rm x} W_{i-1} {\rm x} C_{i-1}}
Fi−1∈RHi−1xWi−1xCi−1,
F
^
i
−
1
=
R
e
s
h
a
p
e
(
F
i
−
1
)
\hat{F}_{i-1}=Reshape(F_{i-1})
F^i−1=Reshape(Fi−1)
P
E
=
L
P
(
F
^
i
−
1
)
PE=LP(\hat{F}_{i-1})
PE=LP(F^i−1)
其中
F
^
i
−
1
∈
R
H
i
−
1
W
i
−
1
P
i
2
⋅
(
P
i
P
i
x
C
i
−
1
)
\hat{F}_{i-1} \in R^{\frac{H_{i-1}W_{i-1}}{P_{i}^{2}} \cdot (P_{i} {\rm} P_{i} {\rm x} C_{i-1} )}
F^i−1∈RPi2Hi−1Wi−1⋅(PiPixCi−1),
P
E
∈
R
H
i
−
1
W
i
−
1
P
i
2
x
C
i
PE \in R^{\frac{H_{i-1}W_{i-1}}{P_{i}^{2}} {\rm x} C_{i}}
PE∈RPi2Hi−1Wi−1xCi
Reshape表示网格化figure为patches, LP表示逐Patch的Linear projection。
Spatial reduction attention (SRA)
所谓的SRA实际上就是在计算Attention之前对Flatten之前的Key和Value进行一个所谓的Spatial Reduciton以减小Spatial size, 如下图所示:
形式化定义:
S
R
A
(
Q
,
K
,
V
)
=
C
o
n
c
a
t
(
h
e
a
d
1
,
.
.
.
,
h
e
a
d
N
i
)
W
o
SRA(Q, K, V)=Concat(head_{1}, ..., head_{N_{i}})W^{o}
SRA(Q,K,V)=Concat(head1,...,headNi)Wo
h
e
a
d
j
=
A
t
t
e
n
t
i
o
n
(
Q
W
j
Q
,
S
R
(
K
)
W
j
K
,
S
R
(
V
)
W
j
V
)
head_{j}=Attention(QW_{j}^{Q}, SR(K)W_{j}^{K}, SR(V)W_{j}^{V})
headj=Attention(QWjQ,SR(K)WjK,SR(V)WjV)
A
t
t
e
n
t
i
o
n
(
X
,
Y
,
Z
)
=
S
o
f
t
m
a
x
(
X
Y
d
m
o
d
e
l
)
Z
Attention(X, Y, Z)=Softmax(\frac{X^{Y}}{\sqrt{d_{model}}})Z
Attention(X,Y,Z)=Softmax(dmodelXY)Z
其中,
W
j
Q
,
W
j
K
,
W
j
V
∈
R
C
i
x
d
m
o
d
e
l
W_{j}^{Q},W_{j}^{K},W_{j}^{V} \in R^{C_{i} {\rm x} d_{model}}
WjQ,WjK,WjV∈RCixdmodel,
S R ( X ) = N o r m ( R e s h a p e ( X , R i ) W s ) SR(X)=Norm(Reshape(X, R_{i})W^{s}) SR(X)=Norm(Reshape(X,Ri)Ws)
可以看到SRA与Multi-head Attention (MHA)相比, 唯一区别在于对Key和Value进行了SR操作,
时间复杂度分析:
SR操作将Key和Value flatten之后的Vector长度减小为原来的
1
R
i
2
\frac{1}{R_{i}^{2}}
Ri21, 由于只对Key和Value进行了SR操作,没有对Q进行SR操作,因此最终时间复杂度减小为原来的
1
R
i
2
\frac{1}{R_{i}^{2}}
Ri21.
下面介绍SR的具体实现:
输入
X
∈
R
(
H
i
W
i
)
x
C
i
X \in R^{(H_{i} {W_{i}) {\rm x} C_{i}}}
X∈R(HiWi)xCi表示已经在Spatial 方向进行了Flatten操作, Reshape操作之后的尺寸为
R
H
i
W
i
R
i
2
x
R
i
2
C
i
R^{\frac{H_{i}W_{i}}{R_{i}^{2}} {\rm x} R_{i}^{2}C_{i} }
RRi2HiWixRi2Ci, 然后再经过一个Linear Projection, transform matrix为
W
s
∈
R
(
R
i
2
C
i
)
x
C
i
W^{s} \in R^{(R_{i}^{2}C_{i}) {\rm x} C_{i}}
Ws∈R(Ri2Ci)xCi, 因此最终
S
R
(
X
)
∈
R
H
i
W
i
R
i
2
x
C
i
SR(X) \in R^{\frac{H_{i}W_{i}}{R_{i}^{2}} {\rm x} C_{i} }
SR(X)∈RRi2HiWixCi. 从最终的效果看,有点类似Pooling操作。
Over.
点评
怎么说呢,
1.Feature Pyramid architecture 这个东西早就已经设Vision Transformer这块的标准配置了,就像空气一样,例如Focal self-attention, Cross Former 等等,不在此一一列举, 不清楚的人还以为是这篇论文的首创。
2. SRA模块
仅仅只是对MHA输入参数Key和Value的尺寸进行了缩减, 仅此而已。
总结
Reference
1.ArXiv, 2021, Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions