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
- Efficient DETR: Improving End-to-End Object Detector with Dense Prior:https://arxiv.org/abs/2104.01318
- CSDN博客解析:https://blog.csdn.net/qq_54185421/article/details/126310445([CSDN博客][2])