模型比较:用于物体检测的YOLOv7 与YOLOv8 比较
在快速发展的计算机视觉领域,"只看一次"YOLO)模型系列一直是实时物体检测的标准。YOLOv7 和Ultralytics YOLOv8 是该系列中的两个重要里程碑。虽然这两个模型在发布时都突破了精度和速度的极限,但它们代表了不同的设计理念和成熟的生态系统。
本指南提供了详细的技术比较,帮助开发人员和研究人员根据自己的具体需求(从学术研究到生产级部署)选择合适的工具。
性能指标比较
下表列出了主要YOLOv7 和YOLOv8 模型的性能指标的直接比较。YOLOv8 在推理速度和参数数量方面具有显著优势,尤其是在对边缘人工智能应用至关重要的较小模型变体方面。
| 模型 | 尺寸 (像素) | 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 的作者开发。它引入了多项架构创新,旨在优化训练过程,同时不增加推理成本,这一概念被称为 "可训练的免费包"。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 组织: 台湾中研院资讯所
- 日期: 2022-07-06
- 链接:Arxiv 论文|GitHub 存储库
主要建筑特点
YOLOv7 引入了扩展高效层聚合网络(E-ELAN)。该架构控制最短和最长梯度路径,使网络能够学习更多不同的特征。此外,它还采用了模型缩放技术,可同时修改架构的深度和宽度,确保在不同规模的网络中实现最佳性能。
尽管YOLOv7 在发布时的基准测试结果令人印象深刻,但它主要侧重于对象检测,与较新的框架相比,对其他任务的集成支持较少。
Ultralytics YOLOv8:统一框架和现代架构
YOLOv8 由Ultralytics 于 2023 年初推出,是对YOLO 架构的一次重大革新。它不仅仅是一个模型,而是一个能够无缝执行检测、实例分割、姿势估计 和分类的统一框架。
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织: Ultralytics
- 日期: 2023-01-10
- 链接:Ultralytics 文档 | GitHub 存储库
建筑创新
YOLOv8 从以前版本(包括YOLOv7)使用的基于锚点的检测机制转变为无锚点检测机制。这一转变无需计算锚点框,从而简化了训练过程,使模型对物体形状和大小的变化更加稳健。
对主干网进行了升级,使用 C2f 模块(带两个卷积的跨阶段部分瓶颈)取代了 YOLOv5 的 C3 模块。 YOLOv5.这一改变改善了梯度流,使模型在捕捉更丰富特征信息的同时保持轻量级。
详细技术比较
有锚与无锚
最显著的区别之一是检测头。YOLOv7 依靠的是锚点框--预先定义的形状,模型会尝试将其与物体匹配。这种方法虽然有效,但需要针对自定义数据集进行超参数调整。
相比之下,YOLOv8 采用无锚方法,直接预测物体的中心。这减少了方框预测的数量,加快了非最大抑制NMS)的速度,并使模型更容易在各种数据上进行训练,而无需手动配置锚点。
训练效率和内存使用情况
Ultralytics 模型以其工程效率而著称。YOLOv8 采用了一种智能数据增强策略,在训练的最后阶段禁用 Mosaic 增强。这项技术可稳定训练损失并提高精确度。
内存效率
Ultralytics YOLOv8 与变压器等复杂架构(如:Ultralytics -DETR)相比,具有明显优势、 RT-DETRCUDA 复杂架构相比,Ultralytics YOLOv8 的显著优势在于其较低的CUDA 内存需求。这使得用户可以在消费级 GPU 上进行更大规模的批量训练,从而实现最先进模型训练的平民化。
生态系统和易用性
YOLOv7 是一个功能强大的研究资料库,而Ultralytics YOLOv8 则提供了完善的产品体验。Ultralytics 生态系统提供以下功能
- 精简的应用程序接口:为所有任务提供一致的Python 界面。
- 部署:通过导出模式,一键导出为ONNX、TensorRT、CoreML 和TFLite 等格式。
- 社区支持:活跃的Discord 社区和频繁的更新,确保与最新PyTorch 版本兼容。
代码比较
在比较运行推理所需的代码时,可用性方面的差距显而易见。Ultralytics 优先采用低代码方法,允许开发人员以最小的开销将视觉人工智能集成到应用程序中。
使用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
对于根据 2022/2023 年标准进行基准测试或维护专门围绕暗网式架构构建的传统系统的研究人员来说,YOLOv7 仍然是一个可行的选择。其 "无用包 "方法为研究神经网络优化策略的人员提供了有趣的见解。
何时使用YOLOv8
YOLOv8 是绝大多数新项目的推荐选择,包括
- 实时应用: YOLOv8n (nano) 型号速度惊人(CPU 约 80 毫秒),是移动应用程序和嵌入式系统的理想之选。
- 多任务管道:需要在检测的同时进行姿势估计 估计或分割的项目可以使用单一的应用程序接口。
- 商业部署:强大的导出兼容性确保在PyTorch 中训练的模型可以使用TensorRT 或OpenVINO 高效地部署到生产环境中。
结论
YOLOv7 通过优化可训练参数,为计算机视觉领域做出了重大贡献、 Ultralytics YOLOv8代表了实用人工智能开发的现代标准。
YOLOv8 在速度和准确性之间取得了卓越的平衡,再加上无锚设计和广泛的Ultralytics 支持生态系统,使初学者更容易上手,而专家则更加强大。对于希望构建可扩展、可维护和高性能视觉应用程序的开发人员来说,YOLOv8后续产品,如 YOLO11-等后继产品提供了最有吸引力的前进道路。
延伸阅读
如果您有兴趣了解物体检测方面的最新进展,可以考虑查看这些相关模型: