跳转至内容

YOLOv9 与 YOLOX:全面技术比较

选择合适的目标检测架构是一个关键决策,它会影响计算机视觉应用的效率、准确性和可扩展性。本指南提供了2024年推出的最先进模型YOLOv9与2021年发布的高性能无锚点检测器YOLOX之间的详细技术比较。

YOLOv9:克服深度网络中的信息损失

YOLOv9 代表了实时目标检测领域的一个重大飞跃,旨在解决数据通过深度神经网络时信息丢失的根本挑战。

作者: Chien-Yao Wang, Hong-Yuan Mark Liao王建耀、廖鸿源、马克
组织:台湾中央研究院信息科学研究所
日期:2024-02-21
Arxiv:arXiv:2402.13616
GitHub:WongKinYiu/yolov9
文档:docs.ultralytics.com/models/yolov9/

架构与创新

YOLOv9的核心创新在于两个关键组件:可编程梯度信息 (PGI)广义高效层聚合网络 (GELAN)

  • 可编程梯度信息 (PGI):在深度网络中,关键输入数据在特征提取过程中经常丢失,这种现象被称为信息瓶颈。PGI 提供了一个辅助监督信号,确保可靠的梯度生成,使模型能够学习更有效的特征,而无需增加推理成本。
  • GELAN:这种架构设计优化了参数利用率和计算效率。通过推广高效层聚合网络(ELAN)的概念,GELAN 允许计算块的灵活堆叠,从而得到一个既轻量又快速的模型。

这些创新使 YOLOv9 能够在 COCO dataset上实现一流性能,在精度和参数效率方面都超越了以前的版本。

了解更多关于YOLOv9的信息。

YOLOX:无锚框标准

YOLOX的推出旨在弥合学术研究与工业应用之间的鸿沟,并在YOLO系列中推广了无锚框方法。

作者: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun
组织: Megvii
日期: 2021-07-18
Arxiv:arXiv:2107.08430
GitHub:Megvii-BaseDetection/YOLOX
文档:yolox.readthedocs.io

主要架构特性

YOLOX与早期YOLO版本不同,它移除了锚框并采用了解耦头结构。

  • Anchor-Free Design: 传统的 detect 器依赖于预定义的 anchor 框,这需要启发式调整和聚类。YOLOX 将对象 detect 视为一个点预测问题,简化了设计并提高了对不同对象形状的泛化能力。
  • 解耦头:分类和回归任务在独立的(头部)分支中处理。这种分离使模型能够独立优化每个任务,从而实现更快的收敛和更高的精度。
  • SimOTA:一种先进的标签分配策略,它动态地将正样本分配给真实对象,进一步提升了性能。

性能分析:指标与基准

在分析性能时,YOLOv9 展现出明显的优势,这与其作为更新架构的特性相符。通过利用 PGI 和 GELAN,YOLOv9 实现了更高的平均精度 (mAP),同时与 YOLOX 相比,保持或降低了计算负载 (FLOPs)。

下表突出显示了性能差异。值得注意的是,YOLOv9-C以不到一半的参数数量(25.3M vs 54.2M)实现了比YOLOX-L(49.7%)显著更高的mAP(53.0%)。这种效率使得YOLOv9成为受硬件资源限制但要求高精度的应用的卓越选择。

模型尺寸
(像素)
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
YOLOXnano41625.8--0.911.08
YOLOXtiny41632.8--5.066.45
YOLOXs64040.5-2.569.026.8
YOLOXm64046.9-5.4325.373.8
YOLOXl64049.7-9.0454.2155.6
YOLOXx64051.1-16.199.1281.9

速度与效率

尽管YOLOX在2021年实现了令人印象深刻的速度,但YOLOv9进一步突破了极限。YOLOv9-T(Tiny)模型提供了卓越的平衡,仅用2.0M参数即可达到38.3%的mAP,使其非常适合移动和嵌入式应用。相比之下,YOLOX-Nano更小,但牺牲了显著的准确性(25.8% mAP)。

训练效率

YOLOv9 得益于现代训练策略和优化的 Ultralytics 训练器,与旧架构相比,在训练过程中通常能实现更快的收敛和更低的内存占用。

理想用例

在这些模型之间进行选择取决于您的具体项目要求。

何时选择 YOLOv9

YOLOv9因其卓越的精度效率比,是大多数现代计算机视觉应用的推荐选择。

  • 实时边缘 AI: 部署在NVIDIA Jetson等 FLOPs 至关重要的设备上。YOLOv9 的轻量级架构可最大限度地提高吞吐量。
  • 高精度检测:在检测微小缺陷至关重要的工业质量控制中。YOLOv9-E 的高 mAP 确保捕捉到微小细节。
  • 自动系统:机器人和无人机需要低延迟。YOLOv9优化的图结构确保了快速推理,同时不影响detect能力。

何时考虑 YOLOX

YOLOX在特定的传统工作流程或研究比较中仍然是一个强有力的竞争者。

  • 学术研究: 其解耦头和无锚框设计使其成为研究目标检测基础的经典基线。
  • 传统部署:如果现有基础设施已针对特定的 YOLOX 架构进行了深度优化(例如,专门为 YOLOX 头构建的自定义 TensorRT 插件),那么在短期内维护传统模型可能更具成本效益。

Ultralytics 优势

通过 Ultralytics 生态系统采用 YOLOv9,相比独立实现具有显著优势。Ultralytics 框架旨在简化整个机器学习操作 (MLOps)生命周期。

  • 易用性:Ultralytics Python API 让您只需几行代码即可加载、训练和部署模型。
  • 完善的生态系统:定期更新确保与最新版本的PyTorch、ONNX和CUDA兼容。
  • 多功能性:尽管 YOLOX 主要是一个目标检测器,但 Ultralytics 框架支持广泛的任务,包括姿势估计segment分类,使您可以在同一代码库中轻松切换架构或任务。
  • 内存效率:Ultralytics 模型针对内存使用进行了优化,可防止在训练复杂的基于 Transformer 的模型或未优化的传统检测器时常见的内存不足 (OOM) 错误。

代码示例:运行YOLOv9

使用Ultralytics包,运行YOLOv9推理非常简单。

from ultralytics import YOLO

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

# Run inference on a local image
results = model("path/to/image.jpg")

# Display the results
results[0].show()

导出灵活性

使用Ultralytics训练的YOLOv9模型可以轻松导出为TensorRTOpenVINOCoreML等格式,以实现最大的部署灵活性。

结论与建议

尽管YOLOX在推动无锚点detect方面发挥了关键作用,但YOLOv9是当前开发的卓越选择。其创新的PGI和GELAN架构以更少的参数提供了更高的准确性,解决了限制先前深度网络的信息瓶颈问题。

对于寻求性能和功能最新进展的开发者而言,我们也推荐探索 YOLO11,它进一步完善了这些概念,以在多个视觉任务中实现更高的速度和多功能性。然而,对于与 YOLOX 的直接比较,YOLOv9 提供了一条引人注目的升级路径,它在降低计算开销的同时提高了 detect 可靠性。

探索其他模型

通过比较 Ultralytics 生态系统中其他顶级模型来扩展您的知识:


评论