YOLOv8 与 YOLOv9:目标检测技术对比
选择最优的计算机视觉模型是一个关键决策,它影响着AI项目的成功,需要在准确性、推理速度和计算效率之间取得平衡。本综合指南比较了Ultralytics YOLOv8(一款多功能且生产就绪的模型)与YOLOv9(一款通过新颖梯度最大化detect准确性的架构)。我们分析了它们的架构区别、性能指标和理想部署场景,以帮助您做出明智的选择。
Ultralytics YOLOv8:多功能性和易用性标准
由 Ultralytics 推出,YOLOv8 代表了 YOLO 系列的一次重大演进,它不仅被设计为一个模型,更是一个用于实际 AI 的完整框架。它优先考虑无缝的用户体验、跨硬件的强大性能,并支持超越简单 detect 的广泛视觉任务。
- 作者: Glenn Jocher, Ayush Chaurasia, Jing Qiu
- 组织:Ultralytics
- 日期: 2023-01-10
- GitHub:https://github.com/ultralytics/ultralytics
- 文档:https://docs.ultralytics.com/models/yolov8/
架构与生态系统
YOLOv8 引入了无锚点检测头以及 C2f(带有 2 个卷积的跨阶段部分)模块,在保持轻量级执行的同时,改进了特征集成。与以研究为中心的模型不同,YOLOv8 在设计时就考虑到了部署。它原生支持图像分类、实例分割、姿势估计和旋转框检测 (OBB)。
YOLOv8 的真正强大之处在于Ultralytics 生态系统。开发者受益于统一的Python API和CLI,它们标准化了训练、验证和部署。这种“开箱即用”的方法大大缩短了计算机视觉应用的上市时间。
优势
- 无与伦比的多功能性: 在一个库中处理 detect、segment、classify 和姿势估计任务。
- 部署就绪: 对 ONNX、OpenVINO、TensorRT 和 CoreML 的原生导出支持简化了与边缘设备和云服务器的集成。
- 内存效率:与基于 Transformer 的架构相比,优化了训练期间的 CUDA 内存使用,使其可在标准消费级 GPU 上运行。
- 速度-精度平衡: 提供卓越的实时推理速度,在CPU和边缘硬件上通常优于竞争对手。
- 积极支持: 由庞大的开源社区和 Ultralytics 的频繁更新提供支持,确保与最新的库和硬件兼容。
YOLOv9:实现高精度的架构创新
YOLOv9 发布时着重解决深度学习中的“信息瓶颈”问题。它引入了旨在保留数据信息在通过深层网络时的理论概念,主要目标是达到目标检测准确性的上限。
- 作者: Chien-Yao Wang, Hong-Yuan Mark Liao
- 组织:台湾中央研究院信息科学研究所
- 日期: 2024-02-21
- Arxiv:https://arxiv.org/abs/2402.13616
- GitHub:https://github.com/WongKinYiu/yolov9
- 文档:https://docs.ultralytics.com/models/yolov9/
核心创新
YOLOv9 的架构依赖于两个主要组件:可编程梯度信息 (PGI) 和 广义高效层聚合网络 (GELAN)。PGI 旨在防止深度网络在前向传播过程中丢失关键输入信息,确保为更新生成可靠的梯度。GELAN 旨在优化参数效率,使模型能够在具有可观计算开销的情况下实现高精度。
优势
- 高精度:最大的变体YOLOv9-E在COCO数据集的mAP上树立了令人印象深刻的基准,在精度至关重要的场景中表现出色。
- 参数效率:得益于GELAN,中型YOLOv9模型在参数量少于一些旧架构的情况下,实现了具有竞争力的精度。
- 理论进展:解决了深度网络训练中信息保存方面的基本问题。
弱点
- 有限的多功能性: 主要专注于目标检测。尽管功能强大,但它缺乏Ultralytics核心产品线中可见的对分割、姿势估计和分类的原生、流线型支持。
- 复杂训练: PGI 辅助分支的引入会使训练过程相比于精简的 YOLOv8 流程更耗费资源且难以调优。
- 推理速度:尽管高效,但与YOLOv8中使用的经过高度优化的模块相比,其架构复杂性可能导致在某些硬件上的推理时间变慢。
性能正面交锋
比较 YOLOv8 和 YOLOv9 时,选择通常取决于您的部署环境的具体限制。YOLOv8 在推理速度和部署灵活性方面占据主导地位,而 YOLOv9 则将检测指标推向了极限。
| 模型 | 尺寸 (像素) | 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 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.0 |
数据显示了一个明显的区别:YOLOv8 提供了卓越的速度,尤其是在 GPU (TensorRT) 和 CPU (ONNX) 上,这对于 边缘 AI 应用 至关重要。例如,在 T4 GPU 上,YOLOv8n 显著快于 YOLOv9t(1.47 毫秒 vs 2.3 毫秒)。相反,YOLOv9e 实现了最高的 mAP (55.6%),使其适用于对延迟要求不高,但对检测微小细节要求较高的服务器端处理。
您知道吗?
Ultralytics YOLOv8:原生支持设计 所有 主要计算机视觉任务。您可以从目标检测切换到 实例分割 仅通过更改模型权重文件(例如, yolov8n.pt 到 yolov8n-seg.pt),这是标准 YOLOv9 仓库中不具备的灵活性水平。
理想用例
选择Ultralytics YOLOv8如果:
- 您需要生产就绪的解决方案:详尽的文档、社区支持以及预构建的集成(如MLFlow和TensorBoard)简化了从原型到产品的路径。
- 速度至关重要: 对于实时视频分析、自主导航或移动应用程序,YOLOv8优化的推理速度提供了显著优势。
- 您需要多种视觉任务:涉及姿势估计或segment以及detect的项目,最适合使用YOLOv8的统一框架。
- 资源限制:YOLOv8模型针对各种硬件进行了高度优化,确保在从树莓派到NVIDIA Jetson等设备上高效运行。
如果满足以下条件,请选择 YOLOv9:
- 最大精度是唯一指标:适用于学术研究或专业检测任务,其中mAP的每一个百分点都比速度或可用性更为重要。
- 您正在研究架构:PGI和GELAN概念对于研究深度网络中梯度流的研究人员来说很有价值。
代码实现
Ultralytics生态系统的一个主要优势是它通过相同的简单API支持这两种模型。这使您可以在自己的自定义数据集上轻松地对它们进行基准测试。
以下是您如何仅用几行代码训练YOLOv8模型的方法:
from ultralytics import YOLO
# Load a YOLOv8 model
model = YOLO("yolov8n.pt")
# Train the model on your data
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on an image
results = model("path/to/image.jpg")
由于 Ultralytics 集成了 YOLOv9,您可以将模型字符串替换为 yolov9c.pt 在相同的稳健管道中试验 YOLOv9,尽管原生 YOLOv8 模型通常受益于与部署工具更紧密的集成。
结论
对于绝大多数开发者和商业应用,Ultralytics YOLOv8仍然是推荐的选择。它在速度和精度之间实现了卓越的平衡,结合成熟且维护良好的生态系统,确保项目具有前瞻性且更易于维护。在单一框架内处理detection、segmentation和姿势估计的能力提供了无与伦比的多功能性。
虽然YOLOv9引入了令人兴奋的架构理论并实现了高高峰值准确性,但它通常最适合特定的研究领域或推理延迟不是限制的场景。
对于那些寻求计算机视觉技术绝对最新成果的用户,务必关注 YOLO11,它进一步提升了 YOLOv8 所确立的效率和性能。此外,对基于 Transformer 方法感兴趣的研究人员可以探索 RT-DETR 以了解不同的架构权衡。
在我们的模型比较页面上探索更多比较。