Link to this sectionHuawei Ascend Export for Ultralytics YOLO Models#
Deploying computer vision models on Huawei Ascend AI Processors requires compiling them into the .om offline model format executed by the Ascend AI Core. Exporting Ultralytics YOLO models to Ascend lets you run fast, low-power inference on Atlas developer boards and OrangePi AIPro devices used across robotics, industrial inspection, and smart camera deployments.
Link to this sectionWhat is Huawei Ascend?#
Huawei Ascend is a family of AI Processors paired with CANN (Compute Architecture for Neural Networks), Huawei's heterogeneous computing stack. CANN ships the ATC (Ascend Tensor Compiler), a host-side tool that converts a standard ONNX graph into a hardware-specific .om offline model targeting the Ascend AI Core.
Because ATC runs entirely on the host, you can compile models on a regular x86-64 or ARM64 Linux machine without any Ascend hardware attached, then copy the resulting .om to the target device for inference.
Link to this sectionAscend Export Format#
The Ultralytics exporter first writes an intermediate ONNX graph, then invokes ATC to compile it for the SoC you target with the name argument. The result is a self-contained model directory holding the .om binary and its Ultralytics metadata.
Link to this sectionKey Features of Ascend Models#
- Dedicated AI Core: Compiled models execute on the Ascend AI Core rather than the host CPU, delivering substantially higher throughput for real-time camera pipelines.
- Host-side compilation: ATC needs no attached NPU, so export runs in CI, in containers, or on a laptop.
- ONNX-first: The standard Ultralytics ONNX export feeds directly into the CANN toolchain with no proprietary intermediate format.
- Static shapes: The input shape is baked into the
.omat compile time, removing runtime shape negotiation overhead. - Multi-device targeting: The same ONNX graph compiles for any supported SoC by changing
name.
Link to this sectionSupported Tasks#
Ascend export supports all seven Ultralytics tasks. Detection, instance segmentation, pose, OBB, and classification cover the YOLO26, YOLO11, and YOLOv8 families; semantic segmentation and depth estimation are YOLO26-only.
| Task | Supported |
|---|---|
| Object Detection | ✅ |
| Instance Segmentation | ✅ |
| Semantic Segmentation | ✅ |
| Pose Estimation | ✅ |
| OBB Detection | ✅ |
| Classification | ✅ |
| Depth Estimation | ✅ |
Link to this sectionSupported Devices#
Pass the target SoC with name; ATC bakes it into the .om as --soc_version, so it must match the board you deploy to. Locally you can compile for any SoC your CANN installation provides kernels for. On Ultralytics Platform, the 310B targets are listed as coming soon while their operator kernels are added to the build image.
name | Devices | Local export | Platform |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | Coming soon |
Ascend310B1 | OrangePi AIPro 8T | ✅ | Coming soon |
Link to this sectionExport to Ascend: Converting Your YOLO Model#
Ascend export requires the CANN toolkit, which is Linux-only. The atc compiler must be on your PATH — source the CANN environment script before exporting, e.g. source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Link to this sectionInstallation#
Install Ultralytics, then install CANN separately from Huawei.
# Install the required package for YOLO
pip install ultralyticsThe CANN toolkit is distributed by Huawei and is not installed automatically. Download it from the Ascend community download page, or use one of the official ascendai/cann container images, which bundle ATC and its dependencies.
ATC can only compile for SoC families whose operator kernels are installed. A toolkit carrying only ascend310p kernels fails with No supported Ops kernel and engine are found for ... Conv2D when asked for an Ascend310B4 target. Install the matching Ascend-cann-kernels-<soc> package for the device you deploy to.
Link to this sectionUsage#
The Ascend format supports the Export, Predict, and Validate modes. Inference and validation run on Ascend hardware. Export your model, then load the exported model to run inference or validate its accuracy.
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")Link to this sectionExport Arguments#
| Argument | Type | Default | Description |
|---|---|---|---|
format | str | 'ascend' | Target format for the exported model, defining compatibility with Ascend AI Processors. |
name | str | 'Ascend310B4' | Target SoC passed to ATC as --soc_version, e.g. Ascend310P3. Any SoC your CANN install has kernels for is valid; see Supported Devices. Must match your deployment device. |
imgsz | int or tuple | 640 | Desired image size for the model input, baked into the .om as a static shape. |
batch | int | 1 | Static batch size compiled into the offline model. |
quantize | int | 16 | Quantization precision. Ascend export is FP16-only and auto-enables 16 if not specified. Replaces the deprecated half/int8 flags. |
opset | int | 17 | ONNX opset for the intermediate graph. Capped at 17, the highest version the CANN ONNX parser accepts. |
simplify | bool | True | Simplifies the intermediate ONNX graph with onnxslim. |
nms | bool | False | Adds Non-Maximum Suppression to supported detection, segmentation, pose, and OBB models. |
The Ascend AI Core accepts only DT_FLOAT16 and DT_INT8 inputs for convolutions, so an FP32 offline model cannot execute on the hardware. Requesting quantize=32 raises an error rather than silently producing a model that will not run.
For more details about the export process, visit the Ultralytics documentation page on exporting.
Link to this sectionOutput Structure#
After a successful export, a model directory is created with the following layout:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)The .om file is the compiled offline model that the CANN runtime loads on the device. Its name carries the target SoC so the artifact is self-describing; keep one .om per directory, since the loader picks the single model it finds there. The metadata.yaml contains class names, image size, and other information used by the Ultralytics inference pipeline.
Link to this sectionDeploying Exported YOLO Ascend Models#
Once you've successfully exported your Ultralytics YOLO model to Ascend format, the next step is deploying it on Ascend hardware.
Link to this sectionRuntime Installation#
Inference requires the CANN runtime on the device plus the ais_bench Python package, which wraps CANN's pyACL bindings. Build and install it from the Huawei Ascend tools repository:
# 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-*.whlCopy the exported yolo26n_ascend_model directory to the device, then run inference exactly as you would with any other Ultralytics format.
Link to this sectionRecommended Workflow#
- Train your model using Ultralytics Train Mode, or start from a pre-trained checkpoint.
- Export to Ascend on any Linux host with CANN installed, passing the
namethat matches your target SoC. - Copy the exported model directory to the Ascend device.
- Deploy with the CANN runtime and
ais_benchfor on-device inference.
Link to this sectionReal-World Applications#
YOLO models running on Ascend hardware suit a wide range of embedded and industrial vision applications:
- Industrial Automation: High-speed quality inspection and defect detection on production lines.
- Smart Surveillance: Real-time multi-camera object detection on edge gateways without a central server.
- Robotics: On-board perception for autonomous mobile robots and collaborative arms.
- Smart Cities: Traffic monitoring and pedestrian analytics on low-power roadside units.
Link to this sectionSummary#
In this guide, you have learned how to export Ultralytics YOLO models to the Huawei Ascend .om format using the CANN ATC compiler. The export runs entirely on the host, produces a self-contained model directory, and targets any supported Ascend SoC through a single name argument — giving you a direct path from a trained .pt checkpoint to accelerated FP16 inference on Ascend AI Processors.
For more details on usage, visit the official CANN documentation.
Also, if you'd like to know more about other Ultralytics YOLO integrations, visit our integration guide page to find plenty of helpful resources.
Link to this sectionFAQ#
Link to this sectionHow do I export my Ultralytics YOLO model to Ascend format?#
Install Ultralytics and the CANN toolkit, source the CANN environment so atc is on your PATH, then export with model.export(format="ascend", name="Ascend310B4") in Python or yolo export model=yolo26n.pt format=ascend name=Ascend310B4 from the CLI. Set name to the SoC of your deployment device.
Link to this sectionDo I need Ascend hardware to export a model?#
No. The ATC compiler runs entirely on the host, so compilation works on a standard x86-64 or ARM64 Linux machine with no NPU attached. You only need Ascend hardware to run inference on the exported .om.
Link to this sectionWhy does my export fail with "No supported Ops kernel and engine are found"?#
Your CANN installation does not carry operator kernels for the SoC you requested. Each toolkit bundles kernels for specific SoC families, so install the Ascend-cann-kernels-<soc> package matching your target, or use a container image built for that device family.
Link to this sectionWhy does Ascend export only support FP16?#
Ascend AI Core convolutions accept only DT_FLOAT16 and DT_INT8 tensors. An FP32 offline model would fail to execute on the hardware, so the exporter compiles with --precision_mode=force_fp16 and rejects an explicit quantize=32 request.
Link to this sectionWhich Ascend devices are supported?#
Any SoC that your installed CANN toolkit provides kernels for, selected through the name argument. See Supported Devices for the four validated targets and their availability on Ultralytics Platform.