Skip to content

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 = 直接预测一个”物体集合”:预设 NN 个”查询”(Object Query,比如 N=100N=100),每个查询直接预测”我负责的那个物体的类别和位置”。如果图片里只有 3 个物体,100 个查询中的 3 个会输出具体结果,其余 97 个输出”无物体”(∅\varnothing 类)。不需要 anchor,不需要 NMS。

  • 匈牙利匹配 = 让每个物体只被一个查询预测:训练时最大的难点是”怎么让 100 个查询和真实标签一一对应?“。如果两个查询同时预测同一个物体,谁来负责?DETR 用 匈牙利算法(Hungarian Algorithm)找到预测和真实标签之间的最优一对一匹配——每个真实物体分配给一个最匹配的查询,未匹配的查询被鼓励输出”无物体”。

1. Backbone(骨干网络)

DETR 使用标准的 CNN backbone(通常 ResNet-50),提取最后一个特征图(stride=32,即空间分辨率缩小 32 倍)。例如输入 640×640640 \times 640 的图像,得到 2048×20×202048 \times 20 \times 20 的特征图。

2. Transformer Encoder(编码器)

特征图被展平为序列(20×20=40020 \times 20 = 400 个 token),通过 1×1 卷积降维到 d=256d=256,然后送入 Transformer Encoder。Encoder 的自注意力让每个空间位置的特征”看到”全图上下文——这对大物体和全局理解特别重要。加入 2D 正弦位置编码以保留空间信息。

3. Transformer Decoder(解码器)

Decoder 接收 NN 个 Object Query(可学习的嵌入向量),通过 Cross-Attention 从 Encoder 输出中”读取”物体信息,再通过 Self-Attention 让查询之间互相协调(避免重复检测同一物体)。

Object Query 是什么? 可以理解为 NN 个”检测器”,每个检测器经过训练后专注于检测图像中某个位置/尺度的物体。训练完成后,这些查询形成了对”图像空间”的一种隐式划分——不同查询”负责”图像的不同区域或不同类型的物体。可视化研究显示,不同 Object Query 确实学到了关注图像的不同区域。

4. 预测头

每个查询输出两部分:

  • 类别:K+1K+1 个类别(KK 个物体类别 + 1 个”无物体” ∅\varnothing 类)
  • 边界框:(cx,cy,w,h)(cx, cy, w, h),归一化到 [0,1][0,1]

这是 DETR 最核心、也最与众不同的设计。

问题陈述:训练时,模型输出了 NN 个预测 y^={(c^i,b^i)}i=1N\hat{y} = \{(\hat{c}_i, \hat{b}_i)\}_{i=1}^N,真实标签有 MM 个物体 y={(cj,bj)}j=1My = \{(c_j, b_j)\}_{j=1}^M(M≤NM \leq N,不足的用 ∅\varnothing 填充到 NN)。我们需要找到一个一对一匹配 σ\sigma,使得总匹配代价最小。

第一步:计算匹配代价矩阵

预测 ii 与真实标签 jj 的匹配代价为:

Lmatch(y^i,yj)=−1cj≠∅p^i(cj)+1cj≠∅Lbox(b^i,bj)\mathcal{L}_{\text{match}}(\hat{y}_i, y_j) = -\mathbb{1}_{c_j \neq \varnothing} \hat{p}_i(c_j) + \mathbb{1}_{c_j \neq \varnothing} \mathcal{L}_{\text{box}}(\hat{b}_i, b_j)

其中 Lbox\mathcal{L}_{\text{box}} 包含 L1 损失和 GIoU 损失:

Lbox(b^i,bj)=λL1∥b^i−bj∥1+λgiouLGIoU(b^i,bj)\mathcal{L}_{\text{box}}(\hat{b}_i, b_j) = \lambda_{\text{L1}} \|\hat{b}_i - b_j\|_1 + \lambda_{\text{giou}} \mathcal{L}_{\text{GIoU}}(\hat{b}_i, b_j)

GIoU(Generalized Intersection over Union) 是比普通 IoU 更优的框重叠度量。IoU 的问题是当两个框完全不重叠时 IoU=0,梯度为零,模型无法优化。GIoU 即使框不重叠也能给出有意义的梯度信号。

第二步:用匈牙利算法求最优匹配

σ∗=arg⁡min⁡σ∈SN∑i=1NLmatch(y^i,yσ(i))\sigma^* = \arg\min_{\sigma \in \mathfrak{S}_N} \sum_{i=1}^{N} \mathcal{L}_{\text{match}}(\hat{y}_i, y_{\sigma(i)})

其中 SN\mathfrak{S}_N 是 NN 个元素所有排列的集合。匈牙利算法(也叫 Kuhn-Munkres 算法)能在 O(N3)O(N^3) 时间内精确求解这个最优分配问题。

匈牙利算法 原本用于解决”分配问题”——比如有 NN 个工人和 NN 个任务,每个工人完成每个任务的代价不同,如何分配使得总代价最小?在 DETR 中,“工人”就是 Object Query,“任务”就是真实物体,“代价”就是匹配代价。算法保证找到全局最优的一对一分配。

第三步:在匹配结果上计算最终损失

