YOLOv8 与 YOLOv7#
计算机视觉领域不断发展,新的架构持续拓展实时目标检测的可能性。本指南对比两款有影响力的模型:Ultralytics YOLOv8 和 YOLOv7。这两个模型都对开发者社区和学术研究产生了重大影响,并针对复杂视觉任务提供了各自独特的解决方案。
对于希望优化部署流水线的机器学习工程师来说,了解这两个模型在结构和方法上的差异至关重要。YOLOv7 引入了针对原始吞吐量优化的“免费优化组合”方法,而 Ultralytics YOLOv8 则专注于打造全面易用的生态系统,在高准确率、低内存占用和多任务灵活性之间取得平衡。
Ultralytics YOLOv8:多功能生态系统标准#
YOLOv8 于 2023 年初由 Ultralytics 发布,与前代模型相比,它在架构上实现了重大转变。它从一开始就不仅仅是一款实时目标检测器,而是一个统一框架,能够开箱即用地处理多种视觉任务。
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织: Ultralytics
- 日期: 2023-01-10
- GitHub: ultralytics/ultralytics
- 文档: YOLOv8 文档
架构创新#
YOLOv8 引入了无锚框检测头。它无需根据自定义数据集的具体分布手动配置锚框,从而简化了训练流程,使模型更加稳健,也更容易泛化到不同环境。
此外,该架构采用了C2f 模块(双卷积跨阶段部分瓶颈),这项结构升级改善了梯度流,使神经网络能够以较小的计算成本学习更丰富的特征表示。因此,使用 PyTorch 等标准深度学习框架进行推理时,模型也能保持高效。
Ultralytics YOLO 模型针对高效训练而设计。与基于 Transformer 的架构或更大型的 CNN 相比,它们在训练期间通常需要少得多的 CUDA 内存。这样你就能在消费级硬件上使用更大的批次大小,加快开发周期。
YOLOv7:“免费优化项”方法#
YOLOv7 于 2022 年年中推出,很快就在学术界成为热门基准模型。它着重优化架构重参数化和梯度路径,以突破高端 GPU 上实时目标检测的性能上限。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 机构:台湾中央研究院信息科学研究所
- 日期: 2022-07-06
- arXiv: 2207.02696
- GitHub: WongKinYiu/yolov7
架构创新#
YOLOv7 采用扩展高效层聚合网络 (E-ELAN),让模型能够持续学习更多样的特征。它采用基于锚框的设计,并引入了可训练的“免费优化组合”——一系列无需增加推理成本即可提升准确率的优化方法。
虽然 YOLOv7 在 MS COCO 数据集等标准学术基准测试中表现出色,但其架构针对服务器级加速器进行了深度优化。与更现代、更精简的框架相比,将这些模型导出并部署到边缘设备有时需要更多手动配置。
详细性能对比#
评估这些模型时,速度、准确率和模型大小之间的权衡是首要考量。下表列出了两种模型的指标。
| 模型 | 尺寸 (像素) | mAPval50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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.1 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
从数据中可以看出,YOLOv8x 的准确率最高(53.9 mAP),而 nano 变体 (YOLOv8n) 则推理速度快、占用资源少。多种尺寸的选择让 YOLOv8 更能适应受限的硬件环境。
Ultralytics 的优势:易用性与生态系统#
YOLOv7 的原始检测指标表现强劲,但 Ultralytics YOLOv8 提供了更好的开发者体验、更深入的生态系统集成和多任务支持。
灵活性#
YOLOv7 主要是一款检测模型,也提供用于其他任务的实验性分支。相比之下,YOLOv8 原生支持目标检测、实例分割、图像分类、姿态估计和有向边界框(OBB)。这种统一方案意味着团队只需学习一个 API,就能将其用于完全不同的项目需求。
精简的部署与集成#
将模型导出以用于生产环境往往会成为瓶颈。Ultralytics 软件包支持开发者只用一行 Python 代码,就能将模型导出为 ONNX、TensorRT 和 CoreML 等格式。这样可以避免导出复杂的基于锚框计算图时有时会遇到的算子支持问题。
YOLOv8 还可与 MLOps 工具集成。无论你是使用 Weights & Biases 跟踪实验,还是在 Hugging Face Spaces 上测试部署,繁重的工作都由 Ultralytics 生态系统处理。
代码示例:训练并导出 YOLOv8#
以下代码展示了 Ultralytics Python API 如何简单易用。不到十行代码,你就能从初始化模型转到训练,并导出模型以部署到边缘设备。
from ultralytics import YOLO
# 加载一个经过预训练的 YOLOv8 nano 模型,以实现快速推理
model = YOLO("yolov8n.pt")
# 使用 COCO8 数据集训练模型
# API 会自动处理数据加载、增强和日志记录
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 对测试图像运行推理
predictions = model("https://ultralytics.com/images/bus.jpg")
# 将训练好的模型导出为 ONNX 格式,以便部署
model.export(format="onnx")使用 model.export() 函数可以立即接入高性能推理引擎,让你将 YOLOv8 集成到移动应用、嵌入式系统或高吞吐量云服务器中。
实际应用场景#
两种模型的架构差异决定了它们各自理想的部署场景。
适合选择 YOLOv8 的场景:
- 边缘 AI 和 IoT 设备:速度快的 Nano 和 Small 模型让 YOLOv8 很适合计算能力有限的硬件,例如智能摄像头或无人机。
- 多任务项目: 如果你的流程需要跟踪人体关节(姿态估计),同时绘制障碍物地图(分割),YOLOv8 可以原生处理这些任务。
- 从快速原型开发到生产部署:丰富的 Ultralytics 文档和简洁的 Python API,能帮助团队更快地将产品推向市场。
可以考虑 YOLOv7 的场景:
- 学术基准测试: 研究重参数化技术影响的研究人员常将 YOLOv7 用作标准基准模型,这也反映在它在 Hugging Face Papers 上的高人气。
- 遗留服务器流程: 如果现有的高算力流程已经针对 YOLOv7 特定的锚框输出进行了严格优化,那么短期内继续使用可能更实际。
展望未来:新一代模型#
YOLOv8 仍然用途广泛,但 AI 领域发展迅速。对于刚启动新项目的团队,Ultralytics 建议探索产品线中的最新模型。
最新一代模型 YOLO26 是当前推荐的 Ultralytics 模型。它提供端到端无 NMS 设计选项 (nms=False),跳过非极大值抑制 (NMS) 后处理,让部署更简单、更快速。移除分布焦点损失 (DFL) 并引入受 LLM 启发的MuSGD 优化器后,YOLO26 可实现更稳定的训练,CPU 推理速度最高提升 43%(YOLO26n 对比 YOLO11n)。ProgLoss + STAL(渐进式损失和小目标感知标签分配)可提升小目标检测能力,使其成为现代边缘计算和航空影像场景的理想选择。
对于从旧系统迁移的用户,YOLO11 和经典的 YOLOv5 在统一的 Ultralytics 生态系统中也仍受到全面支持,因此你可以根据硬件限制选择合适的模型。
评论
提出问题、分享结果,或帮助其他人。