YOLO Vision 2026:

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ハードウェア上で高速かつ低消費電力の推論を実行する方法を説明します。

公式モバイルアプリで今すぐSnapdragon NPU上でYOLOを実行

公式のUltralytics Flutterプラグインは、7つすべてのYOLO26タスクで、リアルタイムカメラ推論と単一画像予測向けのオプトインQNNサポートを提供します。プラグインのREADMEに記載されているように、QNNランタイムを有効にし、そのONNX Runtime依存関係を追加してください。iOSへのデプロイについては、Ultralytics YOLO iOS SDKCoreML統合を参照してください。

公式モバイル入力サイズ

分類モデルはimgsz=224にエクスポートします。検出、セグメンテーション、セマンティック、深度、ポーズ、OBBモデルは imgsz=640にエクスポートします。この224/640標準は、公式QNN、LiteRT、CoreMLモバイルアセットで共有されています。 7つすべてのnanoタスク向けのすぐに実行できるv73およびv81アセットは、 yolo-flutter-app v0.6.6リリースで公開されています。

Qualcomm QNNとは何ですか?#

Qualcomm QNN on-device inference

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秒あたりフレーム数を最大化します。
  • 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(pipでインストール可能なonnxruntime-qnnパッケージ。QAIRTライブラリをバンドルしています)を使用して、YOLOモデルをローカルでQNNにコンパイルします。エクスポーターはモデルをONNXに変換し、キャリブレーションデータを使用して16ビットアクティベーションとINT8重みに量子化します(Hexagon NPUに推奨されるバランス)。その後、コンテキストバイナリのキャッシュを有効にしたONNX Runtimeセッションを初期化し、量子化されたグラフを<model>_qnn.onnxに埋め込まれたQNNコンテキストバイナリにコンパイルします。Qualcommアカウント、クラウドへのアップロード、個別のSDKダウンロードは必要ありません。

クラウドベースのQualcomm AI Hubは、QualcommがホストするSnapdragonデバイス上でモデルをコンパイルおよびプロファイリングするため、Qualcommアカウントが必要です。一方、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のPrimeコア2基、最大3.62 GHzのPerformanceコア6基)、Adreno GPU、Hexagon NPU(HTP v81)を搭載しています。

モデルタスクサイズ
(ピクセル)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
NPU
QNN W8A16
(ms)
YOLO26nDetect64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
10.7
1.8 / 6.7 / 2.2
YOLO26n-segSegment64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
17.4
1.8 / 9.9 / 5.7
YOLO26n-semSemantic64061.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深度640124.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分類2244.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ポーズ64057.4
1.8 / 53.8 / 1.8
16.6
2.7 / 10.1 / 3.9
10.9
1.8 / 7.0 / 2.0
YOLO26n-obbOBB64050.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プラグインの0.6.10オンデバイスベンチマークハーネスと標準化されたv0.6.6アセットを使用して測定しています。1回の順次スイープ内で、タスク間のバックエンド順序は入れ替えました。ネイティブログにより、すべてのCPU行ではLiteRT CPU/XNNPACK、すべてのGPU行ではグラフ全体をLiteRT OpenCL(LITERT_CL)に委譲し、すべてのNPU行ではQNN Hexagon HTPバックエンドを使用したことを確認しました。
  • 詳細なベンチマーク記録はFlutterパフォーマンスドキュメントにあります。
  • その他のAndroidデバイスについてはLiteRT統合、AppleデバイスについてはCoreML統合で比較できます。

Snapdragon搭載Windowsノートパソコン#

この過去のスイープでは、標準化前の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)
YOLO26nDetect64091.4
4.3 / 75.2 / 0.1
27.2
4.9 / 19.4 / 0.9
YOLO26n-segSegment640138.8
4.5 / 127.1 / 2.8
34.3
5.0 / 24.0 / 5.1
YOLO26n-semSemantic1024295.8
9.1 / 189.2 / 94.8
133.0
8.8 / 37.4 / 83.9
YOLO26n-cls分類22415.4
3.0 / 9.8 / 0.0
11.7
2.7 / 5.5 / 0.0
YOLO26n-poseポーズ640109.6
4.6 / 102.9 / 0.2
28.9
5.3 / 23.3 / 0.6
YOLO26n-obbOBB1024267.8
8.1 / 254.6 / 0.1
64.8
8.9 / 54.7 / 0.6
  • Speedの値は単一画像のバーストレイテンシーです。bus.jpg上で、10回のウォームアップ実行後に100回実行した平均値であり、熱的に安定したデバイス(ultralytics==8.4.67、Python 3.12.10)上で、完全なmodel.predict()呼び出しを囲むtime.perf_counter()を使用して測定しています。
  • Hexagon NPUは、640~1024 pxのタスク全体でPyTorch CPUベースラインよりおよそ2~4倍高速です(検出では~3.4倍)。ただし、固定の前処理オーバーヘッドが小規模なワークロードを支配する224 pxの分類器では、~1.3倍まで差が縮まります。

