Link to this sectionHuawei Ascend Export for Ultralytics YOLO Models#
コンピュータービジョンモデルを Huawei Ascend AI プロセッサーにデプロイするには、Ascend AI Core で実行される .om オフラインモデル形式にコンパイルする必要があります。Ultralytics YOLO モデルを Ascend にエクスポートすると、ロボット工学、産業用検査、スマートカメラのデプロイメントなどで使用される Atlas 開発者ボードや OrangePi AIPro デバイス上で、高速かつ低電力な推論を実行できます。
Link to this sectionHuawei Ascend とは#
Huawei Ascend は、Huawei のヘテロジニアスコンピューティングスタックである CANN (Compute Architecture for Neural Networks) とペアになった AI プロセッサーファミリーです。CANN には、標準的な ONNX グラフを Ascend AI Core をターゲットとするハードウェア固有の .om オフラインモデルに変換するホスト側のツールである ATC (Ascend Tensor Compiler) が同梱されています。
ATC は完全にホスト上で実行されるため、Ascend ハードウェアを接続していなくても、通常の x86-64 または ARM64 Linux マシンでモデルをコンパイルし、結果の .om をターゲットデバイスにコピーして推論を実行できます。
Link to this sectionAscend エクスポート形式#
Ultralytics エクスポーターは、まず中間 ONNX グラフを書き込み、次に name 引数でターゲットにする SoC 向けにコンパイルするために ATC を呼び出します。その結果、.om バイナリとその Ultralytics メタデータを保持する自己完結型のモデルディレクトリが生成されます。
Link to this sectionAscend モデルの主な機能#
- 専用 AI Core: コンパイルされたモデルは、ホスト CPU ではなく Ascend AI Core で実行され、リアルタイムカメラパイプラインのスループットが大幅に向上します。
- ホスト側のコンパイル: ATC は接続された NPU を必要としないため、CI、コンテナ、またはラップトップでエクスポートを実行できます。
- ONNX ファースト: 標準の Ultralytics ONNX エクスポートは、独自の独自中間フォーマットなしで、CANN ツールチェーンに直接入力されます。
- 静的シェイプ: 入力シェイプはコンパイル時に
.omに組み込まれるため、実行時のシェイプネゴシエーションのオーバーヘッドがなくなります。 - マルチデバイスのターゲット設定: 同じ ONNX グラフを、
nameを変更するだけで、サポートされている任意の SoC 向けにコンパイルできます。
Link to this sectionサポートされているタスク#
Ascend エクスポートは、7 つの Ultralytics タスクすべてをサポートしています。検出、インスタンスセグメンテーション、ポーズ、OBB、および分類は YOLO26、YOLO11、および YOLOv8 ファミリーをカバーし、セマンティックセグメンテーションと深度推定は YOLO26 のみとなります。
| タスク | サポート状況 |
|---|---|
| オブジェクト検出 | ✅ |
| インスタンスセグメンテーション | ✅ |
| セマンティックセグメンテーション | ✅ |
| 姿勢推定 | ✅ |
| OBB検知 | ✅ |
| 分類 | ✅ |
| 深度推定 | ✅ |
Link to this sectionサポートされているデバイス#
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 | デバイス | ローカルエクスポート | プラットフォーム |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro、Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T、Atlas 200I A2 | ✅ | まもなく登場 |
Ascend310B1 | OrangePi AIPro 8T | ✅ | まもなく登場 |
Link to this sectionAscend へのエクスポート: YOLO モデルの変換#
Ascend エクスポートには Linux 専用の CANN ツールキットが必要です。atc コンパイラが PATH 上にある必要があります。エクスポートする前に CANN 環境スクリプトをソースしてください (例: source /usr/local/Ascend/ascend-toolkit/set_env.sh)。
Link to this sectionインストール#
Ultralytics をインストールしてから、Huawei から CANN を個別にインストールします。
# Install the required package for YOLO
pip install ultralyticsCANN ツールキットは Huawei によって配布されており、自動的にはインストールされません。Ascend コミュニティダウンロードページからダウンロードするか、ATC とその依存関係をバンドルしている公式の ascendai/cann コンテナイメージのいずれかを使用してください。
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 section使用方法#
Ascend 形式は、Export、Predict、および Validate モードをサポートしています。推論と検証は 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")Link to this sectionエクスポートの引数#
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
format | str | 'ascend' | エクスポートされたモデルのターゲット形式。Ascend AI プロセッサーとの互換性を定義します。 |
name | str | 'Ascend310B4' | --soc_version として ATC に渡されるターゲット SoC (例: Ascend310P3)。CANN インストールにカーネルがある SoC はすべて有効です。サポートされているデバイスを参照してください。デプロイメントデバイスと一致している必要があります。 |
imgsz | intまたはtuple | 640 | モデル入力の希望する画像サイズ。静的シェイプとして .om に組み込まれます。 |
batch | int | 1 | オフラインモデルにコンパイルされた静的バッチサイズ。 |
quantize | int | 16 | 量子化精度。Ascend エクスポートは FP16 のみであり、指定されていない場合は自動的に 16 を有効にします。非推奨となった half/int8 フラグを置き換えます。 |
opset | int | 17 | 中間グラフ用の ONNX オプセット。CANN ONNX パーサーが受け入れる最高バージョンである 17 に上限が設定されています。 |
simplify | bool | True | onnxslim を使用して中間的な ONNX グラフを簡素化します。 |
nms | bool | False | サポートされている検出、セグメンテーション、ポーズ、および OBB モデルに非最大値抑制 (Non-Maximum Suppression) を追加します。 |
Ascend AI Core は畳み込みに対して DT_FLOAT16 および DT_INT8 入力のみを受け入れるため、FP32 オフラインモデルはハードウェアで実行できません。quantize=32 を要求すると、実行できないモデルをサイレントに生成するのではなく、エラーが発生します。
エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページを参照してください。
Link to this section出力構造#
エクスポートが成功すると、以下のレイアウトでモデルディレクトリが作成されます。
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 が含まれているため、アーティファクトは自己記述型となります。ローダーがそこに見つかる単一のモデルを選択するため、ディレクトリごとに 1 つの .om を維持してください。metadata.yaml には、クラス名、画像サイズ、および Ultralytics 推論パイプラインで使用されるその他の情報が含まれています。
Link to this sectionエクスポートされた YOLO Ascend モデルのデプロイ#
Ultralytics YOLO モデルを Ascend 形式に正常にエクスポートしたら、次のステップは Ascend ハードウェアにデプロイすることです。
Link to this sectionランタイムのインストール#
推論には、デバイス上の CANN ランタイムと、CANN の pyACL バインディングをラップする ais_bench Python パッケージが必要です。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 形式とまったく同じように推論を実行します。
Link to this section推奨されるワークフロー#
- Ultralytics Train モードを使用してモデルを Train するか、事前トレーニング済みのチェックポイントから開始します。
- CANN がインストールされている Linux ホスト上で Ascend に Export し、ターゲット SoC に一致する
nameを渡します。 - エクスポートされたモデルディレクトリを Ascend デバイスに Copy します。
- デバイス上の推論のために CANN ランタイムと
ais_benchで Deploy します。
Link to this section実際のアプリケーション#
Ascend ハードウェアで実行される YOLO モデルは、幅広い組み込みおよび産業用ビジョンアプリケーションに適しています:
- 産業用自動化: 製造ラインでの高速品質検査と欠陥検出。
- スマート監視: 中央サーバーなしのエッジゲートウェイでのリアルタイムマルチカメラオブジェクト検出。
- ロボット工学: 自律移動ロボットおよび協働アーム向けの一人称認識。
- スマートシティ: 低電力な路側ユニットでの交通監視と歩行者分析。
Link to this section要約#
このガイドでは、CANN ATC コンパイラを使用して Ultralytics YOLO モデルを Huawei Ascend .om 形式にエクスポートする方法を学びました。エクスポートは完全にホスト上で実行され、自己完結型のモデルディレクトリを生成し、単一の name 引数を介してサポートされている任意の Ascend SoC をターゲットにします。これにより、トレーニングされた .pt チェックポイントから Ascend AI プロセッサー上のアクセラレーテッド FP16 推論への直接的なパスが得られます。
使用方法の詳細については、公式 CANN ドキュメントをご覧ください。
また、他の Ultralytics YOLO 統合について詳しく知りたい場合は、統合ガイドページにアクセスして、役立つリソースを多数見つけてください。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionUltralytics YOLO モデルを Ascend 形式にエクスポートするにはどうすればよいですか?#
Ultralytics と CANN ツールキットをインストールし、atc が PATH 上にあるように CANN 環境をソースしてから、Python で model.export(format="ascend", name="Ascend310B4") または CLI から yolo export model=yolo26n.pt format=ascend name=Ascend310B4 を使用してエクスポートします。name をデプロイメントデバイスの SoC に設定してください。
Link to this sectionモデルをエクスポートするために Ascend ハードウェアは必要ですか?#
いいえ。ATC コンパイラは完全にホスト上で実行されるため、NPU が接続されていない標準の x86-64 または ARM64 Linux マシンでコンパイルが機能します。エクスポートされた .om で推論を実行するためだけに Ascend ハードウェアが必要です。
Link to this section"No supported Ops kernel and engine are found" でエクスポートが失敗するのはなぜですか?#
CANN インストールには、要求した SoC 用の演算子カーネルが含まれていません。各ツールキットには特定の SoC ファミリー用のカーネルがバンドルされているため、ターゲットに一致する Ascend-cann-kernels-<soc> パッケージをインストールするか、そのデバイスファミリー用にビルドされたコンテナイメージを使用してください。
Link to this sectionAscend エクスポートが FP16 のみをサポートしているのはなぜですか?#
Ascend AI Core の畳み込みは、DT_FLOAT16 および DT_INT8 テンソルのみを受け入れます。FP32 オフラインモデルはハードウェアでの実行に失敗するため、エクスポーターは --precision_mode=force_fp16 でコンパイルし、明示的な quantize=32 リクエストを拒否します。
Link to this sectionどの Ascend デバイスがサポートされていますか?#
インストールされている CANN ツールキットがカーネルを提供する任意の SoC であり、name 引数を介して選択されます。検証済みの 4 つのターゲットと Ultralytics Platform での可用性については、サポートされているデバイスを参照してください。