YOLOv10 与 DAMO-YOLO 对比#
构建现代计算机视觉流水线时,选择合适的实时目标检测架构至关重要。本技术分析介绍 YOLOv10 和 DAMO-YOLO 的架构、性能指标和理想应用场景。这两种模型都推动了实时检测的发展,但采用了不同的架构路径。
无论你的项目需要部署到受限的边缘 AI硬件上,还是要求在云端 GPU 上实现最高精度,了解这些架构之间的差异都能帮助你做出明智选择。
探索 YOLOv10#
清华大学研究人员推出的 YOLOv10 为 YOLO 系列带来了原生端到端方法,消除了后处理中使用非极大值抑制 (NMS)的需求。
YOLOv10 详情:
- 作者: Ao Wang、Hui Chen、Lihao Liu 等
- 组织: 清华大学
- 日期: 2024-05-23
- arXiv: https://arxiv.org/abs/2405.14458
- GitHub: https://github.com/THU-MIG/yolov10
- 文档: https://docs.ultralytics.com/models/yolov10
关键架构特性#
YOLOv10 的主要创新是用于无 NMS 训练的一致双重分配策略。传统目标检测器依赖 NMS 过滤重叠边界框,这会带来不稳定的延迟,成为自动驾驶汽车和高速机器人等实时应用的瓶颈。YOLOv10 通过直接为每个物体预测一个边界框,实现了低且可预测的推理延迟。
此外,该模型采用以效率和精度为核心的整体设计。该架构优化了多个组件,包括轻量级分类头和空间-通道解耦下采样,从而减少计算冗余。因此,该架构在保持有竞争力的平均精度均值 (mAP)的同时,参数更少、FLOPs 更低。
使用示例#
YOLOv10 已集成到 Ultralytics 生态系统中,因此你可以通过 Ultralytics Python 软件包使用它。
from ultralytics import YOLO
# 加载预训练的 YOLOv10 nano 模型
model = YOLO("yolov10n.pt")
# 使用 COCO8 数据集训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 对测试图像运行推理
results = model("https://ultralytics.com/images/bus.jpg")
# 将模型导出为 TensorRT 格式
model.export(format="engine", quantize=16)探索 DAMO-YOLO#
DAMO-YOLO 由阿里巴巴集团开发,专注于通过自动化神经架构搜索 (NAS)发现高效网络结构,力求突破速度与精度的帕累托前沿。
DAMO-YOLO 详情:
- 作者: 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
关键架构特性#
DAMO-YOLO 引入了多项针对工业应用的技术。模型的基础是其 MAE-NAS 主干网络,通过最大熵引导搜索生成。这个自动化过程能够发现符合预设计算预算的主干网络结构,在精度和推理延迟之间取得平衡。
该架构还使用 Efficient RepGFPN 颈部网络。这种特征金字塔网络旨在改进不同尺度之间的特征融合,这对航空影像分析等复杂任务至关重要,因为这类任务中的物体尺寸差异很大。DAMO-YOLO 还采用了 ZeroHead,这是一种精简的检测头,可降低最终预测层的复杂度并节省推理计算量。
性能对比#
评估目标检测架构时,必须在推理速度、参数效率和检测精度之间找到合适的平衡。下表比较了 YOLOv10 和 DAMO-YOLO 各模型尺寸的性能。
| 模型 | 尺寸 (像素) | mAPval50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (ms) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
在相近规模下,YOLOv10 的精度高于 DAMO-YOLO,参数量也更少:YOLOv10s 使用 7.2M 个参数,以 2.49 ms 达到 46.3 mAP;而 DAMO-YOLOs 使用 16.3M 个参数,以 3.45 ms 达到 46.0 mAP。DAMO-YOLOt 以较小尺寸实现了出色精度(42.0 mAP),DAMO-YOLOl 在 T4 TensorRT 上也比 YOLOv10l 略快(7.18 ms 对 7.28 ms);但 YOLOv10 系列的参数效率使其在受限部署环境中更具优势。
用例与建议#
选择 YOLOv10 还是 DAMO-YOLO,取决于你的具体项目需求、部署限制和生态系统偏好。
何时选择 YOLOv10#
以下场景适合使用 YOLOv10:
- 无 NMS 的实时检测:适用于需要从端到端检测中获益、无需使用非极大值抑制并能降低部署复杂度的应用。
- 均衡权衡速度与准确率:适用于需要在不同模型规模下兼顾推理速度和检测准确率的项目。
- 延迟稳定的应用:适用于推理时间可预测性至关重要的部署场景,例如机器人或自主系统。
何时选择 DAMO-YOLO#
推荐在以下情况下使用 DAMO-YOLO:
- 高吞吐量视频分析:在固定的 NVIDIA GPU 基础设施上处理高帧率视频流,且主要关注批量大小为 1 时的吞吐量。
- 工业制造生产线:在专用硬件上对 GPU 延迟有严格要求的场景,例如装配线上的实时质量检测。
- 神经架构搜索研究:研究自动架构搜索 (MAE-NAS) 和高效重参数化骨干网络对检测性能的影响。
何时选择 Ultralytics (YOLO26)#
对于大多数新项目,Ultralytics YOLO26在性能与开发体验之间实现了最佳平衡:
- 无 NMS 的边缘部署:适用于要求推理延迟稳定且较低,同时不希望增加非极大值抑制后处理复杂度的应用。
- 仅使用 CPU 的环境: 没有专用 GPU 加速的设备;YOLO26 的 CPU 推理速度最高可提升 43%(YOLO26n 对比 YOLO11n),具有决定性优势。
- 小目标检测: 在无人机航拍影像等具有挑战性的场景或物联网传感器分析中,ProgLoss 和 STAL 能提升小目标检测准确率。
Ultralytics 优势#
为生产环境选择架构时,不能只看原始指标。使用 Ultralytics 生态系统支持的模型进行开发,可为开发者和研究人员带来多项实际优势。
易用性与完善的生态系统#
与更新不频繁的独立学术代码库不同,Ultralytics 提供持续维护的生态系统。依赖 NAS 流水线的模型往往难以搭建复杂环境。Ultralytics 则提供标准化的 Python API 和 CLI,并配有详尽文档,可缩短定制视觉解决方案的上市时间。
训练效率与内存需求#
训练大型模型很快就会产生高昂的计算成本。一直以来,Ultralytics YOLO 架构都以训练和推理时 CUDA 内存占用低而闻名。这种高效性让开发者能够使用消费级硬件或经济实惠的云实例训练模型,无需担心使用基于 Transformer 的模型(如 RT-DETR)时常见的内存不足错误。
Ultralytics 可与常用 MLOps 工具集成。你可以通过与 Weights & Biases、Comet 或 ClearML 的集成跟踪模型训练进度,无需编写额外的样板代码。
跨任务的通用性#
包括 YOLOv10 和 DAMO-YOLO 在内的许多专用检测模型都有一个局限:它们只专注于检测。在 Ultralytics 生态系统中,YOLO11 和 YOLO26 等模型可将同一套工具用于多种计算机视觉任务,包括实例分割、图像分类、姿态估计和旋转边界框 (OBB) 检测。
展望未来:YOLO26 的演进#
YOLOv10 将无需 NMS 的推理引入 YOLO 模型,DAMO-YOLO 则展示了 NAS 的潜力。对于今天开始新项目的开发者,我们推荐 Ultralytics YOLO26。
YOLO26 于 2026 年 1 月发布,是 YOLO11 的后继版本。它在 YOLOv10 奠定的无 NMS 基础上进一步发展,并提供可选的一对一检测头(nms=False)。
YOLO26 的关键改进包括:
- CPU 推理速度最多提升 43%: YOLO26n 在 CPU 上的运行速度比 YOLO11n 最多快 43%,适用于边缘计算和低功耗设备。
- 移除 DFL: 移除了分布焦点损失,从而简化导出,并提高了对多种部署目标的兼容性。
- MuSGD 优化器: 结合 SGD 和 Muon,将大语言模型 (LLM) 训练的稳定性和更快的收敛速度带入计算机视觉领域。
- ProgLoss + STAL: 渐进式损失和小目标感知标签分配 (STAL) 可提升小目标识别能力,这对农业和遥感等应用至关重要。
通过 Ultralytics Platform,开发者可以在同一平台上标注数据、训练和部署 YOLO26 等模型。