跳转至内容

YOLOv9 与 YOLOv10:目标检测技术比较

选择合适的目标检测模型对于开发人员和研究人员来说是一个关键决策,需要在高精度需求与实时推理和计算资源的限制之间取得平衡。本指南提供了YOLOv9YOLOv10这两款在2024年将计算机视觉性能推向新高度的最先进架构之间的深入技术比较。

虽然YOLOv9专注于架构创新以解决深度学习信息瓶颈,但YOLOv10引入了无NMS设计的范式转变,以实现最小延迟。这两个模型都完全集成到Ultralytics Python包中,允许用户在统一的生态系统中轻松训练、验证和部署它们。

性能指标与基准

这两种模型之间的性能权衡是截然不同的。YOLOv9 通常在平均精度 (mAP)方面有所突破,尤其是在其较大变体中,使其适用于 accuracy 至关重要的场景。相反,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:解决信息瓶颈

YOLOv9于2024年2月发布,旨在解决深度神经网络中的一个基本理论挑战:即数据在深层传播时信息丢失的问题。该模型旨在确保网络保留准确目标检测所需的关键特征。

技术细节:

架构:PGI 与 GELAN

YOLOv9 引入了两项开创性概念:

  1. 可编程梯度信息 (PGI):一种辅助监督框架,可防止训练期间的信息丢失。它确保生成可靠的梯度以更新网络权重,解决了先前架构中存在的深度监督问题。
  2. 广义高效层聚合网络 (GELAN):一种最大限度提高参数效率的新颖架构。GELAN 通过优化跨层特征聚合的方式,使模型能够以比传统设计更少的参数实现更高的准确性。

优势与劣势

YOLOv9 在对精度要求高的应用中表现出色。它保留详细特征信息的能力使其在检测小目标或处理复杂场景方面更具优势。然而,这种复杂性也带来了权衡。PGI 等架构新增功能主要用于训练,这意味着它们可以在推理时移除,但训练资源可能会更高。此外,尽管它效率高,但其延迟通常高于 YOLOv10 的专用高效设计。

了解更多关于YOLOv9的信息。

YOLOv10:免 NMS 检测时代

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

技术细节:

架构:一致的双重分配

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

优势与劣势

YOLOv10 的主要优势是低延迟。通过移除 NMS,推理延迟变得确定且显著降低,这对于实时视频处理至关重要。它还拥有出色的参数效率,如比较表所示,YOLOv10 模型以更少的 FLOPs 实现了具有竞争力的准确性。一个潜在的弱点是,与已建立的生态系统相比,它推出时间相对较晚,尽管集成到 Ultralytics 中缓解了这一点。它也高度专注于检测任务,而生态系统中的其他模型则提供更广泛的多任务支持。

端到端导出

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

了解更多关于YOLOv10的信息。

面向开发者的对比分析

将这些模型集成到生产环境中时,除了原始指标之外,还需要考虑几个实际因素。

易用性与生态系统

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

  • 训练效率:Ultralytics 模型通常比基于 Transformer 的检测器需要更少的内存,从而可以在标准消费级 GPU 上进行训练。
  • 多功能性:尽管 YOLOv9 和 YOLOv10 专注于 detect,但 Ultralytics API 通过 YOLO11 和 YOLOv8 等模型支持实例分割姿势估计等其他任务,为多样化的视觉 AI 项目提供了全面的工具包。

理想用例

  • 选择 YOLOv9 的时机:

    • 您的应用程序要求尽可能高的准确性(例如,医学成像、制造业中的缺陷检测)。
    • 您正在处理难以检测的物体,其中信息保留至关重要。
    • 与精度相比,延迟是次要考虑因素。
  • 选择 YOLOv10 的时机:

    • 速度至关重要。自动驾驶、机器人导航或高帧率视频分析等应用受益于其无NMS设计。
    • 部署到 边缘设备 (例如 NVIDIA Jetson 或 Raspberry Pi),这些设备的 CPU/GPU 资源有限。
    • 您需要确定性的推理时间,避免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 将其前身的最佳特性提炼成一个强大、企业就绪的软件包,适用于几乎任何视觉 AI 应用。

探索其他模型

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

  • YOLO11: 最新的最先进模型,在 detect、segment、姿势估计、旋转框检测和分类方面提供卓越的性能和多功能性。
  • YOLOv8: 一种非常流行且稳定的模型,以其广泛的兼容性和多任务支持而闻名。
  • RT-DETR: 一种基于Transformer的检测器,无需NMS即可提供高精度,可作为特定用例中YOLO架构的替代方案。

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


评论