DAMO-YOLO 与 YOLOv9 的技术对比
选择合适的物体检测模型是一个至关重要的决定,它需要在准确性、速度和计算效率的需求之间取得平衡。本页面提供了阿里巴巴集团的 DAMO-YOLO 和 YOLOv9 之间详细的技术比较。我们将探讨它们的架构创新、性能指标和理想用例,以帮助您为您的计算机视觉项目选择最佳模型。虽然这两种模型都引入了重大改进,但 YOLOv9,尤其是在 Ultralytics 生态系统中,提供了最先进的性能和开发人员友好的功能的引人注目的组合。
DAMO-YOLO:阿里巴巴提供的一种快速而准确的方法
作者: Xianzhe Xu、Yiqi Jiang、Weihua Chen、Yilun Huang、Yuan Zhang 和 Xiuyu Sun
组织: Alibaba Group
日期: 2022-11-23
Arxiv: https://arxiv.org/abs/2211.15444
GitHub: https://github.com/tinyvision/DAMO-YOLO
DAMO-YOLO 是由阿里巴巴开发的目标检测模型,专注于在速度和精度之间实现卓越的平衡。它引入了几项创新技术,旨在增强从边缘设备到云 GPU 的各种硬件的性能。该架构是“一次全部”方法的结果,其中训练一个超级网络,然后使用 神经架构搜索 (NAS) 导出专门的子网络,以适应不同的计算约束。
架构和主要特性
DAMO-YOLO 的架构融合了多项关键创新:
- NAS-Generated Backbones: DAMO-YOLO 没有采用手动设计的骨干网络,而是使用通过 NAS 发现的骨干网络,这些骨干网络经过优化,可实现高效的特征提取。
- 高效 RepGFPN Neck: 它采用了一种新的特征金字塔网络颈部 RepGFPN,该网络专为高效特征融合而设计,并且与重参数化技术兼容,从而提高推理速度。
- ZeroHead: 一种简化的、轻量级的检测头,可减少计算开销,同时保持高性能。
- AlignedOTA 标签分配: 一种改进的标签分配策略,可解决分类和回归任务之间的不对齐问题,从而实现更准确的预测。
- 蒸馏增强: 知识蒸馏用于将知识从较大的教师模型转移到较小的学生模型,从而进一步提高紧凑模型的准确性。
优势
- GPU速度快: DAMO-YOLO针对GPU上的快速推理进行了高度优化,使其适用于实时视频处理和其他对延迟敏感的应用程序。
- 可扩展的模型: 它提供了一系列模型(Tiny、Small、Medium、Large),这些模型在速度和精度之间提供了清晰的权衡,使开发人员能够选择最适合其硬件的模型。
- 创新技术: 对 NAS、高效颈部网络和高级标签分配器的使用,展示了一种现代化的检测器设计方法。
弱点
- 任务特定性: DAMO-YOLO 主要设计用于目标检测,并且缺乏像 Ultralytics 这样全面的框架中发现的用于其他任务(如实例分割或姿势估计)的内置多功能性。
- 生态系统与可用性: 虽然功能强大,但其生态系统不如Ultralytics成熟。用户可能会发现它需要更多的精力来进行训练、部署和集成到生产管道中。
- 社区支持: 与 YOLO 系列等更广泛采用的模型相比,社区和可用资源可能较少。
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),使其能够实现卓越的精度和参数效率。当集成到 Ultralytics 框架中时,YOLOv9 将这种最先进的性能与无与伦比的用户体验相结合。
架构和主要特性
YOLOv9的优势在于其新颖的架构组件:
- 可编程梯度信息 (PGI): 这种机制通过辅助可逆分支生成可靠的梯度,从而帮助缓解信息瓶颈问题,确保更深层接收完整的输入信息以进行准确的更新。
- 广义高效层聚合网络 (GELAN): 一种先进的网络架构,它建立在 CSPNet 和 ELAN 的原理之上。GELAN 专为优化参数利用率和计算效率而设计,使其既强大又快速。
优势
- 顶尖精度: YOLOv9 在 COCO 数据集 上树立了新的精度标准,在相似或更低的计算成本下,性能优于许多之前的模型。
- 卓越的效率: 如性能表所示,与竞争对手相比,YOLOv9 模型通常以更少的参数和 FLOP 实现更高的准确性,使其非常适合从 边缘设备 到功能强大的服务器等各种硬件上的部署。
- 完善的生态系统: YOLOv9 集成到 Ultralytics 生态系统中,通过简化的 Python API 和 CLI、广泛的 文档 和积极的社区支持,受益于易用性。
- 训练效率: Ultralytics 的实现通过随时可用的预训练权重、更低的内存要求以及与 Ultralytics HUB 等工具的无缝集成,确保了高效的训练流程,从而实现无代码训练和 MLOps。
- 多功能性: 虽然最初的论文侧重于检测,但 GELAN 架构具有高度的适应性。Ultralytics 生态系统将其功能扩展到其他视觉任务,与其他模型(如 YOLOv8)中的多任务支持相一致。
弱点
- 更新的模型: 作为一个更新的架构,社区贡献的教程和第三方集成的数量仍在增长,尽管其包含在 Ultralytics 库中已大大加速了其采用。
- 资源需求: 最大的 YOLOv9 变体,如 YOLOv9-E,需要大量的计算资源进行训练,但它们为其尺寸提供了顶级的准确性。
性能分析:准确率和速度
在比较 DAMO-YOLO 和 YOLOv9 时,很明显这两个模型系列都在推动实时目标检测的边界。然而,仔细观察这些指标可以发现 YOLOv9 具有卓越的效率。
模型 | 尺寸 (像素) |
mAPval 50-95 |
速度 CPU ONNX (毫秒) |
速度 T4 TensorRT (ms) |
参数 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
DAMO-YOLOt | 640 | 42.0 | - | 2.32 | 8.5 | 18.1 |
DAMO-YOLOs | 640 | 46.0 | - | 3.45 | 16.3 | 37.8 |
DAMO-YOLOm | 640 | 49.2 | - | 5.09 | 28.2 | 61.8 |
DAMO-YOLOl | 640 | 50.8 | - | 7.18 | 42.1 | 97.3 |
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 |
从表中,我们可以得出以下几个结论:
- 准确率: YOLOv9模型始终获得更高的mAP分数。 例如,YOLOv9m超过了DAMO-YOLOl,mAP分别为51.4和50.8。 最大的模型YOLOv9-E达到了令人印象深刻的55.6 mAP,树立了新的基准。
- 效率: YOLOv9 展示了卓越的参数和计算效率。YOLOv9m 在使用不到一半的参数(20.0M vs. 42.1M)和更少的 FLOPs(76.3B vs. 97.3B)的情况下,提供了比 DAMO-YOLOl 更好的精度。这使得 YOLOv9 成为实现高性能的更有效选择。
- 推理速度: 在 T4 GPU 上,推理速度具有竞争力。例如,DAMO-YOLOs(3.45 毫秒)和 YOLOv9s(3.54 毫秒)的速度非常接近,但 YOLOv9s 实现了更高的 mAP(46.8 vs. 46.0)。
结论:您应该选择哪种模型?
DAMO-YOLO 和 YOLOv9 都是具有独特优势的优秀目标检测器。DAMO-YOLO 提供了一种快速且可扩展的解决方案,具有 NAS 等创新技术和高效的 RepGFPN neck,使其成为需要高速 GPU 推理的应用的可靠选择。
然而,对于大多数开发者和研究人员来说,YOLOv9 是推荐的选择,尤其是在 Ultralytics 生态系统中使用时。 它不仅提供最先进的准确性和卓越的效率,而且在可用性和支持方面也提供了显著的优势。Ultralytics 框架消除了复杂性,提供了从训练到部署的简化工作流程。YOLOv9 中 PGI 和 GELAN 的结合提供了更先进和高效的架构,而强大的 Ultralytics 生态系统确保您拥有成功所需的工具、文档和社区支持。
探索其他模型
如果您有兴趣了解 DAMO-YOLO 和 YOLOv9 与其他领先模型的比较,请务必查看 Ultralytics 文档中的其他对比:
- YOLOv8 vs. DAMO-YOLO
- YOLOv10 vs. DAMO-YOLO
- Ultralytics YOLO11 vs. DAMO-YOLO
- RT-DETR vs. DAMO-YOLO
- YOLOv9 vs. YOLOv8
- YOLOv9 vs. EfficientDet