YOLO Vision 2026:

Huawei Ascend 与 Ultralytics YOLO 的集成#

Huawei Ascend AI 处理器上部署计算机视觉模型,需要将其编译为由 Ascend AI Core 执行的 .om 离线模型格式。将 Ultralytics YOLO 模型导出到 Ascend 后,你可以在广泛用于机器人、工业检测和智能相机部署的 Atlas 开发板与 OrangePi AIPro 设备上运行快速、低功耗的推理。

什么是 Huawei Ascend?#

Huawei Ascend 是一系列 AI 处理器,与 CANN(神经网络计算架构)配套使用;CANN 是 Huawei 的异构计算栈。CANN 提供 ATC(Ascend 张量编译器),这是一种主机端工具,可将标准 ONNX 图转换为面向 Ascend AI Core 的硬件专用 .om 离线模型。

由于 ATC 完全在主机上运行,你可以在未连接任何 Ascend 硬件的常规 x86-64 或 ARM64 Linux 机器上编译模型,然后将生成的 .om 复制到目标设备上进行推理。

在 Ascend NPU 上训练#

Ultralytics 支持使用 torch_npu 进行单 NPU 和多 NPU 训练,包括 AMP、验证、检查点保存、断点续训和 AutoBatch。使用 device=npu:0 选择一个 NPU,或使用 device=npu:0,1 选择多个 NPU;分布式训练使用 HCCL。 先安装兼容的 CANN、PyTorch 和 torch_npu 版本,并先加载 CANN 环境。有关安装和使用示例,请参阅 Ascend NPU 训练部分

Ascend 导出格式#

Ultralytics 导出器首先写入中间 ONNX 图,然后调用 ATC,使用 name 参数针对你指定的 SoC 进行编译。结果是一个自包含的模型目录,其中包含 .om 二进制文件及其 Ultralytics 元数据。

Ascend 模型的主要特性#

  • 专用 AI Core:编译后的模型在 Ascend AI Core 上执行,而不是在主机 CPU 上执行,从而为实时相机处理流水线提供显著更高的吞吐量。
  • 主机端编译:ATC 无需连接 NPU,因此导出可以在 CI、容器或笔记本电脑中运行。
  • ONNX 优先:标准的 Ultralytics ONNX 导出 可直接接入 CANN 工具链,无需专有的中间格式。
  • 静态形状:输入形状会在编译时写入 .om,从而消除运行时形状协商的开销。
  • 多设备目标:只需更改 name,同一个 ONNX 图即可针对任何受支持的 SoC 进行编译。

支持的任务#

Huawei Ascend 导出支持全部七种 Ultralytics 任务。语义分割和深度估计仅在 YOLO26 中可用,YOLO26 是唯一提供这些检测头的系列。

任务YOLOv8YOLO11YOLO26
检测
分割
语义
深度
分类
姿态
OBB

支持的设备#

使用 name 传入目标 SoC;ATC 会将其写入 .om 中,值为 --soc_version,因此它必须与部署目标板匹配。在本地,你可以针对 CANN 安装提供内核的任何 SoC 进行编译。Ultralytics Platform 支持 Ascend310P1、Ascend310P3、Ascend310B1 和 Ascend310B4 目标。

name设备本地导出平台
Ascend310P3Atlas 300I Pro、Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T、Atlas 200I A2
Ascend310B1OrangePi AIPro 8T

导出到 Ascend:转换你的 YOLO 模型#

注意

Ascend 导出需要 CANN 工具包,而该工具包仅支持 Linux。atc 编译器必须位于你的 PATH 中——请在导出前加载 CANN 环境脚本,例如 source /usr/local/Ascend/ascend-toolkit/set_env.sh

安装#

安装 Ultralytics,然后从 Huawei 单独安装 CANN。

安装
# Install the required package for YOLO
pip install ultralytics

CANN 工具包由 Huawei 提供,不会自动安装。你可以从 Ascend 社区下载页面 下载,或使用官方的 ascendai/cann 容器镜像,这些镜像已包含 ATC 及其依赖项。

使工具包与目标 SoC 匹配

ATC 只能针对已安装算子内核的 SoC 系列进行编译。仅包含 ascend310p 内核的工具包在请求 Ascend310B4 目标时,会因 No supported Ops kernel and engine are found for ... Conv2D 而失败。请为要部署到的设备安装匹配的 Ascend-cann-kernels-<soc> 软件包。

使用方法#

Ascend 格式支持 导出预测验证 模式。推理和验证在 Ascend 硬件上运行。导出模型,然后加载导出的模型以运行推理或验证其准确率。

导出
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to Ascend format for an Atlas 200I / OrangePi AIPro board
model.export(format="ascend", name="Ascend310B4")

# Load the exported Ascend model and run inference on the device
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")

导出参数#