サポートされるタスク#

Qualcomm QNNエクスポートは、7つすべてのUltralyticsタスクをサポートします。セマンティックセグメンテーションと深度推定はYOLO26でのみ利用できます。これらのヘッドを提供するファミリーはYOLO26だけです。

タスクYOLOv8YOLO11YOLO26
検出
セグメンテーション
セマンティック
深度
分類
ポーズ
OBB

QNNへのエクスポート:YOLOモデルの変換#

Qualcommハードウェアへのデプロイ向けに、Ultralytics YOLOモデルをQNN形式へエクスポートします。コンテキストバイナリは、対象のHexagon Tensor Processor(HTP)アーキテクチャまたはサポート対象SoC向けに確定されます。対象はname引数で選択します。この引数はRKNNエクスポートでチップを対象にする場合と同じです。

サポート対象のHTPターゲット#

nameを介してターゲットアーキテクチャまたはSoCを渡します(例:name="73"またはname="iq-8275")。サポート対象はHTPターゲットによって決まるため、以下のSnapdragon行はすべてのSoCを網羅した一覧ではなく、代表的なプラットフォームを示しています。Dragonwingデバイスは明示的に記載しています。

ステータスnameHexagon HTPデバイスまたはプラットフォームの例
✅ サポート対象68v68Snapdragon 888
✅ サポート対象69v69Snapdragon 8 Gen 1 / 8+ Gen 1
✅ サポート対象73v73Snapdragon 8 Gen 2、X Elite(デフォルト)
✅ サポート対象75v75Snapdragon 8 Gen 3
✅ サポート対象79v79Snapdragon 8 Elite
✅ サポート対象81v81Snapdragon 8 Elite Gen 5
✅ サポート対象iq-8275またはqcs8275v75Dragonwing IQ-8275 / QCS8275(QNN SoCモデル82)
❌ サポート対象外v66Dragonwing IQ-615 / QCS615

Dragonwing IQ-615では、ONNX Runtimeがv66 DSPをオフラインHTPターゲットとして公開していないため、Ultralytics QNNコンテキストバイナリエクスポートを使用できません。標準のONNXエクスポートは、ボードのBSPがサポートするCPUまたはGPU Execution Providerと個別に統合できます。

Dragonwing IQ-8275向けのエクスポート
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)**のビルド済みwheelを公開しています。macOSはサポート対象のQNNホストではありません。QNNコンテキストバイナリの生成はx64ホスト上で実行され、エクスポート手順にSnapdragonデバイスは必要ありません。

インストール#

必要なパッケージをインストールするには、次を実行します。

インストール
# Install the required package for YOLO
pip install ultralytics

onnxruntime-qnnパッケージ(ONNX Runtime QNN Execution Providerを提供し、QAIRTライブラリをバンドルしています)は、初回エクスポート時に自動的にインストールされます。インストール手順とベストプラクティスについては、Ultralyticsインストールガイドを確認してください。YOLOに必要なパッケージのインストール中に問題が発生した場合は、解決策とヒントについて一般的な問題のガイドを参照してください。

使用方法#

QNN形式は、ExportPredictValidateモードをサポートします。推論と検証は、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 classification
推論
from 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")

エクスポート引数#

引数デフォルト説明
formatstr'qnn'エクスポートされたモデルのターゲット形式であり、Qualcomm QNNランタイムとの互換性を定義します。
imgszintまたはtuple640モデル入力に使用する画像サイズです。正方形画像の場合は整数、またはタプル(height, width)を指定できます。
batchint1エクスポートモデルのバッチサイズを指定します。この値は生成されるQNNコンテキストバイナリに組み込まれます。
namestr'73'ターゲットのHexagon HTPアーキテクチャ(6869737579、または81)またはサポート対象SoC(iq-8275またはqcs8275)です。コンテキストバイナリはこのターゲット向けに確定されます。
quantizeintまたはstr'w8a16'/auto量子化精度です。QNN HTPエクスポートは、16ビットアクティベーションとINT8重み('w8a16')に量子化され、指定されていない場合は自動的に有効になります。非推奨のhalf/int8フラグに置き換わります。
simplifyboolTrueonnxslimを使用して中間ONNXグラフを簡略化します。
opsetintNone中間ONNXグラフのONNX opsetバージョンを指定します。設定しない場合は、サポートされている最新バージョンが使用されます。
datastrNoneINT8キャリブレーションに使用するDataset YAMLです。分類では、代わりにデータセットディレクトリまたは組み込みデータセット名を指定します。省略した場合、Ultralyticsはモデルタスクに対応するデフォルトのキャリブレーションデータセットを選択します。
fractionfloatint、またはlist1.0キャリブレーションサブセットを、比率、画像枚数、または [train, val, test] の比率/枚数として指定します。2項目のリストでは、test はすべて使用され、0 はスキップされます。
devicestrNoneONNXエクスポート手順に使用するデバイスを指定します:GPU(device=0)またはCPU(device=cpu)。
Precision

