Deformable DETR:使用多尺度可变形的注意力模块进行目标检测.
- paper:Deformable DETR: Deformable Transformers for End-to-End Object Detection
- arXiv:link
- code:github
DETR将目标检测问题建模为边界框的集合预测问题,从而避免了anchor、label assignment、NMS等操作,实现了end-to-end的检测流程。但仍存在一些问题,如:
- 相比于现存的检测器,DETR需要更长的训练时间。如在COCO数据集上需要$500$轮才能收敛,是Faster RCNN的$10$~$20$倍。
- DETR在小目标上检测性能较差。现存的检测器通常使用多尺度特征融合,其中小目标物体在高分辨率特征图上进行检测。而高分辨率的特征图会对DETR增加不可接受的计算复杂度。
作者认为,上述问题主要是因为在初始化的自注意力计算中,query与所有key计算得到的权重几乎都是一样的(均匀分布),导致需要用较长的时间才能学习到关注稀疏且有意义的位置。作者提出应该让query不再与所有key计算相似度,而是只与有意义的key计算相似度,即在建模相关性的同时保持采样的稀疏性。为此,作者提出Deformable DETR。
具体地,作者提出了可变形注意力模块(deformable attention module),对每个query分配固定数量的key。假设输入特征图$x \in \Bbb{R}^{C \times H \times W}$,查询向量$z_q$的参考点坐标为$p_q$,则其可变形注意力计算为:
\[DeformAttn(z_q,p_q,x) = \sum_{m=1}^{M} W_m [ \sum_{k=1}^{K} A_{mqk} \cdot W_m'x(p_q+\Delta p_{mqk}) ]\]其中$M$表示注意力head的数量;表示固定的key采样数量($k«HW$);$\Delta p_{mqk}$和$A_{mqk}$表示第$m$个注意力head的第$q$个查询向量的第$k$个采样点的采样偏置(sampling offset)和注意力权重,都是通过$z_q$的线性映射得到的。
具体实现时,查询向量$z_q$通过线性映射得到通道数为$3MK$的张量。前$2MK$编码采样偏置$\Delta p_{mqk}$,剩下的$MK$通过softmax函数获得注意力权重$A_{mqk}$。
作者进一步引入了多尺度(multi-scale)特征融合的方法。同时使用$L$层卷积特征图,对其尺寸进行归一化后在每一层都采集$K$个key,即每个query都采样了$LK$个key。其可变形注意力计算为:
\[MSDeformAttn(z_q,\hat{p}_q, \{ x^l \}_{l=1}^{L} ) = \sum_{m=1}^{M} W_m [ \sum_{l=1}^{L} \sum_{k=1}^{K} A_{mlqk} \cdot W_m'x^l(\phi_l(\hat{p}_q)+\Delta p_{mlqk}) ]\]模型实现如下图所示。在输入编码器时使用固定的位置编码,为区分不同尺度的特征,额外引入可学习的scale-level编码\(\{ e_l \}_{l=1}^{L}\)。
与DETR相比,Deformable DETR能够在更少的训练轮数下获得更好的性能: