YOLOv7 与YOLOv10:架构演变与性能分析
YOLO (You Only Look Once,只看一次)系列的发展历程代表了计算机视觉技术进步的迷人时间表,它在推理速度和检测精度之间进行了永恒的权衡。本对比深入探讨了两个重要的里程碑: YOLOv7和 YOLOv10。 YOLOv10和 YOLOv10,YOLOv10 是 2024 年发布的版本,它引入了NMS 训练的模式转变。
虽然这两种模型都是物体检测的绝佳选择,但它们迎合了不同的架构理念。YOLOv7 挑战了可训练的 "自由包 "和梯度路径优化的极限,而YOLOv10 则专注于消除后处理瓶颈,以实现实时端到端效率。
YOLOv7:优化梯度路径
YOLOv7 于 2022 年 7 月发布,在不增加推理成本的前提下,对架构进行了重大调整,重点优化了训练过程。由于其在COCO 数据集上的高精确度,它很快成为通用计算机视觉任务的宠儿。
作者:Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark LiaoChien-Yao Wang, Alexey Bochkovskiy, and Hong-Yuan Mark Liao
Organization:台湾中央研究院信息科学研究所
日期:2022-07-06
ArXiv:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
GitHub:WongKinYiu/yolov7
主要建筑特点
YOLOv7 引入了扩展高效层聚合网络(E-ELAN)。该架构通过控制最短和最长梯度路径,确保网络在训练过程中有效收敛,从而让模型学习到更多不同的特征。
此外,YOLOv7 还大量采用了 "Bag-of-Freebies "方法,在不增加推理成本的情况下提高了训练的准确性。这些方法包括模型重新参数化,将复杂的训练结构简化为精简的推理结构,在保持所学性能的同时减少延迟。
YOLOv10:NMS的终结
清华大学研究人员于 2024 年 5 月发布的YOLOv10 解决了物体检测中长期存在的瓶颈问题:非最大抑制NMS)。传统的YOLO 模型会预测单个物体的多个边界框,并依靠NMS 过滤掉重复的物体。这一后处理步骤会增加延迟,而延迟的变化取决于场景中物体的数量。
作者: Ao Wang, Hui Chen, Lihao Liu, et al:Ao Wang, Hui Chen, Lihao Liu, et al.
Organization:清华大学
日期:2024-05-23
ArXiv:YOLOv10:Real-TimeEnd-to-End Object Detection
GitHub:THU-MIG/yolov10
主要建筑特点
YOLOv10 引入了一致双分配策略。在训练过程中,模型同时使用一对多头(用于丰富的监督)和一对一头(用于端到端预测)。在推理过程中,只使用一对一标头,完全不需要NMS 。这就实现了可预测、低延迟的推理,使其非常适合处理时间必须恒定的边缘人工智能应用。
技术比较:架构和性能
这些模型的主要区别在于它们的推理效率。YOLOv7 依靠高度优化的主干(E-ELAN)来高效提取特征,但仍需要传统的后处理。YOLOv10 对基本检测头进行了修改,取消了后处理步骤,从而在达到类似准确度水平的同时降低了延迟。
性能指标
如下表所示,YOLOv10 的效率更高。例如,YOLOv10b实现了更高的 mAP(52.7%) 高于YOLOv7l(51.4%),而使用的参数 (24.4M vs 36.9M)和浮点运算 (FLOP) 却大大减少。
了解延迟
速度 "指标强调了YOLOv10 NMS 设计的影响。通过移除NMS 步骤,YOLOv10 减少了推理过程中的计算开销,这对TensorRT 等硬件加速器尤其有利,否则后处理会成为瓶颈。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| 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 |
优势与劣势
YOLOv7 的优势:
- 久经考验的稳健性:自 2022 年以来,在各种学术和工业环境中进行了广泛测试。
- 高分辨率支持:通过特定的 W6/E6 变体,在更高分辨率输入(如 1280 像素)时性能卓越。
- 社区资源:由于年代久远,已有大量教程和第三方实施方案。
YOLOv7 的弱点:
- 复杂性:与现代Ultralytics 模型相比,重新参数化和辅助头结构会使训练管道复杂化。
- NMS 依赖性:由于NMS 的存在,推理速度部分取决于场景密度。
YOLOv10 的优势:
- 最低延迟: NMS 架构可实现极快的推理速度,是实时推理的理想选择。
- 效率:以更少的参数和更低的内存使用率达到最先进的精度。
- 易于部署:移除NMS 步骤简化了向ONNX 和TensorRT 等格式的导出过程。
YOLOv10 的弱点:
- 任务特定性:主要侧重于物体检测,而Ultralytics 生态系统中的其他模型(如YOLO11)则在统一的框架内原生支持分割、姿势估计 和旋转框检测 。
理想用例
在YOLOv7 和YOLOv10 之间做出选择通常取决于部署环境的具体限制。
- 在以下情况下使用YOLOv7 如果您正在处理一个已经集成了 v7 架构的遗留项目,或者如果您需要特定的高分辨率变体(如YOLOv7)来检测大图像中的小物体,而推理速度是原始精度的次要因素。
- 在以下情况下使用YOLOv10 您要部署到资源有限的边缘设备(Raspberry Pi、Jetson Nano、手机)上,或者要求自动驾驶或高速机器人等应用的延迟绝对最小。较低的内存占用也使其在云环境中运行的成本更低。
Ultralytics 的优势
无论是选择YOLOv7 还是YOLOv10,通过Ultralytics Python 应用程序接口使用它们都比使用原始代码库具有显著优势。Ultralytics 已将这些模型集成到一个统一的生态系统中,并将易用性、培训效率和多功能性放在首位。
简化用户体验
训练复杂的深度学习模型历来需要管理复杂的配置文件和依赖关系。Ultralytics 框架将这一过程标准化。开发人员可以在不同的架构(例如,从 YOLOv10n 到 YOLOv10s,甚至到 YOLO11),只需更改一个字符串参数,而无需重写数据加载器或验证脚本。
代码示例
下面的示例演示了如何使用Ultralytics 软件包加载这些模型并进行预测。请注意,无论底层模型架构如何,应用程序接口都保持一致。
from ultralytics import YOLO
# Load a pre-trained YOLOv10 model (NMS-free)
model_v10 = YOLO("yolov10n.pt")
# Load a pre-trained YOLOv7 model
model_v7 = YOLO("yolov7.pt")
# Run inference on an image
# The API handles underlying differences automatically
results_v10 = model_v10("https://ultralytics.com/images/bus.jpg")
results_v7 = model_v7("https://ultralytics.com/images/bus.jpg")
# Print results
for result in results_v10:
result.show() # Display predictions
生态系统和面向未来
虽然YOLOv7 和YOLOv10 功能强大,但Ultralytics 生态系统仍在不断发展。最新的 YOLO11模型借鉴了 v7(功能聚合)和 v10(效率)的经验教训。
- 维护良好:频繁更新确保与最新版本的PyTorch、CUDA 和导出格式CoreML、ONNX、TensorRT)兼容。
- 内存效率: Ultralytics 模型的设计目的是在训练过程中最大限度地减少GPU VRAM 的使用,与许多Transformer 的替代方案(如RT-DETR)相比,Ultralytics 可以在消费级硬件上实现更大的批处理量。
- 训练效率:利用预先调整的超参数和 "智能 "数据集扫描,训练收敛速度通常更快,从而节省计算成本。
对于今天开始新项目的开发人员来说,探索 YOLO11强烈推荐使用YOLOv10 ,因为它在YOLOv10 的速度和前代产品强大的特征提取功能之间实现了完美的平衡,同时还为简单检测以外的任务提供了本地支持,例如实例分割和姿势估计 。
探索其他模型
如果您对进一步的比较或不同的架构感兴趣,可以参考这些资源:
- YOLO11 与YOLOv8- 比较最新的先进机型。
- RT-DETR 与YOLOv10-Transformer检测与基于 CNN 的效率对比。
- YOLOv9 与YOLOv10- 检验可编程梯度信息 (PGI) 与NMS 设计。