DETR 系列与实时目标检测
DETR(DEtection TRansformer)由 Facebook AI 于 2020 年提出,是目标检测领域的一次范式革命:它用 Transformer 的集合预测(Set Prediction)取代了传统检测器中繁琐的 anchor 设计、NMS 后处理等手工组件,实现了真正的端到端目标检测。本页系统梳理 DETR → Deformable DETR → RT-DETR 的完整演进链路,并与 YOLO 做全面对比。
端到端是什么意思? 传统检测器(如 YOLO、Faster R-CNN)的输出是大量重叠的候选框,需要 NMS(Non-Maximum Suppression,非极大值抑制) 来去重——同一物体可能被多个格子检测到,NMS 把重叠度高的框删掉只留最好的。NMS 是一个需要手工调参的后处理步骤,不是”可微”的(无法直接加入梯度训练),而且对场景敏感。DETR 用匈牙利匹配做到了”模型直接输出最终结果,一步到位”——不需要 NMS,这就是”端到端”。
传统检测器的思路是”先大量撒框,再筛”——YOLO 在每个网格位置输出多个 anchor 框,总共上万个候选,然后用 NMS 筛到几十个。DETR 的思路完全不同:
-
DETR = 直接预测一个”物体集合”:预设 个”查询”(Object Query,比如 ),每个查询直接预测”我负责的那个物体的类别和位置”。如果图片里只有 3 个物体,100 个查询中的 3 个会输出具体结果,其余 97 个输出”无物体”( 类)。不需要 anchor,不需要 NMS。
-
匈牙利匹配 = 让每个物体只被一个查询预测:训练时最大的难点是”怎么让 100 个查询和真实标签一一对应?“。如果两个查询同时预测同一个物体,谁来负责?DETR 用 匈牙利算法(Hungarian Algorithm)找到预测和真实标签之间的最优一对一匹配——每个真实物体分配给一个最匹配的查询,未匹配的查询被鼓励输出”无物体”。
DETR 架构详解
Section titled “DETR 架构详解”1. Backbone(骨干网络)
DETR 使用标准的 CNN backbone(通常 ResNet-50),提取最后一个特征图(stride=32,即空间分辨率缩小 32 倍)。例如输入 的图像,得到 的特征图。
2. Transformer Encoder(编码器)
特征图被展平为序列( 个 token),通过 1×1 卷积降维到 ,然后送入 Transformer Encoder。Encoder 的自注意力让每个空间位置的特征”看到”全图上下文——这对大物体和全局理解特别重要。加入 2D 正弦位置编码以保留空间信息。
3. Transformer Decoder(解码器)
Decoder 接收 个 Object Query(可学习的嵌入向量),通过 Cross-Attention 从 Encoder 输出中”读取”物体信息,再通过 Self-Attention 让查询之间互相协调(避免重复检测同一物体)。
Object Query 是什么? 可以理解为 个”检测器”,每个检测器经过训练后专注于检测图像中某个位置/尺度的物体。训练完成后,这些查询形成了对”图像空间”的一种隐式划分——不同查询”负责”图像的不同区域或不同类型的物体。可视化研究显示,不同 Object Query 确实学到了关注图像的不同区域。
4. 预测头
每个查询输出两部分:
- 类别: 个类别( 个物体类别 + 1 个”无物体” 类)
- 边界框:,归一化到
匈牙利匹配与损失函数
Section titled “匈牙利匹配与损失函数”这是 DETR 最核心、也最与众不同的设计。
问题陈述:训练时,模型输出了 个预测 ,真实标签有 个物体 (,不足的用 填充到 )。我们需要找到一个一对一匹配 ,使得总匹配代价最小。
第一步:计算匹配代价矩阵
预测 与真实标签 的匹配代价为:
其中 包含 L1 损失和 GIoU 损失:
GIoU(Generalized Intersection over Union) 是比普通 IoU 更优的框重叠度量。IoU 的问题是当两个框完全不重叠时 IoU=0,梯度为零,模型无法优化。GIoU 即使框不重叠也能给出有意义的梯度信号。
第二步:用匈牙利算法求最优匹配
其中 是 个元素所有排列的集合。匈牙利算法(也叫 Kuhn-Munkres 算法)能在 时间内精确求解这个最优分配问题。
匈牙利算法 原本用于解决”分配问题”——比如有 个工人和 个任务,每个工人完成每个任务的代价不同,如何分配使得总代价最小?在 DETR 中,“工人”就是 Object Query,“任务”就是真实物体,“代价”就是匹配代价。算法保证找到全局最优的一对一分配。
第三步:在匹配结果上计算最终损失
DETR 的优缺点
Section titled “DETR 的优缺点”| 优点 | 缺点 |
|---|---|
| 真正端到端,无 NMS、无 anchor | 训练收敛极慢(需要 500+ epochs) |
| 架构简洁优雅 | 对小物体检测能力弱 |
| 容易推广到其他任务(分割、全景分割) | 训练时间长,计算资源需求大 |
| 全局推理能力强 | 推理速度在原始版本中不够快 |
为什么 DETR 收敛慢? 因为它的训练是从零开始”学习”每个 Object Query 应该关注图像的哪个区域——这需要大量迭代来建立空间先验。CNN 检测器通过预设 anchor 天然有了空间先验,DETR 需要从数据中学出来。
Deformable DETR
Section titled “Deformable DETR”原始 DETR 的两个核心问题——训练收敛慢和小物体检测差——根源在于 Transformer 的全局注意力:Encoder 对特征图的每个位置都做全注意力,计算量大且对高分辨率特征图(小物体所在)不友好。
Deformable DETR(Zhu et al., 2021)引入了 Deformable Attention(可变形注意力) 来解决这些问题。
Deformable Attention 的核心思想
Section titled “Deformable Attention 的核心思想”标准注意力对参考点的所有位置计算注意力权重;Deformable Attention 只关注少量(如 4 个)参考点附近的采样位置,且这些位置由模型自适应学习:
其中:
- 是参考点位置
- 是第 个注意力头、第 个采样点的学习偏移量(可变形的来源)
- 是对应的注意力权重()
直觉:Deformable Attention 就像人的”眼球扫视”——不是把整个画面都精读一遍,而是聚焦到几个关键位置。每个参考点只需关注 4 个自适应位置,计算量从 降到 ( 通常为 4),同时因为采样位置可学习,能精确聚焦到物体边界等关键区域。
Deformable DETR 的改进效果
Section titled “Deformable DETR 的改进效果”| 指标 | 原始 DETR | Deformable DETR |
|---|---|---|
| 训练 epochs | 500 | 50 |
| 小物体 AP | 较差 | 显著提升 |
| 显存占用 | 高(全局注意力) | 低(仅 4 点采样) |
| 整体 AP(COCO) | ~42 | ~46+ |
Deformable DETR 将训练收敛速度提升了 10 倍,同时检测精度也有提升,是 DETR 家族走向实用的关键一步。
RT-DETR:实时端到端检测器
Section titled “RT-DETR:实时端到端检测器”RT-DETR(Real-Time DEtection TRansformer,百度, 2023)是 DETR 家族的实时化里程碑——首次让端到端 Transformer 检测器在速度上追平甚至超越 YOLO 系列。
RT-DETR 的三个关键创新:
1. Efficient Hybrid Encoder
传统 DETR Encoder 的全局自注意力计算量大。RT-DETR 将注意力解耦:先用 A2L(Attention-to-Learning) 模块做跨尺度特征交互,再做轻量级的实例级注意力。这使 Encoder 部分的速度大幅提升。
2. 不确定性最小化查询选择(Uncertainty-Minimal Query Selection)
原始 DETR 的 Object Query 是纯可学习嵌入,没有图像先验。RT-DETR 从 Encoder 输出中直接选取最可能是物体中心的 个特征作为初始查询——给 Decoder 提供了很好的起点,大幅减少了 Decoder 需要做的”搜索”工作。
3. Iterative Cross-Attention Decoder
Decoder 不像原始 DETR 做完整的自注意力(Query 之间的注意力),而是迭代式地用 Cross-Attention 从 Encoder 特征中提取信息——更轻量、更快速。
RT-DETR vs YOLO:正面较量
Section titled “RT-DETR vs YOLO:正面较量”| 模型 | COCO AP | 速度 (T4 GPU) | 参数量 | 特点 |
|---|---|---|---|---|
| YOLOv8-X | 53.9 | ~28 ms | 68.2M | 单阶段、anchor-free |
| YOLOv10-X | 54.4 | ~21 ms | 29.5M | 消除 NMS |
| RT-DETR-X | 54.3 | ~34 ms | 67M | 端到端、无 NMS |
| RT-DETR-R50 | 53.0 | ~9 ms | 42M | 端到端、速度/精度均衡 |
| RT-DETR-R18 | 46.3 | ~3 ms | 20M | 轻量级实时 |
关键洞察:YOLOv10(2024)也在努力消除 NMS(采用一致的 dual-assignment 策略),这说明 DETR 的端到端思想正在反向影响 YOLO 系列的设计。两条路线在趋同——YOLO 在引入 Transformer 组件,DETR 在追求实时速度。
最新进展(2024-2025)
Section titled “最新进展(2024-2025)”RT-DETR v2 / v3
Section titled “RT-DETR v2 / v3”百度在 2024 年发布了 RT-DETR v2,进一步优化了训练策略和推理效率。v3 版本(2024 年末)在 COCO 上达到 55.3 AP 的水平(R50 backbone),同时保持实时推理速度。
RT-DETR 在工业界的应用
Section titled “RT-DETR 在工业界的应用”RT-DETR 已被集成到 Ultralytics(YOLO 官方维护方)的框架中(yolo mode=model rtdetr),可使用 YOLO 的工具链直接训练 RT-DETR 模型。PaddleDetection 也提供了完整的训练和部署方案。
YOLO 系列的 Transformer 化
Section titled “YOLO 系列的 Transformer 化”YOLOv10(2024)和 YOLOv11(2024)都引入了部分 Transformer/注意力组件——YOLOv11 在 Head 中使用了部分注意力模块(PSA, Partial Self-Attention)。这表明 YOLO 和 DETR 的技术路线正在融合。
DINO-DETR / Group-DETR
Section titled “DINO-DETR / Group-DETR”学术界在改进 DETR 训练方面持续发力:
- DINO(DETR with Improved DeNoising Anchor Boxes):引入对比去噪和混合查询选择,在 COCO 上达到 63+ AP,是当时的 SOTA。
- Co-DETR:协同训练多个辅助头部来改善 Encoder 特征,2024 年在 COCO test-dev 上达到 64.8 AP,是目前最强的检测器之一。
- Grounding DINO:将 DETR 扩展为开放词表检测器(Open-Vocabulary Detection),能检测训练时未见过的类别。
轻量化 DETR
Section titled “轻量化 DETR”在边缘设备部署方面,研究者通过知识蒸馏、量化、剪枝等技术将 RT-DETR 压缩到移动端可用的规模(<10M 参数),在嵌入式 GPU 上实现 30+ FPS。
DETR vs YOLO:如何选择
Section titled “DETR vs YOLO:如何选择”| 考虑因素 | 推荐 | 原因 |
|---|---|---|
| 极致速度(边缘设备) | YOLO(v8/v11) | 更成熟、生态更丰富 |
| 精度优先 | RT-DETR 或 Co-DETR | COCO SOTA 级精度 |
| 不想调 NMS 参数 | RT-DETR | 端到端,无后处理超参 |
| 需要同时做检测+分割 | DETR 变体 | 架构天然支持多任务 |
| 工业部署(已有 YOLO 工具链) | YOLO | 基础设施成熟 |
趋势判断:DETR 系列正在逐步蚕食 YOLO 的市场份额。RT-DETR 已证明 Transformer 架构可以在速度上媲美 YOLO。随着部署工具链的成熟,端到端检测器很可能成为未来几年的主流选择。但对于大多数实际项目,YOLO 仍然是最务实的选择——更小的模型、更丰富的预训练权重、更成熟的部署方案。
DETR 用”集合预测 + 匈牙利匹配”的思想重新定义了目标检测:从”先撒框再筛”进化为”直接输出最终结果”。原始 DETR 虽然优雅但训练慢、速度不足,Deformable DETR 解决了收敛速度问题,RT-DETR 实现了实时推理。当前(2025),DETR 系列在精度上已经超越 YOLO,在速度上也在快速追赶——两条技术路线正在趋同融合。
延伸阅读:传统目标检测与 YOLO 的完整介绍见 目标检测与 YOLO;Transformer 架构详解见 Transformer;CNN 基础见 CNN。