YOLOv7 与 YOLOv10#
过去几年,计算机视觉领域取得了显著进展,以 YOLO(你只需看一次)模型家族为代表的技术引领着实时目标检测的发展。为计算机视觉项目选择合适的架构,需要深入了解各种可选方案。在这份全面的技术对比中,我们将探讨两个里程碑式架构的主要区别:YOLOv7 和 YOLOv10。
模型简介#
这两种模型都是人工智能发展史上的重要里程碑,但它们采用了截然不同的方法来解决目标检测难题。
YOLOv7:免费赠品组合的先驱#
YOLOv7 于 2022 年 7 月 6 日发布,由来自中央研究院资讯科学研究所的研究人员 Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao 开发。YOLOv7 改变了神经网络的优化方式。原始研究详见其学术论文和官方 GitHub 仓库,重点介绍了架构重参数化和可训练的“免费技巧包”。
YOLOv7 利用扩展高效层聚合网络(E-ELAN),引导网络学习多样化特征,同时不破坏原始梯度路径。因此,对于学术研究基准测试和严重依赖标准高端 GPU 的系统来说,它是一个可靠的选择。
YOLOv10:实时端到端检测#
YOLOv10 由 Ao Wang 及其在清华大学的团队开发,于 2024 年 5 月 23 日发布。正如其 arxiv 论文和清华大学 GitHub 仓库所述,该模型消除了目标检测中长期存在的瓶颈:非极大值抑制(NMS)。
YOLOv10 引入了用于无 NMS 训练的一致双重分配机制,从根本上改变了后处理流水线。YOLOv10 采用全面兼顾效率与准确度的模型设计策略,减少了计算冗余。由此形成的架构专为对延迟要求极低的边缘设备打造。
性能与指标对比#
分析模型性能时,必须评估精度、速度和计算开销之间的权衡。下表展示了这些模型不同尺寸版本之间的性能对比。
| 模型 | 尺寸 (像素) | mAP验证集 50-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 的 mAPval达到 53.1%,表现非常出色,但需要 71.3M 个参数和 189.9B FLOPs。相比之下,YOLOv10l 在超越这一准确度(mAP 为 53.2%)的同时,所需参数约为其三分之一(24.4M),FLOPs 也显著更少(120.3B)。此外,高度优化的 YOLOv10n 推理速度惊人,仅需 1.84ms,非常适合实时视频分析和移动应用。
实际应用场景#
这些模型的架构差异决定了各自最适合的应用场景。
何时使用 YOLOv7#
凭借丰富的特征表示能力,YOLOv7 在高度复杂的环境中表现出色。在人口密集的城市地区监测交通流量、分析卫星图像或在重型制造自动化中识别缺陷等应用,都能受益于其稳健的结构重参数化。它也深受已深度集成特定 PyTorch 1.12 流水线的旧版环境青睐。
何时使用 YOLOv10#
YOLOv10 的无 NMS 轻量设计在受限环境中表现出色。我们强烈建议将它用于 NVIDIA Jetson Nano 或 Raspberry Pi 等边缘计算设备。它的低延迟性能非常适合体育分析、自主无人机导航和传送带上的高速机器人分拣等快速响应应用。
Ultralytics 生态系统的优势#
虽然这两种模型都拥有深厚的学术基础,但只有在统一的 Ultralytics Platform 中使用,才能充分发挥 YOLOv10 的潜力。从头开始开发计算机视觉模型一向难度很高,而 Ultralytics 生态系统能为机器学习工程师提供无与伦比的体验。
- 易用性:Ultralytics Python API 提供统一的接口。你只需几行代码就能训练、验证和导出模型,避免典型学术仓库中复杂的依赖难题。
- 维护良好的生态系统:Ultralytics 确保底层代码持续开发。用户可以无缝集成常见 ML 工具,例如使用 Weights & Biases 记录日志,或使用 Gradio 快速创建 Web 演示。
- 内存需求:基于 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 加速的设备,此时 YOLO26 的 CPU 推理速度最高提升 43%,可带来显著优势。
- 小目标检测:适用于无人机航拍影像等具有挑战性的场景,或 IoT 传感器分析等需要 ProgLoss 和 STAL 大幅提升微小目标准确率的场景。
未来展望:认识 YOLO26#
YOLOv7 和 YOLOv10 都是令人瞩目的里程碑,但 AI 前沿始终在不断发展。Ultralytics YOLO26 于 2026 年 1 月发布,已成为适用于各种边缘和云端部署场景的全新标准,在效率和准确度方面无出其右。
如果你今天要开始一个新的计算机视觉项目,YOLO26 是推荐的架构。它在前代模型的基础上融入了多项突破性创新:
- 端到端无 NMS 设计:受 YOLOv10 启发,YOLO26 的可选一对一检测头(
nms=False)跳过 NMS 后处理,为确定性实时机器人应用带来超低延迟推理。 - CPU 推理速度最高提升 43%:通过有针对性地移除分布焦点损失(DFL)模块,YOLO26 大幅加快了在非 GPU 边缘计算硬件上的运行速度,成为 IoT 设备的强大解决方案。
- MuSGD 优化器:YOLO26 受近期大型语言模型训练创新启发,结合 SGD 和 Muon,稳定训练过程并确保更快收敛。
- ProgLoss + STAL:这些先进的损失函数显著提升了小目标识别能力,弥补了早期 YOLO 世代长期存在的弱点。
- 多功能性无与伦比:YOLO26 具备原生、针对特定任务的优化,例如用于姿态跟踪的残差对数似然估计(RLE),以及用于精确检测航拍图像中 OBB 的专用角度损失。
对于追求速度、准确度和部署简便性之间最佳平衡的工程师来说,从旧模型迁移到 YOLO26 能立即带来可衡量的竞争优势。