Meet YOLO26: next-gen vision AI.

Link to this sectionEsportazione Qualcomm QNN per i modelli Ultralytics YOLO#

Il deployment di modelli di computer vision su dispositivi Qualcomm Snapdragon richiede un formato di modello ottimizzato per il runtime Qualcomm AI Engine Direct (QNN). Esportando i modelli Ultralytics YOLO nel formato QNN puoi eseguire inferenze accelerate on-device su hardware Snapdragon CPU, Adreno GPU e Hexagon NPU presente in miliardi di telefoni cellulari, laptop, sistemi automobilistici e dispositivi IoT. Questa guida ti accompagna attraverso la procedura di esportazione di YOLO verso Qualcomm QNN e il suo deployment per un'inferenza veloce e a basso consumo su hardware Snapdragon.

Esegui oggi stesso YOLO sugli NPU Snapdragon con le app mobili ufficiali

Il plugin Flutter di Ultralytics ufficiale esegue le esportazioni QNN sull'NPU Hexagon immediatamente: inferenza da fotocamera in tempo reale, previsione su singola immagine e download automatico del modello per tutte e sei le attività di YOLO26. Per il deployment su iOS, consulta l'SDK iOS di Ultralytics YOLO e l'integrazione CoreML.

Link to this sectionCos'è Qualcomm QNN?#

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct — comunemente noto come QNN e distribuito come parte del 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 neurale (neural network processing unit - NPU) dedicata all'interno dei moderni SoC Snapdragon. QNN offre agli sviluppatori un accesso full-stack a questi acceleratori AI di Snapdragon ed è il moderno successore del precedente 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 sui prodotti per il settore automotive e XR.

Link to this sectionPerché 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: Eseguire YOLO sull'Hexagon Tensor Processor offre un throughput drasticamente superiore e un consumo energetico inferiore rispetto all'inferenza su CPU — ideale per l'inferenza in tempo reale e la computer vision sempre attiva 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 con pesi INT8 e attivazioni a 16-bit, il bilanciamento tra accuratezza e prestazioni preferito dall'Hexagon NPU, riducendo le dimensioni del modello e massimizzando i frame 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.

Link to this sectionFormato di esportazione QNN#

