YOLOX与YYOLOv9v9:高性能目标检测的进化之路
在快速发展的计算机视觉领域,选择合适的物体检测模型对于平衡准确性、速度和部署复杂性至关重要。本比较探讨了YOLO 中的两个重要里程碑:2021年发布的强大无锚检测器YOLOX,以及 YOLOv9——2024年推出的架构,通过引入可编程梯度信息(PGI)实现卓越的特征保留能力。
YOLOX:无锚框先驱
YOLOX YOLO 重大变革,其设计摒弃了锚点机制,转向无锚点架构。这种简化消除了手动调整锚框的必要性,使模型更能适应多样化的数据集和宽高比。通过采用解耦式头部结构与先进的SimOTA标签分配策略,YOLOX在发布时即达成顶尖性能,成功弥合了学术研究与工业应用之间的鸿沟。
- 作者: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, 和 Jian Sun
- 组织:旷视科技
- 日期: 2021-07-18
- Arxiv:YOLOX:2021 年超越 YOLO 系列
- GitHub:Megvii-BaseDetection/YOLOX
主要架构特性
- 无锚点机制:消除了锚点框聚类的复杂性,减少了设计参数数量并提升了泛化能力。
- 解耦头:将分类与回归任务拆分为不同分支,从而化解这两类目标间的冲突并提升收敛速度。
- SimOTA标签分配:一种动态标签分配策略,将训练过程视为最优运输问题,相较于静态IoU 能更高效地将真实标签分配给预测结果。
YOLOv9:深度学习中的可编程梯度
YOLOv9 解决了深度神经网络中信息丢失的根本问题。随着网络层数增加,关键特征信息在前向传播过程中可能消失。YOLOv9 可编程梯度信息(PGI) 和广义高效层聚合网络(GELAN),在整个网络层级中保存关键数据。这显著提升了检测精度——尤其在轻量级模型中表现突出——同时保持了高效率。
- 作者: Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 组织:中央研究院信息科学研究所
- 日期: 2024-02-21
- Arxiv:YOLOv9:使用可编程梯度信息学习您想学习的内容
- GitHub:WongKinYiu/yolov9
- 文档:Ultralytics YOLOv9 文档
主要架构特性
- GELAN架构:融合CSPNet与ELAN设计原理,最大化参数效率与计算速度,使模型能在各类硬件上高效运行。
- 可编程梯度信息(PGI):一种辅助监督框架,能够生成可靠的梯度用于更新网络权重,确保主分支即使在深度架构中也能学习完整特征。
- 可逆函数:通过确保数据能够有效重建,在各层间保持语义信息,从而缓解信息瓶颈问题。
性能对比
在评估这些模型时, YOLOv9 在精度与参数比例方面普遍优于YOLOX。尽管YOLOX-x实现了51.1mAP(平均交集覆盖率)这一可观成绩,但更新的YOLOv9c以53.0mAP超越了它,同时使用了显著更少的参数(2530万对9910万)和更低的计算能力。 这种高效性YOLOv9 实时应用场景的更优YOLOv9 ——在硬件资源受限但需高精度的场景中尤为YOLOv9 。
然而,YOLOX对传统边缘设备仍具有高度适用性。其更简洁的无锚点设计有时更易于针对特定移动芯片组或NPU架构进行优化——这些架构可能无法完全支持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 |
效率亮点
值得注意的是,YOLOv9c在 参数数量减少约75%的情况下,仍实现了比最大规模的YOLOX-x(51.1%mAP)更高的准确率(53.0%mAP)。这充分展现了在这些版本发布的三年間,架构效率的飞速进步。
使用 Ultralytics 进行训练及易用性
对开发者而言,模型所处的生态系统是关键的差异化因素。 YOLOv9 已深度集成Ultralytics ,在易用性方面具备显著优势。
Ultralytics 优势
Ultralytics Python 您可通过统一语法访问前沿模型。无需克隆复杂仓库或手动编译C++运算符——这在YOLOX等原始研究实现中常是技术障碍。
from ultralytics import YOLO
# Load a model (YOLOv9c or the new YOLO26s)
model = YOLO("yolov9c.pt")
# Train on custom data in one line
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Validate performance
metrics = model.val()
此集成提供:
- 简化工作流程: 在检测、分割和 姿势估计 任务之间无缝切换。
- 内存效率: Ultralytics 管道针对消费级硬件进行了优化,通常比transformer替代方案或未经优化的研究代码库GPU 更少。
- 部署就绪性:内置导出功能可将训练好的模型转换为 ONNX、 TensorRT、TFLite 和TFLite
真实世界的应用
选择这些模型取决于您的具体部署限制。
高速零售分析
对于需要在边缘设备上进行实时产品识别的零售环境, YOLOv9 通常是更优选择。其GELAN架构可在NVIDIA Orin Nano等设备上实现高吞吐量,支持自动结账或货架库存分析等功能,且几乎无延迟。
传统移动部署
在涉及老旧移动硬件或特定NPU架构(这类架构更适合简单卷积模式)的场景中,YOLOX-Nano 或YOLOX-Tiny仍可能是更优选择。其纯粹的无锚点设计省去了复杂聚合模块,有时更易于量化处理,并能在资源极度受限的微控制器或旧版Android 上顺利部署。
自主机器人技术
在机器人应用中,为避免碰撞而追求最高精度时,YOLOv9e卓越的特征保留能力提供了旧模型无法企及的安全余量。PGI框架确保在特征提取过程中不会遗漏小型障碍物,这对杂乱环境中的导航至关重要。
未来:YOLO26登场
尽管YOLOv9 卓越,但人工智能领域从未停滞不前。新发布的YOLO26在此基础上进一步发展,实现了速度与精度的终极平衡。
YOLO26引入了 原生的端到NMS,在推理过程中完全无需进行非最大抑制。这使得部署流程显著简化,执行速度大幅提升。 此外,通过移除分布式焦点损失(DFL)并采用新型MuSGD优化器(SGD Muon的混合算法),YOLO26 CPU 较前代提升高达43%,成为现代边缘计算的理想选择。
对于追求顶尖技术水平的开发者,我们建议在下一项目中评估YOLO26,以充分利用计算机视觉领域的这些前沿技术突破。
可探索的类似模型
- YOLO11:作为YOLO26的强大前身,在各类视觉任务中展现出卓越的通用性。
- RT-DETR:transformer检测器,同时NMS,特别适用于优先考虑高精度而非纯粹推理速度的场景。
- YOLOv10:首个NMS训练范式的YOLO 模型,为现代YOLOv2架构奠定了基础。