论文链接:链接
Deformable DETR
前人出现的问题:
DETR采用了Transformer的注意力机制,在处理图像过程中会产生收敛速度过慢以及所采取的特征图空间分辨率不能过大的现象。这是由于注意力机制的本质造成的,注意力模块在初始化的时候,倾向于给所有特征图上的像素分配一样的权重,因此需要较多的训练次数让权重集中到有意义的位置上。
可变形卷积处理稀疏的空间位置十分有效,但是他没有像DETR一样建立元素之间的联系。
Deformable DETR
Deformable DETR 结合了可变形卷积的稀疏空间采样和Transformer的关系建模能力,它的注意力机制只集中在参考点周围所选取的固定的K个采样点上,与DETR相比能够获得更好的效果,尤其是针对小物体而言。
整体框架
我们从ResNet的主干网络中提取了多尺度特征图,如上图所示,所有的特征图的通道数都是256,其中
C
l
C_l
Cl比原始图像小
2
l
2^l
2l倍。
在编码器部分,我们将Transformer中的注意力机制替换为本文所采用的多尺度可变形注意力机制,在多尺度可变形注意力机制中,编码器的输入输出都具有相同的分辨率,且key和query元素都来自于多尺度特征图中的像素,对于每一个query元素,他的参考点都是自己本身。为了将不同尺度下查询像素分割开来,我们增加了一个层级嵌入 { e l } l = 1 L \{e_l\}_{l=1}^L {el}l=1L,该层级嵌入随机初始化并与网络联合训练。
解码器部分包含交叉注意力机制和自注意力机制两个模块,两个注意力机制中的query元素都来自于对象查询,在交叉注意力机制模块中,key来自于编码器输出的特征图,query用来提取特征图里的特征;在自注意力机制中,key元素也是object query,自我进行交互用来获取和周围之间的联系。由于可变形注意力机制需要关注特征图信息,因此我们将交叉注意力机制替换为可变形注意力机制。每一个对象查询通过可学习的线性投影以及sigmoid函数得到二维的参考坐标,我们将参考点作为bbox中心坐标的初始猜测。
如上图所示,针对于多尺度的特征图,在encoder中,每个query产生的参考点都是自己本身,而在decoder中,参考点是由query经过线性投射预测出来,且query本身和位置编码相加还要去预测偏移量和权重。
Deformable Attention Module
在Deformable Attention Module 我们需要确定三点信息:reference point
p
q
p_q
pq、offset
Δ
p
m
q
k
\Delta p_{mqk}
Δpmqk、权重矩阵
A
m
q
k
A_{mqk}
Amqk,这些信息都是由query元素产生的。
在处理图像特征的时候,Transformer中注意力机制的一个主要问题是去查看所有可能的空间位置,但计算量巨大,不能处理分辨率较高的图片。为了解决上述问题,我们提出了可变形注意力机制:可变形注意力机制只关注参考点周围的几个重要的采样点,不考虑特征图的空间大小,能够解决收敛速度较慢以及特征空间分辨率不能过大的问题。
如上图所示,给定一个输入特征图
x
∈
R
C
×
H
×
W
x\in R^{C\times H\times W}
x∈RC×H×W,对于query元素,此时含有两个内容分别为:内容特征
z
q
z_q
zq和参考坐标
p
q
p_q
pq,query元素通过可学习的线性投影在每个注意力头上生成参考点
p
q
p_q
pq。与位置坐标叠加生成
z
q
z_q
zq,通过全连接层映射首先得到偏移量的坐标,之后再通过全连接层映射和Softmax函数得到注意力权重,通过求和计算用来更新query元素和特征图。具体公式如下图所示。
D e f o r m A t t n ( 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 ) ] DeformAttn(z_q,p_q,x)=\sum_{m=1}^MW_m[\sum_{k=1}^KA_{mqk}\cdot W_m^{\prime}x(p_q+\Delta p_{mqk})] DeformAttn(zq,pq,x)=∑m=1MWm[∑k=1KAmqk⋅Wm′x(pq+Δpmqk)]
其中m表示注意力头,k表示采样点的个数, Δ p m q k \Delta p_{mqk} Δpmqk和 A m q k A_{mqk} Amqk分别代表第 k t h k^{th} kth个采样点在 m t h m^{th} mth个注意力头上的偏移量(二维向量)和注意力权重值大小。 p q + Δ p m q k p_q+\Delta p_{mqk} pq+Δpmqk本身是坐标值,但当坐标值为小数的时候,我们采用双线性插值的方法用于计算。
可变形注意力机制指代的是偏移量可变,
Multi-scale Deformable Attention Module
大多数目标检测算法都受益于多尺度特征图,因此我们也采用了多尺度可变形注意力机制算法。
M S D e f o r m A t t n ( 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 ) ] MSDeformAttn(z_q,\hat{p_q},\{x^l\}_{l=1}^L)=\sum_{m=1}^MW_m[\sum_{l=1}^L\sum_{k=1}^KA_{mlqk}\cdot W_m^{\prime}x^l(\Theta_l (\hat{p_q})+\Delta p_{mlqk})] MSDeformAttn(zq,pq^,{xl}l=1L)=∑m=1MWm[∑l=1L∑k=1KAmlqk⋅Wm′xl(Θl(pq^)+Δpmlqk)]
其中 { x l } l = 1 L \{x^l\}_{l=1}^L {xl}l=1L表示输入的多尺度特征图, p q ^ ∈ [ 0 , 1 ] 2 \hat{p_q}\in[0,1]^2 pq^∈[0,1]2是每个参考点的归一化坐标,不同层数上参考点的坐标不一致。多尺度可变形注意力机制算法是在每个特征图上运行可变形注意力机制模块在进行相加获得的结果。