YOLOv8 与 YOLOv9#
实时目标检测的发展始终围绕着提升准确率、降低延迟和提高硬件利用率展开。在这一发展历程中,Ultralytics YOLOv8 和 YOLOv9 是两个重要的里程碑。尽管这两种模型都代表了计算机视觉领域的先进水平,但它们面向不同的部署需求,采用不同的架构理念,并依托不同的开发者生态系统。
本指南全面解析两种模型的技术差异、架构创新和实际部署注意事项,帮助你为下一个人工智能项目选择合适的模型。
模型发展脉络与核心理念#
在深入了解各项指标之前,了解每种模型的起源和主要设计目标至关重要。
Ultralytics YOLOv8:多功能生态系统标准#
Ultralytics 团队发布的 YOLOv8 并非只是一款独立的目标检测器,而是一个统一的多任务框架。它优先考虑流畅的开发者体验、较低的内存需求和广泛的硬件兼容性。
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织: Ultralytics
- 日期: 2023-01-10
- GitHub: ultralytics/ultralytics
- 文档:YOLOv8 文档
YOLOv9:可编程梯度信息#
YOLOv9 由中央研究院的研究人员独立开发,重点关注架构理论,尤其是深度神经网络中的信息瓶颈现象。
- 作者:Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 机构:台湾中央研究院信息科学研究所
- 日期:2024-02-21
- Arxiv: 2402.13616
- GitHub: WongKinYiu/yolov9
如果你计划进行大规模商业部署,可以了解 Ultralytics Platform,以简化云端训练、数据集管理和一键式 API 端点部署。
深入剖析架构#
深度学习中的架构选择决定了模型的学习效率,以及模型在 NVIDIA Jetson 或 Intel CPU 等目标硬件上的运行速度。
YOLOv8 架构:C2f 与解耦头#
YOLOv8 引入了 C2f 模块(带两个卷积的跨阶段局部瓶颈模块),取代了较早的 C3 模块。这一变化改善了梯度流,使网络能够学习更丰富的特征表示,同时不会过度占用 GPU 内存。
此外,YOLOv8 采用无锚框设计和解耦头。通过分别处理分类和回归任务,模型在训练期间收敛更快,并能更好地泛化到各种自定义数据集。
YOLOv9 架构:PGI 与 GELAN#
YOLOv9 引入了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)。PGI 确保关键数据在通过网络各层时不会丢失,从而为权重更新提供可靠的梯度。GELAN 最大限度地提高了参数效率,让模型在尽量控制 FLOPs 的同时实现较高的准确率。
尽管 YOLOv9 在数学上颇具优势,但它在训练时依赖特定的辅助可逆分支,因此与标准流程相比,训练代码可能更难自定义。
性能指标与基准测试#
下表直接比较了不同尺寸的模型。性能指标在MS COCO 数据集上测得,该数据集是目标检测的标准基准。
| 模型 | 尺寸 (像素) | 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 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.2 | 26.7 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.1 | 76.8 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.5 | 102.8 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 58.1 | 192.5 |
注意:每列中的最佳值以 粗体 标出。
权衡分析#
YOLOv9 的峰值准确率(mAP)略高,尤其是在较大的 e 变体上。不过,这也有代价。Ultralytics YOLOv8 在推理速度方面具有显著优势,尤其是编译为 TensorRT 或 ONNX 等格式时。对于需要在资源受限的边缘硬件(如 Raspberry Pi 或较旧的移动芯片)上实现高每秒帧数(FPS)的应用,YOLOv8 的 n 和 s 变体能提供实用得多的性能平衡。
训练效率与生态系统集成#
选择模型不能只看准确率表;开发者体验也至关重要。
Ultralytics 的优势:易于使用#
训练 YOLOv9 通常需要克隆复杂的 GitHub 仓库、仔细管理 PyTorch 环境,并手动配置辅助损失权重。
相比之下,Ultralytics YOLOv8 采用了精简流畅的 Python API。它易于使用,可原生处理数据增强、日志记录(使用 Weights & Biases 和 Comet ML 等工具),并支持硬件分布式处理。
from ultralytics import YOLO
# 加载一个预训练的 YOLOv8 small 模型
model = YOLO("yolov8s.pt")
# 使用自定义数据高效地训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 导出以部署到边缘设备
model.export(format="engine", quantize=16) # TensorRT 导出这个统一的 API 大幅缩短了从原型到生产的时间。此外,YOLOv8 在训练期间通常只需较少的 CUDA 内存,因此开发者可以在消费级硬件上使用更大的批次大小。
任务通用性#
虽然 YOLOv9 是出色的边界框检测器,但实际的视觉 AI 往往不止需要这些功能。YOLOv8 是一款多功能的强大工具,原生支持实例分割、姿态估计、图像分类和有向边界框(OBB)。使用单一框架处理多项任务,可大幅减少软件臃肿和维护负担。
如果你正在启动新项目,也可以评估 Ultralytics YOLO11 或前沿模型 YOLO26,后者提供可选的端到端无 NMS 推理。
实际应用场景#
这些模型在生产环境中的表现如何?
自主无人机与机器人#
对于需要快速避障的机器人,YOLOv8 是首选。YOLOv8n 的超低延迟可确保自主系统实时响应周围环境,避免碰撞。原生导出到 OpenVINO 和 CoreML 的功能,让你可以轻松将模型部署到商用无人机常见的低功耗芯片上。
高分辨率缺陷检测#
在检测微小异常至关重要且可接受离线处理的专业制造场景中,YOLOv9 能发挥出色效果。PGI 架构有助于网络保留精细的视觉细节,从而识别发丝般的裂纹或 PCB 焊接错误。
智能零售与安防分析#
对于在商店过道跟踪顾客或管理自动结账系统,YOLOv8 能提供最佳平衡。它能够使用 BoT-SORT 等标准算法同时运行检测和多目标跟踪,是多摄像头零售部署的可靠解决方案。
用例与建议#
选择 YOLOv8 还是 YOLOv9,取决于你的具体项目需求、部署限制和生态系统偏好。
何时选择 YOLOv8#
YOLOv8 适用于:
- 多任务灵活部署: 在 Ultralytics 生态系统中,需要使用经过验证的模型来完成检测、分割、分类和姿态估计的项目。
- 成熟的生产系统: 已经基于 YOLOv8 架构构建、并拥有稳定且经过充分测试的部署流水线的现有生产环境。
- 广泛的社区与生态系统支持: 能够受益于 YOLOv8 丰富教程、第三方集成和活跃社区资源的应用。
何时选择 YOLOv9#
以下场景推荐使用 YOLOv9:
- 信息瓶颈研究:研究可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 架构的学术项目。
- 梯度流优化研究:重点研究如何理解并缓解训练期间深层网络层中的信息损失。
- 高准确率检测基准测试:需要将 YOLOv9 在 COCO 基准测试中的出色表现作为架构对比参照的场景。
何时选择 Ultralytics (YOLO26)#
对于大多数新项目,Ultralytics YOLO26在性能与开发体验之间实现了最佳平衡:
- 无 NMS 的边缘部署:适用于要求推理延迟稳定且较低,同时不希望增加非极大值抑制后处理复杂度的应用。
- 仅使用 CPU 的环境:适用于没有专用 GPU 加速的设备,此时 YOLO26 的 CPU 推理速度最高提升 43%,可带来显著优势。
- 小目标检测:适用于无人机航拍影像等具有挑战性的场景,或 IoT 传感器分析等需要 ProgLoss 和 STAL 大幅提升微小目标准确率的场景。
新一代进化:YOLO26#
YOLOv8 和 YOLOv9 功能强大,但 AI 领域瞬息万变。对于追求最佳性能的团队,新发布的 YOLO26 在前代模型的成功基础上进一步发展。
YOLO26 引入了可选的端到端无 NMS 设计(nms=False),可消除复杂的后处理瓶颈,让部署更简单、延迟更可预测。它采用全新的 MuSGD 优化器和增强版 ProgLoss + STAL 损失函数,并通过移除 DFL(移除分布焦点损失,简化导出流程并增强对边缘设备和低功耗设备的兼容性),在提升小目标识别能力的同时,实现最高 43% 更快的 CPU 推理速度。对于希望突破边缘计算极限的开发者,我们强烈建议评估 YOLO26。
总而言之,YOLOv9 在架构研究方面成果显著,峰值准确率也很出色,但对于绝大多数希望快速交付可靠软件的计算机视觉工程师来说,Ultralytics YOLOv8 仍是最实用、支持最完善且用途最广泛的选择。