YOLOv9 与 YOLOX:全面技术比较
选择合适的物体检测架构是一项关键决策,会影响计算机视觉应用的效率、准确性和可扩展性。本指南对 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 数据集上实现了顶级性能,在准确性和参数效率方面都超越了之前的迭代版本。
YOLOX:无锚标准
YOLOX 的推出是为了缩小学术研究与工业应用之间的差距,在YOLO 系列中推广无锚方法。
作者: Zheng Ge、Songtao Liu、Feng Wang、Zeming Li 和 Jian SunZheng Ge, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun
Organization:Megvii
日期:2021-07-18
Arxiv:arXiv:2107.08430
GitHub:Megvii-BaseDetection/YOLOX
文档:yolox.readthedocs.io
主要建筑特点
YOLOX 与早期的YOLO 版本不同,去掉了锚箱,并采用了去耦合头结构。
- 无锚设计:传统的检测器依赖于预定义的锚点框,这需要启发式调整和聚类。YOLOX 将物体检测视为点预测问题,从而简化了设计,并提高了对不同物体形状的泛化能力。
- 解耦头:分类和回归任务在不同的分支(头)中处理。这种分离使模型能够针对每个任务进行独立优化,从而加快收敛速度并提高准确性。
- SimOTA:一种先进的标签分配策略,可动态地将正样本分配给地面实况对象,从而进一步提高性能。
性能分析:指标和基准
在分析性能时,YOLOv9 显示出与较新架构相一致的明显优势。与 YOLOX 相比,通过利用 PGI 和 GELAN,YOLOv9 实现了更高的平均精度(mAP),同时保持或减少了计算负荷(FLOPs)。
下表突出显示了性能差异。值得注意的是,YOLOv9实现的mAP (53.0%)明显高于YOLOX-L(49.7%),而参数数量(25.3M 对 54.2M)却不到YOLOX-L的一半。这种效率使YOLOv9 成为受硬件资源限制但要求高精度的应用的上佳选择。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
速度与效率
YOLOX 在 2021 年推出了令人印象深刻的速度,而YOLOv9 则进一步推陈出新。YOLOv9(Tiny)型号具有出色的平衡性,仅需 2.0M 参数即可提供 38.3% 的mAP ,因此非常适合移动和嵌入式应用。相比之下,YOLOX-Nano 虽然体积更小,但精度却大打折扣(25.8%mAP)。
培训效率
YOLOv9 得益于现代化的训练配方和优化的Ultralytics 训练器,与老式架构相比,在训练过程中收敛速度更快,内存使用量更低。
理想用例
选择哪种型号取决于您的具体项目要求。
何时选择YOLOv9
YOLOv9 具有卓越的精度-效率比,是大多数现代计算机视觉应用的推荐选择。
- 实时边缘人工智能:在NVIDIA Jetson等设备上部署,FLOPs 至关重要。YOLOv9 的轻量级架构可最大限度地提高吞吐量。
- 高精度检测:工业质量控制,检测微小缺陷至关重要。YOLOv9 的高mAP 可确保捕捉到微小细节。
- 自主系统:机器人和无人机需要低延迟。YOLOv9 优化的图结构可确保快速推理,同时不影响检测能力。
何时考虑使用 YOLOX
对于特定的传统工作流程或研究比较,YOLOX 仍然是强有力的竞争者。
- 学术研究:它的去耦合头部和无锚设计使其成为研究物体检测基本原理的经典基线。
- 传统部署:如果现有基础架构针对特定的 YOLOX 架构进行了大量优化(例如,专为 YOLOX 头构建的定制TensorRT 插件),那么在短期内维持传统模式可能具有成本效益。
Ultralytics 的优势
与独立实施相比,通过Ultralytics 生态系统采用YOLOv9 具有明显的优势。Ultralytics 框架旨在简化整个机器学习运营 (MLOps)生命周期。
- 易用性: Ultralytics Python API 只需几行代码就能加载、训练和部署模型。
- 维护良好的生态系统:定期更新确保与最新版本的PyTorch、ONNX 和CUDA 兼容。
- 多功能性:虽然 YOLOX 主要是一个对象检测器,但Ultralytics 框架支持多种任务,包括姿势估计 、分割和分类,让您可以在同一代码库中轻松切换架构或任务。
- 内存效率: 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()
结论与建议
YOLOX 在推进无锚检测方面发挥了关键作用、 YOLOv9是当前发展的最佳选择。其创新的 PGI 和 GELAN 架构以更少的参数实现了更高的精度,解决了限制以前深度网络的信息瓶颈问题。
对于追求绝对最新性能和功能的开发人员,我们还建议探索 YOLO11,它进一步完善了这些概念,在多种视觉任务中实现了更高的速度和多功能性。不过,与 YOLOX 直接比较,YOLOv9 提供了一个引人注目的升级途径,在提高检测可靠性的同时减少了计算开销。
探索其他模型
通过比较Ultralytics 生态系统中的其他顶级模型来扩展您的知识: