YOLOv8 与 YOLOv5#
选择合适的计算机视觉架构是构建稳健机器学习流水线的关键步骤。在这篇详细的技术对比中,我们将探讨视觉 AI 生态中两个最受欢迎模型之间的差异:YOLOv8 和 YOLOv5。这两个模型均由 Ultralytics 开发,并显著塑造了实时目标检测领域的发展,为速度、准确率和易用性树立了行业标准。
无论你是要将模型部署到边缘设备,还是扩展云端推理,了解这些模型在架构、性能指标和训练方法上的变化,都将帮助你为自己的计算机视觉项目做出明智决策。
Ultralytics YOLOv8:通用标准#
YOLOv8 于 2023 年初发布,相较于前代模型实现了重大的架构转变。它从零开始设计为一个统一框架,能够原生处理多种视觉任务,包括实例分割、图像分类和姿态估计。
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织: Ultralytics
- 日期: 2023-01-10
- GitHub: ultralytics/ultralytics
- 文档: YOLOv8 文档
架构与方法#
YOLOv8 引入了无锚框检测头,通过消除基于数据集分布手动配置锚框的需求,简化了训练过程。这使模型在泛化到自定义数据集时更加稳健,并减少了边界框预测数量,从而加快非极大值抑制 (NMS)的速度。
该架构采用C2f 模块(包含两个卷积的跨阶段部分瓶颈结构),取代了 YOLOv5 中的 C3 模块。C2f 模块改善了梯度流,使模型能够学习更丰富的特征表示,同时不会显著增加计算成本。此外,YOLOv8 采用解耦头结构,将目标性、分类和回归任务分离,已证明这有助于提升收敛速度和准确率。
包括 YOLOv8 在内的 Ultralytics YOLO 模型,相较于许多基于 Transformer 的替代方案(如 RT-DETR),在训练期间针对更低的 CUDA 内存占用进行了优化。这使开发者能够在 NVIDIA RTX 系列等标准消费级 GPU 上使用更大的批量大小。
优势与劣势#
优势:
- 在简单的边界框检测之外,支持多种任务,具有无与伦比的通用性。
- 通过
ultralytics软件包提供简洁的 Python API,让训练和导出变得非常直观。 - 与 YOLOv5 相比,所有尺寸变体都具有更高的平均精度 (mAP)。
劣势:
- 与对应的 YOLOv5 变体相比,解耦头和 C2f 模块使部分变体的参数量和 FLOPs 略有增加。
Ultralytics YOLOv5:敏捷的先驱#
YOLOv5 于 2020 年推出,将 YOLO 引入了 PyTorch 生态,极大提升了开发者的使用便利性。它很快成为快速、可靠且易于部署的目标检测模型的行业标准。
- 作者: Glenn Jocher
- 组织: Ultralytics
- 日期: 2020-06-26
- GitHub: ultralytics/yolov5
- 文档: YOLOv5 文档
架构与方法#
YOLOv5 采用基于锚框的架构,并使用经过修改的 CSPDarknet53 主干网络。基于锚框的方法需要在训练前仔细聚类数据集边界框,以确定最佳锚框;但对于特定且定义明确的数据集,这类方法非常有效。
YOLOv5 采用C3 模块,能够在保持较少参数量的同时高效提取特征。其损失函数高度依赖目标性损失,并结合分类损失和边界框回归损失,引导网络做出准确预测。
优势与劣势#
优势:
- 极其轻量,使 Nano(YOLOv5n)和 Small(YOLOv5s)变体非常适合资源受限的边缘 AI部署。
- 推理速度极快,尤其是在 CPU 上。
- 生态系统经过长期发展,拥有大量社区教程和第三方集成。
劣势:
- 需要配置锚框,这可能使高度多样化或自定义数据集的设置过程更加复杂。
- 与 YOLOv8 和 YOLO26 等现代无锚框架构相比,整体准确率(mAP)较低。
性能对比#
评估这些模型时,在速度和准确率之间实现良好权衡至关重要。下表列出了这两种架构在 COCO 数据集上的性能指标。CPU 速度使用 ONNX 测量,GPU 速度则使用 TensorRT 测试。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数量 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
虽然 YOLOv5 的 Nano 变体在参数量和绝对原始速度方面略占优势,但 YOLOv8 在各项指标上都大幅提升了 mAP,为要求严苛的实际部署场景提供了更强的性能平衡。
易用性与 Ultralytics 生态#
现代 Ultralytics 模型的一个显著特点,是围绕这些模型构建并得到良好维护的生态系统。从 YOLOv5 迁移到 YOLOv8 时,引入了统一的 ultralytics pip 软件包,打造了高度简化的用户体验。
开发者只需编写几行 Python 代码,即可无缝完成模型训练、验证、预测和导出,免去了深度学习项目过去通常需要的复杂样板脚本。
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO("yolov8n.pt")
# Train the model on custom data efficiently
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)
# Export the model to ONNX for production deployment
path = model.export(format="onnx")此外,与 Ultralytics Platform 等工具集成后,数据集管理、云端训练和部署都变得更加简单,同时确保持续开发和强大的社区支持。
理想应用场景#
选择 YOLOv5 的场景: 如果你正在维护旧系统、需要在 Raspberry Pi 这样资源极其受限的 CPU 上运行推理,或者正在开展必须将模型大小节省到每一小部分兆字节的项目,YOLOv5 仍然是可靠的主力方案。
选择 YOLOv8 的场景: 对于如今开始的几乎所有新项目,我们都强烈建议优先选择 YOLOv8,而不是 YOLOv5。其先进架构能够轻松处理复杂跟踪、有向边界框 (OBB)和分割任务。它非常适合从自主机器人到医学图像分析和智慧城市基础设施等现代应用。
虽然 YOLOv8 功能强大,但追求极致性能的开发者应考虑 YOLO26。它于 2026 年发布,引入了多项突破性进展:
- **端到端无 NMS 设计:**取消 NMS 后处理,实现更快速、更简单的部署;这一理念最早由 YOLOv10 开创。
- **MuSGD 优化器:**SGD 与 Muon 的混合优化器,将 LLM 训练创新引入计算机视觉,实现更稳定的训练和更快的收敛。
- **CPU 推理速度最高提升 43%:**针对无专用 GPU 的边缘计算环境进行了深度优化。
- **移除 DFL:**移除了分布焦点损失,简化导出并增强边缘设备兼容性。
- **ProgLoss + STAL:**先进的损失函数,显著提升小目标识别能力,这对于航空影像和 IoT 至关重要。
借助 Ultralytics 提供的完整文档和工具,你可以轻松部署 YOLOv8,或探索前沿的 YOLO26,以前所未有的速度和准确率解决复杂视觉难题。如需进一步学习,可以查看我们的超参数调优和模型部署实践指南。