YOLOv7 对比 YOLOv9:全面技术比较
YOLO(You Only Look Once)系列的发展以神经网络架构的持续创新为标志,平衡了推理速度、准确性和计算效率之间的关键权衡。本次比较深入探讨了 YOLOv7(2022 年发布的里程碑版本,以其可训练的“免费包”而闻名)和 YOLOv9(2024 年架构,引入了可编程梯度信息(PGI)以克服深度网络中的信息瓶颈)。
性能与效率分析
从 YOLOv7 到 YOLOv9 的转变代表了参数效率的显著飞跃。尽管 YOLOv7 旨在通过扩展高效层聚合网络 (E-ELAN) 突破实时目标检测的极限,但 YOLOv9 引入了架构上的改变,使其能够以更少的参数和浮点运算 (FLOPs) 实现更高的平均精度 (mAP)。
对于专注于边缘AI部署的开发者而言,这种效率至关重要。如下表所示,YOLOv9e 取得了领先的 55.6% mAP,超越了更大的 YOLOv7x,同时保持了具有竞争力的计算开销。相反,较小的 YOLOv9t 为高度受限的设备提供了轻量级解决方案,这是 YOLOv7 未能以相同粒度明确针对的层级。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| 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 |
YOLOv7: 优化可训练的免费赠品包
YOLOv7于2022年7月发布,对YOLO架构进行了一些结构性改革,重点在于优化训练过程,同时不增加推理成本。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 组织:台湾中央研究院信息科学研究所
- 日期: 2022-07-06
- Arxiv:YOLOv7:可训练的免费包达到新的最先进水平
- GitHub:WongKinYiu/yolov7
架构亮点
YOLOv7 利用 E-ELAN(扩展高效层聚合网络),它控制最短和最长的梯度路径,以使网络能够有效学习更多特征。它还推广了基于拼接模型的模型缩放,允许同时缩放深度和宽度。一个关键创新是计划重参数化卷积,它在推理过程中简化了模型架构以提高速度。
传统状态
虽然YOLOv7仍然是一个有能力的模型,但它缺乏Ultralytics生态系统中新优化方案的原生支持。与新版本相比,开发者可能会发现与现代MLOps工具的集成更具挑战性。
YOLOv9:解决信息瓶颈
YOLOv9 于 2024 年初推出,解决了深度学习中的一个根本问题:即数据通过连续层时信息丢失的问题。
- 作者: Chien-Yao Wang 和 Hong-Yuan Mark Liao
- 组织:台湾中央研究院信息科学研究所
- 日期: 2024-02-21
- Arxiv:YOLOv9:使用 PGI 学习您想学习的内容
- GitHub:WongKinYiu/yolov9
架构亮点
YOLOv9的核心创新是可编程梯度信息 (PGI)。在深度网络中,有用信息在前向传播过程中可能会丢失,导致梯度不可靠。PGI提供了一个辅助监督框架,确保关键信息为损失函数所保留。此外,广义高效层聚合网络 (GELAN)通过允许任意阻塞来扩展ELAN的能力,从而最大化参数和计算资源的利用。
这种架构使得 YOLOv9 在复杂检测任务中表现出色,例如在杂乱环境中检测小目标或进行高分辨率航空影像分析。
为什么Ultralytics模型(YOLO11和YOLOv8)是首选
虽然YOLOv7和YOLOv9是令人印象深刻的学术成就,但Ultralytics YOLO系列——包括YOLOv8和最先进的YOLO11——专为实际、真实世界的应用开发而设计。这些模型优先考虑易用性、生态系统集成和操作效率,使其成为大多数工程团队的卓越选择。
简化的用户体验
Ultralytics 模型封装在一个统一的 Python API 中,抽象化了训练流程的复杂性。在目标检测、实例分割、姿势估计和旋转框检测 (OBB) 任务之间切换只需更改一个参数,这种多功能性是标准 YOLOv7 或 YOLOv9 实现所不具备的。
from ultralytics import YOLO
# Load a model (YOLO11 automatically handles architecture)
model = YOLO("yolo11n.pt") # Load a pretrained model
# Train the model with a single line of code
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Perform inference on an image
results = model("path/to/image.jpg")
维护良好的生态系统
选择 Ultralytics 模型可获得一个强大的生态系统。这包括与 Ultralytics HUB(以及即将推出的 Ultralytics Platform)的无缝集成,用于云训练和数据集管理。此外,活跃的社区和频繁的更新确保了与最新硬件的兼容性,例如导出到 TensorRT 或 OpenVINO 以实现最佳推理速度。
内存与训练效率
Ultralytics 模型以其训练效率而闻名。与基于 Transformer 的模型(如RT-DETR)可能内存占用高且收敛缓慢不同,Ultralytics YOLO 模型利用优化的数据加载器和Mosaic 数据增强,以更低的 CUDA 内存需求实现快速训练。这使得开发者能够在消费级 GPU 上训练最先进的模型。
理想用例
选择合适的模型取决于您项目的具体限制。
YOLOv9 的实际应用
- 研究与基准测试:适用于需要 COCO dataset 上报告的绝对最高准确性的学术研究。
- 高保真监控:在诸如安全警报系统等场景中,1-2% 的精度提升足以证明更高的实现复杂性是合理的。
YOLOv7 的实际应用
- 传统系统:已在 Darknet 或早期 PyTorch 生态系统上构建的项目,需要稳定、已知的功能,而无需重构整个代码库。
Ultralytics YOLO11 的实际应用
- 智慧城市:利用目标跟踪进行交通流量分析,在速度和部署便捷性至关重要的情况下。
- 医疗保健:医学图像分析,通常需要同时进行 segment 和 detect。
- 制造业: 在 NVIDIA Jetson 或 Raspberry Pi 等边缘设备上部署质量控制系统,得益于其到 TFLite 和 ONNX 的直接导出选项。
结论
YOLOv7 和 YOLOv9 都代表了计算机视觉史上的重要里程碑。YOLOv9 凭借其 PGI 架构,在 v7 的基础上进行了引人注目的升级,提供了更好的效率和精度。然而,对于寻求 通用、易用且支持良好解决方案 的开发者而言,Ultralytics YOLO11 仍然是推荐的选择。它在性能、全面文档和多任务能力(detect、segment、classify、姿势估计)之间的平衡,提供了从概念到生产的最快路径。
探索其他模型
要为您的特定计算机视觉任务找到最合适的模型,可以探索这些其他比较:
- YOLOv8 vs. YOLOv9 - 比较广泛采用的 v8 和以研究为重点的 v9。
- YOLOv10 vs. YOLOv9 - 了解端到端 YOLOv10 的性能。
- YOLO11 vs. YOLOv8 - 了解最新 Ultralytics 版本中的改进。
- RT-DETR vs. YOLOv9 - 了解基于 Transformer 的detect与 CNN。