跳转至内容

YOLOv7 vs YOLOv10:架构演进与性能分析

YOLO(You Only Look Once)系列的发展代表了计算机视觉进步的迷人时间线,平衡了推理速度和检测准确性之间的永恒权衡。本次比较深入探讨了两个重要的里程碑:YOLOv7(2022 年设下新基准的强大模型)和 YOLOv10(2024 年发布,通过免 NMS 训练引入了范式转变)。

尽管这两个模型都是 object detection 的绝佳选择,但它们迎合了不同的架构理念。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 大量利用了“免费赠品包”——这些方法在训练期间提高精度,而不会增加推理成本。其中包括模型重参数化,即将复杂的训练结构简化为流线型的推理结构,从而在保持学习性能的同时减少延迟。

了解更多关于YOLOv7的信息。

YOLOv10:NMS 的终结

YOLOv10 于 2024 年 5 月由清华大学研究人员发布,解决了目标检测领域一个长期存在的瓶颈:非极大值抑制 (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 的需求。这带来了可预测的低延迟推理,使其非常适用于边缘 AI 应用,在这些应用中,处理时间必须保持恒定。

了解更多关于YOLOv10的信息。

技术比较:架构与性能

这些模型的主要区别在于它们处理推理效率的方法。YOLOv7 依赖高度优化的骨干网络 (E-ELAN) 来高效提取特征,但仍需要传统的后处理。YOLOv10 修改了基本的检测头以移除后处理步骤,从而在相似的准确性水平下实现更低的延迟。

性能指标

如下表所示,YOLOv10展现出卓越的效率。例如,YOLOv10b实现了比YOLOv7l(51.4%)更高的mAP(52.7%),同时使用的参数(24.4M vs 36.9M)和浮点运算(FLOPs)显著更少。

延迟详解

“速度”指标突出了 YOLOv10 无 NMS 设计的影响。通过移除 NMS 步骤,YOLOv10 减少了推理过程中的计算开销,这在 TensorRT 等硬件加速器上尤其有利,因为在这些加速器上,后处理否则可能会成为瓶颈。

模型尺寸
(像素)
mAPval
50-95
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
YOLOv7l64051.4-6.8436.9104.7
YOLOv7x64053.1-11.5771.3189.9
YOLOv10n64039.5-1.562.36.7
YOLOv10s64046.7-2.667.221.6
YOLOv10m64051.3-5.4815.459.1
YOLOv10b64052.7-6.5424.492.0
YOLOv10l64053.3-8.3329.5120.3
YOLOv10x64054.4-12.256.9160.4

优势与劣势

YOLOv7 优势:

  • 经验证的鲁棒性:自2022年以来在各种学术和工业环境中进行了广泛测试。
  • 高分辨率支持:通过特定的 W6/E6 变体,在更高分辨率输入(例如 1280 像素)上表现出色。
  • 社区资源:由于其历史较长,存在大量的教程和第三方实现。

YOLOv7 弱点:

  • 复杂性: 重参数化和辅助头结构会使训练流程相比于现代 Ultralytics 模型复杂化。
  • NMS 依赖性:由于 NMS,推理速度部分取决于场景密度。

YOLOv10 优势:

  • 最低延迟:无NMS架构实现了极快的推理速度,是实时推理的理想选择。
  • 效率: 以更少的参数和更低的内存使用量实现最先进的精度。
  • 部署简易性: 移除 NMS 步骤简化了向 ONNX 和 TensorRT 等格式的导出过程。

YOLOv10 不足之处:

  • 任务特异性:主要专注于目标检测,而 Ultralytics 生态系统中的其他模型(如 YOLO11)在统一框架中原生支持 segment、姿势估计和旋转框检测。

理想用例

YOLOv7 和 YOLOv10 之间的选择通常取决于部署环境的具体限制。

  • 如果您符合以下条件,请使用YOLOv7: 您正在处理一个已集成v7架构的遗留项目,或者您需要特定的高分辨率变体(如YOLOv7-w6)用于在大图像中进行小目标检测,且推理速度次于原始精度
  • 如果您符合以下条件,请使用YOLOv10: 您正在部署到资源受限的边缘设备(如Raspberry Pi、Jetson Nano、手机),或者需要自动驾驶或高速机器人等应用中的绝对最小延迟。更低的内存占用也使其在云环境中运行成本更低。

Ultralytics 优势

无论是选择YOLOv7还是YOLOv10,通过Ultralytics Python API使用它们比直接使用原始仓库代码具有显著优势。Ultralytics已将这些模型集成到一个统一的生态系统中,该生态系统优先考虑易用性训练效率多功能性

简化的用户体验

训练复杂的深度学习模型历来需要管理复杂的配置文件和依赖项。Ultralytics 框架将此过程标准化。开发者可以通过更改单个字符串参数在不同架构(例如,从 YOLOv10n 到 YOLOv10s,甚至到 YOLO11)之间切换,而无需重写数据加载器或验证脚本。

代码示例

以下示例演示了如何使用Ultralytics包加载并预测这些模型。请注意,无论底层模型架构如何,API都保持一致。

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 显存使用,与许多基于 Transformer 的替代方案(如 RT-DETR)相比,允许在消费级硬件上使用更大的批处理大小
  • 训练效率:凭借预调优的超参数和“智能”数据集扫描,训练收敛通常更快,从而节省了计算成本。

对于今天开始新项目的开发者而言,强烈推荐探索 YOLO11,因为它在 YOLOv10 的速度和前代模型的强大特征提取能力之间实现了精妙的平衡,同时原生支持超越简单 detect 任务的功能,例如 实例分割姿势估计

探索其他模型

如果您对进一步比较或不同架构感兴趣,可以参考这些资源:


评论