Meet YOLO26: next-gen vision AI.

Qualcomm QNN-Export für Ultralytics YOLO-Modelle

Die Bereitstellung von Computer-Vision-Modellen auf Qualcomm Snapdragon-Geräten erfordert ein Modellformat, das für die Qualcomm AI Engine Direct (QNN)-Laufzeitumgebung optimiert ist. Durch den Export von Ultralytics YOLO-Modellen in das QNN-Format kannst du beschleunigte Inferenz direkt auf dem Gerät über Snapdragon CPU, Adreno GPU und Hexagon NPU-Hardware ausführen, die in Milliarden von Mobiltelefonen, Laptops, Automobilsystemen und IoT-Geräten zu finden sind. Dieser Leitfaden führt dich durch den Prozess, wie du YOLO für Qualcomm QNN exportierst und für eine schnelle, stromsparende Inferenz auf Snapdragon-Hardware bereitstellst.

Was ist Qualcomm QNN?

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct – oft einfach QNN genannt und als Teil des Qualcomm AI Runtime (QAIRT) SDK vertrieben – ist Qualcomms Low-Level-Inferenz-Stack für Snapdragon-Prozessoren. Er bietet eine einheitliche API mit backend-spezifischen Bibliotheken, die auf die Snapdragon CPU, die Adreno GPU und den Hexagon Tensor Processor (HTP) abzielen, die dedizierte Neural Network-Verarbeitungseinheit (NPU) in modernen Snapdragon SoCs. QNN gibt Entwicklern Full-Stack-Zugriff auf diese Snapdragon AI-Beschleuniger und ist der moderne Nachfolger des älteren Snapdragon Neural Processing Engine (SNPE) SDK. Es ermöglicht On-Device-KI auf den mobilen Plattformen Snapdragon 8 Gen 2, 8 Gen 3 und 8 Elite, Snapdragon X-Laptops sowie Automobil- und XR-Produkten.

Warum in Qualcomm QNN exportieren?

Snapdragon ist die weltweit am weitesten verbreitete mobile Computerplattform. Der Export von Ultralytics YOLO in das Qualcomm QNN-Format erschließt die dedizierte KI-Hardware auf diesen Geräten:

  • Hexagon NPU-Beschleunigung: Die Ausführung von YOLO auf dem Hexagon Tensor Processor bietet einen drastisch höheren Durchsatz und geringeren Stromverbrauch als die Inferenz auf der CPU – ideal für Real-Time Inference und Always-On Computer Vision auf Snapdragon.
  • On-Device und offline: Die QNN-Inferenz läuft vollständig auf dem Snapdragon-Gerät, sodass keine Cloud-Roundtrips erforderlich sind, die Latenz niedrig bleibt und Daten das Gerät nie verlassen.
  • INT8-Effizienz: Der QNN-Export quantisiert YOLO in INT8, die native Präzision der Hexagon NPU, was die Modellgröße verringert und die Bilder pro Sekunde auf akkubetriebener Hardware maximiert.
  • Ein Format, viele Geräte: Ein einzelner Qualcomm QNN-Export zielt auf Snapdragon CPU, Adreno GPU und Hexagon NPU über die Familien Snapdragon 8 Gen 2, 8 Gen 3 und 8 Elite sowie darüber hinaus ab.
  • Produktionsreifer Qualcomm KI-Stack: QNN (Qualcomm AI Engine Direct / QAIRT) ist Qualcomms aktuelle, aktiv gewartete On-Device-KI-Laufzeitumgebung und der empfohlene Ersatz für SNPE.

QNN-Exportformat

Ultralytics kompiliert YOLO-Modelle lokal in QNN unter Verwendung des ONNX Runtime QNN Execution Provider (das per pip installierbare onnxruntime-qnn-Paket, das die QAIRT-Bibliotheken bündelt). Der Exporter wandelt dein Modell in ONNX um, quantisiert es in INT8 mit Kalibrierungsdaten (die Hexagon NPU ist ein int8-Beschleuniger) und initialisiert dann eine ONNX Runtime-Sitzung mit aktivierter Kontext-Binär-Zwischenspeicherung – dies kompiliert den quantisierten Graph in eine QNN-Kontext-Binärdatei, die in <model>_qnn.onnx eingebettet ist. Es sind kein Qualcomm-Konto, kein Cloud-Upload und kein separater SDK-Download erforderlich.

Im Gegensatz zum Cloud-basierten Qualcomm AI Hub, der Modelle auf Qualcomm-gehosteten Snapdragon-Geräten kompiliert und profiliert und ein Qualcomm-Konto erfordert, läuft der Ultralytics QNN-Export vollständig auf deiner eigenen Maschine mit einem einzigen export(format="qnn")-Aufruf. Du erhältst dasselbe QNN/QAIRT-Laufzeitziel – Snapdragon CPU, Adreno GPU und Hexagon NPU – ohne Registrierung, Upload-Limits oder Wartezeiten, und es lässt sich direkt in den Standard-YOLO-Export-Workflow integrieren.

Das exportierte _qnn_model/-Verzeichnis bündelt die Kontext-Binär-ONNX und eine metadata.yaml, die Klassennamen, Bildgröße und Aufgabe beschreibt.

Hauptmerkmale von QNN-Modellen

  • INT8-Quantisierung: Das Modell wird mittels ONNX Runtime QNN QDQ-Flow und einem Kalibrierungsdatensatz in INT8 quantisiert, passend zur nativen Präzision der Hexagon NPU für maximalen Durchsatz bei minimaler Größe. Erfahre mehr über Modellquantisierung.
  • Vollständig lokale Kompilierung: Die Kontext-Binärdatei wird vollständig auf deiner Host-Maschine generiert – kein Qualcomm-Konto, API-Token oder Cloud-Upload erforderlich.
  • Vollständige Snapdragon-Beschleunigung: Führe Inferenz auf der Hexagon NPU (HTP), Adreno GPU oder CPU über eine einzige, vereinheitlichte Laufzeitumgebung aus.
  • Große Gerätereichweite: Ziele auf die breite Palette von Snapdragon-Plattformen ab, die in Telefonen, PCs (Windows on Snapdragon), Automobil-, XR- und eingebetteten Produkten eingesetzt werden.
  • Vorkompilierte Kontext-Binärdatei: Das Ausliefern einer Kontext-Binärdatei minimiert die Graph-Kompilierung auf dem Gerät und reduziert die Latenz beim Laden des Modells auf dem Zielgerät.
  • In-sich-geschlossene Ausgabe: Das exportierte Verzeichnis enthält die Kontext-Binär-ONNX und Metadaten für eine unkomplizierte Bereitstellung.

Unterstützte Aufgaben

Der QNN-Export unterstützt den Standard-Aufgabensatz, der in jeder Modellfamilie verfügbar ist, einschließlich semantischer Segmentierung mit YOLO26.

Export nach QNN: Dein YOLO-Modell konvertieren

Exportiere ein Ultralytics YOLO-Modell in das QNN-Format für die Bereitstellung auf Snapdragon-Hardware. Die Kontext-Binärdatei wird für eine Zielarchitektur des Hexagon Tensor Processors (HTP) finalisiert, die du mit dem name-Argument auswählst – dasselbe Argument, das auch für den Chip-Ziel-Import beim RKNN-Export verwendet wird.

Unterstützte HTP-Architekturen

Übergebe die Zielarchitektur via name (z. B. name="73"). Gültige Werte:

nameHexagon HTPSnapdragon-Plattform
68v68Snapdragon 865
69v69Snapdragon 888 / 8 Gen 1
73v73Snapdragon 8 Gen 2 (Standard)
75v75Snapdragon 8 Gen 3
79v79Snapdragon 8 Elite
Plattformunterstützung

Der QNN-Export verwendet das onnxruntime-qnn-Paket. Stabile Wheels werden für Windows (x64 und ARM64) und Linux ARM64 (aarch64) veröffentlicht; ein Linux x86-64-Wheel ist im ONNX Runtime Nightly Feed verfügbar. Es gibt kein macOS-Wheel – baue auf macOS ONNX Runtime aus dem Quellcode mit --use_qnn oder führe den Export auf einer unterstützten Plattform aus. Die Generierung der QNN-Kontext-Binärdatei funktioniert auf einem x64-Host (kein Snapdragon-Gerät für den Export-Schritt erforderlich).

Installation

Um die erforderlichen Pakete zu installieren, führe Folgendes aus:

Installation
# Install the required package for YOLO
pip install ultralytics

Das onnxruntime-qnn-Paket (das den ONNX Runtime QNN Execution Provider bereitstellt und die QAIRT-Bibliotheken bündelt) wird beim ersten Export automatisch installiert. Detaillierte Anweisungen und Best Practices zum Installationsprozess findest du in unserem Ultralytics Installationsleitfaden. Falls während der Installation der erforderlichen Pakete für YOLO Schwierigkeiten auftreten, konsultiere unseren Leitfaden Häufige Probleme für Lösungen und Tipps.

Verwendung

Das QNN-Format unterstützt die Modi Export, Predict und Validate. Inferenz und Validierung laufen auf Qualcomm Snapdragon-Hardware über den QNN Execution Provider von ONNX Runtime (dasselbe onnxruntime-qnn-Paket, das auch für den Export verwendet wird). Exportiere dein Modell und lade es dann auf ein Snapdragon-Gerät, um Inferenz auszuführen oder dessen Genauigkeit zu validieren.

Export
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 (Snapdragon 865, 888/8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite)
model.export(format="qnn", name="73")  # creates 'yolo26n_qnn_model/'
Inferenz
from ultralytics import YOLO

# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Validieren
from ultralytics import YOLO

# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn_model")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Export-Argumente

ArgumentTypStandardBeschreibung
formatstr'qnn'Zielformat für das exportierte Modell, das die Kompatibilität mit der Qualcomm QNN-Laufzeitumgebung definiert.
imgszint oder tuple640Gewünschte Bildgröße für den Modelleingang. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) sein.
batchint1Legt die Batch-Größe des Exportmodells fest, die in die generierte QNN-Kontext-Binärdatei eingebettet ist.
namestr'73'Ziel-Hexagon HTP-Architekturversion: 68, 69, 73, 75 oder 79 (Snapdragon 865, 888/8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite). Die Kontext-Binärdatei wird für diese Architektur finalisiert.
int8boolTrueAktiviert die INT8-Quantisierung. Erforderlich für QNN HTP-Export – wird automatisch auf True gesetzt, wenn nicht anders angegeben.
datastr'coco8.yaml'Datensatz-Konfigurationsdatei, die für die INT8-Kalibrierung verwendet wird. Gibt die Quelle der Kalibrierungsbilder an.
fractionfloat1.0Anteil des Kalibrierungsdatensatzes, der für die INT8-Quantisierung verwendet werden soll.
devicestrNoneGibt das Gerät für den ONNX-Export-Schritt an: GPU (device=0) oder CPU (device=cpu).
Präzision

Die Hexagon NPU (HTP) ist ein int8-Beschleuniger, daher quantisiert der QNN-Export das Modell in INT8 unter Verwendung des ONNX Runtime QDQ-Quantisierungs-Flows mit Kalibrierungsbildern aus data. int8=True wird automatisch erzwungen.

Weitere Einzelheiten zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Export.

Ausgabestruktur

Nach einem erfolgreichen Export wird ein Modellverzeichnis mit folgendem Layout erstellt:

yolo26n_qnn_model/
├── yolo26n_qnn.onnx   # ONNX wrapping the precompiled QNN context binary
└── metadata.yaml      # Model metadata (classes, image size, task, etc.)

Die Datei yolo26n_qnn.onnx bettet die QNN-Kontext-Binärdatei ein und wird von ONNX Runtime mit dem QNN Execution Provider auf dem Snapdragon-Gerät geladen. Die metadata.yaml enthält Klassennamen, Bildgröße und weitere Informationen, die von der Ultralytics-Pipeline verwendet werden.

