YOLOv5 对比 YOLOv8:实时目标检测的演进
目标检测的发展受到YOLO(You Only Look Once)系列模型的显著影响。由Ultralytics开发,YOLOv5和YOLOv8都代表了计算机视觉历史上的关键时刻。YOLOv5因其简洁性和速度而成为世界上最受欢迎和广泛使用的检测架构,而YOLOv8则引入了一个统一的框架,具有尖端的架构创新,以支持更广泛的视觉任务。
在这两个强大的模型之间进行选择取决于您的具体项目限制、硬件可用性以及对多任务能力的需求。本指南提供了深入的技术分析,以帮助 计算机视觉工程师和研究人员做出正确的决策。
YOLOv5:久经考验的行业标准
作者:Glenn JocherGlenn Jocher
组织:Ultralytics
日期:2020-06-26
GitHubyolov5
文档yolov5
于2020年中期发布,YOLOv5彻底改变了目标检测的易用性。它是第一个原生在PyTorch中实现的YOLO模型,摆脱了其前身使用的Darknet框架。这一转变使得开发人员能够极其轻松地训练、部署和试验自定义数据集。
YOLOv5 利用CSPDarknet 主干网络,并且是一个基于锚框的检测器。这意味着它依赖预定义的锚框来预测物体位置。虽然这种方法需要对独特数据集进行一些超参数调整以获得最佳性能,但它仍然非常有效。其架构强调推理速度和低内存占用能力,使其成为在资源受限硬件(如Raspberry Pi和早期NVIDIA Jetson)上部署的首选。
YOLOv5 的主要优势
- 传统稳定性:多年在生产环境中的积极使用使其成为现有最稳定、无 bug 的视觉模型之一。
- 边缘优化: 特别是在较旧的 CPU 和特定的移动处理器上,YOLOv5 的更简单架构有时可以提供更快的推理延迟。
- 庞大的生态系统: 庞大的教程、第三方集成和论坛讨论社区支持故障排除和开发。
YOLOv8:多任务强大引擎
作者: Glenn Jocher, Ayush Chaurasia, and Jing Qiu
机构:Ultralytics
日期: 2023-01-10
GitHub:https://github.com/ultralytics/ultralytics
文档:https://docs.ultralytics.com/models/yolov8/
YOLOv8 代表着一个重大飞跃,它不仅被设计为目标检测器,而且是一个用于图像分割、姿势估计、分类以及旋转框检测 (OBB)的综合框架。
在架构上,YOLOv8 转向了无锚点设计,并采用解耦头,将目标性、分类和回归任务分离。它还引入了C2f 模块(带有 2 个卷积的跨阶段部分瓶颈),取代了 YOLOv5 中的 C3 模块。C2f 模块改进了梯度流和特征融合,使模型能够在计算成本没有大幅增加的情况下学习更复杂的模式。
YOLOv8 的主要优势
- 领先的准确性:与 YOLOv5 相比,在 COCO 和自定义数据集上持续实现更高的 mAP(平均精度均值)分数。
- Anchor-Free Detection: 无需计算或调整 anchor 框,简化了训练流程,并提高了对具有不寻常宽高比的对象的泛化能力。
- 多功能性:使用相同的 API 在 detect、segmentation 和姿势估计之间切换的能力,显著减少了复杂项目的开发时间。
技术深度解析:架构与性能
从 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)实现了37.3的mAP,几乎与得分37.4的更大YOLOv5s(Small)持平,但FLOPs显著更少。这种效率对于现代边缘AI应用至关重要。
训练方法与生态系统
Ultralytics模型的一个显著特点是注重开发者体验。这两种模型都受益于全面的Ultralytics生态系统,但它们的访问方式略有不同。
易用性与API
YOLOv8 引入了 ultralytics Python 包,一个统一的 CLI 和 Python 接口。该包有效地管理依赖项并提供一致的 API,用于 训练, 验证和 预测。有趣的是,现代 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)
内存与效率
与 RT-DETR 等基于 Transformer 的模型相比,YOLOv5 和 YOLOv8 都具有出色的内存效率。Transformer 模型通常需要大量的 CUDA 内存和更长的训练时间才能收敛。相比之下,Ultralytics YOLO 模型经过优化,可在消费级 GPU 甚至 CPU 上运行,从而普及了高性能 AI 的应用。
集成生态系统
两种模型都与Ultralytics HUB完全兼容,实现无缝数据集管理、模型可视化和一键部署到实际设备。
理想用例
选择合适的模型通常归结为模型将要部署的特定环境。
何时选择 YOLOv5
YOLOv5 仍然是以下方面的绝佳选择:
- 传统系统:更新现有管道,其中基础设施已围绕 YOLOv5 架构构建。
- 特定边缘硬件:一些较旧的 NPU(神经网络处理单元)驱动程序具有专门针对 YOLOv5 架构的高度优化支持。
- 超低延迟:在 CPU 推理的每一毫秒都至关重要的场景中,YOLOv5n 更简单的耦合头有时能提供比 v8n 更快的原始速度优势。
何时选择 YOLOv8
YOLOv8 是以下场景的推荐选择:
- 新进展:今天开始一个项目,YOLOv8(或更新的YOLO11)提供了更好的未来适应性路径。
- 复杂任务:需要实例分割(例如,医学细胞分析)或关键点检测(例如,体育分析)的应用。
- 高精度要求:在漏检至关重要的场景中,例如自动驾驶汽车安全系统或安防监控。
结论
YOLOv5 和 YOLOv8 都证明了 Ultralytics 对开源创新的承诺。YOLOv5 仍然是该领域的传奇——可靠、快速且受到广泛支持。然而,YOLOv8 在此基础上进行了改进,通过架构进步提供了更高的精度和更大的通用性,同时不牺牲开发者所期望的易用性。
对于大多数新项目,我们建议利用YOLOv8的进步,或升级到最新的YOLO11,它进一步完善了这些概念,以实现速度和精度的终极平衡。
探索其他模型
如果您对探索检测技术的最新进展感兴趣,可以考虑查阅:
- YOLO11: 最新演进版本,与 YOLOv8 相比,处理速度更快,特征提取能力更强。
- RT-DETR: 一种基于Transformer的模型,可为实时应用提供高精度,尤其适用于GPU内存限制较少的情况。