Ultralytics compila i modelli YOLO in QNN localmente utilizzando il QNN Execution Provider 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 in attivazioni a 16-bit e pesi INT8 (il bilanciamento raccomandato per l'Hexagon NPU), quindi inizializza una sessione ONNX Runtime con la memorizzazione nella cache del binario di contesto abilitata — questo compila il grafo quantizzato in un binario di contesto QNN incorporato in <model>_qnn.onnx. Non sono richiesti account Qualcomm, caricamenti sul cloud o download di SDK separati.

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"). Ottieni lo stesso target di runtime QNN/QAIRT — CPU Snapdragon, GPU Adreno e Hexagon NPU — senza registrazione, limiti di caricamento o tempi di coda, e si integra direttamente nel flusso di lavoro di esportazione standard di YOLO.

Il file *_qnn.onnx esportato è autonomo: incorpora il binario di contesto QNN e i metadati ONNX come nomi delle classi, dimensioni dell'immagine e task.

Link to this sectionCaratteristiche chiave dei modelli QNN#

  • Quantizzazione: Il modello viene quantizzato in attivazioni a 16-bit e pesi INT8 con il flusso QDQ di ONNX Runtime QNN e un set di dati di calibrazione, il bilanciamento accuratezza/prestazioni raccomandato dall'Hexagon NPU. Scopri di più sulla quantizzazione del modello.
  • 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.

Link to this sectionPrestazioni misurate#

Inferenza end-to-end su singola immagine per i modelli ufficiali YOLO26n su un telefono Xiaomi 17 alimentato dal Qualcomm Snapdragon 8 Elite Gen 5 (SM8850) — CPU Qualcomm Oryon, GPU Adreno e NPU Hexagon (HTP v81). Ogni cella mostra il tempo totale (preprocessing + inferenza + postprocessing, esclusa l'annotazione) con la suddivisione per fase sottostante. CPU e GPU eseguono TFLite INT8 tramite LiteRT; l'NPU esegue i file binari di contesto QNN (pesi INT8, attivazioni a 16 bit).

ModelloCompitodimensione
(pixel)
CPU
INT8 TFLite
(ms)
GPU Adreno
INT8 TFLite
(ms)
NPU Hexagon
QNN A16W8
(ms)
YOLO26nDetect64053.3
3.6 / 47.4 / 2.4
17.2
3.6 / 9.1 / 4.5
11.3
3.5 / 5.6 / 2.2
YOLO26n-segSegment64076.0
3.6 / 64.7 / 7.7
23.9
3.6 / 11.8 / 8.6
21.3
3.5 / 7.9 / 10.0
YOLO26n-semSemantico102466.6
3.6 / 46.3 / 16.8
37.7
3.6 / 17.4 / 16.7
49.11
8.8 / 20.8 / 19.5
YOLO26n-clsClassify2245.2
0.8 / 4.0 / 0.5
4.5
1.6 / 2.2 / 0.7
2.4
1.1 / 0.6 / 0.7
YOLO26n-posePose64057.7
3.5 / 52.4 / 1.8
15.2
3.6 / 9.7 / 1.9
10.8
3.5 / 5.6 / 1.8
YOLO26n-obbOBB102450.3
3.6 / 45.4 / 1.3
13.9
3.8 / 8.2 / 1.8
21.0
8.8 / 10.9 / 1.3
  • I valori di velocità sono le latenze di burst su singola immagine — la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su bus.jpg, misurate con l'utility di benchmark on-device del plugin Flutter su un dispositivo a temperatura controllata. I tempi dei frame della fotocamera in tempo reale prolungati sono più elevati (acquisizione per frame con aggiunta di letterboxing più assestamento termico); usa la suddivisione pre/inferenza/post sullo schermo dell'app per ottenere numeri stabili sul tuo dispositivo.
  • 1 La QNN semantica utilizza l'output della mappa di classe ArgMax nel grafo di questa release, che ha sostituito l'erratica decodifica dei logit da 123-1065 ms con una stabile di ~49 ms; la GPU rimane leggermente più veloce per la parte semantica a 1024px.

Link to this sectionAttività supportate#

L'esportazione QNN supporta il set di task standard disponibile in ogni famiglia di modelli, inclusa la segmentazione semantica di YOLO26.

Link to this sectionEsportazione in QNN: Conversione del tuo modello YOLO#

Esporta un modello Ultralytics YOLO nel formato QNN per il deployment su hardware Snapdragon. Il binario di contesto viene finalizzato per un'architettura Hexagon Tensor Processor (HTP) di destinazione, che selezioni con l'argomento name — lo stesso argomento usato per puntare a un chip nell'esportazione RKNN.

Link to this sectionArchitetture HTP supportate#

Passa l'architettura target tramite name (ad esempio name="73"). Valori validi:

nameHexagon HTPPiattaforma Snapdragon
68v68Snapdragon 888
69v69Snapdragon 8 Gen 1 / 8+ Gen 1
73v73Snapdragon 8 Gen 2, X Elite (predefinito)
75v75Snapdragon 8 Gen 3
79v79Snapdragon 8 Elite
81v81Snapdragon 8 Elite Gen 5
Supporto piattaforma

L'esportazione QNN utilizza il pacchetto onnxruntime-qnn. Le ruote precompilate sono pubblicate per Windows (x64 e ARM64) e Linux ARM64 (aarch64); su Linux x86-64 compila ONNX Runtime dal sorgente con --use_qnn (non viene pubblicata alcuna ruota precompilata e macOS non è un host QNN supportato). La generazione del binario di contesto QNN viene eseguita su un host x64 — Windows x64 o Linux x86-64 — e non richiede un dispositivo Snapdragon per il passaggio di esportazione.

Link to this sectionInstallazione#

Per installare i pacchetti richiesti, esegui:

Installazione
# Install the required package for YOLO
pip install ultralytics

Il pacchetto onnxruntime-qnn (che fornisce il QNN Execution Provider di ONNX Runtime e include le librerie QAIRT) viene installato automaticamente al primo tentativo di esportazione. Per istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di Ultralytics. Durante l'installazione dei pacchetti necessari per YOLO, se riscontri difficoltà, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.

Link to this sectionUtilizzo#

Il formato QNN supporta le modalità Export, Predict e Validate. L'inferenza e la convalida vengono eseguite sull'hardware Qualcomm Snapdragon tramite il QNN Execution Provider di ONNX Runtime (lo stesso pacchetto onnxruntime-qnn usato per l'esportazione). Esporta il tuo modello, quindi carica il modello esportato su un dispositivo Snapdragon per eseguire l'inferenza o convalidarne l'accuratezza.

Esportazione
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")  # creates 'yolo26n_qnn.onnx'
Previsione
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")
Convalida
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 sectionArgomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'qnn'Formato target per il modello esportato, che definisce la compatibilità con il runtime Qualcomm QNN.
imgszint o tuple640Dimensioni immagine desiderate per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width).
batchint1Specifica la dimensione del batch del modello di esportazione, che viene incorporata nel binario di contesto QNN generato.
namestr'73'Versione dell'architettura Hexagon HTP target: 68, 69, 73, 75, 79 o 81 (Snapdragon 888, 8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite, 8 Elite Gen 5). Il binario di contesto viene finalizzato per questa architettura.
int8boolTrueAbilita la quantizzazione INT8. Richiesta per l'esportazione QNN HTP — impostata automaticamente su True se non specificata.
datastr'coco8.yaml'File di configurazione del dataset utilizzato per la calibrazione INT8. Specifica la sorgente dell'immagine di calibrazione.
fractionfloat1.0Frazione del set di dati di calibrazione da utilizzare per la quantizzazione INT8.
devicestrNoneSpecifica il dispositivo per il passaggio di esportazione ONNX: GPU (device=0) o CPU (device=cpu).
Precision

L'esportazione QNN quantizza il modello in attivazioni a 16-bit e pesi INT8 — il bilanciamento accuratezza/prestazioni raccomandato per l'Hexagon NPU — utilizzando il flusso di quantizzazione QDQ di ONNX Runtime con immagini di calibrazione da data. int8=True viene applicato automaticamente.

Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.

Link to this sectionStruttura 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 binario di contesto QNN e viene caricato da ONNX Runtime con il QNN Execution Provider sul dispositivo Snapdragon. Trasporta anche metadati del modello come nomi delle classi, dimensioni dell'immagine e task nelle metadata_props di ONNX.

Link to this sectionDeployment di modelli YOLO QNN esportati#

I modelli QNN vengono eseguiti su hardware Qualcomm Snapdragon, rendendo il deployment del modello on-device semplice. Su un dispositivo Snapdragon con onnxruntime-qnn installato, esegui il modello esportato direttamente con l'API Ultralytics (yolo predict/yolo val, vedi Uso sopra) — Ultralytics carica il binario di contesto tramite il QNN Execution Provider di ONNX Runtime e seleziona il backend HTP (NPU), GPU o CPU.

Per pipeline personalizzate, puoi anche caricare direttamente il binario di contesto ONNX con ONNX Runtime. onnxruntime-qnn è un Execution Provider plug-in, quindi registralo al 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)
outputs = session.run(None, {"images": input_tensor})  # input_tensor: float32 NCHW

Poiché il binario di contesto QNN è precompilato, la sessione si carica rapidamente senza ricompilare il grafo on-device.

Link to this sectionFlusso di lavoro consigliato#

  1. Addestra il tuo modello usando la Modalità Train di Ultralytics
  2. Esporta in formato QNN utilizzando model.export(format="qnn") su una piattaforma supportata (Windows x64 o ARM64, o Linux ARM64)
  3. Distribuisci il file *_qnn.onnx esportato sul tuo dispositivo Snapdragon
  4. Esegui l'inferenza con ONNX Runtime e il QNN Execution Provider, selezionando il backend HTP, GPU o CPU

Link to this sectionApplicazioni nel mondo reale#

I modelli YOLO in esecuzione su hardware Qualcomm Snapdragon sono adatti a un'ampia gamma di applicazioni di Edge AI:

  • Smartphone: Object detection in tempo reale e comprensione della scena in app 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.

In questa guida, hai imparato come esportare i modelli Ultralytics YOLO nel formato Qualcomm QNN localmente con il QNN Execution Provider di ONNX Runtime. La pipeline di esportazione converte il tuo modello in ONNX, quindi lo compila in un binario di contesto QNN sulla tua macchina host — senza account Qualcomm o cloud richiesti — producendo un file *_qnn.onnx ottimizzato per hardware Snapdragon CPU, Adreno GPU e Hexagon NPU tramite il runtime QNN/QAIRT.

La combinazione di Ultralytics YOLO e dello stack AI on-device di Qualcomm fornisce una soluzione efficace per eseguire carichi di lavoro avanzati di computer vision attraverso l'ampio ecosistema Snapdragon.

Per altri target di deployment mobile e on-device, consulta le relative guide all'esportazione ONNX, CoreML, NCNN, TFLite, ExecuTorch, RKNN, Sony IMX500 e TensorRT. Per confrontare i formati prima della distribuzione, usa la modalità Benchmark. Per l'elenco completo di formati e opzioni, visita la documentazione della modalità Export e la pagina della guida alle integrazioni.

Link to this sectionFAQ#

Link to this sectionCome esporto il mio modello Ultralytics YOLO in formato QNN?#

Puoi esportare il tuo modello usando il metodo export() in Python o tramite CLI con format="qnn". L'esportazione crea prima un modello ONNX, quindi lo compila localmente in un binario di contesto QNN usando il QNN Execution Provider di ONNX Runtime. Il pacchetto onnxruntime-qnn viene installato automaticamente al primo tentativo di esportazione.

Esempio
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="qnn")

