YOLOv9 vs. YOLOv7:详细技术对比
在为对象检测选择YOLO模型时,理解不同版本之间的细微差别至关重要。本页提供了YOLOv7和YOLOv9之间的详细技术比较,这两种YOLO系列中的重要模型由台湾中研院信息科学研究所的研究人员开发。我们将探讨它们的架构创新、性能基准以及对各种应用的适用性,以帮助您为您的计算机视觉项目做出明智的决定。
YOLOv9:用于增强学习的可编程梯度信息
YOLOv9于2024年2月推出,通过解决深度神经网络中的信息丢失问题,代表了一个重大进步,信息丢失是可能降低模型性能的常见问题。
作者: 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): 这是YOLOv9的核心创新。它通过辅助可逆分支生成可靠的梯度,从而解决深度网络中的信息瓶颈问题。这确保了关键信息在所有层中得到保留,从而实现更有效的模型训练和更好的最终准确性。
- 广义高效层聚合网络 (GELAN): YOLOv9 采用了一种新的网络架构,优化了参数利用率和计算效率。GELAN 是一种轻量级的、基于梯度路径规划的架构,它建立在 CSPNet 等设计的成功基础上,CSPNet 在 YOLOv5 等模型中发挥了重要作用。
优势
- 增强的准确性: PGI和GELAN的结合实现了卓越的特征提取,并相比YOLOv7获得了更高的平均精度均值 (mAP)分数,这在更大的模型变体中尤为明显。
- 效率提升: YOLOv9 以更少的参数和计算量 (FLOPs) 实现了比 YOLOv7 更好的精度。例如,YOLOv9-C 以比 YOLOv7x 少 66% 的参数和少 46% 的 FLOPs 实现了相似的 mAP。
- 先进水平: 代表了原始 YOLO 作者的最新创新,突破了实时对象检测领域一切可能性的界限。
弱点
- 计算需求: 虽然 YOLOv9 在精度方面表现出色,但其先进的架构,尤其是像 YOLOv9-E 这样更大的变体,仍然可能需要大量的计算资源来进行训练和部署。
- 较新的模型: 作为一个较新的版本,社区支持和随时可用的部署教程可能不如成熟的 YOLOv7 那么广泛。但是,Ultralytics YOLOv9 的实现通过提供精简、文档完善且受支持的环境来缓解了这个问题。
应用案例
YOLOv9 非常适合需要最高精度和效率的应用,在这些应用中,精确检测对象至关重要。
YOLOv7:为速度和效率而优化
YOLOv7于2022年7月发布,是一个具有里程碑意义的模型,旨在显著优化实时推理的速度和准确性之间的权衡。
作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
组织: 台湾中研院资讯科学研究所
日期: 2022-07-06
Arxiv: https://arxiv.org/abs/2207.02696
GitHub: https://github.com/WongKinYiu/yolov7
文档: https://docs.ultralytics.com/models/yolov7/
架构和主要特性
YOLOv7 专注于优化架构和训练过程,以在不增加推理成本的情况下使模型更快、更准确。
- 扩展高效层聚合网络 (E-ELAN): 这种架构块通过允许网络学习更多不同的特征来增强网络的学习能力,从而在不中断原始梯度路径的情况下提高性能。
- 模型缩放: YOLOv7 引入了用于模型深度和宽度的复合缩放方法,从而可以有效地针对不同的模型尺寸和计算预算对其进行优化。
- 可训练的免费赠品(Trainable Bag-of-Freebies): 这个概念包含了训练期间的各种优化技术,例如高级数据增强和标签分配策略。这些技术提高了准确性,而不会在推理过程中增加任何计算开销。
优势
- 高推理速度: YOLOv7 针对速度进行了高度优化,并且仍然是目前最快的对象检测器之一,使其非常适合在各种硬件上进行实时应用。
- 强大的性能: 它实现了具有竞争力的 mAP 分数,使其成为许多标准目标检测任务的可靠而强大的选择。
- 成熟模型: YOLOv7 已经推出较长时间,因此受益于更广泛的应用、丰富的社区资源以及在不同行业中众多经过验证的部署示例。
弱点
- 较低的峰值精度: 虽然速度很快,但在具有挑战性对象的复杂场景中,与更新的YOLOv9相比,它可能表现出略低的峰值精度。
- 基于Anchor: 它依赖于预定义的anchor框,在检测具有不寻常宽高比的对象时,有时可能不如无anchor方法灵活。
应用案例
YOLOv7 非常适合推理速度是最关键因素的应用。
性能与效率:正面比较
YOLOv9 和 YOLOv7 之间的主要区别在于精度、模型大小和计算成本之间的权衡。YOLOv9 突破了效率前沿,以更少的参数和 FLOPs 实现了更高的精度。例如,YOLOv9-M 实现了与 YOLOv7l 相同的 51.4% mAP,但参数减少了 46%,FLOPs 减少了 27%。这种趋势一直持续到 YOLOv9-E,它以 55.6% mAP 创造了新的技术水平,超过了所有 YOLOv7 变体。
这种效率的提高意味着,对于给定的精度目标,YOLOv9 提供了一个更小、更快、更节能的模型。
模型 | 尺寸 (像素) |
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 |
YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
结论:哪种模型适合您?
YOLOv7 和 YOLOv9 都是强大的模型,但它们满足的需求略有不同。
-
如果您的应用需要尽可能高的精度和效率,请选择 YOLOv9。其架构进步使其在复杂场景和资源受限的部署中表现出色,在这些场景中,您需要从较小的模型中获得最佳性能。
-
如果您需要一个经过实战检验的、极快的模型用于标准实时应用,并且希望使用具有大量社区资源的更成熟的架构,请选择 YOLOv7。
对于正在寻找最佳整体体验的开发人员和研究人员,我们建议在 Ultralytics 生态系统中使用这些模型。像 Ultralytics YOLOv8 和 YOLO11 这样的较新模型不仅提供有竞争力的性能,而且还具有显著的优势:
- 易用性: 凭借简单的 Python API 和丰富的文档,提供精简的用户体验。
- 维护良好的生态系统: 积极的开发、强大的社区支持以及与 Ultralytics HUB 等工具的集成,可实现无代码训练和部署。
- 多功能性: 支持检测之外的多种任务,包括实例分割、姿势估计和分类,所有这些都在一个框架内完成。
- 训练效率: 高效的训练过程,具有随时可用的预训练权重,并且与许多其他模型类型相比,内存需求更低。
探索其他模型
如需进一步比较,请考虑探索Ultralytics文档中提供的其他最先进的模型: