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 模型,相比 RT-DETR 等许多基于 Transformer 的替代方案,经过优化,在训练期间使用更少的 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 会通过 AutoAnchor 自动检查并重新计算锚框),在定义明确的数据集上效果良好。
YOLOv5 采用 C3 模块,在保持参数量较低的同时高效提取特征。其损失函数将目标性损失与分类损失、边界框回归损失结合起来,引导网络生成准确预测。
优势与劣势#
优势:
- 模型轻量,因此 Nano(YOLOv5n)和 Small(YOLOv5s)变体非常适合部署在资源受限的边缘 AI设备上。
- 在 CPU 和 GPU 上都能快速推理。
- 生态系统成熟,拥有丰富的社区教程和第三方集成。
不足:
- 依赖锚框,其先验信息可能会限制模型在差异较大或自定义数据集上的泛化能力。
- 与 YOLOv8 和 YOLO26 等现代无锚框架构相比,整体准确率 (mAP) 较低。
性能对比#
评估这些模型时,在速度与准确率之间实现良好权衡至关重要。下表列出了两种架构在 COCO 数据集上的性能指标。CPU 速度使用 ONNX 测量,GPU 速度则使用 TensorRT 测试。
| 模型 | 尺寸 (像素) | mAP验证集 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (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.1 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
| YOLOv5n | 640 | 28.0 | - | 1.12 | 1.9 | 4.5 |
| YOLOv5s | 640 | 37.4 | - | 1.92 | 7.2 | 16.5 |
| YOLOv5m | 640 | 45.4 | - | 4.03 | 21.2 | 49.0 |
| YOLOv5l | 640 | 49.0 | - | 6.61 | 46.5 | 109.1 |
| YOLOv5x | 640 | 50.7 | - | 11.89 | 86.7 | 205.7 |
虽然 YOLOv5 在此表列出的所有尺寸下 GPU 延迟更低、FLOPs 更少,但 YOLOv8 的 mAP 全面显著更高(例如,Nano 模型为 37.3,而 YOLOv5 为 28.0),因此在要求严苛的实际部署中,速度与准确率的平衡更出色。
易用性与 Ultralytics 生态系统#
现代 Ultralytics 模型的显著特点之一,是拥有维护良好的周边生态系统。从 YOLOv5 迁移到 YOLOv8 时,推出了统一的 ultralytics pip 包,简化了用户体验。
开发者只需几行 Python 代码,就能完成模型训练、验证、预测和导出,无需编写深度学习项目过去通常需要的复杂样板脚本。
from ultralytics import YOLO
# 加载预训练的 YOLOv8 模型
model = YOLO("yolov8n.pt")
# 在自定义数据上高效训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)
# 将模型导出为 ONNX,以便用于生产部署
path = model.export(format="onnx")Ultralytics Platform 进一步简化了数据集管理、云端训练和部署。
理想应用场景#
何时选择 YOLOv5: 如果你正在维护旧系统、需要在 Raspberry Pi 等资源极其有限的 CPU 上运行推理,或者项目要求尽可能节省模型文件的每一兆字节,那么 YOLOv5 仍然是一款可靠的主力模型。
何时选择 YOLOv8: 在两者之中,YOLOv8 更适合新项目。它的架构支持跟踪、分割和旋转边界框 (OBB),适用于从自主机器人到医学图像分析和智慧城市基础设施等现代应用。
虽然 YOLOv8 性能出色,但 Ultralytics 建议新项目使用 YOLO26。YOLO26 于 2026 年 1 月发布,带来了多项改进:
- 端到端、无需 NMS 的设计:可选的一对一检测头(
nms=False)无需进行 NMS 后处理,从而实现更快、更简单的部署;这一方案由 YOLOv10 引入 YOLO 模型。 - MuSGD 优化器:结合 SGD 和 Muon 的混合优化器,将 LLM 训练创新引入计算机视觉,实现更稳定的训练和更快的收敛。
- CPU 推理速度最高提升 43%:YOLO26n 在 CPU 上的运行速度最高可比 YOLO11n 快 43%,适用于没有专用 GPU 的边缘计算环境。
- 移除 DFL:移除了 Distribution Focal Loss,简化导出流程,并增强了对边缘设备的兼容性。
- ProgLoss + STAL:渐进式损失和小目标感知标签分配显著提升了小目标识别能力,这对航空影像和 IoT 至关重要。
借助 Ultralytics 文档和工具,你可以部署 YOLOv8,或采用 YOLO26 来应对要求严苛的视觉应用。若要进一步学习,请参阅超参数调优和模型部署实践指南。