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上实现一流性能,在精度和参数效率方面都超越了以前的版本。
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) |
|---|---|---|---|---|---|---|
| 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-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()
结论与建议
尽管YOLOX在推动无锚点detect方面发挥了关键作用,但YOLOv9是当前开发的卓越选择。其创新的PGI和GELAN架构以更少的参数提供了更高的准确性,解决了限制先前深度网络的信息瓶颈问题。
对于寻求性能和功能最新进展的开发者而言,我们也推荐探索 YOLO11,它进一步完善了这些概念,以在多个视觉任务中实现更高的速度和多功能性。然而,对于与 YOLOX 的直接比较,YOLOv9 提供了一条引人注目的升级路径,它在降低计算开销的同时提高了 detect 可靠性。
探索其他模型
通过比较 Ultralytics 生态系统中其他顶级模型来扩展您的知识: