YOLOv10 与 YOLOX:技术比较
在快速发展的计算机视觉领域,选择正确的物体检测模型对于平衡性能、效率和部署便利性至关重要。本技术比较探讨了 YOLOv10与 Megvii 备受推崇的无锚点模型YOLOX 之间的差异。
2021 年,YOLOX 在无锚检测机制方面进行了重大创新,而YOLOv10 则代表了 2024 年的前沿技术,提供了NMS 推理功能,并与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 以更低的参数数和 FLOP 达到了最先进的性能。
- Ultralytics 集成: 得到了
ultralytics软件包意味着用户可以从统一的 Python API无缝导出为以下格式 TensorRT 和 OpenVINO并提供大量文件。
弱点
- 较新的架构:作为 2024 年发布的产品,第三方教程生态系统正在迅速发展,但数量可能还无法与旧版传统机型相提并论。
YOLOX:无锚先锋
2021 年发布的 YOLOX 采用了无锚机制和去耦合头,与 YOLOv4 和YOLOv5 基于锚的方法不同。它利用 SimOTA(简化最优传输分配)进行标签分配,在动态标签分配策略方面迈出了重要一步。
技术细节:
- 作者: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, 和 Jian Sun
- 组织机构Megvii
- 日期: 2021-07-18
- Arxiv:arXiv:2107.08430
- GitHub:Megvii-BaseDetection/YOLOX
结构和优势
YOLOX 因其简洁的无锚设计而一直是研究界的有力基准。
- 无锚机制:通过移除预定义锚框,YOLOX 降低了设计的复杂性和需要调整的超参数数量。
- 解耦头:与旧式的耦合头设计相比,分离分类和定位任务提高了收敛速度和准确性。
- 强大的基准:它是学术界研究探测头和分配策略的可靠基准。
弱点
- 推理速度:YOLOX 虽然在当时很高效,但总体上落后于YOLOv10 和 YOLO11在原始推理速度方面,尤其是在考虑到NMS 时间的情况下。
- 零散的工作流程:与Ultralytics 模型不同,YOLOX 通常需要自己特定的代码库和环境设置,缺乏现代框架中用于培训、验证和部署的统一界面。
- 资源强度:与现代高效架构相比,在精度水平相似的情况下,FLOP 和参数数更高。
性能分析
下面的比较强调了这些模型在三年内效率和准确性方面的显著进步。这些指标主要针对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.2 百万个参数就实现了46.7mAP,而YOLOXs用9.0 百万个参数就实现了40.5mAP。这表明YOLOv10 具有卓越的架构效率。
- 计算效率: YOLOv10 型号的 FLOPs 数明显降低。YOLOv10x的FLOP 数为 160.4B FLOPs,而YOLOXx 的FLOP 数为 281.9B FLOPs,但在精确度方面仍优于YOLOXx(54.4mAP 对 51.1mAP)。
- 推理速度:取消NMS 和优化架构使YOLOv10 实现了更低的延迟。T4TensorRT 基准测试显示,YOLOv10x 的运行时间为12.2ms,明显快于 YOLOXx 的16.1ms。
理想用例
YOLOv10:现代标准
YOLOv10 是大多数新开发项目的首选,尤其是那些有以下要求的项目:
- 边缘人工智能部署:它占用内存少、效率高,非常适合Raspberry Pi NVIDIA Jetson 等设备。
- 实时应用:自动驾驶、机器人和视频分析等需要即时反馈的系统可从NMS 的低延迟中获益。
- 快速发展: Ultralytics 生态系统允许快速 数据集管理培训和部署
ultralytics软件包。
YOLOX:遗产与研究
YOLOX 始终与以下方面相关:
- 学术研究:研究无锚检测器或特定标签分配策略(如 SimOTA)演变的研究人员经常使用 YOLOX 作为基准。
- 传统系统:已经为 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 内存。这样就可以在标准消费级 GPU 上进行更大批量的训练。
结论
YOLOX在普及无锚检测方面发挥了关键作用、 YOLOv10代表了计算机视觉技术的又一次飞跃。YOLOv10 采用NMS 架构,具有卓越的准确性与计算比率,并可无缝集成到强大的Ultralytics 生态系统中,为开发人员和研究人员提供了一个极具吸引力的软件包。
对于那些希望部署最先进的对象检测功能的人来说,YOLOv10 提供了必要的速度和精度。如果开发人员对更广泛的功能感兴趣,如姿势估计 或定向边界框,也可以考虑探索多功能的 YOLO11或广泛采用的 YOLOv8.