Link to this sectionHo bisogno di un account Qualcomm o dell'accesso al cloud?#

No. L'esportazione QNN viene eseguita interamente sulla tua macchina locale usando il pacchetto onnxruntime-qnn, che include le librerie QAIRT. Non sono richiesti account Qualcomm, token API o accesso alla rete.

Link to this sectionCome si confronta l'esportazione QNN di Ultralytics con Qualcomm AI Hub?#

Qualcomm AI Hub è il servizio cloud di Qualcomm per compilare, profilare e testare modelli su dispositivi Snapdragon ospitati, e richiede un account Qualcomm. L'esportazione QNN di Ultralytics punta allo stesso runtime QNN/QAIRT (CPU Snapdragon, GPU Adreno e Hexagon NPU) ma compila il binario di contesto localmente con il QNN Execution Provider di ONNX Runtime — senza account, senza caricamenti e senza code. È il modo più veloce per passare da un modello .pt a una build pronta per Snapdragon direttamente all'interno del normale flusso di lavoro di esportazione di YOLO.

Link to this sectionSu quali piattaforme posso eseguire l'esportazione?#

onnxruntime-qnn fornisce ruote precompilate per Windows (x64 e ARM64) e Linux ARM64 (aarch64); su Linux x86-64 compila ONNX Runtime dal sorgente con --use_qnn (non viene pubblicata alcuna ruota precompilata e macOS non è un host QNN supportato). La generazione del binario di contesto viene eseguita su un host x64 — Windows x64 o Linux x86-64 — e non richiede un dispositivo Snapdragon fisico.

