YOLOX 与YOLOv9:技术比较
为物体检测选择正确的架构是一项关键决策,会影响计算机视觉项目的速度、准确性和部署可行性。本分析比较了 2021 年发布的关键无锚模型YOLOX 和 YOLOv9和 2024 年推出的利用可编程梯度信息 (PGI) 的先进架构 YOLOv9 进行了比较。
YOLOX 改变了无锚检测的模式,而YOLOv9 则引入了新的机制来保留深度网络中的信息,并提供了卓越的性能指标。本指南对它们的架构、基准和理想用例进行了分析,以帮助您选择最适合您需求的模型。
YOLOX:无锚先锋
YOLOX 的发布旨在通过简化检测头和消除对预定义锚箱的依赖,缩小研究界与工业应用之间的差距。
作者:葛铮、刘松涛、王峰、李泽明、孙健Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun
Organization:Megvii
Date:2021-07-18
Arxiv:arXiv:2107.08430
GitHub:Megvii-BaseDetection/YOLOX
Docs:YOLOX Documentation
建筑亮点
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 在这一精度等级的参数使用效率方面大约是YOLOv9 的两倍。
效率问题
在边缘设备上部署时,FLOP 和参数与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,使团队能够管理数据集、track 实验并将模型部署为各种格式ONNX、TensorRT、CoreML),而无需编写复杂的导出脚本。
性能平衡与内存效率
Ultralytics YOLO 模型的设计在速度和精度之间实现了实用的平衡。此外,与老式架构或transformer重型transformer的模型相比,它们在训练过程中通常内存需求较低。这种效率降低了云计算成本,并使消费级GPU 也能进行训练。
多功能性
虽然 YOLOX 主要是一个对象检测器,但Ultralytics 框架扩展了其支持模型的功能。用户可以使用类似的语法和工作流程在实例分割、姿势估计 和定向边界框(旋转框检测)检测等任务之间轻松切换,这是独立研究资源库通常缺乏的多功能性。
理想用例
何时选择YOLOv9
- 自主系统: YOLOv9 的高精确度非常适合自动驾驶汽车,在这种汽车中,探测远处的小障碍物对安全至关重要。
- 实时分析:对于零售或交通管理,YOLOv9c 可提供高帧频和精确检测。
- 边缘人工智能:GELAN 的架构效率使 YOLOv9t 和 YOLOv9s 非常适合部署在NVIDIA Jetson 或 Raspberry Pi 等设备上。
何时选择 YOLOX
- 传统集成:如果现有的生产流水线已经围绕特定的 YOLOX 无锚磁头格式进行了大量设计。
- 学术研究:专门研究早期无锚探测器中去耦磁头行为的研究人员可能会发现 YOLOX 是一个非常有价值的比较基准。
结论
这两种架构在计算机视觉史上都占有一席之地。2021 年,YOLOX 成功挑战了基于锚点的现状。然而、 YOLOv9代表了现代标准,融合了多年来在梯度流优化和层聚合方面的进步。
对于大多数新开发项目而言,YOLOv9 是值得推荐的选择。Ultralytics 每参数性能优越,加上Ultralytics 生态系统提供的易用性、培训效率和强大的部署选项,确保了从概念到生产的快速通道。
探索生态系统中的其他现代选择,如 YOLO11和 YOLOv8以找到最适合您特定应用限制的方案。