(一) 本文需要解决的问题
DETR具有slow convergence以及limited feature spatial resolution
原始的DETR模型存在的问题:
- 训练时间长,需要500个epoch才能够收敛
- 对小目标检测能力相对较弱
- 在初始化时,Attention modules接近是均匀分布,需要长时间的训练才能将其转变为sparse meaningful locations
- attention weight这边的权重计算是二次复杂度的,对于高分辨率图来说是高计算和高内存消耗的。
Deformable DETR真的是一篇神作,给后面太多的改进方法带来了思路。
(二) 本文是怎么解决这些问题的
本文的主要工作有两个,首先第一个就是将deformable attention module替换Attention模块,从而实现sparse attention。接着第二个就是multi-scale deformable attention module来实现不同尺度特征的建模。
首先是Deformable Attention Module
给定一个输入feature map
x
∈
R
C
×
H
×
W
x \in \mathbb{R}^{C \times H \times W}
x∈RC×H×W,接着令
q
q
q表示带有content feature
z
q
z_q
zq,以及一个2d的reference point
p
q
p_q
pq的一个query,接着deformable attention feature能够通过一下的方式计算:
DeformAttn
(
z
q
,
p
q
,
x
)
=
∑
m
=
1
M
W
m
[
∑
k
=
1
K
A
m
q
k
⋅
W
m
′
x
(
p
q
+
Δ
p
m
q
k
)
]
\operatorname{DeformAttn}\left(\boldsymbol{z}_{q}, \boldsymbol{p}_{q}, \boldsymbol{x}\right)=\sum_{m=1}^{M} \boldsymbol{W}_{m}\left[\sum_{k=1}^{K} A_{m q k} \cdot \boldsymbol{W}_{m}^{\prime} \boldsymbol{x}\left(\boldsymbol{p}_{q}+\Delta \boldsymbol{p}_{m q k}\right)\right]
DeformAttn(zq,pq,x)=m=1∑MWm[k=1∑KAmqk⋅Wm′x(pq+Δpmqk)]
其中,m
m
m是表示multi-head的index,k表示采样的key,
K
K
K是总的key的数量
(
K
≪
H
W
)
(K \ll H W)
(K≪HW),此外
Δ
p
m
q
k
\Delta p_{m q k}
Δpmqk以及
A
m
q
k
A_{m q k}
Amqk分别表示采样的offset以及在第
m
m
m个head上的第
k
k
k个采样点的attention weights,
∑
k
=
1
K
A
m
q
k
=
1
\sum_{k=1}^{K} A_{m q k}=1
∑k=1KAmqk=1,
Δ
p
m
q
k
∈
R
2
\Delta \boldsymbol{p}_{m q k} \in \mathbb{R}^{2}
Δpmqk∈R2,由于特征点
p
q
\boldsymbol{p}_{q}
pq经过小数位移
Δ
p
m
q
k
\Delta \boldsymbol{p}_{m q k}
Δpmqk之后,需要在特征图上进行插值得到对应特征,即
x
(
p
q
+
Δ
p
m
q
k
)
\boldsymbol{x}\left(\boldsymbol{p}_{q}+\Delta \boldsymbol{p}_{m q k}\right)
x(pq+Δpmqk),这里的
Δ
p
m
q
k
\Delta \boldsymbol{p}_{m q k}
Δpmqk是通过query特征计算
z
q
z_q
zq得到线性projection得到的。
这里Deformable Attention Module可以用到Encoder的self-attention以及Decoder的cross-attention中,在计算复杂度上有了改进,这个地方有时间可以仔细看看
接着是Multi-scale Deformable Attention Module
假定多尺度特征为:
{
x
l
}
l
=
1
L
\left\{x^{l}\right\}_{l=1}^{L}
{xl}l=1L,对应的特征图size为$ x^{l} \in \mathbb{R}^{C \times H_{l} \times W_{l}}
,
此
外
,
,此外,
,此外,\hat{\boldsymbol{p}}_{q} \in[0,1]^{2}
表
示
对
于
每
一
个
q
u
e
r
y
元
素
表示对于每一个query元素
表示对于每一个query元素q$的reference point的归一化坐标。接着多尺度的deformable attention模块可以表示为
MSDeformAttn
(
z
q
,
p
^
q
,
{
x
l
}
l
=
1
L
)
=
∑
m
=
1
M
W
m
[
∑
l
=
1
L
∑
k
=
1
K
A
m
l
q
k
⋅
W
m
′
x
l
(
ϕ
l
(
p
^
q
)
+
Δ
p
m
l
q
k
)
]
\operatorname{MSDeformAttn}\left(\boldsymbol{z}_{q}, \hat{\boldsymbol{p}}_{q},\left\{\boldsymbol{x}^{l}\right\}_{l=1}^{L}\right)=\sum_{m=1}^{M} \boldsymbol{W}_{m}\left[\sum_{l=1}^{L} \sum_{k=1}^{K} A_{m l q k} \cdot \boldsymbol{W}_{m}^{\prime} \boldsymbol{x}^{l}\left(\phi_{l}\left(\hat{\boldsymbol{p}}_{q}\right)+\Delta p_{m l q k}\right)\right]
MSDeformAttn(zq,p^q,{xl}l=1L)=m=1∑MWm[l=1∑Lk=1∑KAmlqk⋅Wm′xl(ϕl(p^q)+Δpmlqk)]
其中m
m
m表示attention head 的index,
l
l
l表示输入特征图的index,
k
k
k表示key的index,然后
Δ
p
m
l
q
k
and
A
m
l
q
k
\Delta \boldsymbol{p}_{m l q k} \text { and } A_{m l q k}
Δpmlqk and Amlqk分别表示第
m
m
m个attention head,第
l
l
l个feature map以及第
k
k
k个采样点的attention weights,并且有
∑
l
=
1
L
∑
k
=
1
K
A
m
l
q
k
=
1
\sum_{l=1}^{L} \sum_{k=1}^{K} A_{m l q k}=1
∑l=1L∑k=1KAmlqk=1,
p
^
q
∈
[
0
,
1
]
2
\hat{\boldsymbol{p}}_{q} \in[0,1]^{2}
p^q∈[0,1]2表示归一化的坐标,
ϕ
l
(
p
^
q
)
\phi_{l}\left(\hat{\boldsymbol{p}}_{q}\right)
ϕl(p^q)表示将reference point rescale到对应的特征图上,这里已经归一化的坐标了,为什么还要rescale呢,这里实际上增加了采样点的选取区间,从多个尺度的特征图上选取采样点。
当
L
=
1
,
K
=
1
,
and
W
m
′
∈
R
C
v
×
C
′
L=1, K=1, \text { and } \boldsymbol{W}_{m}^{\prime} \in \mathbb{R}^{C_{v} \times C^{\prime}}
L=1,K=1, and Wm′∈RCv×C′时,注意力模块会退化成可变形卷积,相比于可变形卷积,仅仅关注single-level的特征,这里的multi-scale deformable attention 关注多尺度,并且相比于Transformer更加高效,可以同Transformer的attention等效。
最后就是Tranformer Encoder和Decorder的设计了
Encorder的设计
Encoder中使用multi-scale deformable attention module替换掉了DETR中的attention module,encoder的输入和输出都是具有相同分辨率的多尺度的特征图,将ResNet的
C
3
−
C
6
C_3-C_6
C3−C6用过来,每一个多尺度特征都是256维度的,没有使用FPN。both query和key元素都是来自多尺度特征图上的pixels,对于每一个pixel,参考点是他自己。同时增加了一个scale-level embedding,记作
e
l
e_l
el来区分特征level
Decoder的设计
cross-attention 以及 self-attention 都有,在cross-attention中,key elements 是从encoder中输出的特征。在self-attention中,这里的key elements是从object query中来的,本文提出的deformable attention module是被用来将convolutional feature map看成keys来处理的,因此仅仅替换了decorder的cross-attention部分,decorder中的2维的reference point
p
^
q
\hat{\boldsymbol{p}}_{q}
p^q,是通过object querylinera projection之后再接一个sigmoid得到的。由于multi-scale deformable attention module提取的是参考点附近的feature,可以基于reference point预测一个offsets来进一步加快收敛,reference point可以看成是边界框中心点的一个预测。
一些其他的改进内容:
-
Iterative bounding box refinement,构建了一个simple并且effective iterative bounding box refinement机制来改善detection性能,利用之前的预测来调整和改善当前的预测。这块需要好好看看代码,确认是否需要针对旋转框做特殊处理
-
Two-Stage Deformable DETR,本文探索了DETR的变体,以产生region proposal作为第一阶段,生成的region proposal作为对象query输入到decorder进行进一步的refinement,形成一个两阶段的Deformable DETR。这里在第一阶段时,对应每一个特征点位置希望预测一个边界框,然而decorder承受不了这么大的计算量,这里去掉了decorder,构建了一个encorder-only的Deformable DETR用来进行Region Proposal generation,此时每一个pixel 被assigned 一个object query直接用来预测bounding box,得分最高的边界框作为候选区域,并将候选区域用于second stage。
(三) 实验结果
(四) 知识点Notes
关于解决Transformer Attention模块的时间和内存复杂性的方法:
- use pre-defined sparse attention patterns on keys,最直接的方式就是将注意力模式集中在固定的局部窗口,但是这样失去了global information。
- learn data-dependent sparse attention,基于locality sensitive hashing(LSH)将查询和key散列到不同的容器中
- 探索self-attention的low-rank 特性,通过减少key的数量来实现。
目前解决难训练问题的方法主要为:
- 使Attention变得稀疏
- 多尺度特征
- two stage,将region proposal提供到Transformer中,detection 任务应该更多地关注local的信息,
版权声明:本文为CSDN博主「不知道叫啥好一点」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/A_A666/article/details/121721130
暂无评论