YOLOv9 与 YOLOv8:目标检测技术比较
选择最优的对象detect模型需要在架构创新与实际部署需求之间取得平衡。这项技术比较分析了YOLOv9(一个引入新颖梯度信息技术的以研究为重点的模型)和Ultralytics YOLOv8(一个为多功能性和速度而设计的生产就绪框架)。我们考察了它们的架构、在COCO数据集上的性能指标以及理想用例,以帮助您决定哪个模型适合您的计算机视觉管线。
YOLOv9:通过新颖架构解决信息损失
YOLOv9于2024年初发布,旨在解决深度神经网络中信息丢失的根本问题。随着网络变得更深,重要的输入数据可能在到达最终层之前消失,从而使训练过程复杂化。
- 作者: Chien-Yao Wang, Hong-Yuan Mark Liao
- 组织:台湾中央研究院信息科学研究所
- 日期: 2024-02-21
- Arxiv:arXiv:2402.13616
- GitHub:YOLOv9 仓库
- 文档:Ultralytics YOLOv9 文档
主要创新:PGI 和 GELAN
YOLOv9引入了两项主要的架构改进,以解决信息瓶颈问题:
- 可编程梯度信息 (PGI):一种辅助监督框架,生成可靠梯度以更新网络权重,确保关键输入关联在各层中得以保留。这对于训练非常深的模型尤其有效。
- 广义高效层聚合网络 (GELAN):一种轻量级网络架构,优先考虑参数效率和计算速度 (FLOPs)。GELAN 使 YOLOv9 能够在保持可观推理速度的同时实现高准确性。
优势与局限性
YOLOv9 在学术基准测试中表现出色,凭借 YOLOv9-E 达到顶尖水平的变体 mAP 分数。对于旨在突破检测精度极限的研究人员来说,这是一个绝佳的选择。然而,作为一个深深植根于研究的模型,它缺乏在更成熟的生态系统中发现的广泛的多任务支持。它的主要实现侧重于边界框检测,并且与简化的工业解决方案相比,训练工作流程可能需要更多的资源。
Ultralytics YOLOv8:生产级 AI 的标准
Ultralytics YOLOv8 代表了一种 Vision AI 的整体方法。YOLOv8 并非仅关注单个指标,而是经过精心设计,旨在提供最佳的用户体验、部署多功能性和性能平衡。它是广泛的 Ultralytics 生态系统 的一部分,确保它对于所有技能水平的开发人员来说都保持强大且易于使用。
- 作者: Glenn Jocher, Ayush Chaurasia, Jing Qiu
- 组织:Ultralytics
- 日期: 2023-01-10
- GitHub:Ultralytics 仓库
- 文档:Ultralytics YOLOv8 文档
架构与生态系统优势
YOLOv8 采用无锚框检测头和 C2f(带有 2 个卷积的跨阶段部分瓶颈)主干网络,这在保持轻量级占用的同时增强了梯度流。除了架构之外,其优势在于其集成性:
- 易用性: 通过统一的 python API 和命令行界面 (CLI),训练和部署模型只需几行代码。
- 多功能性:与通常仅限于detect的竞争对手不同,YOLOv8原生支持实例分割、姿势估计、旋转框检测 (OBB)和图像分类。
- 性能平衡: 它在延迟和精度之间提供了卓越的权衡,使其适用于NVIDIA Jetson或树莓派等边缘设备上的实时推理。
- 内存效率:与基于 Transformer 的架构相比,YOLOv8 在训练期间通常需要更少的CUDA 内存,从而降低了硬件的入门门槛。
集成工作流
Ultralytics 模型可与 TensorBoard 等工具无缝集成用于可视化,与 MLflow 集成用于实验跟踪,从而简化了 MLOps 生命周期。
性能分析:速度、准确性和效率
模型之间的选择通常归结为项目对速度与纯准确性的具体要求。下表比较了 COCO 验证集上的标准变体。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
主要内容
- 高端精度: 字段
YOLOv9e模型达到了惊人的 55.6% mAP,超越了YOLOv8x。如果您的应用需要检测最困难的对象并且延迟是次要的,那么 YOLOv9e 是一个强大的竞争者。 - 实时速度: 对于依赖于速度的应用,
YOLOv8n和YOLOv8s表现出卓越的性能。YOLOv8n对于...特别有效 移动部署,提供了一种轻量级解决方案,在 CPU 和 GPU 上都非常快。 - 部署就绪性: 该表突出显示了 YOLOv8 的 CPU ONNX 速度,这是非 GPU 环境的关键指标。这种数据透明度反映了 YOLOv8 针对广泛部署场景的设计,而 YOLOv9 在研究环境中通常主要在 V100 或 T4 等高端 GPU 上进行基准测试。
训练与可用性
最显著的区别之一在于开发者体验。Ultralytics 优先采用“开箱即用”的方法。
Ultralytics 的简洁性
训练 YOLOv8 模型只需最少的设置。该库自动处理数据增强、超参数调整和预训练权重的下载。
from ultralytics import YOLO
# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")
# Train on a custom dataset with a single command
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
研究复杂性
虽然YOLOv9已集成到Ultralytics代码库中以便更轻松地访问,但原始研究仓库通常需要复杂的环境配置和手动超参数管理。Ultralytics的完善生态系统确保无论您使用YOLOv8还是移植的YOLOv9,都能受益于稳定的CI/CD管道、广泛的文档以及通过Discord提供的社区支持。
理想用例
如果满足以下条件,请选择 YOLOv9:
- 最大精度至关重要:例如医学图像分析(如肿瘤检测)等项目,其中mAP的每一个百分点都至关重要。
- 学术研究: 您正在研究像 PGI 这样的新型架构,或者对神经网络效率进行比较研究。
- 高算力环境:部署目标是强大的服务器(例如 NVIDIA A100),在这些环境中,更高的 FLOPs 是可接受的。
如果符合以下条件,请选择 Ultralytics YOLOv8:
- 需要执行多样化任务:您需要在单一项目结构中执行 对象 track、segmentation 或姿势估计。
- 边缘部署:在智能相机或无人机等受限硬件上运行的应用程序,这些设备的内存和CPU周期稀缺。
- 快速开发:需要使用ONNX、TensorRT或OpenVINO等导出格式快速从概念到生产的初创公司和企业团队。
- 稳定性与支持:您需要一个有频繁更新和庞大社区支持的模型,以高效解决问题。
结论
尽管 YOLOv9 引入了令人印象深刻的理论进步并实现了高 detect 准确率,但 Ultralytics YOLOv8 对于绝大多数实际应用而言仍然是更实用的选择。它在速度、准确性和多功能性方面的平衡,结合用户友好的 API 和高效的训练过程,使其成为开发人员的首选解决方案。
对于那些寻求 Ultralytics 产品线中绝对最新成果的用户,可以考虑探索 YOLO11,它进一步优化了这些特性,以实现最先进的性能。然而,在这两个讨论的模型中,YOLOv8 提供了成熟、可投入生产的体验,加速了从数据到部署的路径。
探索其他模型
如果您对其他架构感兴趣,Ultralytics 文档提供了多种其他模型的比较:
- RT-DETR:一种基于 Transformer 的检测器,可提供高精度,但具有不同的资源需求。
- YOLOv5: 传奇的前身,以其极高的稳定性和广泛的应用而闻名。
- YOLO11:Ultralytics 的最新迭代,进一步提高了效率。