YOLOv10 对比 YOLOX:技术对比
在快速发展的计算机视觉领域,选择合适的物体 detect 模型对于平衡性能、效率和部署便捷性至关重要。本技术比较探讨了清华大学最新推出的实时端到端检测器 YOLOv10 与旷视科技备受推崇的无锚点模型 YOLOX 之间的差异。
尽管YOLOX在2021年引入了关于无锚点detect机制的重大创新,但YOLOv10代表了2024年的前沿技术,提供了NMS-free推理以及与Ultralytics生态系统更紧密的集成。
YOLOv10:实时端到端检测
YOLOv10旨在弥合后处理效率与模型架构之间的差距。通过引入一致性双重分配策略进行免NMS训练,它消除了推理过程中对非极大值抑制(NMS)的需求,显著降低了延迟。
技术细节:
- 作者: Ao Wang, Hui Chen, Lihao Liu, et al.
- 组织:清华大学
- 日期: 2024-05-23
- Arxiv:arXiv:2405.14458
- GitHub:THU-MIG/yolov10
架构与优势
YOLOv10 借鉴了前几代 YOLO 模型的优势,但同时优化了架构,以兼顾效率和准确性。它采用了一种整体模型设计,包括轻量级分类头和空间-通道解耦下采样。
- 免 NMS 推理:移除 NMS 对于实时推理应用来说是一个颠覆性的改变,确保了边缘设备上可预测的延迟和更低的 CPU 开销。
- 效率-精度平衡: 与其前身和竞争对手相比,YOLOv10 以更少的参数量和 FLOPs 实现了最先进的性能。
- Ultralytics 集成: 由于得到
ultralytics包意味着用户受益于统一的 Python API,可以无缝导出为以下格式,例如 TensorRT 和 OpenVINO,以及丰富的文档。
弱点
- 更新的架构:作为 2024 年发布的新版本,第三方教程的生态系统正在迅速发展,但可能尚未达到旧版传统模型的数量。
YOLOX:无锚框先驱
YOLOX于2021年发布,转向了无锚点机制和解耦头,这与YOLOv4和YOLOv5的基于锚点的方法有所不同。它利用SimOTA(简化最优传输分配)进行标签分配,这是动态标签分配策略方面的一个重大进步。
技术细节:
- 作者: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, 和 Jian Sun
- 组织:旷视科技
- 日期: 2021-07-18
- Arxiv:arXiv:2107.08430
- GitHub:Megvii-BaseDetection/YOLOX
架构与优势
YOLOX因其简洁的无锚框设计,在研究社区中仍然是一个强大的基线模型。
- Anchor-Free Mechanism: 通过移除预定义的anchor 框,YOLOX 降低了设计复杂性和需要调整的超参数数量。
- 解耦头:与旧的耦合头设计相比,分离分类和定位任务提高了收敛速度和精度。
- 强劲基线:它作为检测头和分配策略学术研究的可靠基准。
弱点
- 推理速度:尽管YOLOX在当时是高效的,但在原始推理速度方面,它通常落后于YOLOv10和YOLO11等较新的模型,尤其是在考虑NMS时间时。
- 工作流程碎片化:与 Ultralytics 模型不同,YOLOX 通常需要其自身的特定代码库和环境设置,缺乏现代框架中用于训练、验证和部署的统一接口。
- 资源密集度:与现代高效架构相比,在相似精度水平下具有更高的FLOPs和参数量。
性能分析
以下比较突出了这些模型在三年间隔中在效率和精度方面取得的显著进步。这些指标侧重于 COCO 数据集上的模型大小(参数)、计算成本(FLOPs)和精度(mAP)。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
| 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 |
关键观察
- 精度与大小: YOLOv10 始终以更少的参数提供更高的 mAP。例如,YOLOv10s 仅使用 7.2M 参数即可实现 46.7 mAP,而 YOLOXs 使用 9.0M 参数实现 40.5 mAP。这证明了 YOLOv10 卓越的架构效率。
- 计算效率:YOLOv10 模型的 FLOPs 计数显著更低。YOLOv10x 的 FLOPs 为 160.4B,而 YOLOXx 的 FLOPs 高达 281.9B,但在精度上仍优于后者(54.4 vs 51.1 mAP)。
- 推理速度:NMS的移除和优化的架构使得YOLOv10能够实现更低的延迟。T4 TensorRT基准测试显示YOLOv10x的运行时间为12.2毫秒,显著快于YOLOXx的16.1毫秒。
理想用例
YOLOv10:现代标准
YOLOv10 是大多数新开发项目的首选,特别是那些需要:
- 边缘AI部署:其低内存占用和高效率使其非常适合树莓派或NVIDIA Jetson等设备。
- 实时应用: 需要即时反馈的系统,例如自动驾驶、机器人技术和视频分析,受益于无 NMS 的低延迟。
- 快速开发: Ultralytics 生态系统可实现快速 数据集管理,通过以下方式进行训练和部署
ultralytics软件包。
YOLOX:传承与研究
YOLOX 仍具有相关性,适用于:
- 学术研究: 研究无锚框检测器的演变或特定标签分配策略(如 SimOTA)的研究人员通常使用 YOLOX 作为基线。
- 传统系统:已针对 YOLOX 优化的现有生产管道,在升级成本高于性能增益的情况下,可能会继续使用它。
将YOLOv10与Ultralytics结合使用
YOLOv10 最显著的优势之一是其易用性。Ultralytics python API 简化了整个工作流程,从加载预训练权重到在自定义数据上进行训练。
下面是运行预测和训练YOLOv10模型的示例:
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Run inference on an image
results = model.predict("path/to/image.jpg")
# Train the model on a custom dataset (COCO format)
model.train(data="coco8.yaml", epochs=100, imgsz=640)
训练效率
Ultralytics YOLO 模型以其训练效率而闻名,通常比旧架构或基于 Transformer 的模型需要更少的 CUDA 内存。这使得在标准消费级 GPUs 上训练更大的批次成为可能。
结论
尽管 YOLOX 在推广无锚点 detect 方面发挥了关键作用,但 YOLOv10 代表了 computer vision 技术的新飞跃。凭借其 NMS-free 架构、卓越的准确性与计算比以及与强大的 Ultralytics 生态系统的无缝集成,YOLOv10 为开发人员和研究人员提供了引人注目的解决方案。
对于那些希望部署最先进的目标检测的用户,YOLOv10 提供了所需的速度和精度。对更广泛功能(例如 姿势估计 或 旋转框检测)感兴趣的开发人员,也可以考虑探索多功能 YOLO11 或广泛采用的 YOLOv8。