跳转至内容

YOLOv9 与YOLOv10:物体检测技术比较

对于开发人员和研究人员来说,选择合适的物体检测模型是一项关键决策,需要在高精度需求与实时推理和计算资源的限制之间取得平衡。本指南对 YOLOv9 和 YOLOv9 进行了深入的技术比较。 YOLOv9YOLOv10之间进行了深入的技术比较。

YOLOv9 专注于解决深度学习信息瓶颈的架构创新,而YOLOv10 则通过NMS 设计实现了范式转变,将延迟降到最低。这两种模型都完全集成到了Ultralytics Python 软件包中,用户可以在一个统一的生态系统中轻松地对其进行训练、验证和部署。

性能指标和基准

这两种模型之间的性能权衡是截然不同的。YOLOv9 通常会提高平均精度(mAP),尤其是其较大的变体,因此适用于精度至关重要的应用场景。相反,YOLOv10 则追求效率,大大减少了推理延迟和参数数量,非常适合边缘部署。

下表使用COCO 数据集说明了这些差异。值得注意的是,YOLOv10n在 T4 GPU 上实现了令人难以置信的速度,而YOLOv9e则在检测准确性方面占据优势。

模型尺寸
(像素)
mAPval
50-95
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
YOLOv9t64038.3-2.32.07.7
YOLOv9s64046.8-3.547.126.4
YOLOv9m64051.4-6.4320.076.3
YOLOv9c64053.0-7.1625.3102.1
YOLOv9e64055.6-16.7757.3189.0
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

YOLOv9:解决信息瓶颈问题

2024 年 2 月发布、 YOLOv9YOLOv9 针对深度神经网络中的一个基本理论难题:数据通过深层传播时的信息丢失。该模型旨在确保网络保留准确检测物体所需的基本特征。

技术细节:

建筑:PGI 和 GELAN

YOLOv9 引入了两个突破性的概念:

  1. 可编程梯度信息(PGI):一种辅助监督框架,可防止训练过程中的信息丢失。它能确保生成可靠的梯度来更新网络权重,从而解决以往架构中存在的深度监督问题。
  2. 通用高效层聚合网络(GELAN):一种能最大限度提高参数效率的新型架构。与传统设计相比,GELAN 通过优化跨层聚合特征的方式,使模型以更少的参数达到更高的精度。

优势与劣势

YOLOv9 在精度要求极高的应用中表现出色。它能够保留详细的特征信息,因此在检测小型物体或导航复杂场景方面表现出色。然而,这种复杂性是以复杂性为代价的。像 PGI 这样的架构添加物主要用于训练,这意味着它们可以在推理过程中移除,但训练资源可能会更高。此外,虽然效率高,但其延迟一般高于YOLOv10 的专门高效设计。

了解有关YOLOv9的更多信息

YOLOv10:NMS 检测时代

YOLOv10YOLOv10 由清华大学研究人员开发,于 2024 年 5 月发布,优先考虑实时速度和端到端的可部署性。它的最大特点是消除了非最大抑制(NMS),这是一个后处理步骤,传统上一直是推理延迟的瓶颈。

技术细节:

建筑:一致的双重分配

YOLOv10 的核心创新是训练期间的一致双分配。该模型在训练期间采用一对多的分配策略进行丰富的监督,但在推理时则切换为一对一的分配。这种架构允许模型直接预测每个对象的最佳边界框,从而使NMS 后处理变得过时。YOLOv10 采用了等级引导块设计,减少了冗余和计算开销(FLOPs)。

优势与劣势

YOLOv10 的主要优势在于低延迟。通过移除NMS,推理延迟变得确定且显著降低,这对实时视频处理至关重要。它还拥有出色的参数效率,从对比表中可以看出,YOLOv10 模型以更少的 FLOP 达到了具有竞争力的精度。一个潜在的弱点是,与成熟的生态系统相比,YOLOv10 的推出时间相对较短,不过与Ultralytics 集成可以缓解这一问题。此外,YOLOv10 高度专注于检测,而生态系统中的其他模型则提供更广泛的多任务支持。

端到端出口

由于YOLOv10 在设计上NMS,因此将其导出为ONNX 或TensorRT 等格式通常会更简单,并能生成 "纯粹的 "端到端模型,而无需复杂的后处理插件。

了解有关YOLOv10的更多信息

开发人员比较分析

在将这些模型集成到生产中时,除了原始指标外,还有一些实际因素也会发挥作用。

易用性和生态系统

作为Ultralytics 生态系统的一部分,这两种模型都受益匪浅。这意味着开发人员只需更改模型字符串,就可以利用相同的训练管道、验证工具和部署格式在YOLOv9 和YOLOv10 之间切换。

  • 训练效率:transformer探测器相比,Ultralytics 模型所需的内存通常更少,因此可以在标准的消费级 GPU 上进行训练。
  • 多功能性: YOLOv9 和YOLOv10 专注于检测,而Ultralytics API 则通过YOLO11 和YOLOv8 等模型支持实例分割姿势估计 等其他任务,为各种视觉人工智能项目提供了全面的工具包。

理想用例

  • 在下列情况下选择YOLOv9

    • 您的应用需要尽可能高的精确度(例如,医学成像、制造中的缺陷检测)。
    • 在处理detect 检测的物体时,信息的保留至关重要。
    • 与精度相比,延迟是次要问题。
  • 选择YOLOv10 时:

    • 速度至关重要。自动驾驶、机器人导航或高帧频视频分析等应用都得益于NMS 设计。
    • 在GPU 资源有限的边缘设备(如NVIDIA Jetson 或 Raspberry Pi)上部署。
    • 您需要一个确定的推理时间,而不需要NMS 处理带来的可变性。

代码示例:运行两种模型

有了统一的Ultralytics API,在自己的数据上比较这些模型就变得简单易行了。下面的Python 代码演示了如何使用这两种架构加载和运行推理。

from ultralytics import YOLO

# Load a pre-trained YOLOv9 model
model_v9 = YOLO("yolov9c.pt")

# Load a pre-trained YOLOv10 model
model_v10 = YOLO("yolov10n.pt")

# Run inference on an image
results_v9 = model_v9("path/to/image.jpg")
results_v10 = model_v10("path/to/image.jpg")

# Print results
print(f"YOLOv9 Detection: {len(results_v9[0].boxes)}")
print(f"YOLOv10 Detection: {len(results_v10[0].boxes)}")

结论

YOLOv9 和YOLOv10 都是计算机视觉领域的重要里程碑。 YOLOv9突破了特征保持和精确度的理论极限,使其成为研究和高精度任务的强大工具。 YOLOv10通过消除NMS 瓶颈重新定义了效率,为实时应用提供了精简的解决方案。

对于在多项任务(包括细分和分类)中寻求准确性、速度和特征丰富度的绝对最佳平衡的用户,我们还建议探索 YOLO11.作为Ultralytics 的最新迭代产品,YOLO11 将其前代产品的最佳特性精炼为一个强大的企业级软件包,几乎适用于任何视觉人工智能应用。

探索其他模型

Ultralytics 生态系统非常庞大。如果您的项目要求不同,请考虑这些替代方案:

  • YOLO11最新的先进机型,在检测、分段、姿势估计、旋转框检测和分类方面具有卓越的性能和多功能性。
  • YOLOv8以广泛的兼容性和多任务支持而著称,是一款非常受欢迎且稳定的机型。
  • RT-DETR transformer探测器,无需NMS 即可提供高精度,可作为特定用例中YOLO 架构的替代方案。

利用Ultralytics 平台,您可以访问这一整套模型,确保您始终拥有适合工作的工具。


评论