Exportierte YOLO QNN-Modelle bereitstellen

QNN-Modelle laufen auf Qualcomm Snapdragon-Hardware, was die Modellbereitstellung auf dem Gerät unkompliziert macht. Führe auf einem Snapdragon-Gerät mit installiertem onnxruntime-qnn das exportierte Modell direkt mit der Ultralytics API aus (yolo predict/yolo val, siehe Nutzung oben) – Ultralytics lädt die Kontext-Binärdatei über den ONNX Runtime QNN Execution Provider und wählt das HTP (NPU)-, GPU- oder CPU-Backend aus.

Für benutzerdefinierte Pipelines kannst du die Kontext-Binärdatei ONNX auch direkt mit ONNX Runtime laden. onnxruntime-qnn ist ein Plugin Execution Provider, registriere ihn daher zur Laufzeit:

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_model/yolo26n_qnn.onnx", sess_options=options)
outputs = session.run(None, {"images": input_tensor})  # input_tensor: float32 NCHW

Da die QNN-Kontext-Binärdatei vorkompiliert ist, lädt die Sitzung schnell, ohne den Graphen auf dem Gerät neu kompilieren zu müssen.

Empfohlener Arbeitsablauf

  1. Trainiere dein Modell mit dem Ultralytics Train Mode
  2. Exportiere in das QNN-Format mit model.export(format="qnn") auf einer unterstützten Plattform (Windows oder Linux ARM64)
  3. Stelle das exportierte _qnn_model/-Verzeichnis auf deinem Snapdragon-Gerät bereit
  4. Führe Inferenz mit ONNX Runtime und dem QNN Execution Provider aus und wähle das HTP-, GPU- oder CPU-Backend

Anwendungen aus der Praxis

YOLO-Modelle, die auf Qualcomm Snapdragon-Hardware laufen, eignen sich hervorragend für eine breite Palette von Edge AI-Anwendungen:

  • Smartphones: Echtzeit-Objekterkennung und Szenenverständnis in Kamera- und Foto-Apps mit NPU-Beschleunigung.
  • Windows on Snapdragon: On-Device Computer Vision in Copilot+ PCs ohne Auslagerung in die Cloud.
  • Automobil: Fahrerüberwachung, Insassenerkennung und ADAS-Funktionen auf Snapdragon Digital Chassis-Plattformen.
  • XR und Wearables: Stromsparende Wahrnehmung mit geringer Latenz für AR/VR-Headsets und smarte Brillen.
  • IoT und Robotik: Effiziente Visions-Inferenz auf Snapdragon-basierten Kameras, Drohnen und eingebetteten Systemen.

Zusammenfassung

In diesem Leitfaden hast du gelernt, wie man Ultralytics YOLO-Modelle lokal mit dem ONNX Runtime QNN Execution Provider in das Qualcomm QNN-Format exportiert. Die Export-Pipeline konvertiert dein Modell in ONNX und kompiliert es dann auf deiner Host-Maschine in eine QNN-Kontext-Binärdatei – ohne Qualcomm-Konto oder Cloud – und erzeugt eine _qnn.onnx, die über die QNN/QAIRT-Laufzeitumgebung für Snapdragon CPU, Adreno GPU und Hexagon NPU-Hardware optimiert ist.

Die Kombination aus Ultralytics YOLO und Qualcomms On-Device-KI-Stack bietet eine effektive Lösung für die Ausführung fortschrittlicher Computer Vision-Workloads im gesamten Snapdragon-Ökosystem.

Für weitere On-Device- und mobile Bereitstellungsziele siehe die entsprechenden Export-Leitfäden zu ONNX, CoreML, NCNN, TFLite, ExecuTorch, RKNN, Sony IMX500 und TensorRT. Um Formate vor der Auslieferung zu vergleichen, verwende den Benchmark-Modus. Für die vollständige Liste der Formate und Optionen besuche die Dokumentation zum Export-Modus und die Integrations-Übersichtsseite.

FAQ