QNNエクスポートでは、ONNX Runtime QDQ量子化フローとdataのキャリブレーション画像を使用して、モデルを16ビットアクティベーションとINT8重みに量子化します。これはHexagon NPUに推奨される精度と性能のバランスです。quantize='w8a16'は自動的に強制適用されます。

エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。

出力構造#

エクスポートが成功すると、自己完結型の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、上記の使用方法を参照)で直接実行できます。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 NHWC

QNN コンテキストバイナリは事前コンパイルされているため、デバイス上でグラフを再コンパイルせずにセッションをすばやく読み込めます。

Linux および Yocto BSP の要件#

ターゲットボードには、相互に互換性のある Qualcomm ランタイムと BSP が必要です。HTP 推論には、ONNX Runtime QNN Execution Provider、libQnnSystem.solibQnnHtp.so、IQ-8275 用の v75 HTP スタブおよびスケルトンライブラリ、libcdsprpc.so などの FastRPC ユーザー空間サポート、DSP ファームウェア、対応する FastRPC/kernel ドライバーが含まれます。スケルトンライブラリは、BSP の DSP ライブラリパスから検出できる必要があります。

これらのターゲット側コンポーネントは、ボードベンダーの QAIRT/QNN 対応 BSP に含まれており、エクスポートしたモデルには組み込まれていません。GPU 実行には、libQnnGpu.so と対応する Adreno ユーザー空間ドライバースタックが必要です。Ultralytics の format=qnn 出力は HTP 固有のコンテキストバイナリであるため、GPU または CPU へのデプロイでは、事前コンパイル済みの *_qnn.onnx ファイルではなく、標準 ONNX エクスポートから開始してください。

推奨ワークフロー#

  1. UltralyticsのTrain Modeを使用してモデルをトレーニングします。
  2. サポート対象プラットフォームで model.export(format="qnn", name="iq-8275", imgsz=640) を使用して QNN 形式にエクスポートします(分類には imgsz=224 を使用します)
  3. エクスポートした *_qnn.onnx ファイルを Qualcomm デバイスにデプロイします
  4. HTP バックエンドを使用し、ONNX Runtime と QNN Execution Provider で推論を実行します

実世界での用途#

Qualcomm Snapdragon ハードウェア上で動作する YOLO モデルは、幅広いエッジ AIアプリケーションに適しています。

  • スマートフォン: NPU アクセラレーションを使用し、カメラアプリや写真アプリでリアルタイムの物体検出とシーン理解を実現します。
  • Snapdragon 搭載 Windows: クラウドにオフロードせず、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 エコシステムにわたって高度なコンピュータービジョンワークロードを実行する効果的なソリューションを提供できます。

その他のオンデバイスおよびモバイル向けデプロイ先については、関連する ONNXCoreMLNCNNLiteRTExecuTorchRKNNSony IMX500TensorRT のエクスポートガイドを参照してください。出荷前に形式を比較するには、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-qnn 2.4.0 以降では、Python 3.11 以降の Windows(x64 および ARM64)Linux(x86-64 および ARM64) 向けのビルド済み wheel が提供されます。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 上で実行します。詳しくは エクスポートした YOLO QNN モデルのデプロイを参照してください。

  • QNN(QAIRT SDK の一部である Qualcomm AI Engine Direct)は、Qualcomm の現在の推論スタックであり、旧式の Snapdragon Neural Processing Engine(SNPE)SDK に代わる推奨ソリューションです。新しいデプロイでは QNN を対象にしてください。

  • はい。onnxruntime-qnn がインストールされた Qualcomm Snapdragon デバイス上で実行できます。YOLO("yolo26n_qnn.onnx") は QNN Execution Provider を介してコンテキストバイナリを読み込み、他の形式と同様に predict/val を実行します。QNN ハードウェアのない x86 ホストでは、コンテキストバイナリが Snapdragon NPU を対象としているため、モデルを実行できません。

  • エクスポートによって、クラス名、画像サイズ、タスク、その他のモデルメタデータが ONNX metadata_props に埋め込まれた、自己完結型のコンテキストバイナリ ONNX ファイル(例: yolo26n_qnn.onnx)が作成されます。

コメント