YOLOv5 对比 YOLOv10:实时目标检测的演进
目标检测领域已由You Only Look Once (YOLO) 系列显著塑造。自问世以来,YOLO平衡了速度和准确性,成为计算机视觉开发人员的首选架构。本文将探讨其历史上的两个关键时刻:Ultralytics YOLOv5(行业可靠性和多功能性标准)和YOLOv10(清华大学近期发布的学术成果,引入了无NMS检测以提高效率)。
模型概述
Ultralytics YOLOv5
由Glenn Jocher和Ultralytics于2020年6月发布,YOLOv5从根本上改变了AI模型的部署方式。它优先考虑可用性,支持导出到多种格式(CoreML、ONNX、TFLite),并在边缘硬件上表现出强大的性能。得益于其“开箱即用”的理念和广泛的社区支持,它仍然是全球最受欢迎和广泛部署的视觉模型之一。
主要作者:Glenn Jocher
机构:Ultralytics
发布日期:2020-06-26
GitHub:ultralytics/yolov5
YOLOv10
由清华大学研究人员于2024年5月发布,YOLOv10旨在消除先前版本中存在的后处理瓶颈。通过引入用于无NMS训练的一致双重分配,它优化了推理流程,降低了延迟和计算开销。
主要作者:Ao Wang, Hui Chen 等
机构:清华大学
发布日期:2024-05-23
arXiv:YOLOv10:实时端到端对象 detect
架构与技术创新
YOLOv5 和 YOLOv10 之间的架构差异突显了从成熟的基于锚点的可靠性向尖端的无锚点效率的转变。
YOLOv5:基于锚框的标准
YOLOv5 采用 CSPNet(跨阶段部分网络)主干网络,平衡了模型深度和宽度,以最小化FLOPS同时保持准确性。它依赖于锚框——预定义的形状,帮助模型预测物体尺寸。
- 主干网络:CSP-Darknet53 专注于梯度流。
- 检测头:带有基于锚框预测的耦合检测头。
- 后处理:需要非极大值抑制(NMS)来过滤重复的检测结果。
YOLOv10:免 NMS 高效性
YOLOv10 引入了一种整体效率-精度驱动的设计。其突出特点是采用一致双重分配的免 NMS 训练策略。这使得模型能够在推理过程中为每个对象精确预测一个边界框,完全消除了导致延迟的 NMS 步骤。
- 主干网络:通过大核卷积和部分自注意力机制增强。
- 检测头:结合了一对多和一对一标签分配的统一检测头。
- 优化:秩引导的块设计以减少冗余。
性能分析
下表比较了在COCO 数据集上的性能指标。尽管 YOLOv5 仍具竞争力,尤其是在其 Nano 变体的 CPU 速度方面,但 YOLOv10 在参数和准确性 (mAP) 方面表现出卓越的效率。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
指标细分
- 准确率 (mAP): YOLOv10 在平均精度均值方面显示出显着提升。例如,YOLOv10n 实现了 39.5 mAP,而 YOLOv5n 的 mAP 为 28.0,使其能够更好地 detect 困难的目标。
- 效率: YOLOv10 以更少的参数(Nano 模型为 2.3M vs 2.6M)实现了这些结果,展示了其优化架构设计的优势。
- 推理速度:YOLOv5n在CPU上仍然快得惊人(73.6毫秒),这对于较旧的Raspberry Pi等非GPU边缘设备至关重要。然而,在GPU硬件(TensorRT)上,YOLOv10尽管准确性更高,但仍保持了有竞争力的速度。
优势与劣势
Ultralytics YOLOv5
- 无与伦比的生态系统: 凭借多年的开发积累,它拥有最大的活跃社区之一。问题得到快速解决,资源丰富。
- 多功能性: 除了检测之外,它原生支持图像分割和分类。
- 易用性:该 API 设计简洁。从 PyTorch Hub 加载模型只需一行代码。
- 部署:对导出格式的广泛支持确保其可在从手机到云服务器的所有设备上运行。
YOLOv10
- 低延迟: 移除NMS显著减少了后处理时间,这对于争分夺秒的实时应用至关重要。
- 参数效率:它提供了更高的每参数精度,使其成为存储或内存有限设备的有力候选。
- 侧重点:尽管功能强大,但它主要专注于目标检测,缺乏 Ultralytics YOLO 系列(v8, 11)中原生的多任务广度(如姿势估计)。
内存要求
两种模型都设计为轻量级。与在训练期间消耗大量 CUDA 内存的大型 Transformer 模型不同,Ultralytics YOLO 模型针对内存效率进行了优化,使其可以在配备适中显存的消费级 GPU 上进行训练。
实际应用案例
何时选择 YOLOv5
YOLOv5 是需要稳定性和广泛平台支持的生产系统的务实选择。
- 工业自动化: 广泛应用于对可靠性要求极高的制造业质量控制领域。
- 移动应用: 其与 iOS (CoreML) 和 Android (TFLite) 的成熟兼容性,使其成为设备上应用集成的理想选择。
- 快速原型开发:大量的教程和文档使开发者能够在数小时内从概念到概念验证(POC)。
何时选择 YOLOv10
YOLOv10 非常适用于需要最高精度-效率比的场景。
- 高速机器人:免NMS架构减少了延迟方差,这对于自主机器人的控制回路至关重要。
- 学术研究: 寻求针对最新的端到端检测范例进行基准测试的研究人员会发现 YOLOv10 的架构新颖而有效。
- 远程监控:高mAP和低参数量适用于在有限带宽或存储下运行的安防系统。
训练与易用性
Ultralytics 优先提供精简的开发者体验。无论是使用经典的 YOLOv5 仓库还是现代的 ultralytics 用于新模型的包,其过程直观。
使用YOLOv5
YOLOv5 以其通过 PyTorch Hub 易于加载而闻名,以实现即时推理。
import torch
# Load YOLOv5s from PyTorch Hub
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# Perform inference on an image
img = "https://ultralytics.com/images/zidane.jpg"
results = model(img)
# Display results
results.show()
使用YOLOv10
YOLOv10 可以通过 ultralytics Python 包,得益于同样强大的 API。
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Train the model on COCO data
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference
model.predict("https://ultralytics.com/images/bus.jpg", save=True)
结论
两种架构都代表了计算机视觉领域的里程碑。YOLOv5 仍然是行业中可靠的主力——稳健、多功能,并得到庞大生态系统的支持。它是满足各种部署需求的安全、首选方案。YOLOv10 以其无 NMS 设计突破了效率的边界,对于专注于检测任务、需要在受限硬件上最大化准确性的用户来说,是一个引人注目的升级。
对于寻求两全其美——结合 Ultralytics 生态系统的成熟度与最先进的准确性和速度——的开发者而言,我们推荐探索 YOLO11。它将这些进步统一到一个强大且适用于任何视觉任务的框架中。
要探索更多比较,请查阅YOLOv5 与 YOLOv8或YOLOv10 与 YOLO11。