Link to this sectionQualcomm QNN-Export für Ultralytics YOLO-Modelle#
Die Bereitstellung von Computer-Vision-Modellen auf Qualcomm Snapdragon-Geräten erfordert ein Modellformat, das auf die Qualcomm AI Engine Direct (QNN) Runtime abgestimmt ist. Durch den Export von Ultralytics YOLO-Modellen in das QNN-Format kannst du beschleunigte On-Device-Inferenz auf Snapdragon CPU-, Adreno GPU- und Hexagon NPU-Hardware ausführen, die in Milliarden von Mobiltelefonen, Laptops, Automobilsystemen und IoT-Geräten zu finden ist. Dieser Leitfaden führt dich durch den Export von YOLO zu Qualcomm QNN und die Bereitstellung für eine schnelle, stromsparende Inferenz auf Snapdragon-Hardware.
Das offizielle Ultralytics Flutter plugin führt QNN-Exporte direkt auf der Hexagon NPU aus – inklusive Echtzeit-Kamera-Inferenz, Einzelbildvorhersage und automatischem Modelldownload für alle sechs YOLO26-Aufgaben. Für iOS-Deployments beachte das Ultralytics YOLO iOS SDK und die CoreML integration.
Link to this sectionWas ist Qualcomm QNN?#
Qualcomm AI Engine Direct – allgemein als QNN bezeichnet und als Teil des Qualcomm AI Runtime (QAIRT) SDK vertrieben – ist Qualcomms Low-Level-Inference-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 bietet Entwicklern Full-Stack-Zugriff auf diese Snapdragon-KI-Beschleuniger und ist der moderne Nachfolger des älteren Snapdragon Neural Processing Engine (SNPE) SDK. Er treibt On-Device-KI auf den Snapdragon 8 Gen 2, 8 Gen 3 und 8 Elite Mobilplattformen, Snapdragon X Laptops sowie Automobil- und XR-Produkten an.
Link to this sectionWarum in Qualcomm QNN exportieren?#
Snapdragon ist die am weitesten verbreitete mobile Computerplattform der Welt. Der Export von Ultralytics YOLO in das Qualcomm QNN-Format erschließt die dedizierte KI-Hardware auf diesen Geräten:
- Hexagon NPU-Beschleunigung: Das Ausführen von YOLO auf dem Hexagon Tensor Processor liefert einen deutlich höheren Durchsatz und geringeren Stromverbrauch als CPU-Inferenz – ideal für Real-time Inferenz und Always-on Computer Vision auf Snapdragon.
- On-Device und offline: 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.
- Quantisierte Effizienz: QNN-Export quantisiert YOLO auf INT8-Gewichte mit 16-Bit-Aktivierungen, dem bevorzugten Genauigkeits-/Leistungsverhältnis der Hexagon NPU, was die Modellgröße verringert und die Bilder pro Sekunde auf batteriebetriebener 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, 8 Elite und darüber hinaus ab.
- Produktionsbereiter Qualcomm KI-Stack: QNN (Qualcomm AI Engine Direct / QAIRT) ist Qualcomms aktuelle, aktiv gepflegte On-Device-KI-Runtime und der empfohlene Ersatz für SNPE.
Link to this sectionQNN-Exportformat#
Ultralytics kompiliert YOLO-Modelle lokal zu QNN unter Verwendung des ONNX Runtime QNN Execution Provider (das via pip installierbare onnxruntime-qnn Paket, das die QAIRT-Bibliotheken bündelt). Der Exporter konvertiert dein Modell zu ONNX, quantisiert es mit Kalibrierungsdaten auf 16-Bit-Aktivierungen und INT8-Gewichte (das empfohlene Gleichgewicht für die Hexagon NPU) und initialisiert dann eine ONNX Runtime-Sitzung mit aktiviertem Context-Binary-Caching – dies kompiliert den quantisierten Graphen in eine QNN context binary, die in <model>_qnn.onnx eingebettet ist. Es ist kein Qualcomm-Konto, kein Cloud-Upload und kein separater SDK-Download erforderlich.
Im Gegensatz zum Cloud-basierten Qualcomm AI Hub, das Modelle auf von Qualcomm gehosteten Snapdragon-Geräten kompiliert und profiliert und ein Qualcomm-Konto erfordert, läuft der Ultralytics QNN-Export vollständig auf deinem eigenen Rechner mit einem einzigen export(format="qnn")-Aufruf. Du erhältst dasselbe QNN/QAIRT-Runtime-Ziel – Snapdragon CPU, Adreno GPU und Hexagon NPU – ohne Anmeldung, Upload-Limits oder Warteschlangen, und es fügt sich direkt in den standardmäßigen YOLO-Export-Workflow ein.
Die exportierte *_qnn.onnx-Datei ist in sich geschlossen: Sie bettet die QNN context binary sowie ONNX-Metadaten wie Klassennamen, Bildgröße und Aufgabe ein.
Link to this sectionHauptmerkmale von QNN-Modellen#
- Quantisierung: Das Modell wird mit dem ONNX Runtime QNN QDQ-Flow und einem Kalibrierungsdatensatz auf 16-Bit-Aktivierungen und INT8-Gewichte quantisiert, dem empfohlenen Genauigkeits-/Leistungsverhältnis der Hexagon NPU. Erfahre mehr über Model Quantization.
- Vollständig lokale Kompilierung: Die context binary wird vollständig auf deinem Host-Rechner 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 Runtime aus.
- Breite Gerätereichweite: Ziele auf die breite Palette von Snapdragon-Plattformen ab, die in Telefonen, PCs (Windows on Snapdragon), Automobilen, XR und eingebetteten Produkten eingesetzt werden.
- Vorkompilierte Context Binary: Das Ausliefern einer context binary minimiert die Graphenkompilierung auf dem Gerät und reduziert die Modellladelatenz auf dem Zielsystem.
- In sich geschlossene Ausgabe: Die exportierte ONNX-Datei enthält die vorkompilierte QNN context binary und Metadaten für eine unkomplizierte Bereitstellung.
Link to this sectionGemessene Leistung#
End-to-End-Einzelbild-Inferenz für die offiziellen YOLO26n-Modelle auf einem Xiaomi 17 Smartphone mit dem Qualcomm Snapdragon 8 Elite Gen 5 (SM8850) – Qualcomm Oryon CPU, Adreno GPU und Hexagon NPU (HTP v81). Jede Zelle zeigt die Gesamtzeit (Vorverarbeitung + Inferenz + Nachverarbeitung, ohne Annotation) mit der Aufschlüsselung pro Phase darunter. CPU und GPU führen INT8 TFLite via LiteRT aus; die NPU nutzt QNN-Kontext-Binärdateien (INT8-Gewichte, 16-Bit-Aktivierungen).
| Modell | Aufgabe | Größe (Pixel) | CPU INT8 TFLite (ms) | GPU Adreno INT8 TFLite (ms) | NPU Hexagon QNN A16W8 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 53.3 3.6 / 47.4 / 2.4 | 17.2 3.6 / 9.1 / 4.5 | 11.3 3.5 / 5.6 / 2.2 |
| YOLO26n-seg | Segment | 640 | 76.0 3.6 / 64.7 / 7.7 | 23.9 3.6 / 11.8 / 8.6 | 21.3 3.5 / 7.9 / 10.0 |
| YOLO26n-sem | Semantisch | 1024 | 66.6 3.6 / 46.3 / 16.8 | 37.7 3.6 / 17.4 / 16.7 | 49.11 8.8 / 20.8 / 19.5 |
| YOLO26n-cls | Classify | 224 | 5.2 0.8 / 4.0 / 0.5 | 4.5 1.6 / 2.2 / 0.7 | 2.4 1.1 / 0.6 / 0.7 |
| YOLO26n-pose | Pose | 640 | 57.7 3.5 / 52.4 / 1.8 | 15.2 3.6 / 9.7 / 1.9 | 10.8 3.5 / 5.6 / 1.8 |
| YOLO26n-obb | OBB | 1024 | 50.3 3.6 / 45.4 / 1.3 | 13.9 3.8 / 8.2 / 1.8 | 21.0 8.8 / 10.9 / 1.3 |
- Geschwindigkeitswerte sind Burst-Latenzen für Einzelbilder – der Mittelwert aus 15 Durchläufen nach 3 Aufwärmdurchläufen mit bus.jpg, gemessen mit dem On-Device-Benchmark-Tool des Flutter-Plugins auf einem thermisch stabilen Gerät. Die anhaltenden Echtzeit-Kamera-Framezeiten liegen höher (aufgrund von Frame-Capture-Letterboxing plus thermischem Einschwingen); verwende die On-Screen-Aufschlüsselung (Vor/Inferenz/Nach) der App für Steady-State-Werte auf deinem Gerät.
- 1 Semantic QNN nutzt die In-Graph ArgMax Class-Map-Ausgabe dieser Version, welche die schwankende Logit-Dekodierung von 123-1065 ms durch stabile ~49 ms ersetzt hat; die GPU bleibt bei Semantic mit 1024px etwas schneller.
Link to this sectionUnterstützte Aufgaben#
QNN-Export unterstützt den Standard-Aufgabensatz, der in jeder Modellfamilie verfügbar ist, einschließlich YOLO26 semantischer Segmentierung.
| Aufgabe | Unterstützt |
|---|---|
| Object Detection | ✅ |
| Instance Segmentation | ✅ |
| Semantic Segmentation | ✅ |
| Pose Estimation | ✅ |
| OBB Detection | ✅ |
| Classification | ✅ |
Link to this sectionExport zu QNN: Konvertierung deines YOLO-Modells#
Exportiere ein Ultralytics YOLO-Modell in das QNN-Format zur Bereitstellung auf Snapdragon-Hardware. Die context binary wird für eine Ziel-Hexagon Tensor Processor (HTP)-Architektur finalisiert, die du mit dem name-Argument auswählst – dasselbe Argument, das auch für den Zielchip beim RKNN export verwendet wird.
Link to this sectionUnterstützte HTP-Architekturen#
Übergebe die Zielarchitektur via name (z.B. name="73"). Gültige Werte:
name | Hexagon HTP | Snapdragon-Plattform |
|---|---|---|
68 | v68 | Snapdragon 888 |
69 | v69 | Snapdragon 8 Gen 1 / 8+ Gen 1 |
73 | v73 | Snapdragon 8 Gen 2, X Elite (Standard) |
75 | v75 | Snapdragon 8 Gen 3 |
79 | v79 | Snapdragon 8 Elite |
81 | v81 | Snapdragon 8 Elite Gen 5 |
Der QNN-Export verwendet das onnxruntime-qnn Paket. Vorgefertigte Wheels werden für Windows (x64 und ARM64) und Linux ARM64 (aarch64) veröffentlicht; baue auf Linux x86-64 ONNX Runtime aus dem Quellcode mit --use_qnn (kein vorgefertigtes Wheel wird veröffentlicht, und macOS ist kein unterstützter QNN-Host). Die Generierung der QNN context binary läuft auf einem x64-Host – Windows x64 oder Linux x86-64 – und erfordert kein Snapdragon-Gerät für den Export-Schritt.
Link to this sectionInstallation#
Um die erforderlichen Pakete zu installieren, führe aus:
# Install the required package for YOLO
pip install ultralyticsDas onnxruntime-qnn Paket (das den ONNX Runtime QNN Execution Provider bereitstellt und die QAIRT-Bibliotheken bündelt) wird beim ersten Export automatisch installiert. Für detaillierte Anweisungen und Best Practices bezüglich des Installationsprozesses, schau in unserem Ultralytics Installation Guide nach. Wenn du bei der Installation der erforderlichen Pakete für YOLO auf Schwierigkeiten stößt, konsultiere unseren Common Issues guide für Lösungen und Tipps.
Link to this sectionVerwendung#
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 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.
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'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")Link to this sectionExport-Argumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'qnn' | Zielformat für das exportierte Modell, das die Kompatibilität mit der Qualcomm QNN Runtime definiert. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für den Modelleingang. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) sein. |
batch | int | 1 | Gibt die Batch-Größe des exportierten Modells an, die in der generierten QNN context binary fest verankert ist. |
name | str | '73' | Ziel-Hexagon HTP-Architekturversion: 68, 69, 73, 75, 79 oder 81 (Snapdragon 888, 8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite, 8 Elite Gen 5). Die context binary wird für diese Architektur finalisiert. |
int8 | bool | True | Aktiviert INT8-Quantisierung. Erforderlich für QNN HTP-Export – wird automatisch auf True gesetzt, wenn nicht anders angegeben. |
data | str | 'coco8.yaml' | Datensatz-Konfigurationsdatei für die INT8-Kalibrierung. Gibt die Quelle der Kalibrierungsbilder an. |
fraction | float | 1.0 | Anteil des Kalibrierungsdatensatzes, der für die INT8-Quantisierung verwendet werden soll. |
device | str | None | Gibt das Gerät für den ONNX-Export-Schritt an: GPU (device=0) oder CPU (device=cpu). |
Der QNN-Export quantisiert das Modell auf 16-Bit-Aktivierungen und INT8-Gewichte – das empfohlene Genauigkeits-/Leistungsverhältnis für die Hexagon NPU – unter Verwendung des ONNX Runtime QDQ quantization-Flows mit Kalibrierungsbildern aus data. int8=True wird automatisch erzwungen.
Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.
Link to this sectionAusgabestruktur#
Nach einem erfolgreichen Export wird eine in sich geschlossene ONNX-Datei erstellt:
yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary and metadata
Die yolo26n_qnn.onnx-Datei bettet die QNN context binary ein und wird von ONNX Runtime mit dem QNN Execution Provider auf dem Snapdragon-Gerät geladen. Sie führt zudem Modell-Metadaten wie Klassennamen, Bildgröße und Aufgabe in den ONNX metadata_props mit sich.
Link to this sectionBereitstellung exportierter YOLO QNN-Modelle#
QNN-Modelle laufen auf Qualcomm Snapdragon-Hardware, was die Model Deployment 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 (yolo predict/yolo val, siehe Usage oben) aus – Ultralytics lädt die context binary ü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 context binary auch direkt mit ONNX Runtime ONNX laden. onnxruntime-qnn ist ein Plugin Execution Provider, also registriere ihn 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.onnx", sess_options=options)
outputs = session.run(None, {"images": input_tensor}) # input_tensor: float32 NCHWDa die QNN context binary vorkompiliert ist, lädt die Sitzung schnell, ohne den Graphen auf dem Gerät neu kompilieren zu müssen.
Link to this sectionEmpfohlener Arbeitsablauf#
- Trainiere dein Modell mit dem Ultralytics Train-Modus
- Exportiere in das QNN-Format mit
model.export(format="qnn")auf einer unterstützten Plattform (Windows x64 oder ARM64, oder Linux ARM64) - Stelle die exportierte
*_qnn.onnx-Datei auf deinem Snapdragon-Gerät bereit - Führe Inferenz mit ONNX Runtime und dem QNN Execution Provider aus und wähle das HTP-, GPU- oder CPU-Backend
Link to this sectionAnwendungen in der Praxis#
YOLO-Modelle, die auf Qualcomm Snapdragon-Hardware laufen, eignen sich hervorragend für eine Vielzahl von Edge AI-Anwendungen:
- Smartphones: Echtzeit-Object Detection und Szenenverständnis in Kamera- und Foto-Apps mit NPU-Beschleunigung.
- Windows on Snapdragon: On-Device Computer Vision in Copilot+ PCs, ohne auf die Cloud auslagern zu müssen.
- Automobil: Fahrermonitoring, Insassenerkennung und ADAS-Funktionen auf Snapdragon Digital Chassis-Plattformen.
- XR und Wearables: Stromsparende Wahrnehmung mit geringer Latenz für AR/VR-Headsets und intelligente Brillen.
- IoT und Robotik: Effiziente Vision-Inferenz auf Snapdragon-betriebenen Kameras, Drohnen und eingebetteten Systemen.
Link to this sectionZusammenfassung#
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 zu ONNX und kompiliert es dann auf deinem Host-Rechner in eine QNN context binary – kein Qualcomm-Konto oder Cloud erforderlich – wodurch eine *_qnn.onnx-Datei entsteht, die für Snapdragon CPU-, Adreno GPU- und Hexagon NPU-Hardware über die QNN/QAIRT-Runtime optimiert ist.
Die Kombination aus Ultralytics YOLO und Qualcomms On-Device-KI-Stack bietet eine effektive Lösung für das Ausführen fortschrittlicher Computer Vision-Workloads im gesamten breiten Snapdragon-Ökosystem.
Für andere 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. Die vollständige Liste der Formate und Optionen findest du in der Dokumentation zum Export-Modus und auf der Integrations-Übersichtsseite.
Link to this sectionFAQ#
Link to this sectionWie 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 in eine QNN context binary unter Verwendung des ONNX Runtime QNN Execution Provider. Das onnxruntime-qnn Paket wird beim ersten Export automatisch installiert.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="qnn")Link to this sectionBenötige ich ein Qualcomm-Konto oder Cloud-Zugang?#
Nein. Der QNN-Export läuft vollständig auf deinem lokalen Rechner unter Verwendung des onnxruntime-qnn Pakets, das die QAIRT-Bibliotheken bündelt. Es ist kein Qualcomm-Konto, API-Token oder Netzwerkzugriff erforderlich.
Link to this sectionWie ist der Ultralytics QNN-Export im Vergleich zum Qualcomm AI Hub?#
Der Qualcomm AI Hub ist Qualcomms Cloud-Dienst zum Kompilieren, Profilieren und Benchmarking von Modellen auf gehosteten Snapdragon-Geräten, wofür ein Qualcomm-Konto erforderlich ist. Der Ultralytics QNN-Export zielt auf dieselbe QNN/QAIRT-Runtime (Snapdragon CPU, Adreno GPU und Hexagon NPU) ab, kompiliert die context binary jedoch lokal mit dem ONNX Runtime QNN Execution Provider – kein Konto, kein Upload und keine Warteschlange. Es ist der schnellste Weg, um direkt im Standard-YOLO-Export-Workflow von einem .pt-Modell zu einem Snapdragon-bereiten Build zu gelangen.
Link to this sectionAuf welchen Plattformen kann ich exportieren?#
onnxruntime-qnn stellt vorgefertigte Wheels für Windows (x64 und ARM64) und Linux ARM64 (aarch64) bereit; baue auf Linux x86-64 ONNX Runtime aus dem Quellcode mit --use_qnn (kein vorgefertigtes Wheel wird veröffentlicht, und macOS ist kein unterstützter QNN-Host). Die Generierung der context binary läuft auf einem x64-Host – Windows x64 oder Linux x86-64 – und erfordert kein physisches Snapdragon-Gerät.
Link to this sectionWie führe ich YOLO auf einer Qualcomm Snapdragon NPU aus?#
Exportiere mit model.export(format="qnn"), kopiere die resultierende yolo26n_qnn.onnx-Datei auf dein Snapdragon-Gerät und führe yolo predict model=yolo26n_qnn.onnx source=image.jpg (oder yolo val) aus. Ultralytics lädt die context binary über den ONNX Runtime QNN Execution Provider und führt sie auf der Hexagon NPU aus – siehe Bereitstellung exportierter YOLO QNN-Modelle.
Link to this sectionWas 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.
Link to this sectionKann ich ein QNN-Modell mit yolo predict und yolo val ausführen?#
Ja, auf einem Qualcomm Snapdragon-Gerät mit installiertem onnxruntime-qnn – YOLO("yolo26n_qnn.onnx") lädt die context binary ü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 context binary auf die Snapdragon NPU abzielt.
Link to this sectionWas ist die Ausgabe eines QNN-Exports?#
Der Export erstellt eine in sich geschlossene ONNX-Datei mit context binary (z. B. yolo26n_qnn.onnx), wobei Klassennamen, Bildgröße, Aufgabe und andere Modell-Metadaten in den ONNX metadata_props eingebettet sind.