目标检测——【Transformer】DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION
目录
-
文章侧重点
-
Deformable Attention Module.
-
- 单尺度的Deformable Attention Module计算公式
- 多尺度的Deformable Attention Module 计算公式
-
Deformable DERT 网络结构
-
两阶段Deformable DERT
-
- 实现细节
论文链接:https://arxiv.org/abs/2010.04159
文章侧重点
-
改进DERT中存在两个问题:
- 收敛速度很慢的问题,究其原因是因为 object query 从零学起,且当前注意力机制对特征的计算是全局式逐像素计算,耗时。
- DERT对小目标的检测性能不佳,因为通常小目标的检出需要高分辨率的特征图,但是DERT因为性能权衡,只用单一尺度检测。
-
Deformable DERT 借鉴 Deformable Convolution 的稀疏采样思想,将其扩展到Transformer中,并进行多尺度的检测。相比之下, Deformable Convolution 是在单一尺度下找到一个关键点,而 Deformable DERT 可以在多尺度下找到多个关键点。
-
Deformable DERT 认为在特征图中包含目标相关的分布稀疏,故利用稀疏采用一些目标关键点特征生成新的特征向量。
Deformable Attention Module.

如图为单尺度的 Deformable Attention Module 示意图
- 输入是Query Feature z_q、 预测目标中心位置的p_q,目标特征x
- 第二步:生成权重。 通过对Query Feature z_q进行线性映射,生成的特征一部分作为Sampling Offsets(\Delta p_{mqk}),其余再通过Softmax,生成Attention Weights(A_{mqk})。
- 第三步:关键点特征融合。
- 输出:关键点组成的特征向量。
单尺度的 Deformable Attention Module 计算公式

公式的各变量含义见资源。
多尺度的 Deformable Attention Module 计算公式

单尺度和多尺度的 Deformable Attention Module 的区别其实就是将输入的一个特征图变成多个特征图,所以公式里的计算从一个特征图的计算扩展到多个特征图上的计算。 因为小目标的特征在高分辨率的特征图中更显著,所以多尺度的特征图当然考虑的面比较广了。
Deformable DERT 网络结构

上图为 Deformable DERT 的检测结构。
输入:图片的多尺度特征图。 一共有四张特征图,前三张从ResNet的stage3、stage4、stage5中得出,第四张特征图由ResNet的stage5经过一个步距为2的3x3卷积得到。特征图的维度C=256。如下图所示

Deformable Transformer Encoder
* 输入:四个多尺度特征图。
* 对于Encoder,reference point即第一个公式的$p_q$就等价于$z_q$中的像素。因为输入是多个尺度的特征图,而$z_q$是一个一维向量,所以引入了尺度嵌入向量$e_l$与特征图相加,就像position_embeding一样,是一个可学习的参数。就像尺度自适应因子一样。
* 输出:与输入相同尺寸的四个特征图。
Deformable Transformer Decoder :包含Self-Attention和Cross-Attention。在Self-Attention中,目标Query相互间交互计算相似度;在Cross-Attention中,目标Query从Encoder输出的目标特征中提取目标相关的关键点特征。 * 因为输入是卷积得出的特征图和目标query,所以Decoder的Self-Attention沿用Transformer中的Self-Attention计算。
Iterative Bounding Box Refine :论文中使用一种迭代式输出预测框的方式。实际上 reference point 初始化为目标的中心点预测。所以预测头实际上是在预测 reference point 的相对偏移。
* 每一层Decoder输出的特征都会生成一个预测边界框,然后后一层对前一层的输出预测进一步refine,如下公式:

两阶段 Deformable DERT
文中还提出来一个 Deformable DERT 的变体,即两阶段 Deformable DERT 。
- 第一阶段:生成许多proposals,。
- 第二阶段:将proposal包含的图片特征直接作为目标特征。
实现细节
将多尺度特征的像素flatten作为目标Query。在实际考虑到计算量的问题后,这个两阶段 Deformable DERT 实际上是一个 Encoder-only Deformable DERT ,去掉了decoder。
快看代码,看完晚上可以去运动了~