Link to this sectionCome eseguo YOLO su una NPU Qualcomm Snapdragon?#

Esporta con model.export(format="qnn"), copia il file yolo26n_qnn.onnx risultante sul tuo dispositivo Snapdragon ed esegui yolo predict model=yolo26n_qnn.onnx source=image.jpg (o yolo val). Ultralytics carica il binario di contesto tramite il QNN Execution Provider di ONNX Runtime ed esegue il modello sull'Hexagon NPU — vedi Deployment di modelli YOLO QNN esportati.

Link to this sectionQual è la differenza tra QNN e SNPE?#

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.

Link to this sectionPosso eseguire un modello QNN con yolo predict e yolo val?#

Sì, su un dispositivo Qualcomm Snapdragon con onnxruntime-qnn installato — YOLO("yolo26n_qnn.onnx") carica il binario di contesto tramite il QNN Execution Provider ed esegue predict/val come qualsiasi altro formato. Su un host x86 senza hardware QNN il modello non può essere eseguito, poiché il binario di contesto punta alla NPU Snapdragon.

Link to this sectionQual è l'output di un'esportazione QNN?#

L'esportazione crea un file ONNX binario di contesto autonomo (ad esempio yolo26n_qnn.onnx) con nomi delle classi, dimensioni dell'immagine, task e altri metadati del modello incorporati nelle metadata_props di ONNX.

Collaboratori

Commenti