Ultralytics YOLOモデルのQualcomm QNNエクスポート#
Qualcomm Snapdragon デバイス上でコンピュータビジョンモデルをデプロイするには、Qualcomm AI Engine Direct (QNN) ランタイム向けにチューニングされたモデルフォーマットが必要です。Ultralytics YOLO モデルを QNN フォーマットにエクスポートすることで、数十億台の携帯電話、ラップトップ、車載システム、IoT デバイスに搭載されている Snapdragon の CPU、Adreno GPU、Hexagon NPU ハードウェア全体で、高速なオンデバイス推論を実行できるようになります。このガイドでは、YOLO を Qualcomm QNN にエクスポートし、Snapdragon ハードウェア上で高速かつ低電力な推論のためにデプロイする方法について説明します。
公式の Ultralytics Flutter plugin は、7つすべての YOLO26 タスクにわたるリアルタイムのカメラ推論および単一画像予測のために、オプトインの QNN サポートを提供します。プラグインの README に記載されている手順に従って、QNN ランタイムを有効にし、その ONNX Runtime 依存関係を追加してください。iOS へのデプロイについては、Ultralytics YOLO iOS SDK および CoreML integration を参照してください。
分類モデルを imgsz=224 でエクスポートします。検出、セグメンテーション、セマンティック、深度、ポーズ、および OBB モデルを imgsz=640 でエクスポートします。この 224/640 標準は、公式の QNN、LiteRT、および CoreML モバイルアセット間で共有されます。7つすべてのナノタスクに対応するすぐに実行可能な v73 および v81 アセットは、yolo-flutter-app v0.6.6 release で公開されています。
Qualcomm QNNとは?#
Qualcomm AI Engine Direct(一般に QNN と呼ばれ、Qualcomm AI Runtime (QAIRT) SDK の一部として配布されています)は、Snapdragon プロセッサ向けの Qualcomm の低水準推論スタックです。これは、Snapdragon CPU、Adreno GPU、および最新の Snapdragon SoC 内蔵の専用ニューラルネットワーク処理ユニット (NPU) である Hexagon Tensor Processor (HTP) をターゲットとする、バックエンド固有のライブラリを備えた統一された API を提供します。QNN は、開発者にこれらの Snapdragon AI アクセラレータへのフルスタックアクセスを提供し、旧式の Snapdragon Neural Processing Engine (SNPE) SDK の後継となるモダンなシステムです。Snapdragon 8 Gen 2、8 Gen 3、および 8 Elite モバイルプラットフォーム、Snapdragon X ラップトップ、ならびに車載および XR 製品にわたるオンデバイス AI を支えています。
Qualcomm QNNにエクスポートする理由#
Snapdragonは、世界で最も広く展開されているモバイルコンピューティングプラットフォームです。Ultralytics YOLOをQualcomm QNN形式にエクスポートすることで、これらのデバイスの専用AIハードウェアを活用できます:
- Hexagon NPU のアクセラレーション: Hexagon Tensor Processor上で YOLO を実行すると、CPU 推論に比べて劇的に高いスループットと低い消費電力が実現します。これは、Snapdragon でのリアルタイム推論および常時稼働のコンピュータビジョンに最適です。
- オンデバイスおよびオフライン: QNN推論はSnapdragonデバイス上で完全に実行されるため、クラウドとの往復がなく、レイテンシが低く抑えられ、データがデバイスの外に出ることもありません。
- 量子化による効率性: QNN エクスポートは、YOLO を16ビットアクティベーションを持つ INT8 ウェイトに量子化します。これは Hexagon NPU が好む精度とパフォーマンスのバランスであり、モデルサイズを縮小し、バッテリー駆動のハードウェア上でフレームレートを最大化します。
- 1つの形式で多くのデバイスに対応: 単一のQualcomm QNNエクスポートは、Snapdragon 8 Gen 2、8 Gen 3、8 Eliteファミリー以降のSnapdragon CPU、Adreno GPU、およびHexagon NPUをターゲットにできます。
- プロダクション対応のQualcomm AIスタック: QNN (Qualcomm AI Engine Direct / QAIRT) は、Qualcommの現在の積極的にメンテナンスされているオンデバイスAIランタイムであり、SNPEの推奨される代替手段です。
QNNエクスポート形式#
Ultralytics は、ONNX Runtime QNN Execution Provider(QAIRT ライブラリをバンドルする pip インストール可能な onnxruntime-qnn パッケージ)を使用して、YOLO モデルをローカルで QNN にコンパイルします。エクスポーターはモデルを ONNX に変換し、キャリブレーションデータを使用して 16 ビットのアクティベーションと INT8 のウェイト(Hexagon NPU に推奨されるバランス)に量子化し、コンテキストバイナリのキャッシングを有効にした ONNX Runtime セッションを初期化します。これにより、量子化されたグラフが <model>_qnn.onnx 内に埋め込まれた QNN コンテキストバイナリにコンパイルされます。Qualcomm アカウント、クラウドへのアップロード、または個別の SDK ダウンロードは必要ありません。
Qualcomm がホストする Snapdragon デバイス上でモデルのコンパイルとプロファイリングを行い、Qualcomm アカウントを必要とするクラウドベースの Qualcomm AI Hub とは異なり、Ultralytics の QNN エクスポートは、単一の export(format="qnn", imgsz=640) 呼び出し(分類の場合は imgsz=224)により、お使いのマシン上で完全に実行されます。サインアップ、アップロード制限、キュー待ち時間なしで、同じ QNN/QAIRT ランタイムターゲット(Snapdragon CPU、Adreno GPU、Hexagon NPU)を取得でき、標準の YOLO エクスポートワークフローにそのまま組み込むことができます。
エクスポートされた *_qnn.onnx ファイルは自己完結型であり、QNN コンテキストバイナリと、クラス名、画像サイズ、タスクなどの ONNX メタデータを埋め込みます。
QNNモデルの主な機能#
- 量子化: モデルは、ONNX Runtime QNN QDQ フローとキャリブレーションデータセットを使用して、16 ビットアクティベーションおよび INT8 ウェイトに量子化されます。これは Hexagon NPU が推奨する精度とパフォーマンスのバランスです。モデルの量子化の詳細をご覧ください。
- 完全ローカルコンパイル: コンテキストバイナリはホストマシン上で完全に生成されるため、Qualcommアカウント、APIトークン、またはクラウドアップロードは不要です。
- フルSnapdragonアクセラレーション: 単一の統合ランタイムを通じて、Hexagon NPU (HTP)、Adreno GPU、またはCPU上で推論を実行します。
- 幅広いデバイスへの対応: スマートフォン、PC (Windows on Snapdragon)、自動車、XR、および組み込み製品に搭載されている広範なSnapdragonプラットフォームをターゲットにできます。
- 事前コンパイル済みコンテキストバイナリ: コンテキストバイナリを出荷することで、オンデバイスでのグラフコンパイルを最小限に抑え、ターゲット上でのモデル読み込みレイテンシを削減します。
- 自己完結型の出力: エクスポートされたONNXファイルには、事前コンパイル済みのQNNコンテキストバイナリと、容易にデプロイするためのメタデータが含まれています。
測定されたパフォーマンス#
Androidスマートフォン#
ハードウェア: 12 GB LPDDR5X メモリと Android 16 / API 36 を搭載した Xiaomi 17。その 3 nm Snapdragon 8 Elite Gen 5 (SM8850) は、8コアの Qualcomm Oryon CPU(最大 4.6 GHz の 2 つのプライムコアと最大 3.62 GHz の 6 つのパフォーマンスコア)、Adreno GPU、および Hexagon NPU (HTP v81) を備えています。
| モデル | タスク | サイズ (ピクセル) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) | NPU QNN W8A16 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Detect(検出) | 640 | 52.2 1.8 / 48.1 / 2.4 | 15.8 2.3 / 8.9 / 4.6 | 10.7 1.8 / 6.7 / 2.2 |
| YOLO26n-seg | Segment(セグメンテーション) | 640 | 73.4 1.8 / 65.6 / 6.0 | 33.2 1.8 / 23.8 / 7.6 | 17.4 1.8 / 9.9 / 5.7 |
| YOLO26n-sem | セマンティック | 640 | 61.2 1.8 / 51.1 / 8.3 | 34.2 1.8 / 24.0 / 8.3 | 11.5 1.8 / 7.1 / 2.6 |
| YOLO26n-depth | Depth | 640 | 124.4 1.9 / 115.1 / 7.4 | 23.0 1.8 / 13.5 / 7.7 | 35.2 1.8 / 26.1 / 7.3 |
| YOLO26n-cls | Classify(分類) | 224 | 4.4 0.4 / 4.0 / 0.0 | 3.1 0.8 / 2.1 / 0.2 | 1.2 0.6 / 0.6 / 0.0 |
| YOLO26n-pose | Pose(姿勢推定) | 640 | 57.4 1.8 / 53.8 / 1.8 | 16.6 2.7 / 10.1 / 3.9 | 10.9 1.8 / 7.0 / 2.0 |
| YOLO26n-obb | OBB(指向性バウンディングボックス) | 640 | 50.3 1.8 / 47.2 / 1.4 | 11.7 1.8 / 7.8 / 2.0 | 8.6 1.8 / 5.7 / 1.1 |
- Speed の値は 単一画像のバーストレイテンシ です。
bus.jpgでの 3 回のウォームアップ実行後の 15 回の実行の平均であり、Flutter plugin's の0.6.10デバイス内ベンチマークハーネスと、標準化されたv0.6.6アセットを使用して測定されています。バックエンドの順序は、1 つの連続したスイープ内のタスク間でローテーションされました。ネイティブログにより、すべての CPU 行が LiteRT CPU/XNNPACK を使用し、すべての GPU 行が完全なグラフを LiteRT OpenCL (LITERT_CL) に委任し、すべての NPU 行が QNN Hexagon HTP バックエンドを使用していることが確認されました。 - 詳細なベンチマークの記録は Flutter performance doc にあります。
- 他の Android デバイスについては LiteRT integration、Apple デバイスについては CoreML integration で比較してください。
Windows on Snapdragon搭載ノートパソコン#
この過去のスイープでは、標準化前の v73 QNN バイナリが使用され、セマンティックおよび OBB では 1024px の入力が使用されました。これは、32 GB のメモリと Windows 11 を搭載した Lenovo ラップトップで実行されました。その Snapdragon X Elite (X1E78100) は、12 コアの Qualcomm Oryon CPU、Adreno GPU、および Hexagon NPU (HTP v73) を備えていますが、正確な Lenovo のモデルは記録されていません。この Windows-on-Snapdragon の比較では、ほとんどの開発者が起点とするネイティブ PyTorch FP32 CPU ベースラインと、ONNX Runtime QNN Hexagon HTP パスとを比較しています。各セルは、報告された前処理 / 推論 / 後処理のタイミングを下部に伴う完全な model.predict() のウォールタイムを示しており、合計にはこれら 3 つのステージ以外のフレームワークオーバーヘッドが含まれる場合があります。CPU の数値は PyTorch FP32 (torch==2.10.0+cpu) であり、NPU の数値は ONNX Runtime QNN (onnxruntime-qnn==2.2.0、INT8 ウェイト / 16 ビットアクティベーション) です。
| モデル | タスク | サイズ (ピクセル) | CPU PT FP32 (ms) | NPU Hexagon QNN W8A16 (ms) |
|---|---|---|---|---|
| YOLO26n | Detect(検出) | 640 | 91.4 4.3 / 75.2 / 0.1 | 27.2 4.9 / 19.4 / 0.9 |
| YOLO26n-seg | Segment(セグメンテーション) | 640 | 138.8 4.5 / 127.1 / 2.8 | 34.3 5.0 / 24.0 / 5.1 |
| YOLO26n-sem | セマンティック | 1024 | 295.8 9.1 / 189.2 / 94.8 | 133.0 8.8 / 37.4 / 83.9 |
| YOLO26n-cls | Classify(分類) | 224 | 15.4 3.0 / 9.8 / 0.0 | 11.7 2.7 / 5.5 / 0.0 |
| YOLO26n-pose | Pose(姿勢推定) | 640 | 109.6 4.6 / 102.9 / 0.2 | 28.9 5.3 / 23.3 / 0.6 |
| YOLO26n-obb | OBB(指向性バウンディングボックス) | 1024 | 267.8 8.1 / 254.6 / 0.1 | 64.8 8.9 / 54.7 / 0.6 |
- Speed の値は 単一画像バーストレイテンシ であり、10回のウォームアップ実行後に
bus.jpgで100回実行した平均値です。熱的に安定したデバイス (ultralytics==8.4.67、Python 3.12.10) 上で、完全なmodel.predict()呼び出しの周囲でtime.perf_counter()を使用して測定されています。 - Hexagon NPUは、640-1024 pxのタスク全体(検出は約3.4倍)において、PyTorch CPUベースラインよりも約2-4倍高速に動作します。ただし、前処理のオーバーヘッドが小さいワークロードを支配する224 pxの分類器では、約1.3倍の差に縮まります。
サポートされているタスク#
Qualcomm QNN エクスポートは、7 つの Ultralytics タスクすべてをサポートします。セマンティックセグメンテーションと深度推定は、それらのヘッドを出荷する唯一のファミリーである YOLO26 でのみ利用可能です。
QNNへのエクスポート:YOLOモデルの変換#
Qualcomm ハードウェアでのデプロイメントのために、Ultralytics YOLO モデルを QNN フォーマットにエクスポートします。コンテキストバイナリは、ターゲットの Hexagon Tensor Processor (HTP) アーキテクチャまたはサポートされている SoC 向けにファイナライズされます。これは name 引数で選択します(RKNN export でチップをターゲットにするために使用されるのと同じ引数です)。
サポートされているHTPターゲット#
ターゲットのアーキテクチャまたは SoC を name(例:name="73" または name="iq-8275")経由で渡します。サポートは HTP ターゲットによって決まるため、以下の Snapdragon の行は、すべての SoC の網羅的なリストではなく、代表的なプラットフォームです。Dragonwing デバイスは明示的にリストされています。
| ステータス | name | Hexagon HTP | デバイスまたはプラットフォームの例 |
|---|---|---|---|
| ✅ サポート済み | 68 | v68 | Snapdragon 888 |
| ✅ サポート済み | 69 | v69 | Snapdragon 8 Gen 1 / 8+ Gen 1 |
| ✅ サポート済み | 73 | v73 | Snapdragon 8 Gen 2、X Elite (デフォルト) |
| ✅ サポート済み | 75 | v75 | Snapdragon 8 Gen 3 |
| ✅ サポート済み | 79 | v79 | Snapdragon 8 Elite |
| ✅ サポート済み | 81 | v81 | Snapdragon 8 Elite Gen 5 |
| ✅ サポート済み | iq-8275 または qcs8275 | v75 | Dragonwing IQ-8275 / QCS8275 (QNN SoCモデル 82) |
| ❌ 未サポート | — | v66 | Dragonwing IQ-615 / QCS615 |
Dragonwing IQ-615は、ONNX Runtimeがv66 DSPをオフラインのHTPターゲットとして公開していないため、Ultralytics QNNコンテキストバイナリエクスポートを使用できません。標準のONNXエクスポートであれば、ボードのBSPがサポートするCPUまたはGPU実行プロバイダと個別に統合することが可能です。
from ultralytics import YOLO
model = YOLO("best.pt")
model.export(format="qnn", name="iq-8275", imgsz=640)QNN エクスポートは onnxruntime-qnn パッケージを使用します。バージョン 2.4.0 以降では、Python 3.11 以降向けの Windows(x64 および ARM64) および Linux(x86-64 および ARM64) 用のビルド済みホイールが公開されています。macOS はサポートされている QNN ホストではありません。QNN コンテキストバイナリの生成は x64 ホスト上で実行され、エクスポートステップのために Snapdragon デバイスは必要ありません。
インストール#
必要なパッケージをインストールするには、以下を実行してください。
# Install the required package for YOLO
pip install ultralyticsonnxruntime-qnn パッケージ(ONNX Runtime QNN Execution Provider を提供し、QAIRT ライブラリをバンドルする)は、初回のエクスポート時に自動的にインストールされます。インストールプロセスに関する詳細な手順とベストプラクティスについては、Ultralytics Installation guide をご確認ください。YOLO に必要なパッケージのインストール中に問題が発生した場合は、Common Issues guide で解決策とヒントをご確認ください。
使用方法#
QNN フォーマットは、Export、Predict、および Validate モードをサポートしています。推論とバリデーションは、ONNX Runtime の QNN Execution Provider(エクスポートに使用されるのと同じ onnxruntime-qnn パッケージ)を介して、Qualcomm Snapdragon ハードウェア上で実行されます。モデルをエクスポートし、エクスポートしたモデルを Snapdragon デバイスにロードして推論を実行するか、精度を検証します。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to Qualcomm QNN format (INT8, enforced automatically) for the default v73 HTP target
model.export(format="qnn", name="73", imgsz=640) # use imgsz=224 for classificationfrom ultralytics import YOLO
# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")エクスポートの引数#
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
format | str | 'qnn' | エクスポートされたモデルのターゲット形式。Qualcomm QNNランタイムとの互換性を定義します。 |
imgsz | int または tuple | 640 | モデルの入力に対する希望する画像サイズ。正方形の画像の場合は整数、またはタプル (height, width) にすることができます。 |
batch | int | 1 | 生成されたQNNコンテキストバイナリに組み込まれる、エクスポートモデルのバッチサイズを指定します。 |
name | str | '73' | ターゲットの Hexagon HTP アーキテクチャ(68、69、73、75、79、または 81)またはサポートされている SoC(iq-8275 または qcs8275)。コンテキストバイナリはこのターゲット向けにファイナライズされます。 |
quantize | int または str | 'w8a16'/auto | 量子化の精度。QNN HTP エクスポートは、16 ビットのアクティベーションを持つ INT8 ウェイトに量子化され('w8a16')、指定されていない場合は自動的に有効になります。非推奨の half / int8 フラグに代わるものです。 |
simplify | bool | True | onnxslim を使用して、中間ONNXグラフを簡素化します。 |
opset | int | None | 中間的なONNXグラフのONNX opsetバージョンを指定します。設定されていない場合は、サポートされている最新のバージョンが使用されます。 |
data | str | None | INT8キャリブレーションに使用されるDataset YAMLです。分類の場合は代わりにデータセットディレクトリまたは組み込みのデータセット名を指定します。省略した場合、Ultralyticsはモデルのタスクに応じたデフォルトのキャリブレーション用データセットを選択します。 |
fraction | float | 1.0 | INT8量子化に使用するキャリブレーションデータセットの割合。 |
device | str | None | ONNX エクスポートステップのデバイスを指定します:GPU(device=0)または CPU(device=cpu)。 |
QNN エクスポートは、Hexagon NPU に推奨される精度とパフォーマンスのバランスである 16 ビット活性化および INT8 重み にモデルを量子化します。これには、data のキャリブレーション画像を使用した ONNX Runtime QDQ quantization フローが使用されます。quantize='w8a16' は自動的に適用されます。
エクスポートプロセスの詳細については、Ultralytics documentation page on exporting をご覧ください。
出力構造#
エクスポートに成功すると、自己完結型のONNXファイルが作成されます:
yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary and metadata
yolo26n_qnn.onnx ファイルは QNN コンテキストバイナリを埋め込み、Snapdragon デバイス上で QNN Execution Provider を備えた ONNX Runtime によってロードされます。また、ONNX metadata_props 内にクラス名、画像サイズ、タスクなどのモデルメタデータも保持します。
エクスポートされたYOLO QNNモデルのデプロイ#
QNN モデルはサポートされている Qualcomm ハードウェア上で実行されるため、オンデバイスのモデルデプロイメントが簡単に行えます。onnxruntime-qnn がインストールされた互換性のあるデバイス上で、Ultralytics API(yolo predict / yolo val、上記の Usage を参照)を使用してエクスポートされたモデルを直接実行します。Ultralytics は、ONNX Runtime QNN Execution Provider を介して HTP コンテキストバイナリをロードします。
カスタムパイプラインの場合、コンテキストバイナリ ONNX を ONNX Runtime で直接ロードすることもできます。onnxruntime-qnn はプラグインの Execution Provider であるため、実行時に登録します:
import onnxruntime as ort
import onnxruntime_qnn as qnn_ep
# On the Snapdragon device, register the QNN plugin EP and select its device(s)
ort.register_execution_provider_library("QNNExecutionProvider", qnn_ep.get_library_path())
devices = [d for d in ort.get_ep_devices() if d.ep_name == "QNNExecutionProvider"]
options = ort.SessionOptions()
options.add_provider_for_devices(devices, {"backend_path": qnn_ep.get_qnn_htp_path()})
session = ort.InferenceSession("yolo26n_qnn.onnx", sess_options=options)
input_info = session.get_inputs()[0]
outputs = session.run(None, {input_info.name: input_tensor}) # input_tensor: float32 NHWCQNNコンテキストバイナリは事前コンパイルされているため、セッションはデバイス上でグラフを再コンパイルすることなく迅速に読み込まれます。
LinuxおよびYocto BSPの要件#
ターゲットボードは、互換性のある Qualcomm ランタイムと BSP を提供する必要があります。HTP 推論の場合、これには ONNX Runtime QNN Execution Provider、libQnnSystem.so、libQnnHtp.so、IQ-8275 用の v75 HTP スタブおよびスケルトンライブラリ、libcdsprpc.so などの FastRPC ユーザースペースサポート、DSP ファームウェア、および対応する FastRPC/カーネルドライバが含まれます。スケルトンライブラリは、BSP の DSP ライブラリパスを通じて検出可能でなければなりません。
これらのターゲット側のコンポーネントは、ボードベンダーの QAIRT/QNN 対応 BSP から提供されるものであり、エクスポートされたモデルには埋め込まれません。代わりに GPU 実行には、libQnnGpu.so と一致する Adreno ユーザースペースドライバスタックが必要です。Ultralytics の format=qnn 出力は HTP 固有のコンテキストバイナリであるため、GPU または CPU へのデプロイでは、事前にコンパイルされた *_qnn.onnx ファイルではなく、標準の ONNX エクスポートから開始する必要があります。
推奨されるワークフロー#
- Ultralytics トレーニングモードを使用してモデルを**トレーニング (Train)**する
- サポートされているプラットフォーム上で
model.export(format="qnn", name="iq-8275", imgsz=640)を使用して QNN フォーマットにエクスポートします(分類にはimgsz=224を使用してください) - エクスポートした
*_qnn.onnxファイルを Qualcomm デバイスにデプロイします - HTPバックエンドを使用するONNX RuntimeとQNN Execution Providerで推論を実行します。
実際のアプリケーション#
Qualcomm Snapdragon ハードウェア上で実行される YOLO モデルは、幅広いエッジ AI アプリケーションに最適です:
- スマートフォン: NPU アクセラレーションを使用した、カメラおよび写真アプリにおけるリアルタイムの物体検出とシーン理解。
- Windows on Snapdragon: クラウドにオフロードすることなく、Copilot+ PC上でオンデバイスコンピュータビジョンを実行します。
- 自動車: Snapdragon Digital Chassisプラットフォーム上で、ドライバー監視、乗員検知、およびADAS機能を提供します。
- XRおよびウェアラブル: AR/VRヘッドセットやスマートグラス向けの低消費電力・低レイテンシの認識機能を提供します。
- IoTおよびロボティクス: Snapdragon搭載カメラ、ドローン、および組み込みシステム上で効率的なビジョン推論を実行します。
要約#
このガイドでは、ONNX Runtime QNN Execution Provider を使用して、Ultralytics YOLO モデルを Qualcomm QNN フォーマットにローカルでエクスポートする方法を学びました。エクスポートパイプラインは、モデルを ONNX に変換し、ホストマシン上で QNN コンテキストバイナリにコンパイルします(Qualcomm アカウントやクラウドは不要です)。これにより、QNN/QAIRT ランタイムを介して Snapdragon CPU、Adreno GPU、および Hexagon NPU ハードウェア向けに最適化された *_qnn.onnx ファイルが生成されます。
Ultralytics YOLO と Qualcomm のオンデバイス AI スタックの組み合わせは、幅広い Snapdragon エコシステム全体で高度なコンピュータビジョンワークロードを実行するための効果的なソリューションを提供します。
その他のオンデバイスおよびモバイルデプロイメントターゲットについては、関連する ONNX、CoreML、NCNN、LiteRT、ExecuTorch、RKNN、Sony IMX500、および TensorRT のエクスポートガイドをご覧ください。出荷前にフォーマットを比較するには、Benchmark mode を使用してください。フォーマットとオプションの完全なリストについては、Export mode のドキュメントおよび integrations guide page をご覧ください。
よくある質問 (FAQ)#
export(format="qnn", imgsz=640)(分類の場合はimgsz=224)または同等の CLI 引数を使用して、モデルをエクスポートできます。エクスポートではまず ONNX モデルが作成され、その後 ONNX Runtime QNN Execution Provider を使用してローカルで QNN コンテキストバイナリにコンパイルされます。onnxruntime-qnnパッケージは、初回のエクスポート時に自動的にインストールされます。例from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="qnn", imgsz=640) # use imgsz=224 for classificationいいえ。QNN エクスポートは、QAIRT ライブラリをバンドルする
onnxruntime-qnnパッケージを使用して、ローカルマシン上で完全に実行されます。Qualcomm アカウント、API トークン、またはネットワークアクセスは必要ありません。Qualcomm AI Hub は、ホストされた Snapdragon デバイス上でモデルのコンパイル、プロファイリング、およびベンチマークを行うための Qualcomm のクラウドサービスであり、Qualcomm アカウントが必要です。Ultralytics の QNN エクスポートは同じ QNN/QAIRT ランタイム(Snapdragon CPU、Adreno GPU、Hexagon NPU)をターゲットにしていますが、ONNX Runtime QNN Execution Provider を使用してコンテキストバイナリをローカルでコンパイルするため、アカウント、アップロード、キューは不要です。これは、標準の YOLO エクスポートワークフロー内で直接、
.ptモデルから Snapdragon 対応ビルドへ移行する最も速い方法です。onnxruntime-qnn2.4.0 以降では、Python 3.11 以降向けの Windows(x64 および ARM64) および Linux(x86-64 および ARM64) 用のビルド済みホイールが提供されています。macOS はサポートされている QNN ホストではありません。コンテキストバイナリの生成は x64 ホスト上で実行され、物理的な Snapdragon デバイスは必要ありません。model.export(format="qnn", imgsz=640)(分類の場合はimgsz=224)でエクスポートし、結果のyolo26n_qnn.onnxファイルを Snapdragon デバイスにコピーして、yolo predict model=yolo26n_qnn.onnx source=image.jpg(またはyolo val)を実行します。Ultralytics は ONNX Runtime QNN Execution Provider を介してコンテキストバイナリをロードし、Hexagon NPU上で実行します。Deploying Exported YOLO QNN Models を参照してください。QNN (Qualcomm AI Engine Direct、QAIRT SDKの一部) はQualcommの現在の推論スタックであり、旧来のSnapdragon Neural Processing Engine (SNPE) SDKの推奨される代替手段です。新規デプロイメントはQNNをターゲットにする必要があります。
はい、
onnxruntime-qnnがインストールされた Qualcomm Snapdragon デバイス上であれば可能です。YOLO("yolo26n_qnn.onnx")は QNN Execution Provider を介してコンテキストバイナリをロードし、他のフォーマットと同様にpredict/valを実行します。コンテキストバイナリは Snapdragon NPU をターゲットにしているため、QNN ハードウェアのない x86 ホストではモデルを実行できません。このエクスポートにより、クラス名、画像サイズ、タスク、およびその他のモデルメタデータが ONNX の
metadata_propsに埋め込まれた、自己完結型のコンテキストバイナリ ONNX ファイル (例:yolo26n_qnn.onnx) が作成されます。