跳转至内容

模型比较: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)
YOLOv7l64051.4-6.8436.9104.7
YOLOv7x64053.1-11.5771.3189.9
YOLOv8n64037.380.41.473.28.7
YOLOv8s64044.9128.42.6611.228.6
YOLOv8m64050.2234.75.8625.978.9
YOLOv8l64052.9375.29.0643.7165.2
YOLOv8x64053.9479.114.3768.2257.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,与较新的框架相比,对其他任务的集成支持较少。

了解更多关于YOLOv7的信息。

Ultralytics YOLOv8:统一框架和现代架构

Ultralytics于2023年初推出YOLOv8,它代表了YOLO架构的一次重大革新。它不仅被设计为一个模型,更是一个能够无缝执行detect、实例分割、姿势估计和分类的统一框架。

架构创新

YOLOv8 摒弃了先前版本(包括 YOLOv7)中使用的基于锚框的检测,转而采用无锚框检测器机制。这一转变通过消除计算锚框的需要,简化了训练过程,使模型对物体形状和尺寸的变化更具鲁棒性。

主干网络已升级为使用 C2f 模块(带两个卷积的跨阶段部分瓶颈),这些模块取代了 YOLOv5 的 C3 模块。这一改变改善了梯度流,并使模型在保持轻量化的同时捕获更丰富的特征信息。

了解更多关于 YOLOv8 的信息

详细技术比较

基于锚点与无锚点

最显著的区别之一是检测头。YOLOv7 依赖于锚框——模型试图与对象匹配的预定义形状。尽管这种方法有效,但对于自定义数据集,它需要进行超参数调优。

相比之下,YOLOv8 采用无锚点方法,直接预测对象的中心。这减少了边界框预测的数量,加快了非极大值抑制 (NMS),并使模型更容易在多样化数据上进行训练,无需手动配置锚点。

训练效率与内存使用

Ultralytics 模型以其工程效率而闻名。YOLOv8 采用了一种智能数据增强策略,在训练的最后几个 epoch 禁用 Mosaic 数据增强。这项技术稳定了训练损失并提高了精度。

内存效率

Ultralytics YOLOv8 相对于 Transformer 等复杂架构(例如,RT-DETR)的一个显著优势是其较低的 CUDA 内存需求。这使得用户可以在消费级 GPU 上训练更大的批次大小,从而普及了对最先进模型训练的访问。

生态系统与易用性

虽然YOLOv7是一个强大的研究仓库,但Ultralytics YOLOv8提供了完善的产品体验。Ultralytics生态系统提供:

  1. 精简 API:适用于所有任务的一致 Python 接口。
  2. 部署:通过导出模式一键导出为 ONNX、TensorRT、CoreML 和 TFLite 等格式。
  3. 社区支持:活跃的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)。

评论