模型比较:YOLOv7 与 YOLOv8 用于目标检测
在快速发展的计算机视觉领域,“You Only Look Once” (YOLO) 模型家族始终为实时物体 detect 设定标准。该系列中的两个重要里程碑是 YOLOv7 和 Ultralytics YOLOv8。尽管这两个模型在发布时都突破了准确性和速度的界限,但它们代表了不同的设计理念和生态系统成熟度。
本指南提供了详细的技术比较,旨在帮助开发人员和研究人员选择适合其特定需求的工具,涵盖从学术研究到生产级部署的各种场景。
性能指标比较
下表直接比较了关键 YOLOv7 和 YOLOv8 模型之间的性能指标。YOLOv8 在推理速度和有利的参数量方面表现出显著优势,尤其是在对边缘 AI 应用至关重要的小型模型变体中。
| 模型 | 尺寸 (像素) | 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 |
| 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 |
YOLOv7: “免费赠品包”演进
YOLOv7于2022年7月发布,主要由YOLOv4和YOLOR的作者开发。它引入了几项架构创新,旨在优化训练过程,同时不增加推理成本,这一概念被称为“可训练的免费包”(trainable bag-of-freebies)。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 组织: 台湾中研院资讯所
- 日期: 2022-07-06
- 链接:Arxiv 论文 | GitHub 仓库
主要架构特性
YOLOv7引入了扩展高效层聚合网络 (E-ELAN)。这种架构通过控制最短和最长梯度路径,使网络能够学习更多样化的特征。此外,它还利用模型缩放技术,同时修改架构的深度和宽度,确保在不同尺寸下实现最佳性能。
尽管YOLOv7在发布时取得了令人印象深刻的基准测试结果,但它主要侧重于目标detect,与较新的框架相比,对其他任务的集成支持较少。
Ultralytics YOLOv8:统一框架和现代架构
Ultralytics于2023年初推出YOLOv8,它代表了YOLO架构的一次重大革新。它不仅被设计为一个模型,更是一个能够无缝执行detect、实例分割、姿势估计和分类的统一框架。
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织: Ultralytics
- 日期: 2023-01-10
- 链接:Ultralytics 文档 | GitHub 仓库
架构创新
YOLOv8 摒弃了先前版本(包括 YOLOv7)中使用的基于锚框的检测,转而采用无锚框检测器机制。这一转变通过消除计算锚框的需要,简化了训练过程,使模型对物体形状和尺寸的变化更具鲁棒性。
主干网络已升级为使用 C2f 模块(带两个卷积的跨阶段部分瓶颈),这些模块取代了 YOLOv5 的 C3 模块。这一改变改善了梯度流,并使模型在保持轻量化的同时捕获更丰富的特征信息。
详细技术比较
基于锚点与无锚点
最显著的区别之一是检测头。YOLOv7 依赖于锚框——模型试图与对象匹配的预定义形状。尽管这种方法有效,但对于自定义数据集,它需要进行超参数调优。
相比之下,YOLOv8 采用无锚点方法,直接预测对象的中心。这减少了边界框预测的数量,加快了非极大值抑制 (NMS),并使模型更容易在多样化数据上进行训练,无需手动配置锚点。
训练效率与内存使用
Ultralytics 模型以其工程效率而闻名。YOLOv8 采用了一种智能数据增强策略,在训练的最后几个 epoch 禁用 Mosaic 数据增强。这项技术稳定了训练损失并提高了精度。
内存效率
Ultralytics YOLOv8 相对于 Transformer 等复杂架构(例如,RT-DETR)的一个显著优势是其较低的 CUDA 内存需求。这使得用户可以在消费级 GPU 上训练更大的批次大小,从而普及了对最先进模型训练的访问。
生态系统与易用性
虽然YOLOv7是一个强大的研究仓库,但Ultralytics YOLOv8提供了完善的产品体验。Ultralytics生态系统提供:
- 精简 API:适用于所有任务的一致 Python 接口。
- 部署:通过导出模式一键导出为 ONNX、TensorRT、CoreML 和 TFLite 等格式。
- 社区支持:活跃的Discord 社区和频繁的更新,确保与最新 PyTorch 版本的兼容性。
代码对比
在比较运行推理所需的代码时,可用性差距显而易见。Ultralytics 优先采用低代码方法,使开发人员能够以最小的开销将视觉 AI 集成到应用程序中。
使用Python运行YOLOv8
from ultralytics import YOLO
# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
# Display the results
for result in results:
result.show()
CLI 实现
YOLOv8 也可以直接从命令行执行,这一特性简化了管道集成和快速测试。
# Detect objects in an image using the nano model
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/zidane.jpg' imgsz=640
理想用例
何时使用 YOLOv7
YOLOv7 对于那些以 2022/2023 年标准进行基准测试或维护专门围绕 Darknet 风格架构构建的遗留系统的研究人员来说,仍然是一个可行的选择。其“免费增强”方法为研究神经网络优化策略的人提供了有趣的见解。
何时使用 YOLOv8
YOLOv8 是绝大多数新项目的推荐选择,包括:
- 实时应用: YOLOv8n (nano) 模型提供惊人的速度(在 CPU 上约 80 毫秒),使其非常适合移动应用和嵌入式系统。
- 多任务管道:需要姿势估计或segment以及 detect 的项目可以使用单一 API。
- 商业部署:强大的导出兼容性确保了在 PyTorch 中训练的模型可以使用 TensorRT 或 OpenVINO 高效部署到生产环境。
结论
虽然YOLOv7通过优化可训练参数对计算机视觉领域做出了重大贡献,但Ultralytics YOLOv8代表了实用AI开发的现代标准。
YOLOv8 在速度和准确性方面的卓越平衡,结合无锚点设计和广泛的 Ultralytics 支持生态系统,使其对初学者更易用,对专家更强大。对于希望构建可扩展、可维护和高性能视觉应用的开发者而言,YOLOv8——及其继任者如 YOLO11——提供了最具吸引力的前进道路。
延伸阅读
对于那些有兴趣探索目标检测领域最新进展的用户,可以考虑查阅这些相关模型:
- YOLO11: Ultralytics 的最新迭代版本,优化了架构,从而实现了更高的效率。
- YOLOv6: 另一种专注于工业应用的无锚框模型。
- YOLOv9: 专注于用于深度网络训练的可编程梯度信息 (PGI)。