跳转至内容

YOLOX 对比 YOLOv9:技术比较

目标检测选择合适的架构是一个关键决策,它会影响计算机视觉项目的速度、准确性和部署可行性。本分析比较了 YOLOX(一个于 2021 年发布的关键无锚点模型)和 YOLOv9(一个于 2024 年推出的、利用可编程梯度信息 (PGI) 的最先进架构)。

尽管YOLOX将范式转向了无锚点detect,但YOLOv9引入了新颖的机制来保留深度网络中的信息,提供了卓越的性能指标。本指南将详细分析它们的架构、基准测试和理想用例,以帮助您选择最适合您需求的模型。

YOLOX:无锚框先驱

YOLOX的发布旨在通过简化检测头并消除对预定义锚框的依赖,弥合研究界与工业应用之间的鸿沟。

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

架构亮点

YOLOX引入了解耦头架构,将分类和回归任务分离。这种分离使模型能够更快收敛并获得更高的准确性。它还采用了无锚框机制,消除了通过聚类分析确定最佳锚框尺寸的需要,使模型对各种对象形状更具鲁棒性。此外,YOLOX利用SimOTA进行标签分配,将该过程视为一个最优传输问题,以提高训练稳定性。

优势与劣势

  • 优势:无锚点设计简化了超参数调整过程。与那个时代的耦合头相比,解耦头通常为定位任务带来更高的精度。
  • 缺点:作为 2021 年的模型,它缺乏在较新架构中发现的现代优化。与使用高级数据增强和层聚合技术的模型相比,它可能需要更多的训练数据才能达到最佳性能。

YOLOv9:可编程梯度信息

YOLOv9 代表了一个重大飞跃,解决了深度神经网络固有的“信息瓶颈”问题。

作者: Chien-Yao Wang, Hong-Yuan Mark Liao
机构:中央研究院资讯科学研究所
日期: 2024-02-21
Arxiv:arXiv:2402.13616
GitHub:WongKinYiu/yolov9
文档:Ultralytics YOLOv9 文档

架构亮点

YOLOv9 引入了可编程梯度信息 (PGI)广义高效层聚合网络 (GELAN)。PGI 防止数据通过深层时关键输入信息的丢失,确保为模型更新生成可靠的梯度。GELAN 优化了参数利用率,使模型轻量化且准确。这些创新使 YOLOv9 在效率和 平均精度 (mAP) 方面显著超越了前代产品。

优势与劣势

  • 优势:卓越的精度-参数比,使其在实时应用中高效。该架构比以前的迭代更好地保留了信息流,从而更好地检测小目标。
  • 缺点:作为一种较新的架构,与传统模型相比,它可能需要更新的 CUDA 驱动程序和硬件支持。

了解更多关于YOLOv9的信息。

性能对比

下表对比了 YOLOX 和 YOLOv9 在COCO 数据集上的性能。YOLOv9 始终以更少的参数展现出更高的 mAP 分数,突出了 GELAN 架构的效率。

模型尺寸
(像素)
mAPval
50-95
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
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
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

分析: YOLOv9 在性能密度方面提供了实质性的升级。例如,YOLOv9c 仅用 25.3M 参数 实现了 53.0% mAP,而 YOLOX-L 需要 54.2M 参数 才能实现较低的 49.7% mAP 分数。这表明,对于此精度等级,YOLOv9 在参数使用方面大约有效两倍。

效率至关重要

部署到边缘设备时,FLOPs 和参数与 mAP 同等重要。YOLOv9 的 GELAN 架构显著降低了计算开销,从而使设备运行更凉爽,并延长了移动部署中的电池寿命。

Ultralytics 优势

尽管YOLOX是一个强大的独立代码库,但在Ultralytics生态系统中使用YOLOv9为开发者和研究人员提供了独特的优势。

易用性与集成

Ultralytics 框架统一了模型交互。您可以使用简单直观的 Python API 来训练、验证和部署 YOLOv9。这与 YOLOX 代码库形成对比,后者通常需要更多手动配置环境变量和数据集路径。

from ultralytics import YOLO

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

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

# Train the model on a custom dataset with a single line of code
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

维护良好的生态系统

Ultralytics 模型受益于持续更新、错误修复和社区支持。与 Ultralytics HUB 的集成实现了无缝的 MLOps,使团队能够管理数据集、跟踪实验,并将模型部署到各种格式(ONNX、TensorRT、CoreML),而无需编写复杂的导出脚本。

性能平衡与内存效率

Ultralytics YOLO 模型旨在实现速度与准确性之间的实用平衡。此外,与旧架构或基于重型 Transformer 的模型相比,它们在训练期间通常表现出较低的内存需求。这种效率降低了云计算成本,并使消费级GPUs上的训练成为可能。

多功能性

尽管YOLOX主要是一个目标detect器,但Ultralytics框架扩展了其支持模型的功能。用户可以使用相似的语法和工作流程,轻松地在实例segment姿势估计旋转框检测等任务之间切换,这种多功能性是独立研究代码库通常缺乏的。

理想用例

何时选择 YOLOv9

  • 自主系统:YOLOv9-E 的高精度非常适合自主车辆,在这些车辆中,远距离 detect 小型障碍物对安全至关重要。
  • 实时分析:对于零售或交通管理,YOLOv9c 在高帧率和精确 detect 之间提供了最佳平衡点。
  • 边缘AI:GELAN的架构效率使YOLOv9t和YOLOv9s非常适合部署在NVIDIA Jetson或树莓派等设备上。

何时选择 YOLOX

  • 传统集成:如果现有生产管道已围绕特定的 YOLOX 无锚点头部格式进行了大量工程设计。
  • 学术研究: 专门研究早期无锚框检测器中解耦头行为的研究人员可能会发现 YOLOX 是一个有价值的比较基线。

结论

两种架构都在计算机视觉史上占据一席之地。YOLOX 在 2021 年成功挑战了基于锚点的现状。然而,YOLOv9 代表了现代标准,融合了梯度流优化和层聚合方面的多年进步。

对于大多数新开发项目,YOLOv9 是推荐的选择。其卓越的每参数性能,结合 Ultralytics 生态系统提供的易用性、训练效率 和强大部署选项,确保了从概念到生产的更快路径。

探索生态系统中的其他现代选项,例如 YOLO11YOLOv8,以找到最适合您特定应用约束的模型。


评论