RTDETRv2 vs YOLOv5:详细技术比较
选择最佳的目标检测模型对于任何计算机视觉项目来说都是至关重要的决定。精度、速度和计算成本之间的权衡决定了模型对给定应用的适用性。本页提供了 RTDETRv2(一种高精度、基于Transformer的模型)和 Ultralytics YOLOv5(一种高效且被广泛采用的行业标准)之间的详细技术比较。我们将探讨它们的架构差异、性能基准和理想用例,以帮助您做出明智的选择。
RTDETRv2:高精度实时检测 Transformer
RTDETRv2(Real-Time Detection Transformer v2)是百度公司最先进的目标检测器,它利用 Vision Transformer 的强大功能来实现高精度,同时保持实时性能。它代表着将复杂的Transformer架构引入到实际的实时应用中的重要一步。
作者: Wenyu Lv, Yian Zhao, Qinyao Chang, Kui Huang, Guanzhong Wang, 和 Yi Liu
机构: Baidu
日期: 2023-04-17 (初始 RT-DETR), 2024-07-24 (RT-DETRv2 改进)
Arxiv: https://arxiv.org/abs/2304.08069, https://arxiv.org/abs/2407.17140
GitHub: https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch
文档: https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch#readme
架构
RTDETRv2 采用混合架构,该架构结合了卷积神经网络 (CNN) 和 Transformer 的优势。
- 主干网络: CNN(如 ResNet 或 HGNetv2)用于初始特征提取,有效地捕获低级图像特征。
- 编码器-解码器: 该模型的核心是基于 Transformer 的编码器-解码器。它使用自注意力机制来处理来自骨干网络的特征图,使模型能够捕获全局上下文和场景中对象之间的长程依赖关系。这对于在复杂或拥挤的环境中检测对象尤其有效。
优势
- 高精度: Transformer 架构使 RTDETRv2 能够获得出色的 mAP 分数,通常在像 COCO 这样的复杂数据集上优于传统的基于 CNN 的模型。
- 稳健的特征提取: 通过考虑整个图像上下文,它在具有遮挡或小物体的具有挑战性的场景中表现良好,使其适用于诸如自动驾驶之类的应用。
- 实时能力: 该模型经过优化,可提供具有竞争力的推理速度,尤其是在使用NVIDIA TensorRT等工具加速时。
弱点
- 计算成本: 基于Transformer的模型通常具有更高的参数计数和 FLOPs,需要更多的计算资源,如 GPU 内存和处理能力。
- 训练复杂度: 训练 RTDETRv2 可能需要大量资源,并且比训练基于 CNN 的模型要慢。它通常需要明显更多的 CUDA 内存,这对于硬件有限的用户来说可能是一个障碍。
- CPU 上的推理速度: 虽然在高端 GPU 上速度很快,但在 CPU 或性能较低的 边缘设备 上,其性能可能明显低于像 YOLOv5 这样的优化模型。
- 生态系统: 它缺乏 Ultralytics 为其 YOLO 模型提供的广泛、统一的生态系统、工具和广泛的社区支持。
Ultralytics YOLOv5:已建立的行业标准
Ultralytics YOLOv5 于 2020 年首次发布,由于其在速度、准确性和无与伦比的易用性方面实现了出色的平衡,迅速成为行业基准。YOLOv5 由 Glenn Jocher 在 PyTorch 中开发,是一款成熟、可靠且经过高度优化的模型,已在无数实际应用中部署。
作者: Glenn Jocher
组织: Ultralytics
日期: 2020-06-26
GitHub: https://github.com/ultralytics/yolov5
文档: https://docs.ultralytics.com/models/yolov5/
架构
YOLOv5 具有经典且高效的 CNN 架构。它使用 CSPDarknet53 主干网络进行特征提取,使用 PANet neck 在不同尺度上进行特征聚合,并使用基于 anchor 的检测头。这种设计已被证明对 实时对象检测 非常有效。
优势
- 卓越的速度和效率: YOLOv5 针对从高端 GPU 到资源受限的边缘设备(如 NVIDIA Jetson 和 树莓派)的各种硬件上的快速推理进行了高度优化。
- 易用性: Ultralytics YOLOv5 以其简化的用户体验而闻名。 借助简单的 Python API 和丰富的 文档,开发人员可以最大限度地减少精力来训练、验证和部署模型。
- 完善的生态系统: YOLOv5 由强大的 Ultralytics 生态系统提供支持,该生态系统包括积极的开发、庞大且支持性强的社区、频繁的更新以及 Ultralytics HUB 等集成工具,可用于无代码训练和部署。
- 性能平衡: 该模型系列(n、s、m、l、x)在速度和准确性之间实现了出色的平衡,使用户能够根据其特定需求选择最合适的模型。
- 内存效率: 与像 RTDETRv2 这样的基于Transformer的模型相比,YOLOv5 训练所需的 CUDA 内存要少得多,这使得更多的开发者和研究人员可以使用它。
- 多功能性: YOLOv5 支持多项任务,包括 目标检测、实例分割 和 图像分类,所有这些都在一个统一的框架内。
- 训练效率: 训练过程快速高效,并具有随时可用的预训练权重,可加速自定义数据集的收敛。
弱点
- 复杂场景中的精度: 虽然非常准确,但在具有非常密集或小物体的的数据集上,YOLOv5 的 mAP 可能略逊于 RTDETRv2,在这些情况下,全局上下文至关重要。
- 基于Anchor: 它依赖于预定义的anchor框,有时可能需要针对具有不寻常对象宽高比的数据集进行额外调整,而无anchor检测器则不需要这一步。
理想用例
YOLOv5 在速度、效率和快速开发是优先事项的应用中表现出色:
- 实时视频监控: 为 安全警报系统 提供支持,并监控实时视频源。
- 边缘计算: 在低功耗设备上部署,用于 机器人技术 和工业自动化应用。
- 移动应用程序: 其轻量级模型非常适合在智能手机上进行设备上的推理。
- 快速原型设计: 易于使用和快速的训练周期使其成为快速开发和测试新想法的理想选择。
性能分析:速度 vs. 准确性
RTDETRv2 和 YOLOv5 之间的主要区别在于它们的设计理念。RTDETRv2 优先考虑通过利用计算密集型的Transformer架构来实现尽可能高的精度。相比之下,YOLOv5 专为速度和精度之间的最佳平衡而设计,使其成为更广泛部署场景的更实用选择,尤其是在非 GPU 硬件上。
下表提供了在 COCO val2017 数据集上的定量比较。虽然 RTDETRv2 模型实现了更高的 mAP,但 YOLOv5 模型,特别是较小的变体,提供了显著更快的推理速度,尤其是在 CPU 上。
模型 | 尺寸 (像素) |
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 |
YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
结论与建议
RTDETRv2 和 YOLOv5 都是强大的目标检测模型,但它们满足不同的需求。
对于将实现绝对最高精度作为首要任务,并且有大量计算资源(尤其是高端 GPU)可用的应用,RTDETRv2 是一个绝佳的选择。它理解全局上下文的能力使其在学术基准测试和具有复杂场景的专业工业任务中表现出色。
然而,对于绝大多数实际应用而言,Ultralytics YOLOv5 仍然是更实用和通用的选择。它在速度和精度方面实现了卓越的平衡,并且资源需求较低,因此适用于从云到边缘的各种部署。YOLOv5 的主要优势——易用性、维护良好的生态系统、训练效率 和 通用性——使其成为需要快速高效地交付强大、高性能解决方案的开发人员和研究人员的首选模型。
对于那些希望在此强大基础上利用最新进展的人,我们强烈建议探索较新的 Ultralytics 模型,如 YOLOv8 和 YOLO11,它们在同一用户友好的框架内提供更好的性能和更多功能。
其他模型对比
如果您有兴趣了解这些模型与其他模型的比较,请查看以下对比页面:
- YOLOv5 vs YOLOv8
- YOLOv5 vs YOLOv9
- RTDETR vs YOLOv8
- RTDETR vs YOLO11
- EfficientDet vs YOLOv5
- YOLOX vs YOLOv5