Anchor DETR:基于锚点的 Transformer 目标检测
https://arxiv.org/abs/2109.07107 https://github.com/megvii-research/AnchorDETR https://ojs.aaai.org/index.php/AAAI/article/download/20158/19917
1. 研究背景
目标检测任务是计算机视觉中的一个重要领域,其目标是预测图像中每个感兴趣对象的边界框和类别。近年来,基于卷积神经网络(CNN)的目标检测方法取得了显著进展,如 Faster R-CNN、YOLO 和 SSD 等。然而,这些方法在处理复杂场景和大规模数据集时仍面临挑战。2020 年,Carion 等人提出了 DETR(DEtection TRansformer),这是一种基于 Transformer 的端到端目标检测方法,通过将目标检测问题转化为集合预测问题,取得了突破性进展。然而,DETR 的对象查询(object queries)是通过学习得到的嵌入向量,缺乏明确的物理意义,优化过程较为困难。
为了解决这些问题,本文提出了一种基于锚点(anchor points)的对象查询设计方法,称为 Anchor DETR。该方法将锚点编码为对象查询,使每个对象查询都关注锚点附近的对象,从而提高了模型的可解释性和优化效率。
2. 研究方法
2.1 基于锚点的对象查询设计
在传统的基于 CNN 的目标检测方法中,锚点(anchor points)被广泛使用,因为它们与位置高度相关且具有明确的物理意义。受此启发,本文提出了一种基于锚点的对象查询设计方法,将锚点的坐标编码为对象查询,使每个对象查询都关注锚点附近的对象。具体来说,对象查询可以表示为:
其中,\(\text{Pos}_q\) 表示锚点的坐标,\(\text{Encode}\) 是一个编码函数,用于将锚点坐标转换为对象查询。为了进一步提高模型的性能,本文还在每个锚点上引入了多个模式(patterns),使每个锚点可以预测多个对象,从而解决了“一个区域,多个对象”的问题。
2.2 行列解耦注意力机制(RCDA)
Transformer 的自注意力机制具有高复杂度,这使得它在处理大量查询和键时效率较低。为了降低内存消耗并提高计算效率,本文提出了一种行列解耦注意力机制(Row-Column Decoupled Attention,RCDA)。RCDA 的主要思想是将二维的关键特征(key feature)解耦为一维的行特征和列特征,然后依次进行行注意力和列注意力计算。具体来说,RCDA 的计算过程如下:
- 行注意力:将关键特征 \(K_f\) 解耦为行特征 \(K_{f,x}\),并计算行注意力权重 \(A_x\):
其中,\(Q_x = Q_f + Q_{p,x}\),\(Q_{p,x}\) 是基于锚点行位置的位置编码。
- 列注意力:将关键特征 \(K_f\) 解耦为列特征 \(K_{f,y}\),并计算列注意力权重 \(A_y\):
其中,\(Q_y = Q_f + Q_{p,y}\),\(Q_{p,y}\) 是基于锚点列位置的位置编码。
- 加权求和:通过行注意力和列注意力的结果进行加权求和,得到最终的输出:
通过这种行列解耦的方式,RCDA 可以显著降低内存消耗,同时保持与标准注意力机制相似或更好的性能。
3. 实验
3.1 数据集与评估指标
本文在 MS COCO 数据集上进行了实验,该数据集包含 118,287 张训练图像和 5,000 张验证图像。评估指标采用标准的 COCO 指标,包括 AP(平均精度)、AP50(IoU=0.5 时的 AP)、AP75(IoU=0.75 时的 AP)、APs(小目标 AP)、APm(中目标 AP)和 APl(大目标 AP)。
3.2 实验结果
| 方法 | 特征类型 | 训练周期 | AP | AP50 | AP75 | APs | APm | APl | GFLOPs | FPS |
|---|---|---|---|---|---|---|---|---|---|---|
| DETR | DC5 | 500 | 43.3 | 63.1 | 45.9 | 22.5 | 47.3 | 61.1 | 187 | 10 |
| SMCA | 多级 | 50 | 43.7 | 63.6 | 47.2 | 24.2 | 47.0 | 60.4 | 152 | 10 |
| Deformable DETR | 多级 | 50 | 43.8 | 62.6 | 47.7 | 26.4 | 47.1 | 58.0 | 173 | 15 |
| Conditional DETR | DC5 | 50 | 43.8 | 63.1 | 45.9 | 22.5 | 47.3 | 61.1 | 195 | 10 |
| Anchor DETR | DC5 | 50 | 44.2 | 64.7 | 47.5 | 24.7 | 48.2 | 60.6 | 172 | 19 |
从表中可以看出,Anchor DETR 在使用单个 ResNet50-DC5 特征训练 50 个周期时,取得了 44.2 AP 的性能,推理速度为 19 FPS。与 DETR 相比,Anchor DETR 在训练周期减少 10 倍的情况下,性能有了显著提升,同时推理速度也更快。
3.3 消融实验
为了验证各个组件的有效性,本文进行了消融实验。实验结果如下:
| 组件 | AP | AP50 | AP75 | APs | APm | APl |
|---|---|---|---|---|---|---|
| 基线(无锚点,无 RCDA) | 39.3 | 59.4 | 41.8 | 20.7 | 42.6 | 55.0 |
| 基线 + 锚点 | 42.6 | 63.6 | 45.5 | 23.2 | 46.4 | 58.3 |
| 基线 + 锚点 + 多模式 | 44.2 | 64.7 | 47.5 | 24.7 | 48.2 | 60.6 |
| 基线 + RCDA | 40.3 | 61.6 | 42.5 | 21.7 | 44.1 | 56.3 |
| 基线 + 锚点 + RCDA | 44.2 | 65.3 | 47.2 | 24.4 | 47.8 | 61.8 |
从表中可以看出,引入基于锚点的对象查询设计后,性能从 39.3 AP 提升到 42.6 AP;进一步引入多模式设计后,性能提升到 44.2 AP。这表明基于锚点的对象查询设计和多模式设计对性能提升有显著贡献。同时,引入 RCDA 后,性能也有所提升,且内存消耗显著降低。
4. 结论
本文提出了一种基于锚点的对象查询设计方法和行列解耦注意力机制(RCDA),用于改进基于 Transformer 的目标检测模型。实验结果表明,Anchor DETR 在减少训练周期和内存消耗的同时,性能显著提升,推理速度也更快。该方法为基于 Transformer 的目标检测提供了一种新的思路,具有重要的研究和应用价值。
Ref
https://blog.csdn.net/Zssss12/article/details/143063700 https://zhuanlan.zhihu.com/p/646220159 https://blog.csdn.net/handsome_lionet/article/details/120685651 https://www.jianshu.com/p/acb9775b9629