LDETR=∑i=1N[−log⁡p^σ∗(i)(cσ∗(i))+1cσ∗(i)≠∅Lbox(b^σ∗(i),bσ∗(i))]\mathcal{L}_{\text{DETR}} = \sum_{i=1}^{N} \left[ -\log \hat{p}_{\sigma^*(i)}(c_{\sigma^*(i)}) + \mathbb{1}_{c_{\sigma^*(i)} \neq \varnothing} \mathcal{L}_{\text{box}}(\hat{b}_{\sigma^*(i)}, b_{\sigma^*(i)}) \right]
优点缺点
真正端到端,无 NMS、无 anchor训练收敛极慢(需要 500+ epochs)
架构简洁优雅对小物体检测能力弱
容易推广到其他任务(分割、全景分割)训练时间长,计算资源需求大
全局推理能力强推理速度在原始版本中不够快

为什么 DETR 收敛慢? 因为它的训练是从零开始”学习”每个 Object Query 应该关注图像的哪个区域——这需要大量迭代来建立空间先验。CNN 检测器通过预设 anchor 天然有了空间先验,DETR 需要从数据中学出来。

原始 DETR 的两个核心问题——训练收敛慢和小物体检测差——根源在于 Transformer 的全局注意力:Encoder 对特征图的每个位置都做全注意力,计算量大且对高分辨率特征图(小物体所在)不友好。

Deformable DETR(Zhu et al., 2021)引入了 Deformable Attention(可变形注意力) 来解决这些问题。

标准注意力对参考点的所有位置计算注意力权重;Deformable Attention 只关注少量(如 4 个)参考点附近的采样位置,且这些位置由模型自适应学习:

DeformAttn(z,p)=∑m=1MWm[∑k=1KAmk⋅x(p+Δpmk)]\text{DeformAttn}(z, p) = \sum_{m=1}^{M} W_m \left[ \sum_{k=1}^{K} A_{mk} \cdot x(p + \Delta p_{mk}) \right]

其中:

  • pp 是参考点位置
  • Δpmk\Delta p_{mk} 是第 mm 个注意力头、第 kk 个采样点的学习偏移量(可变形的来源)
  • AmkA_{mk} 是对应的注意力权重(∑kAmk=1\sum_k A_{mk} = 1)

直觉:Deformable Attention 就像人的”眼球扫视”——不是把整个画面都精读一遍,而是聚焦到几个关键位置。每个参考点只需关注 4 个自适应位置,计算量从 O(HW)2O(HW)^2 降到 O(HW⋅K)O(HW \cdot K)(KK 通常为 4),同时因为采样位置可学习,能精确聚焦到物体边界等关键区域。

指标原始 DETRDeformable DETR
训练 epochs50050
小物体 AP较差显著提升
显存占用高(全局注意力)低(仅 4 点采样)
整体 AP(COCO)~42~46+

Deformable DETR 将训练收敛速度提升了 10 倍,同时检测精度也有提升,是 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 输出中直接选取最可能是物体中心的 NN 个特征作为初始查询——给 Decoder 提供了很好的起点,大幅减少了 Decoder 需要做的”搜索”工作。

3. Iterative Cross-Attention Decoder

Decoder 不像原始 DETR 做完整的自注意力(Query 之间的注意力),而是迭代式地用 Cross-Attention 从 Encoder 特征中提取信息——更轻量、更快速。

模型COCO AP速度 (T4 GPU)参数量特点
YOLOv8-X53.9~28 ms68.2M单阶段、anchor-free
YOLOv10-X54.4~21 ms29.5M消除 NMS
RT-DETR-X54.3~34 ms67M端到端、无 NMS
RT-DETR-R5053.0~9 ms42M端到端、速度/精度均衡
RT-DETR-R1846.3~3 ms20M轻量级实时

关键洞察:YOLOv10(2024)也在努力消除 NMS(采用一致的 dual-assignment 策略),这说明 DETR 的端到端思想正在反向影响 YOLO 系列的设计。两条路线在趋同——YOLO 在引入 Transformer 组件,DETR 在追求实时速度。

百度在 2024 年发布了 RT-DETR v2,进一步优化了训练策略和推理效率。v3 版本(2024 年末)在 COCO 上达到 55.3 AP 的水平(R50 backbone),同时保持实时推理速度。

RT-DETR 已被集成到 Ultralytics(YOLO 官方维护方)的框架中(yolo mode=model rtdetr),可使用 YOLO 的工具链直接训练 RT-DETR 模型。PaddleDetection 也提供了完整的训练和部署方案。

YOLOv10(2024)和 YOLOv11(2024)都引入了部分 Transformer/注意力组件——YOLOv11 在 Head 中使用了部分注意力模块(PSA, Partial Self-Attention)。这表明 YOLO 和 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),能检测训练时未见过的类别。

在边缘设备部署方面,研究者通过知识蒸馏、量化、剪枝等技术将 RT-DETR 压缩到移动端可用的规模(<10M 参数),在嵌入式 GPU 上实现 30+ FPS。

考虑因素推荐原因
极致速度(边缘设备)YOLO(v8/v11)更成熟、生态更丰富
精度优先RT-DETR 或 Co-DETRCOCO 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。