YOLOv7 与 DAMO-YOLO#
研究人员和工程师不断寻求速度与准确率的最佳平衡,推动实时目标检测持续演进。本文从技术角度比较 2022 年问世的两种重要架构:YOLOv7 和 DAMO-YOLO。这两种模型都为计算机视觉领域引入了新理念,分别应对模型训练、架构设计和部署方面的不同挑战。
模型背景与技术细节#
这两种模型均由领先的研究团队开发,并引入了提升实时目标检测能力的新方法。
YOLOv7 详情#
YOLOv7 作为 YOLO 系列的延续而开发,引入了可训练的“免费增益组合”(bag-of-freebies),在不增加推理成本的情况下显著提升准确率。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 机构: 台湾中央研究院资讯科学研究所
- 日期: 2022-07-06
- arXiv: https://arxiv.org/abs/2207.02696
- GitHub: https://github.com/WongKinYiu/yolov7
- 文档: https://docs.ultralytics.com/models/yolov7
DAMO-YOLO 详情#
DAMO-YOLO 由阿里巴巴集团的研究人员开发,重点采用神经架构搜索(NAS)和知识蒸馏,为各种硬件构建高效模型。
- 作者: Xianzhe Xu、Yiqi Jiang、Weihua Chen、Yilun Huang、Yuan Zhang 和 Xiuyu Sun
- 组织: 阿里巴巴集团
- 日期: 2022-11-23
- arXiv: https://arxiv.org/abs/2211.15444v2
- GitHub: https://github.com/tinyvision/DAMO-YOLO
架构创新#
YOLOv7:梯度路径分析与重参数化#
YOLOv7 非常重视扩展高效层聚合网络(E-ELAN)。作者通过分析网络的梯度路径设计 E-ELAN,确保网络能够持续学习,同时不破坏原有梯度路径。此外,YOLOv7 在推理时使用模型重参数化,通过融合层来减少 FLOPs 并加快执行速度。因此,它非常适合在现代 GPU 上进行实时推理。
DAMO-YOLO:神经架构搜索与 RepGFPN#
DAMO-YOLO 采用了不同的路线,在延迟约束下大量利用神经架构搜索(NAS)。它使用名为 MAE-NAS 的框架,为移动设备或特定边缘加速器等硬件寻找最佳主干网络。在颈部结构中,它采用高效的 RepGFPN(重参数化广义特征金字塔网络),并使用 ZeroHead 设计来最大限度地降低预测头的计算负担。
YOLOv7 依靠架构本身的强大优化,而 DAMO-YOLO 则高度依赖复杂的多阶段知识蒸馏过程。它需要先训练大型教师模型,再将知识蒸馏到较小的学生模型中,因此训练阶段的计算成本可能很高。
性能与指标对比#
比较这些模型时,务必关注 mAP(平均精度均值)、推理速度和模型复杂度。
| 模型 | 尺寸 (像素) | 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 |
| DAMO-YOLOt | 640 | 42.0 | - | 2.32 | 8.5 | 18.1 |
| DAMO-YOLOs | 640 | 46.0 | - | 3.45 | 16.3 | 37.8 |
| DAMO-YOLOm | 640 | 49.2 | - | 5.09 | 28.2 | 61.8 |
| DAMO-YOLOl | 640 | 50.8 | - | 7.18 | 42.1 | 97.3 |
上表表明,YOLOv7 能够扩展到高准确率领域(YOLOv7x),而 DAMO-YOLO 则针对资源受限环境提供了高度优化的小型模型。
训练效率与内存需求#
两种架构的一个主要区别在于训练方法。由于 DAMO-YOLO 依赖蒸馏,从头训练新模型或在自定义计算机视觉数据集上微调模型,通常需要更多 VRAM 和 GPU 计算时间。
相比之下,Ultralytics 生态系统原生支持的模型(例如 YOLOv8 及后续版本)针对较低的训练内存占用进行了优化。开发者可以在消费级硬件上使用更大的批次,而不会遇到内存溢出错误,从而简化实验跟踪和迭代流程。
Ultralytics 优势#
YOLOv7 和 DAMO-YOLO 都各有优势,但在 Ultralytics 生态系统中部署模型能为开发者带来更简单的使用体验。
- 易用性:Ultralytics Python 包提供统一而简单的 API。只需几行代码,你就能快速切换模型架构、启动训练循环或运行推理。
- 维护完善的生态系统:Ultralytics 频繁更新,确保与最新版本的 PyTorch 和 CUDA 驱动原生兼容。它还简化了模型导出过程,可将模型导出为 ONNX、TensorRT 和 OpenVINO 等格式。
- 多功能性:与仅用于目标检测的 DAMO-YOLO 不同,Ultralytics 生态系统原生支持多种任务。Ultralytics 系列模型可执行标准边界框检测、实例分割、图像分类、姿态估计和有向边界框(OBB)任务,而 YOLO26 还新增了语义分割和深度估计。
代码示例:快速上手#
以下是使用 Ultralytics 模型进行加载、训练和推理的方法:
from ultralytics import YOLO
# 加载预训练的 YOLO26 模型(Ultralytics 不支持原生 YOLOv7 权重)
model = YOLO("yolo26n.pt")
# 使用自动超参数处理功能,在 COCO8 数据集上训练模型
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)
# 对图像进行推理
predictions = model("https://ultralytics.com/images/bus.jpg")
# 导出为 ONNX 格式以供部署
model.export(format="onnx")使用 Ultralytics,只需在导出命令中提供一个参数,就能将训练好的权重导出为多种硬件加速格式(如 TensorRT 或 CoreML),无需单独编写转换脚本。
新一代模型:YOLO26#
YOLOv7 仍是出色的经典架构,但这一领域发展迅速。对于新的部署项目,推荐使用 Ultralytics YOLO26(2026 年 1 月发布),它在准确率和 CPU 速度方面均优于前代产品。
- 端到端无 NMS 设计:在 YOLOv10 为 YOLO 模型引入的无 NMS 训练基础上,YOLO26 的可选一对一检测头(
nms=False)会跳过非极大值抑制(NMS)后处理。这能降低延迟波动,并简化机器人和自动驾驶系统的部署。 - MuSGD 优化器:该混合优化器受先进 LLM 训练技术(例如 Moonshot AI 的 Kimi K2)启发,结合 SGD 和 Muon,实现更稳定的训练和更快的收敛。
- CPU 推理速度最高提升 43%:移除分布焦点损失(DFL)后,YOLO26 简化了导出流程并加快了边缘设备和 CPU 上的推理速度;YOLO26n 在 CPU 上的运行速度比 YOLO11n 最高快 43%。
- ProgLoss + STAL:渐进式损失和小目标感知标签分配策略可提升小目标检测能力,因此 YOLO26 非常适合航空影像分析和精细监控。
理想应用场景#
何时选择 DAMO-YOLO#
- 神经架构搜索(NAS)学术研究:如果你的组织正深入研究神经架构搜索方法。
- 特定硬件上的极端延迟约束:如果你拥有足够的资源,可以运行全面的 NAS 搜索,为自定义 AI 加速器芯片寻找专用主干网络。
何时选择 YOLOv7#
- 现有 GPU 流水线:适用于在高端 NVIDIA 硬件上维护传统生产流水线,且流水线已针对 YOLOv7 特有的 E-ELAN 架构进行深度优化的团队。
为什么要迁移到现代 Ultralytics 模型(YOLO11 / YOLO26)#
对于绝大多数企业应用,从零售分析和智能制造到医疗保健,现代 Ultralytics 模型都是实用的默认选择。与 Ultralytics Platform 集成后,你可以使用完整的 ML 工作流,其中包括简洁的 API、详尽的文档、活跃的社区和多任务支持。无论是在 Raspberry Pi 上跟踪库存,还是在云端运行大型分析任务,YOLO26 等模型都能在速度与准确率之间实现良好平衡。