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 驱动程序和硬件支持。
性能对比
下表对比了 YOLOX 和 YOLOv9 在COCO 数据集上的性能。YOLOv9 始终以更少的参数展现出更高的 mAP 分数,突出了 GELAN 架构的效率。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.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 生态系统提供的易用性、训练效率 和强大部署选项,确保了从概念到生产的更快路径。
探索生态系统中的其他现代选项,例如 YOLO11 和 YOLOv8,以找到最适合您特定应用约束的模型。