YOLOv5 与YOLOv8:实时物体检测的演变
YOLO (You Only Look Once)系列模型对物体检测技术的发展产生了重大影响。由 UltralyticsYOLOv5 和YOLOv8 都是计算机视觉历史上的关键时刻。YOLOv5 凭借其简洁性和速度成为世界上最受喜爱、应用最广泛的检测架构,而YOLOv8 则引入了一个具有尖端架构创新的统一框架,以支持更广泛的视觉任务。
在这两个强大的处理器之间做出选择,取决于您的具体项目限制、硬件可用性以及对多任务功能的需求。本指南提供深入的技术分析,帮助计算机视觉工程师和研究人员做出正确的决定。
YOLOv5:久经考验的行业标准
作者:Glenn JocherGlenn Jocher
组织:Ultralytics
日期:2020-06-26
GitHubyolov5
文档yolov5
YOLOv5 于 2020 年中期发布,彻底改变了物体检测的可访问性。它是第一个YOLO PyTorch中实现的第一个 YOLO 模型,摆脱了其前身所使用的 Darknet 框架。这一转变使得开发人员可以非常容易地对自定义数据集进行训练、部署和实验。
YOLOv5 采用CSPDarknet 骨干网,是一种基于锚点的探测器。这意味着它依靠预定义的锚点框来预测物体位置。虽然这种方法需要对一些超参数进行调整,才能在独特的数据集上获得最佳性能,但它仍然非常有效。它的架构强调推理速度和低内存容量,因此最适合部署在资源有限的硬件上,如Raspberry Pi和早期的NVIDIA Jetson。
YOLOv5的主要优势
- 传统稳定性:多年来在生产环境中的积极使用使其成为最稳定、最无漏洞的视觉模型之一。
- 边缘优化:特别是在较旧的 CPU 和特定的移动处理器上,YOLOv5 的简单架构有时可以提供更快的推理延迟。
- 庞大的生态系统:由教程、第三方集成和论坛讨论组成的庞大社区为故障排除和开发提供支持。
YOLOv8:多重任务的动力源泉
作者:Glenn Jocher、Ayush Chaurasia 和 Jing QiuGlenn Jocher、Ayush Chaurasia 和 Jing Qiu
组织机构:Ultralytics
日期:2023-01-10
GitHubultralytics
文档yolov8
YOLOv8 不仅是一个物体检测器,还是一个用于图像分割、姿势估计 、分类和定向边界框(旋转框检测)检测的综合框架,它的设计代表了一个重大的飞跃。
从架构上讲,YOLOv8 采用了无锚点设计,头部解耦,将对象性、分类和回归任务分离开来。它还引入了C2f 模块(带 2 个卷积的交叉阶段部分瓶颈),取代了YOLOv5 中的 C3 模块。C2f 模块改进了梯度流和特征融合,使模型能够学习更复杂的模式,而不会大量增加计算成本。
YOLOv8的主要优势
- 最先进的准确性:与YOLOv5 相比,在COCO 和自定义数据集上持续获得更高的mAP (平均精度)分数。
- 无锚检测:无需计算或调整锚点框,从而简化了训练管道,并提高了对异常长宽比物体的泛化能力。
- 多功能性:使用相同的应用程序接口即可在检测、分割和姿势估计 之间切换,大大缩短了复杂项目的开发时间。
技术深度挖掘:架构与性能
从YOLOv5 到YOLOv8 ,"引擎盖下 "的几个变化推动了性能的提升。
建筑转变
最显著的区别在于检测头。YOLOv5 采用耦合头,分类和定位共享特征。YOLOv8 采用的是解耦头,允许网络独立调整权重,以识别物体是什么和在哪里。这通常会带来更好的收敛性和更高的准确性。
此外,从C3 到 C2f的骨干网演变使YOLOv8 能够捕捉到更丰富的梯度信息。虽然这使得架构略显复杂,但Ultralytics 对实施进行了优化,以确保保持较高的训练效率。
性能指标
在对标准COCO 数据集上的模型进行比较时,YOLOv8 显示出更高的准确度与计算比率。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.2 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
如图所示、 YOLOv8n(Nano) 的mAP 达到 37.3,与更大的YOLOv5s(Small) 的 37.4 几乎相当,但FLOPs 明显更少。这种效率对于现代边缘人工智能应用至关重要。
训练方法与生态系统
Ultralytics 模型的一个显著特点是注重开发人员的体验。这两种模式都受益于全面的Ultralytics 生态系统,但访问方式略有不同。
易用性和应用程序接口
YOLOv8 引入了 ultralytics Python 软件包,一个统一的CLI 和Python 界面。该软件包可有效管理依赖关系,并为 培训, 验证和 预报.有趣的是,现代 ultralytics 软件包还可以加载和运行YOLOv5 模型,弥补了两代产品之间的差距。
from ultralytics import YOLO
# Load a YOLOv8 model (Official)
model_v8 = YOLO("yolov8n.pt")
# Load a YOLOv5 model (Legacy support via Ultralytics package)
model_v5 = YOLO("yolov5nu.pt")
# Training is identical for both
results = model_v8.train(data="coco8.yaml", epochs=100)
内存和效率
与transformerRT-DETR相比,YOLOv5 和YOLOv8 都非常节省内存。转换器通常需要大量的CUDA 内存和较长的训练时间才能收敛。相比之下,Ultralytics YOLO 模型经过优化,可以在消费级 GPU 甚至 CPU 上运行,从而实现了高性能人工智能的平民化。
综合生态系统
这两种模型与Ultralytics HUB 完全兼容,可实现无缝数据集管理、模型可视化和一键部署到现实世界的设备上。
理想用例
选择合适的模型通常取决于部署模型的具体环境。
何时选择YOLOv5
YOLOv5 仍然是您的最佳选择:
- 遗留系统:更新已围绕YOLOv5 架构构建基础设施的现有管道。
- 特定边缘硬件:一些较旧的 NPU(神经处理单元)驱动程序专门针对YOLOv5 架构提供了高度优化的支持。
- 超低延迟:在CPU 推理每毫秒都很重要的情况下,YOLOv5n 更简单的耦合头有时会比 v8n 提供更快的速度优势。
何时选择YOLOv8
建议选择YOLOv8 :
- 新进展:今天开始一个项目,YOLOv8 (或更新的 YOLO11) 提供了更好的面向未来的路径。
- 复杂任务:需要实例分割(如医学细胞分析)或关键点检测(如体育分析)的应用。
- 高精度要求:在自动驾驶汽车安全系统或安全监控等场景中,漏检至关重要。
结论
YOLOv5 和YOLOv8 都是Ultralytics 致力于开源创新的证明。 YOLOv5仍然是这一领域的传奇--可靠、快速且得到广泛支持。但是 YOLOv8在此基础上进行了架构改进,提供了更高的准确性和更大的通用性,同时又不牺牲开发人员所期望的易用性。
对于大多数新项目,我们建议利用YOLOv8 中的先进功能或升级到最新的 YOLO11,它进一步完善了这些概念,实现了速度与精度的终极平衡。
探索其他模型
如果您有兴趣探索绝对最新的检测技术,不妨考虑了解一下: