YOLOX 与YOLOv5:探索无锚创新和久经考验的效率
在快速发展的物体检测领域,选择正确的架构是项目成功的关键。本比较探讨了两种有影响力的模式:YOLOX(以无锚设计著称的学术巨头)和 YOLOv5和 YOLOv5,YOLOv5 以速度和易于部署而成为行业标准。这两种模式都塑造了计算机视觉领域,但它们满足的需求各不相同,这取决于您是优先考虑研究级精度还是生产就绪级效率。
性能分析:速度、准确性和效率
在评估 YOLOX 和YOLOv5 时,区别往往在于原始精度和运行效率之间的权衡。YOLOX 引入了重大的架构变革,例如去耦头部和无锚机制,这使它在发布之初就达到了最先进的mAP (平均精度)分数。在精确度的每一个百分点都很重要的情况下,尤其是在COCO 等高难度基准测试中,COCO 的表现尤为突出。
相反,Ultralytics YOLOv5的设计侧重于 "真实世界 "的性能。它优先考虑推理速度和低延迟,因此非常适合移动应用程序、嵌入式系统和边缘人工智能设备。虽然 YOLOX 在特定大型模型的mAP 方面可能略胜一筹,但YOLOv5 利用全面的Ultralytics 生态系统,在吞吐量(每秒帧数)和部署灵活性方面始终优于YOLOv5 。
下表对不同规模的模型进行了详细的并列比较。请注意,YOLOv5 在保持具有竞争力的准确性的同时,推理时间明显更快,尤其是在使用 TensorRT.
| 模型 | 尺寸 (像素) | 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 |
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
YOLOX:无锚竞争者
YOLOX 由 Megvii 的研究人员开发,旨在弥补YOLO 系列与无锚点检测学术进步之间的差距。通过消除预定义锚框的限制,YOLOX 简化了训练过程,减少了对启发式调整的需求。
- 作者: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, 和 Jian Sun
- 组织机构Megvii
- 日期: 2021-07-18
- Arxiv:https://arxiv.org/abs/2107.08430
- GitHub:https://github.com/Megvii-BaseDetection/YOLOX
- 文件:https://yolox.readthedocs.io/en/latest/
架构与创新
YOLOX 采用了解耦头,将分类和回归任务分离成不同的分支。这种设计与早期YOLO 版本的耦合头形成了鲜明对比,据称提高了收敛速度和准确性。此外,它还采用了SimOTA(一种先进的标签分配策略,可动态分配正样本),从而增强了模型在密集场景中的鲁棒性。
优势与劣势
YOLOX 的主要优势在于其高精度上限,尤其是其最大的变体(YOLOX-x),以及其简洁的无锚设计,这对研究人员很有吸引力。不过,这些优点也有代价。与YOLOv5 相比,解耦头部增加了计算复杂度,往往导致推理速度变慢。此外,作为一个以研究为重点的模型,它缺乏Ultralytics 生态系统中具有凝聚力、用户友好的工具,可能会使集成到商业管道中变得复杂。
理想用例
- 学术研究:试验新型检测架构和标签分配策略。
- 高精度任务: mAP 的 1-2% 增益大于较慢推理速度所带来的成本,如离线视频分析。
- 密集物体检测:SimOTA 在物体密集的环境中表现出色。
YOLOv5:生产标准
自 2020 年发布以来,Ultralytics YOLOv5已成为全球开发人员的首选机型。它在性能和实用性之间取得了非凡的平衡,并由一个旨在简化整个机器学习运营(MLOps)生命周期的平台提供支持。
- 作者: Glenn Jocher
- 组织机构Ultralytics
- 日期: 2020-06-26
- GitHub:https://github.com/ultralytics/yolov5
- 文件:https://docs.ultralytics.com/models/yolov5/
建筑与生态系统
YOLOv5 利用 CSPNet 主干网和路径聚合网(PANet)颈部,对高效特征提取进行了优化。虽然 YOLOv5 最初在PyTorch 中推广了基于锚的方法,但其最大的优势在于周边的生态系统。用户可以自动导出为ONNX、CoreML 和TFLite 等格式,还可以与Ultralytics HUB无缝集成,进行模型训练和管理。
优势与劣势
易用性是YOLOv5 的标志。通过简单的Python API,开发人员只需几行代码就能加载预训练的权重并运行推理。该模型针对速度进行了高度优化,与 YOLOX 相比,在 CPU 和 GPU 上的延迟都更低。在训练过程中,它的内存需求也更低,因此可以在标准硬件上使用。虽然其基于锚点的设计需要对自定义数据集进行锚点演化(由YOLOv5 自动处理),但其可靠性和维护良好的生态系统使其在生产中更具优势。
理想用例
- 实时应用:视频监控、自动驾驶和机器人技术等对低延迟要求极高的应用。
- 边缘部署:由于其高效的架构,可在 Raspberry Pi、NVIDIA Jetson 或移动设备上运行。
- 商业产品:需要长期支持和易于集成的快速原型开发和部署。
- 多任务视觉:需要在单一框架内完成检测、分割和分类的项目。
代码示例:使用Ultralytics运行YOLOv5
Ultralytics Python 软件包使YOLOv5 模型的使用变得异常简单。下面是一个如何使用预训练模型运行推理的示例。
from ultralytics import YOLO
# Load a pre-trained YOLOv5 model (Nano version for speed)
model = YOLO("yolov5nu.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
# Display the results
results[0].show()
总结:做出正确的选择
这两种模型都代表了计算机视觉领域的重大成就,但它们面向不同的受众。YOLOX对于那些在无锚点检测领域不断进取的研究人员来说是一个不错的选择,因为他们可以自如地驾驭更加分散的工具集。
然而,对于绝大多数开发人员、工程师和企业而言,Ultralytics 的功能却并不强大、 Ultralytics YOLOv5仍然是更优越的选择。它将无与伦比的速度、多功能性和强大、活跃的生态系统完美地结合在一起,确保您能够以最小的摩擦完成从概念到部署的转变。此外,采用Ultralytics 框架为下一代模型(如 YOLO11等下一代机型Ultralytics升级路径。
其他模型对比
探索这些模式与其他架构的比较,以找到最适合您特定需求的模式: