YOLOv9 与YOLOv8:物体检测技术比较
选择最佳的物体检测模型需要在架构创新和实际部署需求之间取得平衡。本技术比较分析了 YOLOv9是一个以研究为重点的模型,引入了新颖的梯度信息技术,而 Ultralytics YOLOv8和 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:生产型人工智能的标准
Ultralytics YOLOv8代表了 Vision AI 的整体方法。YOLOv8 并非只关注单一指标,而是旨在提供最佳的用户体验、部署多样性和性能平衡。它是庞大的Ultralytics 生态系统的一部分,可确保其保持稳健性,并便于各种技能水平的开发人员使用。
- 作者: Glenn Jocher, Ayush Chaurasia, Jing Qiu
- 组织机构Ultralytics
- 日期: 2023-01-10
- GitHub:Ultralytics 资源库
- 文档:Ultralytics YOLOv8 文档
架构和生态系统优势
YOLOv8 采用无锚检测头和 C2f(带 2 个卷积的跨阶段部分瓶颈)骨架,在保持轻量级的同时增强了梯度流。除了架构,它的优势还在于集成:
- 易于使用:有了统一的Python 应用程序接口和命令行界面 (CLI),训练和部署模型只需几行代码。
- 多功能性:与通常仅限于检测的竞争对手不同,YOLOv8 本机支持实例分割、姿势估计 、定向边框(旋转框检测)和图像分类。
- 性能平衡:它在延迟和准确性之间进行了出色的权衡,因此适用NVIDIA Jetson或 Raspberry Pi 等边缘设备的实时推理。
- 内存效率:与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 GPU 环境的关键指标。这一数据透明度反映出YOLOv8 的设计适用于广泛的部署场景,而YOLOv9 通常主要在研究环境中的高端 GPU(如 V100 或 T4)上进行基准测试。
培训和可用性
最显著的区别之一在于开发人员的体验。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 等新型架构,或对神经网络的效率进行比较研究。
- 高计算环境: Deployment targets are powerful servers (e.g., NVIDIA A100) where higher FLOPs are acceptable.
如果符合以下条件,请选择 Ultralytics YOLOv8:
- 需要完成多种任务:您需要在单个项目结构中执行对象跟踪、分割或姿势估计 。
- 边缘部署:在智能相机或无人机等受限硬件上运行的应用,内存和CPU 周期都很稀缺。
- 快速开发:需要使用ONNX、TensorRT 或OpenVINO 等导出格式快速从概念转向生产的初创企业和企业团队。
- 稳定性和支持:您需要一个有频繁更新和大型社区支持的模型,以便高效地排除故障。
结论
虽然 YOLOv9则引入了令人印象深刻的先进理论,并实现了很高的检测精度、 Ultralytics YOLOv8仍然是绝大多数实际应用中更实用的选择。它兼顾了速度、准确性和多功能性,加上用户友好的 API 和高效的培训流程,使其成为开发人员的首选解决方案。
如果您正在寻找Ultralytics 系列中的最新产品,请考虑探索 YOLO11,它进一步完善了这些属性,实现了最先进的性能。不过,在这里讨论的两种型号之间,YOLOv8 提供了一种精良的生产就绪体验,加快了从数据到部署的速度。
探索其他模型
如果您对其他架构感兴趣,Ultralytics 文档提供了其他几种模式的比较:
- RT-DETR:transformer探测器,精度高,但资源需求不同。
- YOLOv5:YOLOv5:传奇的前身,以其极强的稳定性和广泛的应用而著称。
- YOLO11:Ultralytics 的最新产品,进一步提高了效率。