YOLOv7 与 YOLOv10#
过去几年,计算机视觉领域发展迅速,YOLO(只看一次)系列模型引领了实时目标检测的发展。为计算机视觉项目选择合适的架构,需要清楚了解现有方案。本文从技术角度比较两个里程碑式架构的关键差异:YOLOv7 和 YOLOv10。
模型简介#
这两种模型都是目标检测领域的重要里程碑,但它们解决目标检测挑战的方式存在根本差异。
YOLOv7:免费赠品组合的先驱#
YOLOv7 于 2022 年 7 月 6 日由来自中央研究院资讯科学研究所的研究人员 Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao 发布,为优化实时检测器带来了新思路。原始研究在其学术论文中进行了详细介绍,并托管在其官方 GitHub 仓库中,重点研究架构重参数化和可训练的“免费增益包”。
YOLOv7 利用扩展高效层聚合网络(E-ELAN),引导网络学习多样化特征,同时不破坏原始梯度路径。因此,对于学术研究基准测试和严重依赖标准高端 GPU 的系统来说,它是一个可靠的选择。
YOLOv10:实时端到端检测#
YOLOv10 由 Ao Wang 及其同事在清华大学开发,于 2024 年 5 月 23 日发布。其arXiv 论文和清华 GitHub 仓库详细介绍了该模型如何消除目标检测中长期存在的瓶颈:非极大值抑制(NMS)。
YOLOv10 引入了用于无 NMS 训练的一致双重分配机制,改变了后处理流水线。其以效率和准确率为导向的整体模型设计减少了计算冗余,因此非常适合需要低延迟的边缘设备。
性能与指标对比#
分析模型性能时,评估准确率、速度和计算开销之间的权衡非常重要。下表展示了这些模型不同尺寸版本之间的性能对比。
| 模型 | 尺寸 (像素) | mAPval50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| YOLOv10n | 640 | 38.5 | - | 1.84 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.3 | - | 2.49 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.1 | - | 4.74 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.5 | - | 5.74 | 19.1 | 92.0 |
| YOLOv10l | 640 | 53.2 | - | 7.28 | 24.4 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 10.70 | 29.5 | 160.4 |
权衡分析#
上述指标揭示了明显的代际差距。YOLOv7x 的 mAPval50-95 达到 53.1%,表现出色,但需要 71.3M 个参数和 189.9B FLOPs。相比之下,YOLOv10l 的准确率更高(53.2% mAP),所需参数约为其三分之一(24.4M),FLOPs 也显著更低(120.3B)。此外,YOLOv10n 在搭载 TensorRT 的 T4 GPU 上运行仅需 1.84 ms,非常适合实时视频分析和移动应用。
实际应用场景#
这些模型的架构差异决定了各自最适合的应用场景。
何时使用 YOLOv7#
YOLOv7 丰富的特征表示适用于 GPU 硬件上的复杂场景。在密集城区监测交通流量、分析卫星图像或识别重型制造自动化中的缺陷等用例,都能受益于其重参数化架构。它在围绕特定 PyTorch 1.x 流程构建的旧版环境中也仍然常见。
何时使用 YOLOv10#
YOLOv10 的无 NMS 轻量级设计适用于资源受限的环境,包括 NVIDIA Jetson 模块或 Raspberry Pi 等边缘计算设备。其低延迟性能非常适合体育分析、自主无人机导航以及传送带上的高速机器人分拣等快速响应应用。
Ultralytics 生态系统的优势#
虽然这两个模型都拥有深厚的学术背景,但在 Ultralytics 生态系统和 Ultralytics Platform 中训练和部署 YOLOv10 最为便捷。从头开发计算机视觉模型并不容易,而 Ultralytics 生态系统简化了机器学习工程师的工作流程。
- 易用性: Ultralytics Python API 提供统一的接口。你只需几行代码即可训练、验证和导出模型,避免学术代码库中常见的依赖冲突。
- 维护良好的生态系统: Ultralytics 代码库持续积极开发,用户可以集成常用的机器学习工具,例如用于日志记录的 Weights & Biases,以及用于快速创建 Web 演示的 Gradio。
- 内存需求: 基于 Transformer 的目标检测器在训练期间通常会占用大量 CUDA 内存。相比之下,Ultralytics YOLO 模型所需内存少得多,因此在消费级硬件上可以使用大得多的批量大小。
- 多功能性: Ultralytics 流程不局限于标准边界框。它支持实例分割、图像分类、姿态估计和有向边界框,适用于 YOLO11 和 YOLOv8 等受支持的模型系列。
精简的训练示例#
使用 Ultralytics 运行训练流程十分简单。无论你采用 YOLOv10 无 NMS 的速度优势,还是使用其他受支持的模型,语法都保持一致(请注意,Ultralytics 包不支持 YOLOv7 训练):
from ultralytics import YOLO
# 加载首选模型(例如 YOLOv10 Nano)
model = YOLO("yolov10n.pt")
# 使用 COCO8 数据集训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 对示例图像运行推理预测
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# 导出为 ONNX 等适合边缘设备的格式
model.export(format="onnx")用例与建议#
选择 YOLOv7 还是 YOLOv10,取决于你的具体项目需求、部署限制和生态系统偏好。
何时选择 YOLOv7#
YOLOv7 适用于以下情况:
- 学术基准测试:复现 2022 年的最先进成果,或研究 E-ELAN 和可训练的免费优势集合技术所带来的影响。
- 重参数化研究:研究计划中的重参数化卷积和复合模型缩放策略。
- 现有自定义流水线:项目已围绕 YOLOv7 特定架构构建了高度定制的流水线,且难以重构。
何时选择 YOLOv10#
以下场景推荐使用 YOLOv10:
- 无 NMS 的实时检测:适用于需要从端到端检测中获益、无需使用非极大值抑制并能降低部署复杂度的应用。
- 均衡权衡速度与准确率:适用于需要在不同模型规模下兼顾推理速度和检测准确率的项目。
- 延迟稳定的应用:适用于推理时间可预测性至关重要的部署场景,例如机器人或自主系统。
何时选择 Ultralytics (YOLO26)#
对于大多数新项目,Ultralytics YOLO26在性能与开发体验之间实现了最佳平衡:
- 无 NMS 的边缘部署:适用于要求推理延迟稳定且较低,同时不希望增加非极大值抑制后处理复杂度的应用。
- 仅使用 CPU 的环境:没有专用 GPU 加速的设备。在这类设备上,YOLO26n 的 CPU 运行速度最高可比 YOLO11n 快 43%。
- 小目标检测:具有挑战性的场景,例如无人机航拍图像或 IoT 传感器分析。在这些场景中,ProgLoss 和 STAL 可以提升微小目标的检测精度。
未来展望:认识 YOLO26#
YOLOv7 和 YOLOv10 虽然是令人瞩目的里程碑,但 AI 前沿始终在不断发展。Ultralytics YOLO26 于 2026 年 1 月发布,是适用于边缘端和云端部署、兼顾效率与准确率的推荐模型。
如果你今天开始一个新的计算机视觉项目,推荐使用 YOLO26 架构。它在前代模型的基础上引入了多项创新:
- 端到端无 NMS 设计: YOLO26 的可选一对一检测头(
nms=False)借鉴了 YOLOv10 的设计思路,可跳过 NMS 后处理,从而为实时机器人应用提供更低且更稳定的延迟。 - CPU 推理速度最高提升 43%: 移除 Distribution Focal Loss(DFL)模块后,YOLO26 在非 GPU 边缘硬件上的执行速度更快;YOLO26n 在 CPU 上的运行速度最高比 YOLO11n 快 43%,非常适合 IoT 设备。
- MuSGD 优化器: YOLO26 借鉴了近期大语言模型训练创新,融合 SGD 和 Muon,带来更稳定的训练和更快的收敛速度。
- ProgLoss + STAL: 渐进式损失和小目标感知标签分配提升了小目标识别能力,弥补了旧版 YOLO 系列长期存在的短板。
- 多任务多功能性: YOLO26 涵盖检测、实例分割、语义分割、深度估计、分类、姿态估计和 OBB,并针对具体任务进行了优化,例如用于姿态估计的残差对数似然估计(RLE),以及用于航空图像中精确 OBB 检测的专用角度损失。
对于追求速度、准确率和部署简便性之间最佳平衡的工程师,YOLO26 是从旧版模型自然升级的选择。