RTDETRv2 与 YOLOv10:免 NMS 实时目标检测的进展
计算机视觉的发展在很大程度上是由在速度和准确性之间取得平衡的不懈追求所推动的。传统上,实时目标检测流水线依赖非极大值抑制 (NMS) 作为后处理步骤来过滤重叠的边界框。然而,NMS 引入了延迟瓶颈和复杂的超参数调优。最近,两种不同的架构方法应运而生,以原生方式解决此问题:基于 Transformer 的模型,如 RTDETRv2,以及基于 CNN 的模型,如 YOLOv10。
本指南对这两种模型进行了全面的技术比较,分析了它们的架构、性能指标和理想应用场景,同时强调了 Ultralytics 生态系统的最新创新如何为现代部署提供终极解决方案。
RTDETRv2:实时检测 Transformer
RTDETRv2 在原始 RT-DETR 架构的基础上构建,旨在将视觉 Transformer 的全局上下文理解能力与传统上由 YOLO 模型主导的实时速度要求相结合。
主要特点:
- 作者:吕文宇、赵一安、常钦尧、黄奎、王冠中、刘毅
- 组织:百度
- 日期:2024-07-24
- Arxiv: https://arxiv.org/abs/2407.17140
- GitHub: https://github.com/lyuwenyu/RT-DETR/tree/main/RT-DETRv2_pytorch
架构与训练方法
RTDETRv2 采用端到端的 Transformer 架构,其本质上避免了 NMS。它通过引入“Bag-of-Freebies”方法,优化训练策略并整合多尺度检测能力,在其前身的基础上进行了改进。该模型使用 CNN 主干网络提取 特征图(如边缘和纹理等视觉细节),然后由 Transformer 编解码器结构进行处理。这使得模型能够同时分析整个图像上下文,从而在理解物体密集排列或重叠的复杂场景时表现出高效性。
优势与劣势
优势:
- 全局上下文:注意力机制使模型能够在复杂、杂乱的环境中表现出色。
- 免NMS:直接预测目标坐标,简化了部署流程。
- 高精度:在COCO数据集上实现了出色的平均精度 (mAP)。
弱点:
- 资源密集型:Transformer架构在训练期间通常比CNN需要更多的CUDA内存,这使得它们在标准硬件上进行微调成本高昂。
- 推理速度可变性: 尽管速度快,但繁重的注意力计算可能导致缺乏专用 AI 加速器的边缘设备上的计算机视觉 FPS 降低。
YOLOv10:实时端到端目标检测
YOLOv10 代表着 YOLO目标检测 系列的重大转变,它通过在CNN框架内直接解决了长期存在的NMS瓶颈。
主要特点:
- 作者: Ao Wang, Hui Chen, Lihao Liu, et al.
- 组织:清华大学
- 日期:2024-05-23
- Arxiv: https://arxiv.org/abs/2405.14458
- GitHub: https://github.com/THU-MIG/YOLOv10
架构与训练方法
YOLOv10 的核心创新在于其用于免 NMS 训练的一致双重分配。它在训练期间采用两个检测头:一个采用一对多分配(如传统 YOLO),提供丰富的监督信号;另一个采用一对一分配,以消除对 NMS 的需求。在推理期间,仅使用一对一头部,从而实现端到端过程。此外,作者应用了整体效率-精度驱动的模型设计策略,全面优化了各种组件以减少计算冗余。
优势与劣势
优势:
- 极致速度:通过移除NMS并优化架构,YOLOv10实现了极低的推理延迟。
- 效率:需要更少的参数和 FLOPs 即可达到与其他模型相当的精度,使其非常适合受限环境。
- NMS-Free 部署:简化了与智能监控等边缘应用的集成。
弱点:
- 第一代概念:作为第一个实现这种特定无 NMS 架构的 YOLO,它奠定了基础,但为后续模型(如 YOLO11 和 YOLO26)中出现的多任务通用性和优化留下了空间。
性能对比
在评估用于生产的模型时,平衡准确性与计算成本至关重要。下表强调了 RTDETRv2 和 YOLOv10 不同尺寸之间的性能权衡。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| RTDETRv2-s | 640 | 48.1 | - | 5.03 | 20 | 60 |
| RTDETRv2-m | 640 | 51.9 | - | 7.51 | 36 | 100 |
| RTDETRv2-l | 640 | 53.4 | - | 9.76 | 42 | 136 |
| RTDETRv2-x | 640 | 54.3 | - | 15.03 | 76 | 259 |
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
尽管 RTDETRv2 提供了强大的准确性,但 YOLOv10 在延迟和参数效率方面展现出显著优势,尤其是在其较小的变体(Nano 和 Small)中,使其对 边缘计算和 AIoT 应用极具吸引力。
选择合适的尺度
如果您正在部署到服务器级 GPU 上,其中 批次大小 且显存限制较少时,较大的模型(例如 -x 或 -l) 最大化准确性。对于树莓派或手机等边缘设备,优先选择 nano (-n) 或小型 (-s) 变体以保持实时帧率。
应用场景与建议
在 RT-DETR 和 YOLOv10 之间进行选择,取决于您的具体项目要求、部署限制以及生态系统偏好。
何时选择 RT-DETR
RT-DETR 是一个强有力的选择,适用于:
- 基于 Transformer 的 detect 研究:探索注意力机制和 Transformer 架构,以实现无需 NMS 的端到端目标 detect 的项目。
- 精度优先且延迟灵活的场景:检测精度是首要任务,且可接受略高推理延迟的应用。
- 大目标检测:主要包含中大型目标的场景,其中Transformer的全局注意力机制具有天然优势。
何时选择 YOLOv10
YOLOv10 推荐用于:
- 免NMS的实时检测:受益于无需非极大值抑制的端到端检测,从而降低部署复杂性的应用。
- 速度-精度平衡权衡:适用于需要在推理速度和 detect 精度之间取得良好平衡的各种模型规模的项目。
- 一致延迟应用:部署场景中,可预测的推理时间至关重要,例如机器人技术或自主系统。
何时选择 Ultralytics (YOLO26)
对于大多数新项目,Ultralytics YOLO26 提供了性能和开发者体验的最佳组合:
- 免NMS的边缘部署:需要一致的低延迟推理,且无需非极大值抑制后处理复杂性的应用。
- 纯CPU环境:在没有专用GPU加速的设备上,YOLO26高达43%的CPU推理速度提升提供了决定性优势。
- 小目标 detect:在 无人机航拍图像 或物联网传感器分析等挑战性场景中,ProgLoss 和 STAL 显著提高了微小目标的准确性。
Ultralytics 优势:YOLO26 简介
尽管RTDETRv2和YOLOv10都提供了引人注目的学术进展,但在实际场景中部署它们需要一个健壮、维护良好的软件生态系统。Ultralytics平台提供了无与伦比的开发者体验,结合了易用性、详尽的文档以及用于数据标注和部署的强大工具。
对于寻求 2026 年绝对最先进技术的开发者,Ultralytics YOLO26 是最终推荐。它综合了两种架构的最佳思想,同时引入了突破性的改进:
- 端到端免NMS设计:基于YOLOv10开创的概念,YOLO26原生消除了NMS后处理,从而实现了更快、更简单的部署逻辑和零延迟波动。
- DFL移除:通过移除分布焦点损失,YOLO26简化了模型导出,并大幅提高了与边缘和低功耗设备的兼容性。
- MuSGD优化器:SGD和Muon的混合(受LLM训练创新启发),与传统方法相比,这种新型优化器提供更稳定的训练和显著更快的收敛。
- CPU 推理速度提升高达 43%:针对没有专用 GPU 的环境进行了精心优化,普及了高性能视觉 AI。
- ProgLoss + STAL: 这些先进的损失函数在小目标识别方面取得了显著改进,这对于使用无人机的应用和物联网传感器至关重要。
- 无与伦比的多功能性:与仅限于边界框的模型不同,YOLO26 支持全套任务,包括实例分割、姿势估计、图像分类和obb detection,并附带针对特定任务的改进,例如用于姿势估计的残差对数似然估计 (RLE)。
使用 Python 无缝实现
使用Ultralytics Python API训练和部署这些模型旨在实现无缝体验。与基于 Transformer 的重型架构相比,训练期间的内存需求显著降低,使您能够在标准硬件上训练强大的模型。
from ultralytics import YOLO
# Load the cutting-edge YOLO26 model (recommended)
# Alternatively, load a YOLOv10 model using YOLO('yolov10n.pt')
model = YOLO("yolo26n.pt")
# Train the model on your custom dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Easily export to various formats for edge deployment
model.export(format="onnx", simplify=True)
无论您是实施安全警报系统还是进行医学图像分析,选择一个由活跃的 Ultralytics 社区支持的模型,都能确保您拥有成功所需的工具、超参数调优指南和持续更新。虽然 YOLOv10 和 RTDETRv2 为无 NMS 架构铺平了道路,但 YOLO26 完善了这一公式,提供了性能、多功能性和生产就绪性的最佳平衡。