Esportazione Qualcomm QNN per i modelli Ultralytics YOLO#
La distribuzione di modelli di computer vision su dispositivi Qualcomm Snapdragon richiede un formato di modello ottimizzato per il runtime Qualcomm AI Engine Direct (QNN). L'esportazione dei modelli Ultralytics YOLO nel formato QNN consente di eseguire un'inferenza accelerata on-device su CPU Snapdragon, GPU Adreno e hardware Hexagon NPU presenti in miliardi di telefoni cellulari, laptop, sistemi automobilistici e dispositivi IoT. Questa guida illustra come esportare YOLO su Qualcomm QNN e distribuirlo per un'inferenza rapida e a basso consumo su hardware Snapdragon.
Il plugin Flutter Ultralytics ufficiale offre il supporto QNN opzionale per l'inferenza con fotocamera in tempo reale e la predizione su singola immagine per tutti e sette i task di YOLO26. Abilita il runtime QNN e aggiungi la sua dipendenza ONNX Runtime come descritto nel README del plugin. Per la distribuzione su iOS, consulta l'SDK iOS di Ultralytics YOLO e l'integrazione CoreML.
Esporta i modelli di classificazione in imgsz=224. Esporta i modelli di detect, segment, semantic, depth, pose e OBB in
imgsz=640. Questo standard 224/640 è condiviso dalle risorse mobili ufficiali QNN, LiteRT e CoreML.
Le risorse v73 e v81 pronte all'uso per tutti e sette i task nano sono pubblicate nella
release v0.6.6 di yolo-flutter-app.
Cos'è Qualcomm QNN?#
Qualcomm AI Engine Direct — comunemente indicato come QNN e distribuito come parte dell'SDK Qualcomm AI Runtime (QAIRT) — è lo stack di inferenza di basso livello di Qualcomm per i processori Snapdragon. Fornisce un'API unificata con librerie specifiche per il backend che mirano alla CPU Snapdragon, alla GPU Adreno e all'Hexagon Tensor Processor (HTP), l'unità di elaborazione di reti neurali (NPU) dedicata all'interno dei moderni SoC Snapdragon. QNN offre agli sviluppatori accesso completo a questi acceleratori AI Snapdragon ed è il successore moderno del vecchio SDK Snapdragon Neural Processing Engine (SNPE). Alimenta l'IA on-device sulle piattaforme mobili Snapdragon 8 Gen 2, 8 Gen 3 e 8 Elite, sui laptop Snapdragon X e su prodotti automotive e XR.
Perché esportare in Qualcomm QNN?#
Snapdragon è la piattaforma di elaborazione mobile più ampiamente distribuita al mondo. Esportare Ultralytics YOLO nel formato Qualcomm QNN sblocca l'hardware AI dedicato su questi dispositivi:
- Accelerazione Hexagon NPU: L'esecuzione di YOLO sull'Hexagon Tensor Processor offre un throughput notevolmente superiore e un consumo energetico inferiore rispetto all'inferenza su CPU, ideale per l'inferenza in tempo reale e la computer vision always-on su Snapdragon.
- On-device e offline: L'inferenza QNN viene eseguita interamente sul dispositivo Snapdragon, quindi non ci sono round-trip verso il cloud, la latenza rimane bassa e i dati non lasciano mai il dispositivo.
- Efficienza quantizzata: L'esportazione QNN quantizza YOLO a pesi INT8 con attivazioni a 16 bit, il bilanciamento ideale tra accuratezza e prestazioni per l'Hexagon NPU, riducendo le dimensioni del modello e massimizzando i fotogrammi al secondo su hardware alimentato a batteria.
- Un formato, molti dispositivi: Una singola esportazione Qualcomm QNN punta a CPU Snapdragon, GPU Adreno e Hexagon NPU attraverso le famiglie Snapdragon 8 Gen 2, 8 Gen 3, 8 Elite e oltre.
- Stack AI Qualcomm pronto per la produzione: QNN (Qualcomm AI Engine Direct / QAIRT) è l'attuale runtime AI on-device di Qualcomm, attivamente mantenuto e il sostituto raccomandato per SNPE.
Formato di esportazione QNN#
Ultralytics compila i modelli YOLO per QNN localmente utilizzando l'Execution Provider QNN di ONNX Runtime (il pacchetto onnxruntime-qnn installabile tramite pip, che include le librerie QAIRT). L'esportatore converte il tuo modello in ONNX, lo quantizza con dati di calibrazione ad attivazioni a 16 bit e pesi INT8 (il bilanciamento consigliato per l'Hexagon NPU), quindi avvia una sessione ONNX Runtime con la memorizzazione nella cache del context-binary abilitata: questo compila il grafo quantizzato in un context binary QNN incorporato in <model>_qnn.onnx. Non sono richiesti account Qualcomm, caricamento su cloud o download separati di SDK.
A differenza del Qualcomm AI Hub basato su cloud, che compila e profila i modelli su dispositivi Snapdragon ospitati da Qualcomm e richiede un account Qualcomm, l'esportazione QNN di Ultralytics viene eseguita interamente sulla tua macchina con una singola chiamata export(format="qnn", imgsz=640) (imgsz=224 per la classificazione). Ottieni lo stesso target di runtime QNN/QAIRT — CPU Snapdragon, GPU Adreno e Hexagon NPU — senza registrazione, limiti di upload o tempi di attesa in coda, e si integra direttamente nel flusso di lavoro standard di esportazione YOLO.
Il file *_qnn.onnx esportato è autonomo: incorpora il context binary QNN e i metadati ONNX come nomi delle classi, dimensioni delle immagini e task.
Caratteristiche chiave dei modelli QNN#
- Quantizzazione: Il modello viene quantizzato a attivazioni a 16 bit e pesi INT8 con il flusso QDQ QNN di ONNX Runtime e un dataset di calibrazione, il bilanciamento accuratezza/prestazioni consigliato dall'Hexagon NPU. Scopri di più sulla quantizzazione dei modelli.
- Compilazione completamente locale: Il binario di contesto viene generato interamente sulla tua macchina host — nessun account Qualcomm, token API o caricamento cloud richiesti.
- Accelerazione completa Snapdragon: Esegui l'inferenza sull'Hexagon NPU (HTP), sulla GPU Adreno o sulla CPU tramite un unico runtime unificato.
- Ampia portata sui dispositivi: Punta all'ampia gamma di piattaforme Snapdragon presenti in telefoni, PC (Windows on Snapdragon), settore automobilistico, XR e prodotti integrati.
- Binario di contesto precompilato: Distribuire un binario di contesto riduce al minimo la compilazione del grafo on-device, abbassando la latenza di caricamento del modello sul target.
- Output autonomo: Il file ONNX esportato include il binario di contesto QNN precompilato e i metadati per un deployment semplice.
Prestazioni misurate#
Telefono Android#
Hardware: Xiaomi 17 con 12 GB di memoria LPDDR5X e Android 16 / API 36. Il suo Snapdragon 8 Elite Gen 5 a 3 nm (SM8850) ha una CPU Qualcomm Oryon a 8 core (2 core Prime fino a 4,6 GHz e 6 core Performance fino a 3,62 GHz), GPU Adreno e Hexagon NPU (HTP v81).
| Modello | Compito | dimensione (pixel) | 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 | Semantico | 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 |
- I valori di velocità sono latenze di burst su singola immagine — la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su
bus.jpg, misurate con il modulo di benchmark on-device0.6.10del plugin Flutter e le risorse standardizzatev0.6.6. L'ordine dei backend è stato alternato tra i task in una singola scansione sequenziale. I log nativi hanno confermato che ogni riga CPU utilizzava LiteRT CPU/XNNPACK, ogni riga GPU delegava l'intero grafo a LiteRT OpenCL (LITERT_CL) e ogni riga NPU utilizzava il backend QNN Hexagon HTP. - Il record dettagliato del benchmark è disponibile nella documentazione delle prestazioni di Flutter.
- Confronta altri dispositivi Android nell'integrazione LiteRT e i dispositivi Apple nell'integrazione CoreML.
Laptop Windows su Snapdragon#
Questa scansione preliminare ha utilizzato binari QNN v73 pre-standard; semantic e OBB hanno utilizzato input da 1024px. È stata eseguita su un laptop Lenovo
con 32 GB di memoria e Windows 11. Il suo
Snapdragon X Elite
(X1E78100) ha una CPU Qualcomm Oryon a 12 core, GPU Adreno e Hexagon NPU (HTP v73); il modello esatto Lenovo non è stato
registrato. Questo confronto Windows-on-Snapdragon esegue il baseline CPU PyTorch FP32 nativo da cui partono la maggior parte degli sviluppatori desktop
rispetto al percorso ONNX Runtime QNN Hexagon HTP. Ogni cella mostra il tempo totale di esecuzione (model.predict()) con i relativi tempi di pre-elaborazione / inferenza / post-elaborazione riportati sotto;
il totale può includere l'overhead del framework al di fuori di queste tre fasi. I numeri della CPU sono PyTorch FP32 (torch==2.10.0+cpu)
e i numeri della NPU sono ONNX Runtime QNN (onnxruntime-qnn==2.2.0, pesi INT8 / attivazioni a 16 bit).
| Modello | Compito | dimensione (pixel) | 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 | Semantico | 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 |
- I valori di velocità sono latenze di burst su singola immagine — la media di 100 esecuzioni dopo 10 esecuzioni di riscaldamento su
bus.jpg, misurate contime.perf_counter()attorno alla chiamata completamodel.predict()su un dispositivo termicamente a riposo (ultralytics==8.4.67, Python 3.12.10). - La NPU Hexagon esegue le attività circa 2-4 volte più velocemente rispetto alla baseline della CPU PyTorch su attività da 640-1024 px (rilevamento ~3.4x), riducendosi a ~1.3x sul classificatore da 224 px dove l'overhead di preelaborazione fisso domina il carico di lavoro ridotto.
Attività supportate#
L'esportazione Qualcomm QNN supporta tutti e sette i task di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include tali teste.
Esportazione in QNN: Conversione del tuo modello YOLO#
Esporta un modello Ultralytics YOLO nel formato QNN per la distribuzione su hardware Qualcomm. Il context binary viene finalizzato per un'architettura Hexagon Tensor Processor (HTP) di destinazione o un SoC supportato, che selezioni con l'argomento name, lo stesso argomento utilizzato per mirare a un chip nell'esportazione RKNN.
Target HTP supportati#
Passa l'architettura di destinazione o il SoC tramite name (ad es. name="73" o name="iq-8275"). Il supporto è determinato
dall'obiettivo HTP, quindi le righe Snapdragon sottostanti rappresentano piattaforme di esempio anziché un elenco esaustivo di ogni SoC.
I dispositivi Dragonwing sono elencati esplicitamente.
| Stato | name | Hexagon HTP | Dispositivo o piattaforma di esempio |
|---|---|---|---|
| ✅ Supportato | 68 | v68 | Snapdragon 888 |
| ✅ Supportato | 69 | v69 | Snapdragon 8 Gen 1 / 8+ Gen 1 |
| ✅ Supportato | 73 | v73 | Snapdragon 8 Gen 2, X Elite (predefinito) |
| ✅ Supportato | 75 | v75 | Snapdragon 8 Gen 3 |
| ✅ Supportato | 79 | v79 | Snapdragon 8 Elite |
| ✅ Supportato | 81 | v81 | Snapdragon 8 Elite Gen 5 |
| ✅ Supportato | iq-8275 o qcs8275 | v75 | Dragonwing IQ-8275 / QCS8275 (modello SoC QNN 82) |
| ❌ Non supportato | — | v66 | Dragonwing IQ-615 / QCS615 |
Dragonwing IQ-615 non può usare l'export del binario di contesto QNN di Ultralytics perché ONNX Runtime non espone il suo DSP v66 come target HTP offline. Un export ONNX standard può comunque essere integrato separatamente con un execution provider CPU o GPU supportato dal BSP della scheda.
from ultralytics import YOLO
model = YOLO("best.pt")
model.export(format="qnn", name="iq-8275", imgsz=640)L'esportazione QNN utilizza il pacchetto onnxruntime-qnn. La versione 2.4.0 e successive pubblica wheel precompilate per Windows (x64 e ARM64) e Linux (x86-64 e ARM64) su Python 3.11 o successivo; macOS non è un host QNN supportato. La generazione del context-binary QNN viene eseguita su un host x64 e non richiede un dispositivo Snapdragon per la fase di esportazione.
Installazione#
Per installare i pacchetti richiesti, esegui:
# Install the required package for YOLO
pip install ultralyticsIl pacchetto onnxruntime-qnn (che fornisce l'Execution Provider QNN di ONNX Runtime e include le librerie QAIRT) viene installato automaticamente al primo export. Per istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di Ultralytics. Se riscontri difficoltà durante l'installazione dei pacchetti richiesti per YOLO, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Utilizzo#
Il formato QNN supporta le modalità Esporta, Prevedi e Valida. L'inferenza e la validazione vengono eseguite su hardware Qualcomm Snapdragon tramite l'Execution Provider QNN di ONNX Runtime (lo stesso pacchetto onnxruntime-qnn utilizzato per l'esportazione). Esporta il tuo modello, quindi carica il modello esportato su un dispositivo Snapdragon per eseguire l'inferenza o validarne l'accuratezza.
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")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'qnn' | Formato target per il modello esportato, che definisce la compatibilità con il runtime Qualcomm QNN. |
imgsz | int o tuple | 640 | Dimensione desiderata dell'immagine per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width). |
batch | int | 1 | Specifica la dimensione del batch del modello di esportazione, che viene incorporata nel binario di contesto QNN generato. |
name | str | '73' | Architettura Hexagon HTP di destinazione (68, 69, 73, 75, 79 o 81) o SoC supportato (iq-8275 o qcs8275). Il context binary viene finalizzato per questa destinazione. |
quantize | int o str | 'w8a16'/auto | Precisione di quantizzazione. L'esportazione QNN HTP è quantizzata a pesi INT8 con attivazioni a 16 bit ('w8a16') ed è abilitata automaticamente se non specificato. Sostituisce i flag deprecati half/int8. |
simplify | bool | True | Semplifica il grafico ONNX intermedio con onnxslim. |
opset | int | None | Specifica la versione dell'opset ONNX per il grafo ONNX intermedio. Se non impostata, utilizza l'ultima versione supportata. |
data | str | None | Dataset YAML utilizzato per la calibrazione INT8; la classificazione richiede invece una directory di dataset o il nome di un dataset integrato. Se omesso, Ultralytics seleziona il dataset di calibrazione predefinito per il task del modello. |
fraction | float | 1.0 | Frazione del set di dati di calibrazione da utilizzare per la quantizzazione INT8. |
device | str | None | Specifica il dispositivo per la fase di esportazione ONNX: GPU (device=0) o CPU (device=cpu). |
L'esportazione QNN quantizza il modello a attivazioni a 16 bit e pesi INT8 — il bilanciamento accuratezza/prestazioni consigliato per l'Hexagon NPU — utilizzando il flusso di quantizzazione QDQ di ONNX Runtime con immagini di calibrazione da data. quantize='w8a16' viene imposto automaticamente.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Struttura dell'output#
Dopo un'esportazione riuscita, viene creato un file ONNX autonomo:
yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary and metadata
Il file yolo26n_qnn.onnx incorpora il context binary QNN e viene caricato da ONNX Runtime con l'Execution Provider QNN sul dispositivo Snapdragon. Contiene anche metadati del modello come nomi delle classi, dimensioni delle immagini e task in ONNX metadata_props.
Deployment di modelli YOLO QNN esportati#
I modelli QNN vengono eseguiti su hardware Qualcomm supportato, rendendo semplice la distribuzione del modello on-device. Su un dispositivo compatibile con onnxruntime-qnn installato, esegui il modello esportato direttamente con l'API Ultralytics (yolo predict/yolo val, vedi Utilizzo sopra) — Ultralytics carica il context binary HTP tramite l'Execution Provider QNN di ONNX Runtime.
Per pipeline personalizzate, puoi anche caricare il context-binary ONNX direttamente con ONNX Runtime. onnxruntime-qnn è un Execution Provider plugin, quindi registralo a runtime:
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 NHWCPoiché il binario di contesto QNN è precompilato, la sessione si carica rapidamente senza ricompilare il grafo on-device.
Requisiti BSP per Linux e Yocto#
La scheda di destinazione deve fornire un runtime Qualcomm e un BSP reciprocamente compatibili. Per l'inferenza HTP questo include l'Execution Provider QNN di ONNX Runtime, libQnnSystem.so, libQnnHtp.so, le librerie di stub e skeleton HTP v75 per IQ-8275, il supporto userspace FastRPC come libcdsprpc.so, il firmware DSP e i relativi driver FastRPC/kernel. La libreria skeleton deve essere individuabile tramite il percorso delle librerie DSP del BSP.
Questi componenti lato target provengono dal BSP abilitato QAIRT/QNN del fornitore della scheda; non sono incorporati nel modello esportato. L'esecuzione su GPU richiede invece libQnnGpu.so e lo stack di driver userspace Adreno corrispondente. L'output format=qnn di Ultralytics è un context binary specifico per HTP, quindi la distribuzione su GPU o CPU dovrebbe iniziare da un'esportazione ONNX standard anziché dal file *_qnn.onnx precompilato.
Flusso di lavoro consigliato#
- Allena il tuo modello utilizzando la modalità di training di Ultralytics
- Esporta nel formato QNN utilizzando
model.export(format="qnn", name="iq-8275", imgsz=640)su una piattaforma supportata (usaimgsz=224per la classificazione) - Distribuisci il file
*_qnn.onnxesportato sul tuo dispositivo Qualcomm - Esegui l'inferenza con ONNX Runtime e l'Execution Provider QNN utilizzando il backend HTP
Applicazioni nel mondo reale#
I modelli YOLO in esecuzione su hardware Qualcomm Snapdragon sono ideali per un'ampia gamma di applicazioni di edge AI:
- Smartphone: Rilevamento di oggetti in tempo reale e comprensione della scena nelle app di fotocamera e foto con accelerazione NPU.
- Windows on Snapdragon: Computer vision on-device in PC Copilot+ senza scaricare dati sul cloud.
- Settore automobilistico: Monitoraggio del conducente, rilevamento degli occupanti e funzionalità ADAS sulle piattaforme Snapdragon Digital Chassis.
- XR e Wearable: Percezione a basso consumo e bassa latenza per visori AR/VR e smart glass.
- IoT e robotica: Efficiente inferenza visiva su fotocamere, droni e sistemi embedded basati su Snapdragon.
Riepilogo#
In questa guida hai imparato come esportare i modelli Ultralytics YOLO nel formato Qualcomm QNN localmente con l'Execution Provider QNN di ONNX Runtime. La pipeline di esportazione converte il tuo modello in ONNX, quindi lo compila in un context binary QNN sulla tua macchina host — senza account Qualcomm o cloud richiesti — producendo un file *_qnn.onnx ottimizzato per CPU Snapdragon, GPU Adreno e hardware Hexagon NPU tramite il runtime QNN/QAIRT.
La combinazione di Ultralytics YOLO e dello stack IA on-device di Qualcomm offre una soluzione efficace per l'esecuzione di carichi di lavoro avanzati di computer vision nell'ampio ecosistema Snapdragon.
Per altri target di distribuzione mobile e on-device, consulta le relative guide all'esportazione per ONNX, CoreML, NCNN, LiteRT, ExecuTorch, RKNN, Sony IMX500 e TensorRT. Per confrontare i formati prima del rilascio, usa la modalità Benchmark. Per l'elenco completo di formati e opzioni, visita la documentazione della modalità Esportazione e la pagina della guida alle integrazioni.
FAQ#
Puoi esportare il tuo modello usando
export(format="qnn", imgsz=640)(imgsz=224per la classificazione) o gli argomenti CLI equivalenti. L'esportazione crea prima un modello ONNX, quindi lo compila localmente in un context binary QNN utilizzando l'Execution Provider QNN di ONNX Runtime. Il pacchettoonnxruntime-qnnviene installato automaticamente al primo export.Esempiofrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="qnn", imgsz=640) # use imgsz=224 for classificationNo. L'esportazione QNN viene eseguita interamente sulla tua macchina locale utilizzando il pacchetto
onnxruntime-qnn, che include le librerie QAIRT. Non sono richiesti account Qualcomm, token API o accesso alla rete.Qualcomm AI Hub è il servizio cloud di Qualcomm per la compilazione, la profilazione e il benchmarking di modelli su dispositivi Snapdragon ospitati e richiede un account Qualcomm. L'esportazione QNN di Ultralytics ha come target lo stesso runtime QNN/QAIRT (CPU Snapdragon, GPU Adreno e Hexagon NPU) ma compila il context binary localmente con l'Execution Provider QNN di ONNX Runtime — nessun account, nessun caricamento e nessuna coda. È il modo più veloce per passare da un modello
.pta una build pronta per Snapdragon direttamente all'interno del flusso di lavoro standard di esportazione YOLO.onnxruntime-qnn2.4.0 e successive fornisce wheel precompilate per Windows (x64 e ARM64) e Linux (x86-64 e ARM64) su Python 3.11 o successivo; macOS non è un host QNN supportato. La generazione del context-binary viene eseguita su un host x64 e non richiede un dispositivo Snapdragon fisico.Esporta con
model.export(format="qnn", imgsz=640)(imgsz=224per la classificazione), copia il fileyolo26n_qnn.onnxrisultante sul tuo dispositivo Snapdragon ed eseguiyolo predict model=yolo26n_qnn.onnx source=image.jpg(oyolo val). Ultralytics carica il context binary tramite l'Execution Provider QNN di ONNX Runtime e lo esegue sull'Hexagon NPU — vedi Distribuzione di modelli YOLO QNN esportati.QNN (Qualcomm AI Engine Direct, parte dell'SDK QAIRT) è l'attuale stack di inferenza di Qualcomm e il sostituto raccomandato per il più vecchio SDK Snapdragon Neural Processing Engine (SNPE). I nuovi deployment dovrebbero puntare a QNN.
Sì, su un dispositivo Qualcomm Snapdragon con
onnxruntime-qnninstallato —YOLO("yolo26n_qnn.onnx")carica il context binary tramite l'Execution Provider QNN ed eseguepredict/valcome qualsiasi altro formato. Su un host x86 senza hardware QNN il modello non può essere eseguito, poiché il context binary è destinato alla NPU Snapdragon.L'esportazione crea un file ONNX context-binary autonomo (ad es.
yolo26n_qnn.onnx) con nomi delle classi, dimensioni delle immagini, task e altri metadati del modello incorporati in ONNXmetadata_props.