PVTv2: Improved Baselines with Pyramid Vision Transformer
PVTv2
论文链接: https://arxiv.org/abs/2106.13797
一、 Problem Statement
PVTv1 有三个缺点:
- 把图片当成是non-overlapping patches的序列,一定程度上丢失了图像的局部联系。
- PVTv1的position encoding是固定大小的,对处理任意图片大小不灵活。
- 当处理大分辨率的输入图像时候,计算发杂度相对较高。
二、 Direction
根据上面的问题,提出了下列方法:
- Overlapping patch embedding
- Convolutional Feed-Forward
- Linear Spatial Reduction Attention
三、 Method
先来看一下整体的网络结构:
1. Overlapping patch embedding
作者扩大Patch window,使得调整后的窗口有半个区域的重叠,而且把特征图用zero-padding来保持分辨率大小。具体来说就是给定了一个输入大小为 h × w × c h \times w \times c h×w×c的特征图,把它输入到stride为 S S S,kernel size为 2 S − 1 2S-1 2S−1,padding size为 S − 1 S-1 S−1和通道数为 c ′ c' c′的卷积中,得到输出大小为 h S × w s × C ′ \frac{h}{S} \times \frac{w}{s} \times C' Sh×sw×C′。
2. Convolutional Feed-Forward
把fixed-size position encoding去掉,使用zero-padding position encoding。
具体来说就是,添加一个3x3,padding size为1的depth-wise convolution在FC和GELU之间。
3. Linear Spatial Reduction Attention
PVTv1提出了SRA模块,但是计算量还是比较大。所以作者提出了Linear SRA,降低了内存消耗。 具体来说就是给定一个大小为 h × w × c h \times w \times c h×w×c的输入,经过Average Pooling,具体如下:
计算复杂度如下:
Ω
(
S
R
A
)
=
2
h
2
w
2
c
R
2
+
h
w
c
2
R
2
Ω
(
L
i
n
e
a
r
S
R
A
)
=
2
h
w
P
2
c
\Omega(SRA) = \frac{2h^2w^2c}{R^2} + hwc^2R^2 \\ \Omega(Linear SRA) = 2hwP^2c
Ω(SRA)=R22h2w2c+hwc2R2Ω(LinearSRA)=2hwP2c
4. 网络性能
四、 Conclusion
PVTv2 可以获得更多的图像或者特征图内数据的局部联系;也可以处理不同分辨率的输入,使得网络更加灵活。最后表现SOTA,是一个很好的backbone。