Deformable DETR要点解读

最近整理Transformer和set prediction相关的检测&实例分割文章,感兴趣的可以跟一下:

  1. DETR: End-to-End Object Detection with Transformers
  2. Deformable DETR
  3. Rethinking Transformer-based Set Prediction for Object Detection
  4. Instances as Queries
  5. 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模块。
    Deformable DETR要点解读

3. Method

3.1 DETR

3.1.1 DETR attention 结构

Deformable DETR要点解读

  • 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 ​v​zqT​UmT​Vm​xk​​表示归一化的注意力权重, ∑ k ∈ Ω k A m q k = 1 \sum_{k \in \Omega_k} A_{mqk}=1 ∑k∈Ωk​​Amqk​=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} Nk​1​,在图像中, 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(Nq​C2+Nk​C2+Nq​Nk​C),其中在图像空间, N q N_q Nq​和 N k N_k Nk​远大于 C C C,因此计算复杂度主要是第三项 O ( N q N k C ) O(N_qN_kC) O(Nq​Nk​C)。

套用上述分析的复杂度,分别对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

Deformable DETR要点解读

  • 这个公式与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=1K​Amqk​=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:
Deformable DETR要点解读
此时采样点变成了从多尺度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=1K​Amlqk​=1.

3.4 Deformable DETR Encoder

  • Encode输入和输出均是多尺度特征图,其是resnet的C3-C6四个层级经过通道统一降到256得到的:
    Deformable DETR要点解读
  • 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 DETR要点解读
Deformable DETR要点解读

上一篇:SimAM:无参Attention!助力分类/检测/分割涨点!


下一篇:Transformer模型详解