Link to this sectionUltralytics 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 で分類モデルをエクスポートします。imgsz=640 で検出、セグメンテーション、セマンティック、デプス、ポーズ、および OBB モデルをエクスポートします。この 224/640 の標準は、公式の QNN、LiteRT、および CoreML モバイルアセットで共有されています。7つのすべてのナノタスク向けのすぐに実行できる v73 および v81 アセットは、yolo-flutter-app v0.6.6 release で公開されています。
Link to this sectionQualcomm 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を駆動します。
Link to this sectionQualcomm QNNにエクスポートする理由#
Snapdragonは、世界で最も広く展開されているモバイルコンピューティングプラットフォームです。Ultralytics YOLOをQualcomm QNN形式にエクスポートすることで、これらのデバイスの専用AIハードウェアを活用できます:
- Hexagon NPUアクセラレーション: YOLOをHexagon Tensor Processor上で実行すると、CPU推論よりも劇的に高いスループットと低い消費電力が実現します。これはリアルタイム推論や、Snapdragon上での常時稼働コンピュータビジョンに最適です。
- オンデバイスおよびオフライン: QNN推論はSnapdragonデバイス上で完全に実行されるため、クラウドとの往復がなく、レイテンシが低く抑えられ、データがデバイスの外に出ることもありません。
- 量子化による効率化: QNNエクスポートは、YOLOを16ビット活性化(activations)を持つ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の推奨される代替手段です。
Link to this sectionQNNエクスポート形式#
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メタデータを埋め込んでいます。
Link to this sectionQNNモデルの主な機能#
- 量子化: モデルは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コンテキストバイナリと、容易にデプロイするためのメタデータが含まれています。
Link to this section測定されたパフォーマンス#
Link to this sectionAndroidスマートフォン#
ハードウェア: 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 values are single-image burst latencies — the mean of 15 runs after 3 warmup runs on
bus.jpg, measured with the Flutter plugin's0.6.10on-device benchmark harness and the standardizedv0.6.6assets. Backend order rotated between tasks in one sequential sweep. Native logs confirmed that every CPU row used LiteRT CPU/XNNPACK, every GPU row delegated the complete graph to LiteRT OpenCL (LITERT_CL), and every NPU row used the QNN Hexagon HTP backend. - 詳細なベンチマークの記録は Flutter performance doc にあります。
- 他の Android デバイスについては LiteRT integration で、Apple デバイスについては CoreML integration で比較してください。
Link to this sectionWindows on Snapdragon搭載ノートパソコン#
この履歴スイープでは、標準化前の v73 QNN バイナリが使用されました。セマンティックおよび OBB では 1024px の入力が使用されました。これは、3 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 values are single-image burst latencies — the mean of 100 runs after 10 warmup runs on
bus.jpg, measured withtime.perf_counter()around the fullmodel.predict()call on a thermally rested device (ultralytics==8.4.67, Python 3.12.10). - Hexagon NPUは、640-1024 pxのタスク全体(検出は約3.4倍)において、PyTorch CPUベースラインよりも約2-4倍高速に動作します。ただし、前処理のオーバーヘッドが小さいワークロードを支配する224 pxの分類器では、約1.3倍の差に縮まります。
Link to this sectionサポートされているタスク#
QNNエクスポートは、YOLO26セマンティックセグメンテーションを含む、各モデルファミリーで利用可能な標準タスクセットをサポートしています。
| タスク | サポート状況 |
|---|---|
| オブジェクト検出 | ✅ |
| インスタンスセグメンテーション | ✅ |
| セマンティックセグメンテーション | ✅ |
| 姿勢推定 | ✅ |
| OBB検知 | ✅ |
| 分類 | ✅ |
| 深度推定 | ✅ |
Link to this sectionQNNへのエクスポート:YOLOモデルの変換#
Ultralytics YOLOモデルをSnapdragonハードウェアでのデプロイ用にQNN形式にエクスポートします。コンテキストバイナリは、name引数で選択するターゲットのHexagon Tensor Processor (HTP) アーキテクチャ用に最終化されます。これはRKNNエクスポートでチップをターゲットにするために使用されるのと同じ引数です。
Link to this sectionサポートされているHTPアーキテクチャ#
ターゲットアーキテクチャをname経由で渡します(例: name="73")。有効な値:
name | Hexagon HTP | Snapdragonプラットフォーム |
|---|---|---|
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 |
QNNエクスポートはonnxruntime-qnnパッケージを使用します。プリビルド済みのホイールは**Windows (x64およびARM64)とLinux ARM64 (aarch64)**向けに公開されています。Linux x86-64では、--use_qnnを使用してONNX Runtimeをソースからビルドしてください(プリビルド済みホイールは公開されておらず、macOSはサポートされているQNNホストではありません)。QNNコンテキストバイナリの生成は、x64ホスト(Windows x64またはLinux x86-64)上で実行され、エクスポート手順にSnapdragonデバイスは不要です。
Link to this sectionインストール#
必要なパッケージをインストールするには、以下を実行してください。
# Install the required package for YOLO
pip install ultralyticsonnxruntime-qnnパッケージ(ONNX Runtime QNN Execution Providerを提供し、QAIRTライブラリをバンドルしています)は、最初のエクスポート時に自動的にインストールされます。インストールプロセスに関する詳細な手順とベストプラクティスについては、Ultralyticsインストールガイドを確認してください。YOLOに必要なパッケージをインストール中に問題が発生した場合は、解決策とヒントについて共通の問題ガイドを参照してください。
Link to this section使用方法#
QNN形式はエクスポート、予測、および検証モードをサポートしています。推論と検証は、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), targeting an HTP architecture via 'name'
# 'name' can be one of 68, 69, 73, 75, 79, 81 (Snapdragon 888, 8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite, 8 Elite Gen 5)
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")Link to this sectionエクスポートの引数#
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
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 (Snapdragon 888、8 Gen 1、8 Gen 2、8 Gen 3、8 Elite、8 Elite Gen 5)。コンテキストバイナリはこのアーキテクチャ用に最終化されます。 |
quantize | int または str | 'w8a16'/auto | 量子化の精度です。QNN HTPエクスポートはINT8重みと16ビットアクティベーション('w8a16')に量子化され、指定がない場合は自動的に有効になります。非推奨となったhalf/int8フラグに代わるものです。 |
simplify | bool | True | onnxslim を使用して中間的な ONNX グラフを簡素化します。 |
opset | int | None | 中間的なONNXグラフのONNX opsetバージョンを指定します。設定されていない場合は、サポートされている最新のバージョンが使用されます。 |
data | str | 'coco8.yaml' | INT8キャリブレーションに使用されるデータセット構成ファイル。キャリブレーション画像のソースを指定します。 |
fraction | float | 1.0 | INT8量子化に使用するキャリブレーションデータセットの割合。 |
device | str | None | ONNXエクスポートステップのデバイス(GPU (device=0) またはCPU (device=cpu))を指定します。 |
QNNエクスポートは、Hexagon NPUに推奨される精度とパフォーマンスのバランスである16ビットアクティベーションおよびINT8重みにモデルを量子化します。これにはONNX Runtime QDQ量子化フローを使用し、dataからのキャリブレーション画像が用いられます。quantize='w8a16'は自動的に適用されます。
エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページを参照してください。
Link to this section出力構造#
エクスポートに成功すると、自己完結型の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に保持します。
Link to this sectionエクスポートされたYOLO QNNモデルのデプロイ#
QNNモデルはQualcomm Snapdragonハードウェア上で実行されるため、オンデバイスのモデルデプロイは非常に簡単です。onnxruntime-qnnがインストールされているSnapdragonデバイス上で、Ultralytics API (yolo predict/yolo val、上記の使用方法を参照) を使用してエクスポートされたモデルを直接実行します。UltralyticsはONNX Runtime QNN Execution Providerを通じてコンテキストバイナリを読み込み、HTP (NPU)、GPU、またはCPUバックエンドを選択します。
カスタムパイプラインでは、コンテキストバイナリ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コンテキストバイナリは事前コンパイルされているため、セッションはデバイス上でグラフを再コンパイルすることなく迅速に読み込まれます。
Link to this section推奨されるワークフロー#
- Ultralytics Train Mode を使用してモデルをトレーニングします
- サポートされているプラットフォームで
model.export(format="qnn", imgsz=640)を使用して QNN 形式にエクスポートします(分類の場合はimgsz=224を使用してください)。 - デプロイ: エクスポートされた
*_qnn.onnxファイルをSnapdragonデバイスにデプロイします。 - 実行: ONNX RuntimeとQNN Execution Providerを使用して推論を実行し、HTP、GPU、またはCPUバックエンドを選択します。
Link to this section実際のアプリケーション#
Qualcomm Snapdragonハードウェアで実行されるYOLOモデルは、幅広いエッジAIアプリケーションに適しています:
- スマートフォン: NPUアクセラレーションにより、カメラアプリや写真アプリでのリアルタイム物体検出とシーン理解を実現します。
- Windows on Snapdragon: クラウドにオフロードすることなく、Copilot+ PC上でオンデバイスコンピュータビジョンを実行します。
- 自動車: Snapdragon Digital Chassisプラットフォーム上で、ドライバー監視、乗員検知、およびADAS機能を提供します。
- XRおよびウェアラブル: AR/VRヘッドセットやスマートグラス向けの低消費電力・低レイテンシの認識機能を提供します。
- IoTおよびロボティクス: Snapdragon搭載カメラ、ドローン、および組み込みシステム上で効率的なビジョン推論を実行します。
Link to this section要約#
このガイドでは、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を参照してください。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionUltralytics YOLOモデルをQNN形式にエクスポートするにはどうすればよいですか?#
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 classificationLink to this sectionQualcommアカウントやクラウドへのアクセスは必要ですか?#
いいえ。QNNエクスポートは、QAIRTライブラリをバンドルしたonnxruntime-qnnパッケージを使用して、ローカルマシン上で完全に実行されます。Qualcommアカウント、APIトークン、またはネットワークアクセスは必要ありません。
Link to this sectionUltralyticsのQNNエクスポートとQualcomm AI Hubの比較はどうなっていますか?#
Qualcomm AI Hubは、ホストされたSnapdragonデバイス上でモデルをコンパイル、プロファイリング、およびベンチマークするためのQualcommのクラウドサービスであり、Qualcommアカウントが必要です。UltralyticsのQNNエクスポートは同じQNN/QAIRTランタイム(Snapdragon CPU、Adreno GPU、およびHexagon NPU)をターゲットにしますが、ONNX Runtime QNN Execution Providerを使用してコンテキストバイナリをローカルでコンパイルします。アカウント、アップロード、待ち時間は不要です。これは、標準のYOLOエクスポートワークフロー内で直接.ptモデルからSnapdragon対応ビルドへ移行する最も高速な方法です。
Link to this sectionどのプラットフォームでエクスポートできますか?#
onnxruntime-qnnは、**Windows (x64およびARM64)とLinux ARM64 (aarch64)**向けのプリビルド済みホイールを提供します。Linux x86-64では、--use_qnnを使用してONNX Runtimeをソースからビルドしてください(プリビルド済みホイールは公開されておらず、macOSはサポートされているQNNホストではありません)。コンテキストバイナリの生成はx64ホスト(Windows x64またはLinux x86-64)上で実行され、物理的なSnapdragonデバイスは不要です。
Link to this sectionQualcomm Snapdragon NPUでYOLOを実行するにはどうすればよいですか?#
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 を参照してください。
Link to this sectionQNNとSNPEの違いは何ですか?#
QNN (Qualcomm AI Engine Direct、QAIRT SDKの一部) はQualcommの現在の推論スタックであり、旧来のSnapdragon Neural Processing Engine (SNPE) SDKの推奨される代替手段です。新規デプロイメントはQNNをターゲットにする必要があります。
Link to this sectionQNNモデルをyolo predictおよびyolo valで実行できますか?#
はい。onnxruntime-qnnがインストールされているQualcomm Snapdragonデバイス上であれば、YOLO("yolo26n_qnn.onnx")がQNN Execution Providerを通じてコンテキストバイナリを読み込み、他の形式と同様にpredict/valを実行します。QNNハードウェアのないx86ホスト上では、コンテキストバイナリがSnapdragon NPUをターゲットとしているため、モデルは実行できません。
Link to this sectionQNNエクスポートの出力は何ですか?#
The export creates a self-contained context-binary ONNX file (e.g., yolo26n_qnn.onnx) with class names, image size, task, and other model metadata embedded in ONNX metadata_props.