Wie exportiere ich mein Ultralytics YOLO-Modell in das QNN-Format?

Du kannst dein Modell mit der export()-Methode in Python oder über die CLI mit format="qnn" exportieren. Der Export erstellt zuerst ein ONNX-Modell und kompiliert es dann lokal mithilfe des ONNX Runtime QNN Execution Provider in eine QNN-Kontext-Binärdatei. Das onnxruntime-qnn-Paket wird beim ersten Export automatisch installiert.

Beispiel
from ultralytics import YOLO

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

Benötige ich ein Qualcomm-Konto oder Cloud-Zugang?

Nein. Der QNN-Export läuft vollständig lokal auf deiner Maschine mit dem onnxruntime-qnn-Paket, das die QAIRT-Bibliotheken bündelt. Es sind kein Qualcomm-Konto, kein API-Token und kein Netzwerkzugriff erforderlich.

Wie schneidet der Ultralytics QNN-Export im Vergleich zum Qualcomm AI Hub ab?

Qualcomm AI Hub ist Qualcomms Cloud-Dienst zum Kompilieren, Profilieren und Benchmarking von Modellen auf gehosteten Snapdragon-Geräten und erfordert ein Qualcomm-Konto. Der Ultralytics QNN-Export zielt auf dieselbe QNN/QAIRT-Laufzeitumgebung ab (Snapdragon CPU, Adreno GPU und Hexagon NPU), kompiliert die Kontext-Binärdatei jedoch lokal mit dem ONNX Runtime QNN Execution Provider – kein Konto, kein Upload und keine Warteschlange. Es ist der schnellste Weg von einem .pt-Modell zu einem Snapdragon-fähigen Build, direkt innerhalb des Standard-YOLO-Export-Workflows.

Auf welchen Plattformen kann ich exportieren?

onnxruntime-qnn bietet stabile Wheels für Windows (x64 und ARM64) und Linux ARM64 (aarch64) sowie ein Linux x86-64-Wheel im ONNX Runtime Nightly Feed. macOS hat kein Wheel – baue ONNX Runtime aus dem Quellcode mit --use_qnn oder exportiere auf einer unterstützten Plattform. Die Generierung der Kontext-Binärdatei läuft auf einem x64-Host und erfordert kein physisches Snapdragon-Gerät.

Wie führe ich YOLO auf einer Qualcomm Snapdragon NPU aus?

Exportiere mit model.export(format="qnn"), kopiere das resultierende yolo26n_qnn_model-Verzeichnis auf dein Snapdragon-Gerät und führe yolo predict model=yolo26n_qnn_model source=image.jpg (oder yolo val) aus. Ultralytics lädt die Kontext-Binärdatei über den ONNX Runtime QNN Execution Provider und führt sie auf der Hexagon NPU aus – siehe Exportierte YOLO QNN-Modelle bereitstellen.

Was ist der Unterschied zwischen QNN und SNPE?

QNN (Qualcomm AI Engine Direct, Teil des QAIRT SDK) ist Qualcomms aktueller Inferenz-Stack und der empfohlene Ersatz für das ältere Snapdragon Neural Processing Engine (SNPE) SDK. Neue Bereitstellungen sollten auf QNN abzielen.

Kann ich ein QNN-Modell mit yolo predict und yolo val ausführen?

Ja, auf einem Qualcomm Snapdragon-Gerät mit installiertem onnxruntime-qnnYOLO("yolo26n_qnn_model") lädt die Kontext-Binärdatei über den QNN Execution Provider und führt predict/val wie jedes andere Format aus. Auf einem x86-Host ohne QNN-Hardware kann das Modell nicht ausgeführt werden, da die Kontext-Binärdatei auf die Snapdragon NPU abzielt.

Was ist das Ergebnis eines QNN-Exports?

Der Export erstellt ein Verzeichnis (z. B. yolo26n_qnn_model/), das die Kontext-Binär-ONNX (yolo26n_qnn.onnx) und eine metadata.yaml mit Klassennamen, Bildgröße und Aufgabeninformationen enthält.

Contributors

Kommentare