参数类型默认值描述
formatstr'ascend'导出模型的目标格式,用于定义与 Ascend AI 处理器的兼容性。
namestr'Ascend310B4'传递给 ATC 的目标 SoC,形式为 --soc_version,例如 Ascend310P3。你的 CANN 安装包含内核的任何 SoC 都有效;请参阅支持的设备。必须与部署设备匹配。
imgszinttuple640模型输入所需的图像大小,会作为静态形状写入 .om
batchint1编译到离线模型中的静态批次大小。
quantizeint16量化精度。Ascend 导出仅支持 FP16;如果未指定,系统会自动启用 16。它取代已弃用的 half/int8 标志。
opsetint17中间图的 ONNX opset。上限为 17,这是 CANN ONNX 解析器接受的最高版本。
simplifyboolTrue使用 onnxslim 简化中间 ONNX 图。
nmsboolFalse为支持的检测、分割、姿态和 OBB 模型添加非极大值抑制。
为什么不支持 FP32?

Ascend AI Core 的卷积仅接受 DT_FLOAT16DT_INT8 输入,因此 FP32 离线模型无法在硬件上执行。请求 quantize=32 时会引发错误,而不是默默生成一个无法运行的模型。

如需详细了解导出流程,请访问 Ultralytics 导出文档页面

输出结构#

导出成功后,会创建一个包含以下结构的模型目录:

yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om  # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml           # Model metadata (classes, image size, task, etc.)

.om 文件是 CANN 运行时在设备上加载的已编译离线模型。其名称包含目标 SoC,因此该工件可自描述;每个目录中只保留一个 .om,因为加载器会选择其中找到的单个模型。metadata.yaml 包含类别名称、图像大小以及 Ultralytics 推理流水线所需的其他信息。

部署导出的 YOLO Ascend 模型#

成功将 Ultralytics YOLO 模型导出为 Ascend 格式后,下一步是在 Ascend 硬件上部署它。

安装运行时#

推理需要设备上的 CANN 运行时以及 ais_bench Python 软件包,该软件包封装了 CANN 的 pyACL 绑定。请从 Huawei Ascend 工具仓库构建并安装它:

# On the Ascend device, with CANN installed and sourced
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# Build and install the ais_bench inference wheel
git clone https://gitee.com/ascend/tools.git
cd tools/ais-bench_workload/tool/ais_bench
pip3 wheel ./backend -v
pip3 install ./aclruntime-*.whl
pip3 wheel ./ -v
pip3 install ./ais_bench-*.whl

将导出的 yolo26n_ascend_model 目录复制到设备上,然后像使用其他 Ultralytics 格式一样运行推理。

推荐工作流#

  1. 使用 Ultralytics 训练模式训练你的模型,或从预训练检查点开始。
  2. 在安装了 CANN 的任意 Linux 主机上将模型导出到 Ascend,并传入与你的目标 SoC 匹配的 name
  3. 将导出的模型目录复制到 Ascend 设备。
  4. 使用 CANN 运行时和 ais_bench 进行部署,以在设备上运行推理。

实际应用#

在 Ascend 硬件上运行的 YOLO 模型适用于广泛的嵌入式和工业视觉应用:

  • 工业自动化:生产线上的高速质量检测和缺陷检测。
  • 智能监控:在边缘网关上进行实时多相机目标检测,无需中央服务器。
  • 机器人:为自主移动机器人和协作机械臂提供机载感知。
  • 智慧城市:在低功耗路侧单元上进行交通监控和行人分析。

总结#

在本指南中,你已了解如何在 Huawei Ascend NPU 上训练 Ultralytics YOLO,以及如何使用 CANN ATC 编译器将模型导出为 Ascend .om 格式。导出完全在主机上运行,会生成自包含的模型目录,并通过单个 name 参数将模型定位到任何受支持的 Ascend SoC。

如需了解更多使用详情,请访问 官方 CANN 文档

此外,如果你想进一步了解其他 Ultralytics YOLO 集成,请访问我们的集成指南页面,获取大量实用资源。

常见问题#

  • 安装 Ultralytics 和 CANN 工具包,加载 CANN 环境以确保 atc 位于你的 PATH 中,然后在 Python 中使用 model.export(format="ascend", name="Ascend310B4") 导出,或通过 CLI 使用 yolo export model=yolo26n.pt format=ascend name=Ascend310B4 导出。将 name 设置为部署设备的 SoC。

  • 不需要。ATC 编译器完全在主机上运行,因此在未连接 NPU 的标准 x86-64 或 ARM64 Linux 机器上即可完成编译。你只需要 Ascend 硬件来运行导出的 .om 推理。

  • 你的 CANN 安装不包含所请求 SoC 的算子内核。每个工具包都为特定 SoC 系列捆绑内核,因此请安装与你的目标匹配的 Ascend-cann-kernels-<soc> 软件包,或使用针对该设备系列构建的容器镜像。

  • Ascend AI Core 卷积仅接受 DT_FLOAT16DT_INT8 张量。FP32 离线模型无法在硬件上执行,因此导出器会使用 --precision_mode=force_fp16 进行编译,并拒绝显式的 quantize=32 请求。

  • 你的已安装 CANN 工具包提供内核的任何 SoC,都可以通过 name 参数进行选择。请参阅支持的设备,了解四个经过验证的目标及其在 Ultralytics Platform 上的可用性。

评论