Skip to content

Efficient DETR:基于密集先验的高效端到端目标检测器

https://arxiv.org/abs/2104.01318

简介

DETR(DEtection TRansformer)引入了Transformer架构,实现了端到端的目标检测,省去了传统方法中的锚框生成和非极大值抑制等步骤。然而,原始DETR存在以下问题:

  • 训练收敛速度慢:需要约500个epoch才能收敛。
  • 结构复杂:依赖于多个解码器层(通常为6层)来迭代更新目标查询。

这些问题主要源于目标查询(object queries)和参考点(reference points)的随机初始化,导致模型需要多次迭代才能收敛。

Efficient DETR 的核心贡献

Efficient DETR通过引入密集先验(dense prior)来改进目标查询和参考点的初始化,从而提升模型效率。其主要创新包括:

1. 密集与稀疏检测结合

模型分为两个部分:

  • 密集部分:使用滑动窗口进行类特定的密集预测,生成候选框。
  • 稀疏部分:选取得分最高的Top-K(K=100)候选框及其编码器特征,作为参考点和目标查询。([zh-style-guide.readthedocs.io][1])

2. 简化的Transformer结构

使用3个编码器层和1个解码器层的结构,显著减少了模型复杂度。

3. 快速收敛与高性能

在MS COCO数据集上,使用ResNet-50作为主干网络,Efficient DETR在仅训练36个epoch的情况下,达到了44.2的AP(Average Precision),与Deformable DETR相当或更优。

实验结果与优势

Efficient DETR在多个方面表现出色:

  • 训练效率提升:相比原始DETR的500个epoch,Efficient DETR仅需36个epoch即可收敛,训练速度提升约10倍。
  • 结构更简洁:使用更少的编码器和解码器层,减少了模型参数和计算量。
  • 在拥挤场景下表现优异:在CrowdHuman数据集上,Efficient DETR的性能显著优于其他现代检测器。

数学公式示例

Efficient DETR中使用了加权损失函数,形式如下:

\[ \mathcal{L} = \lambda_{\text{cls}} \cdot \mathcal{L}_{\text{cls}} + \lambda_{\text{box}} \cdot \mathcal{L}_{\text{box}} + \lambda_{\text{giou}} \cdot \mathcal{L}_{\text{giou}} \]

其中:

  • $\mathcal{L}_{\text{cls}}$:分类损失
  • $\mathcal{L}_{\text{box}}$:边界框回归损失
  • $\mathcal{L}_{\text{giou}}$:广义IoU损失
  • $\lambda$:各损失项的权重系数([CSDN博客][2])

Ref