YOLOv9 与 YOLOv7:深入探讨目标检测演进
计算机视觉领域以快速创新为特征,架构突破不断重新定义速度和准确性的界限。YOLOv9和YOLOv7是这一发展历程中的两个重要里程碑。这两种模型都源于王建尧及其同事的研究,代表着“You Only Look Once”系列的不同世代。
尽管YOLOv7在2022年发布时设定了实时对象检测的标准,但YOLOv9于2024年问世,引入了新颖的机制来解决深度网络中的信息丢失问题。本比较将探讨它们的技术规格、架构差异和实际应用,以帮助开发者选择最适合其需求的模型。
性能指标与效率
从YOLOv7到YOLOv9的演变在计算成本和检测性能之间的权衡中最为明显。YOLOv9引入了显著的效率提升,使其能够以更少的参数实现比其前身更高的平均精度均值 (mAP)。
例如,YOLOv9m 模型达到了与 YOLOv7l 相同的 51.4% mAPval,但参数量几乎减半(20.0M 对 36.9M),并且 FLOPs 显著减少。这种效率使得 YOLOv9 对于硬件资源受限的 边缘 AI 应用特别有吸引力。
| 模型 | 尺寸 (像素) | 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 |
YOLOv9:可编程梯度信息
YOLOv9代表着深度neural networks处理数据在层间传输方式的范式转变。该模型于2024年初发布,专门针对“信息瓶颈”问题,即数据在通过深度网络的连续层时会丢失。
作者:王建尧、廖鸿源Chien-Yao Wang, Hong-Yuan Mark Liao
组织:中央研究院信息科学研究所
日期:2024-02-21
Arxiv:2402.13616
GitHub:WongKinYiu/yolov9
文档:Ultralytics YOLOv9
架构创新
YOLOv9的核心创新是引入了可编程梯度信息 (PGI)。PGI提供了一个辅助监督框架,确保梯度可靠地反向传播到初始层,从而保留了否则可能在特征提取过程中丢失的重要输入信息。
与 PGI 相辅相成的是 广义高效层聚合网络 (GELAN)。这种架构允许开发者灵活堆叠各种计算块(如 CSP 或 ResBlocks),从而在不牺牲准确性的前提下,针对特定的硬件限制优化 模型权重。
优势与劣势
- 优势:
- 弱点:
- 训练复杂度:训练期间使用的辅助分支(并在推理时移除)与更简单的架构相比,可能会在训练阶段增加GPU内存使用量。
YOLOv7: 免费赠品包标准
在 YOLOv9 之前,YOLOv7 是 YOLO 家族的卫冕冠军。它引入了架构改进,专注于优化训练过程而不增加推理成本,这一概念被称为“免费赠品包”(bag-of-freebies)。
作者: Chien-Yao Wang、Alexey Bochkovskiy、Hong-Yuan Mark LiaoChien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao
Organization:中央研究院信息科学研究所
日期:2022-07-06
Arxiv:2207.02696
GitHub:WongKinYiu/yolov7
文档:Ultralytics YOLOv7
架构概述
YOLOv7引入了E-ELAN(扩展高效层聚合网络),它通过控制最短和最长梯度路径来提高网络的学习能力。它还利用模型缩放技术,同时修改网络的深度和宽度,确保针对不同目标设备的最佳架构。
优势与劣势
- 优势:
- 经验证的可靠性:多年的广泛社区使用和验证使其成为传统系统的稳定选择。
- 高速:专门针对标准 GPU 硬件上的实时推理进行了优化。
- 弱点:
- 效率较低:需要更多的参数和FLOPs才能达到YOLOv9或YOLO11等新模型通过更轻量级架构所能实现的精度水平。
- 旧工具:缺少现代Ultralytics生态系统中发现的一些原生集成和易用性功能。
理想用例和应用
这两种模型之间的选择通常取决于部署环境的具体限制和任务所需的精度。
何时选择 YOLOv9
YOLOv9非常适合需要最高精度效率比的场景。
- 自动导航:在自动驾驶汽车中,远距离detect小物体至关重要。YOLOv9的信息保留能力有助于识别远距离危险。
- 医学成像:对于肿瘤检测等任务,其中漏检阳性目标至关重要,YOLOv9的高召回率和准确性非常有益。
- 边缘设备: 字段
yolov9t变体提供了一个稳健的解决方案,适用于 物联网设备 例如树莓派,提供良好的准确性,同时计算开销极小。
何时选择 YOLOv7
YOLOv7 对于已针对其架构进行优化的现有管道仍然适用。
Ultralytics 的性能平衡
虽然YOLOv9和YOLOv7功能强大,但寻求速度、准确性和开发者体验终极平衡的开发者应考虑Ultralytics YOLO11。YOLO11将前几代的最佳特性与简化的API集成,在单一框架中支持detect、segment、姿势估计和分类。
Ultralytics 优势
在Ultralytics 生态系统中使用这些模型比使用原始研究存储库具有显著优势。Ultralytics Python API 抽象化了复杂的样板代码,使研究人员和工程师能够专注于数据和结果。
- 易用性:统一的接口允许您只需一行代码即可在 YOLOv8、YOLOv9 和 YOLO11 之间切换。
- 训练效率:Ultralytics 模型针对更快收敛进行了优化,通常需要更少的训练数据即可达到高精度。
- 内存要求: 该框架旨在最大限度地减少 CUDA 内存 使用,从而能够在消费级硬件上训练更大的批次,相比内存密集型 Transformer 模型。
- 多功能性:除了简单的边界框之外,该生态系统还支持实例分割、姿势估计和旋转边界框 (OBB)任务,使其成为应对各种 AI 挑战的综合工具。
实现示例
使用Ultralytics库运行这些模型非常简单。以下代码片段演示了如何加载预训练模型并在图像上运行推理。
from ultralytics import YOLO
# Load a pre-trained YOLOv9 model
model = YOLO("yolov9c.pt")
# Run inference on a local image
results = model.predict("path/to/image.jpg", save=True, conf=0.5)
# Process results
for result in results:
result.show() # Display predictions
对于那些对在自定义数据集上进行训练感兴趣的人,该过程同样简单,利用了框架内置的强大超参数调优和数据增强策略。
# Train the model on a custom dataset
model.train(data="coco8.yaml", epochs=100, imgsz=640)
结论
YOLOv9 和 YOLOv7 都代表了计算机视觉领域的重大成就。YOLOv9 是明确的技术继承者,通过其创新的 PGI 和 GELAN 架构提供了卓越的参数效率和准确性。对于寻求特定 Wang et al. 研究谱系高性能的用户来说,它是推荐的选择。
然而,对于寻求最全面的AI开发体验的开发者而言,Ultralytics YOLO11仍然是首要推荐。凭借其积极的维护、详尽的文档和对多模态任务的广泛支持,YOLO11确保您的项目面向未来且生产就绪。
探索其他模型
为了进一步拓宽您对目标检测领域的理解,可以探索这些相关的模型和比较:
- YOLO11 vs. YOLOv9 - 将最新的 Ultralytics 模型与 YOLOv9 进行比较。
- YOLOv8 vs. YOLOv7 - 了解上一代的性能表现。
- RT-DETR vs. YOLOv9 - 了解基于 Transformer 的detect与 CNN。
- YOLOv10 - 探索实时端到端目标检测模型。
- Ultralytics HUB - 训练和部署模型的最简单方法。