DPT: Deformable Patch-based Transformer for Visual Recognition 论文:https://arxiv.org/abs/2107.14467 代码:https://github.com/CASIA-IVA-Lab/DPT
目前,Transformer在计算机视觉方面取得了巨大的成功,但是如何在图像中更加有效的分割patch仍然是一个问题。现有的方法通常是将图片分成多个固定大小的patch,然后进行embedding。本文作者指出固定大小的patch有如下两个缺点:
- 图像中局部结构的破环,如下图(a)所示,固定尺寸(16x16)裁剪patch,很难获取和目标相关的局部目标的完整结构;
- 图像之间的语义信息的不一致。不同图像中的同一对象可能有不同的几何变化(比例、旋转等),固定尺寸裁剪patch可能会捕获不同图像中同一个对象的不一致的语义信息。这些固定尺寸的patches可能会破坏语义信息,导致性能下降。
为了解决这个问题,作者提出了一个可变形的patch(DePatch)模块,它以数据驱动的方式将图像自适应地分割成具有不同位置(position)和大小(scale)的patch,而不是使用固定patch分割方式。通过这个方法,就可以避免原来方法对语义信息的破坏,很好地保留patch中的语义信息。
预备知识: Vision Transformer
Vision transformer由三部分组成:
-
a patch embedding module patch embedding module 将图片分成固定大小和位置的patches,然后分别将patch输入线性层,生成固定维度的一维向量。假设输入的图片或者特征图A
∈
R
H
×
W
×
C
\in R^{H \times W \times C}
∈RH×W×C,其中H=W,先前的工作是将A分成N个尺寸为
s
×
s
s \times s
s×s(
s
=
i
n
t
(
H
/
N
)
s=int(H/\sqrt N)
s=int(H/N
?))的patches,经过线性层后得到向量
z
(
i
)
1
<
=
i
<
=
N
{z^{(i)}}_{1<=i<=N}
z(i)1<=i<=N?。 为了更好地解释patches分割过程,作者重新解释patches模块。每个
z
(
i
)
{z^{(i)}}
z(i)被视为输入图像的一个矩形区域,其中心的点坐标为
(
x
c
t
(
i
)
,
y
c
t
(
i
)
)
(x^{(i)}_{ct},y^{(i)}_{ct})
(xct(i)?,yct(i)?),因为patch尺寸固定为s,所以其左上角坐标为:
(
x
c
t
(
i
)
?
s
/
2
,
y
c
t
(
i
)
?
s
/
2
)
(x^{(i)}_{ct}-s/2,y^{(i)}_{ct}-s/2)
(xct(i)??s/2,yct(i)??s/2),右下角坐标为:
(
x
c
t
(
i
)
+
s
/
2
,
y
c
t
(
i
)
+
s
/
2
)
(x^{(i)}_{ct}+s/2,y^{(i)}_{ct}+s/2)
(xct(i)?+s/2,yct(i)?+s/2),小patch中每个点又可以表示为
a
^
1
<
=
j
<
=
s
×
s
(
i
,
j
)
{\hat{a}^{(i,j)}_{1<=j<=s\times s}}
a^1<=j<=s×s(i,j)?,随后根据公式(1)对patch进行线性处理。 -
multi-head self-attention blocks -
feed-forward multi-layer perceptrons (MLP)
DePatch Module
为了得到自适应的patches,作者在网络里添加两个可学习的参数location 和scale,其中location使用两个偏移量
(
δ
x
,
δ
y
)
(\delta_x,\delta_y)
(δx?,δy?)表示初始中心的的偏移量,scale预测patch的高
s
h
s_h
sh?,宽
s
w
s_w
sw?,根据上述预测的四个参数,我们就可以得到初始patch调整后的左上角和右下角坐标: 如下图所示,作者使用自适应的patches裁剪得到的区域,可以看到,目标物体的局部区域可以完整的被切分下来。 我们根据上述方法得到的patches尺寸各异,且坐标大多为浮点数,而网络需要固定维度,故作者这里在patch内随机选取
k
×
k
k\times k
k×k个点来表示该区域: 使用双线性插值来获取浮点数坐标下的特征值【关于双线性插值为何是公式(8),可以通过双线性插值的定义推导得到】:
Overall Architecture
作者基于PVT实现了DPT,PVT有四个stage,因此就有四个不同尺度的特征(上图左)。作者将PVT中stage2、stage3、stage4的patch embedding模块换成了DePatch,其他设置保持不变(上图右)。
Experiment
Image Classification
如上表所示,最小的DPT-Tiny获得了77.4%的top-1精度,比相应的baseline PVT模型高出2.3%。DPT-Medium实现了81.9%的top-1精度,甚至优于具有更多参数和计算量的模型,如PVT-Large和DeiT-Base。
Object Detection
上表比较了DPT与PVT、ResNe(X)t的结果。在相似的计算量下,DPTSmall的性能比PVT-Small好2.1% mAP、比Resnet50好6.2% mAP。 Mask-RCNN上的结果相似。DPT-Small模型在1×schedule下,实现了43.1%的box mAP和39.9%的mask mAP,比PVT-Small高出2.7%和2.1%。
在DETR上,DPT-Small实现了37.7%的box mAP,比PVT-Small高3.0%,比ResNet50高5.4%。
参考:
https://mp.weixin.qq.com/s/v5jCTvoRo-OjhWfzL-LP9w
|