Deformable DETR要点解读
作者:互联网
最近整理Transformer和set prediction相关的检测&实例分割文章,感兴趣的可以跟一下:
- DETR: End-to-End Object Detection with Transformers
- Deformable DETR
- Rethinking Transformer-based Set Prediction for Object Detection
- Instances as Queries
- SOLQ: Segmenting Objects by Learning Queries Bin
paper | https://arxiv.org/abs/2105.01928 |
---|---|
code | https://github.com/fundamentalvision/Deformable-DETR |
mmdetection code | https://github.com/open-mmlab/mmdetection |
1. 摘要
DETR的提出消除了在目标检测中许多手工设计的组件的需要,同时有着良好的性能。但由于transformer注意力模块在处理图像特征图时的局限性,导致收敛速度慢,特征空间分辨率有限。为了减轻这些问题,本文提出了Deformable DETR,其注意力模块只关注参考点周围的一部分关键采样点。可变形的DETR比DETR(特别是在小物体上)可以获得更好的性能,训练epoch少10倍。
2. Motivation
DETR的问题 :
- 相比与现有的目标检测器,它需要更长的训练时间来收敛。例如,在COCO 基准上,DETR需要500个epoch来收敛,这比Faster R-CNN慢10到20倍。
- DETR对小目标的检测性能相对较低。现代目标检测器通常利用多尺度特征,从高分辨率特征图中检测出小物体。但是,高分辨率的feature maps将导致DETR产生不可接受的复杂度。
上述问题的成因分析:造成上述问题的主要原因是transformer在处理图像特征图时存在缺陷。
- 在初始化时,注意力模块对特征图中的所有像素施加几乎一致的注意力权重。为了让注意力集中在稀疏的有意义的位置,长时间的训练是必要的。
- 另一方面,transformer编码器的注意力权重计算是基于像素数的二次复杂度。因此,处理高分辨率特征图的计算和内存复杂度非常高。
改进方案:
- 提出了Deformable DETR,它可以缓解DETR收敛速度慢和复杂度高的问题。它融合了可变形卷积良好的稀疏空间采样能力和transformer的强大关系建模能力。
- 本文提出了可变形注意模块 ,其仅关注特征图上一小部分关键的采样点。并且该模块可以自然地扩展到聚合多尺度特征,而无需FPN的帮助。在Deformable DETR中,我们使用(多尺度)可变形注意模块替换原有transformer的注意力模块。
- 具体来讲,如下图所示,由于transformer的编码器中的self-attention和encoder-decoder连接的cross attention涉及到像素级的相关性计算,复杂度比较高,这两个attention相应的被替换为稀疏的可变形注意力模块,decoder中的query self-attention复杂度不高,就还是沿用原来的transformer的attention模块。
3. Method
3.1 DETR
3.1.1 DETR attention 结构
- q ∈ Ω q q \in \Omega_q q∈Ωq表示某一个query 元素,其特征表示为 z q ∈ R C z_q \in R^C zq∈RC;
- k ∈ Ω k k \in \Omega_k k∈Ωk表示某一个key 元素,其特征表示为 x k ∈ R C x_k \in R^C xk∈RC;
- Ω q \Omega_q Ωq和 Ω k \Omega_k Ωk表示query和key的集合;
- W m ′ ∈ R C v × C W_m^{'} \in R^{C_v \times C} Wm′∈RCv×C和 W m ∈ R C × C v W_m \in R^{C \times C_v} Wm∈RC×Cv分别是可学习的权重, C v = C / M C_v=C/M Cv=C/M, M M M表示attention head的数量;
- A m q k ∝ e x p z q T U m T V m x k C v A_{mqk} \propto exp{\frac{z^T_qU^T_mV_mx_k}{\sqrt C_v}} Amqk∝expC vzqTUmTVmxk表示归一化的注意力权重, ∑ k ∈ Ω k A m q k = 1 \sum_{k \in \Omega_k} A_{mqk}=1 ∑k∈ΩkAmqk=1, U m , V m ∈ R C v × C U_m, V_m \in R^{C_v \times C} Um,Vm∈RCv×C也是可学习的权重;
3.1.2 DETR Attention 分析
-
训练时间长:以 N q N_q Nq和 N k N_k Nk表示query和key element的数量,起初Attention的权重归一化后约等于 1 N k \frac{1}{N_k} Nk1,在图像中, N k N_k Nk一般非常大,这将导致 N k N_k Nk对输入特征产生模糊的梯度。所以需要长时间的训练使得attention weight fcos on 特定的keys。
-
计算复杂度分析:
上式的计算复杂度为 O ( N q C 2 + N k C 2 + N q N k C ) O(N_qC^2+N_kC^2+N_qN_kC) O(NqC2+NkC2+NqNkC),其中在图像空间, N q N_q Nq和 N k N_k Nk远大于 C C C,因此计算复杂度主要是第三项 O ( N q N k C ) O(N_qN_kC) O(NqNkC)。
套用上述分析的复杂度,分别对transformer中的三个attention模块的复杂度分析如下:
模块 | 复杂度 |
---|---|
encoder self-attention | O ( H 2 W 2 C ) O(H^2W^2C) O(H2W2C) |
decoder cross-attention | O ( H W C 2 ) + N H W C O(HWC^2)+NHWC O(HWC2)+NHWC |
decoder self-attention | O ( 2 N C 2 + N 2 C ) O(2NC^2+N^2C) O(2NC2+N2C) |
3.2 Deformable DETR Attention
-
这个公式与DETR的attention相比,将key的范围从 Ω k \Omega_k Ωk限定到了 K K K个采样点, ∑ k = 1 K A m q k = 1 \sum_{k=1}^KA_{mqk}=1 ∑k=1KAmqk=1, 每个采样点都有一个预测的采样点offset,以达到自适应位置的采样点。
-
p q + ∆ p m q k p_q +∆p_{mqk} pq+∆pmqk通常是小数,因此从特征图上索引特征时采用双线性插值的方式。
-
∆ p m q k 和 A m q k ∆p_{mqk}和A_{mqk} ∆pmqk和Amqk都是通过对query特征 z q z_q zq进行线性映射得到的。在实现中,query特征 z q z_q zq被通过一个3MK通道的线性投影运算操作,其中前2MK通道预测采样偏移量 ∆ p m q k ∆p_{mqk} ∆pmqk,其余的MK通道被提供给softmax运算以获得注意力权重 A m q k A_{mqk} Amqk。
-
复杂度分析:参考论文附录1
3.3 Multi-Scale Deformable DETR Attention
给定
{
x
l
}
l
=
1
L
\{x_l\}^L_{l=1}
{xl}l=1L 表示输入multi-scale feature maps:
此时采样点变成了从多尺度feature maps中每层选取K个采样点,共计LK个点,
∑
l
=
1
L
∑
k
=
1
K
A
m
l
q
k
=
1
\sum_{l=1}^L\sum_{k=1}^KA_{mlqk}=1
∑l=1L∑k=1KAmlqk=1.
3.4 Deformable DETR Encoder
- Encode输入和输出均是多尺度特征图,其是resnet的C3-C6四个层级经过通道统一降到256得到的:
- encoder部分的query是多尺度特征图上的每个像素,key是KL个采样点。
- 为了引入位置信息,query和key通常会加上固定的position encoding;
- 除此之外,为了引入每个像素的尺度信息(属于哪个level),额外给每个像素学习一个尺度embedding相加;
3.5 Deformable DETR Decoder
- 解码其中包含交叉注意力和自注意力两部分,这两者的注意力query都是object query,decoder cross-attention的key是encoder输出的多尺度特征图,decoder self-attention仍是object query。因此,只将decoder cross-attention模块替换为多尺度可变形注意力模块,而decoder self-attention模块仍沿用Transformer本身的。
- 对于每个object query,都会预测一个2-d的归一化参考点坐标 P ^ q \hat {P}_q P^q, 通过从object query embedding进行线性映射+sigmoid激活函数。
- 由于多尺度可变形注意力模块提取的是参考点周围的图像特征,所以我们让检测头预测的bbox为相对参考点的相对偏移量,从而进一步降低优化难度。参考点作为初始的bbox center猜测。bbox head预测相对参考点的偏移量。这样,学习到的解码器注意力与预测的bbox具有很强的相关性,也加速了训练的收敛。
4. Deformable DETR改进变体
4.1 Iterative Bounding Box Refinemen
建立了一个简单并且有效的迭代bbox矫正机制来提高检测性能, 每个解码器层根据前一层的预测来refine bbox。
4.2 Two-Stage Deformable DETR
在原始的DETR中,解码器中的object query是随机初始化的。受two-stage检测器的启发,我们探索了一个Deformable DETR的变种来生成候选区域来作为first-stage。生成的候选区域会送进解码器作为object query以进一步优化矫正,从而形成two-stage Deformable DETR。
- 在first-stage中,为了实现高召回的候选区域,移除解码器并形成了一个只有编码器的Deformable DETR来生成候选区域。其中,每个像素被分配为一个object query,直接预测一个边界框。选择得分最高的N个边界框作为region proposal输出到下一阶段。
5. 实验结果
标签:Deformable,复杂度,attention,模块,要点,query,DETR 来源: https://blog.csdn.net/xijuezhu8128/article/details/118693939