Ultralytics YOLO27:

ONNX-Export für YOLO26-Modelle#

~43 % schnellere CPU-ONNX-Inferenz: YOLO26n im Vergleich zu YOLO11n
  • YOLO26n ist bei der CPU-ONNX-Inferenz bis zu 43 % schneller als YOLO11n (Intel Xeon CPU @ 2.00 GHz). Eine vollständige Vergleichsübersicht findest du auf der YOLO26-Modellseite.

Bei der Bereitstellung von Computer-Vision-Modellen benötigst du häufig ein Modellformat, das sowohl flexibel als auch mit mehreren Plattformen kompatibel ist.

Der Export von Ultralytics YOLO26-Modellen in das ONNX-Format vereinfacht die Bereitstellung und gewährleistet eine optimale Leistung in verschiedenen Umgebungen. In dieser Anleitung erfährst du, wie du deine YOLO26-Modelle einfach in ONNX konvertierst und ihre Skalierbarkeit sowie Effektivität in realen Anwendungen verbesserst.



Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀

ONNX und ONNX Runtime#

ONNX, kurz für „Open Neural Network Exchange“, ist ein Community-Projekt, das ursprünglich von Facebook und Microsoft entwickelt wurde. Die laufende Entwicklung von ONNX ist eine gemeinsame Anstrengung, die von verschiedenen Organisationen wie IBM, Amazon (über AWS) und Google unterstützt wird. Ziel des Projekts ist ein offenes Dateiformat zur Darstellung von Machine-Learning-Modellen, sodass diese in verschiedenen KI-Frameworks und auf unterschiedlicher Hardware eingesetzt werden können.

ONNX-Modelle ermöglichen einen nahtlosen Wechsel zwischen verschiedenen Frameworks. So kann beispielsweise ein in PyTorch trainiertes Deep-Learning-Modell in das ONNX-Format exportiert und anschließend problemlos in TensorFlow importiert werden.

ONNX model portability across deep learning frameworks

Alternativ kannst du ONNX-Modelle mit ONNX Runtime verwenden. ONNX Runtime ist ein vielseitiger, plattformübergreifender Beschleuniger für Machine-Learning-Modelle, der mit Frameworks wie PyTorch, TensorFlow, scikit-learn usw. kompatibel ist.

ONNX Runtime optimiert die Ausführung von ONNX-Modellen, indem hardwarespezifische Funktionen genutzt werden. Dadurch können die Modelle auf verschiedenen Hardwareplattformen, einschließlich CPUs, GPUs und spezialisierten Beschleunigern, effizient und mit hoher Leistung ausgeführt werden.

ONNX Runtime cross-platform inference acceleration

Ob eigenständig oder zusammen mit ONNX Runtime eingesetzt, bietet ONNX eine flexible Lösung für die Bereitstellung von Machine-Learning-Modellen und deren Kompatibilität.

Wichtige Funktionen von ONNX-Modellen#

Die Fähigkeit von ONNX, verschiedene Formate zu verarbeiten, ist auf die folgenden wichtigen Funktionen zurückzuführen:

  • Gemeinsame Modelldarstellung: ONNX definiert einen gemeinsamen Satz von Operatoren (z. B. Faltungen, Schichten usw.) und ein standardisiertes Datenformat. Bei der Konvertierung eines Modells in das ONNX-Format werden seine Architektur und Gewichte in diese gemeinsame Darstellung übersetzt. Diese Einheitlichkeit stellt sicher, dass das Modell von jedem ONNX-kompatiblen Framework verstanden werden kann.

  • Versionierung und Abwärtskompatibilität: ONNX verwaltet ein Versionierungssystem für seine Operatoren. Dadurch bleiben Modelle, die mit älteren Versionen erstellt wurden, auch bei einer Weiterentwicklung des Standards nutzbar. Die Abwärtskompatibilität ist eine entscheidende Funktion, die verhindert, dass Modelle schnell veralten.

  • Graphbasierte Modelldarstellung: ONNX stellt Modelle als Berechnungsgraphen dar. Diese graphbasierte Struktur ist eine universelle Möglichkeit, Machine-Learning-Modelle darzustellen: Knoten repräsentieren Operationen oder Berechnungen, während Kanten die zwischen ihnen fließenden Tensoren darstellen. Dieses Format lässt sich leicht an verschiedene Frameworks anpassen, die Modelle ebenfalls als Graphen darstellen.

  • Werkzeuge und Ökosystem: Rund um ONNX gibt es ein umfangreiches Ökosystem an Werkzeugen für die Konvertierung, Visualisierung und Optimierung von Modellen. Diese Werkzeuge erleichtern Entwicklern die Arbeit mit ONNX-Modellen und die nahtlose Konvertierung von Modellen zwischen verschiedenen Frameworks.

Typische Verwendung von ONNX#

Bevor wir uns mit dem Export von YOLO26-Modellen in das ONNX-Format befassen, sehen wir uns an, wo ONNX-Modelle üblicherweise eingesetzt werden.

Bereitstellung auf CPUs#

ONNX-Modelle werden aufgrund ihrer Kompatibilität mit ONNX Runtime häufig auf CPUs bereitgestellt. Diese Laufzeitumgebung ist für die Ausführung auf CPUs optimiert. Sie verbessert die Inferenzgeschwindigkeit erheblich und macht Echtzeitbereitstellungen auf CPUs möglich.

Unterstützte Bereitstellungsoptionen#

ONNX-Modelle werden zwar häufig auf CPUs eingesetzt, können aber auch auf den folgenden Plattformen bereitgestellt werden:

  • GPU-Beschleunigung: ONNX unterstützt die GPU-Beschleunigung vollständig, insbesondere NVIDIA CUDA. Für natives Training und native Inferenz auf AMD-GPUs verwendest du PyTorch ROCm; eine ONNX-Datei benötigt weiterhin eine AMD-kompatible Laufzeitumgebung.

  • Edge- und Mobilgeräte: ONNX kann auf Edge- und Mobilgeräten eingesetzt werden und eignet sich ideal für Inferenzszenarien direkt auf dem Gerät und in Echtzeit. Das Format ist leichtgewichtig und mit Edge-Hardware kompatibel. Außerdem bildet es die Grundlage für herstellerspezifische NPU-Formate wie Huawei Ascend, Qualcomm QNN für Snapdragon-Geräte und RKNN für Rockchip-NPUs.

  • Webbrowser: ONNX kann direkt in Webbrowsern ausgeführt werden und ermöglicht interaktive, dynamische KI-Anwendungen im Web.

Unterstützte Aufgaben#

Der ONNX-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Modellfamilie, die diese Köpfe enthält.

AufgabeYOLOv8YOLO11YOLO26
Erkennen
Segmentieren
Semantisch
Tiefe
Klassifizieren
Pose
OBB

YOLO26-Modelle in ONNX exportieren#

Du kannst die Modellkompatibilität und Flexibilität bei der Bereitstellung erweitern, indem du YOLO26-Modelle in das ONNX-Format konvertierst. Ultralytics YOLO26 bietet einen unkomplizierten Exportprozess, der die Leistung deines Modells auf verschiedenen Plattformen deutlich verbessern kann.

Installation#

Führe zur Installation des erforderlichen Pakets folgenden Befehl aus:

Installation
# Install the required package for YOLO26
pip install ultralytics

Ausführliche Anweisungen und bewährte Vorgehensweisen zur Installation findest du in unserem YOLO26-Installationsleitfaden. Falls bei der Installation der für YOLO26 erforderlichen Pakete Probleme auftreten, findest du in unserem Leitfaden zu häufigen Problemen Lösungen und Tipps.

Verwendung#

Bevor du mit den Nutzungsanweisungen beginnst, sieh dir unbedingt die Auswahl an YOLO26-Modellen von Ultralytics an. So kannst du das für deine Projektanforderungen am besten geeignete Modell auswählen.

Das ONNX-Format unterstützt die Modi Export, Predict und Validate. Exportiere dein Modell und lade anschließend das exportierte Modell, um Inferenz auszuführen oder seine Genauigkeit zu validieren.

Export
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo26n.onnx'

# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml")  # creates 'yolo26n_int8.onnx'
Vorhersage
from ultralytics import YOLO

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

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

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

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

Exportargumente#

Beim Export deines YOLO26-Modells in das ONNX-Format kannst du den Prozess mit verschiedenen Argumenten an deine spezifischen Anforderungen bei der Bereitstellung anpassen:

ArgumentTypStandardwertBeschreibung
formatstr'onnx'Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen festlegt.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Kann für quadratische Bilder eine Ganzzahl oder für bestimmte Abmessungen ein Tupel (height, width) sein.
quantizeint oder strNoneQuantisierungsgenauigkeit: 16 (FP16) oder 8 (statische INT8-Quantisierung mit ONNX Runtime unter Verwendung von Kalibrierungsbildern aus data, wodurch ein _int8.onnx-Modell erstellt wird); 32/nicht gesetzt ist FP32. Ein mit quantize=8 trainierter Checkpoint exportiert INT8 immer als Q/DQ-Knoten aus den darin enthaltenen Bereichen, ohne Kalibrierung und unter dem einfachen Namen .onnx. Ersetzt die veralteten Flags half/int8.
datastrNoneFür die INT8-Kalibrierung verwendetes Dataset-YAML; bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name verwendet. Wenn dies bei quantize=8 weggelassen wird, wählt Ultralytics das Standard-Kalibrierungs-Dataset für die Modellaufgabe aus; ein mit quantize=8 trainierter Checkpoint benötigt keines.
fractionfloat, int oder list1.0Kalibrierungs-Teilmenge als Verhältnis, Bildanzahl oder [train, val, test]-Verhältnisse bzw. -Anzahlen. Bei Listen mit zwei Elementen bleibt test vollständig, während 0 übersprungen wird.
dynamicboolFalseErlaubt dynamische Eingabegrößen und erhöht dadurch die Flexibilität beim Umgang mit unterschiedlichen Bildabmessungen.
simplifyboolTrueVereinfacht den Modellgraphen mit onnxslim und kann dadurch Leistung und Kompatibilität verbessern.
opsetintNoneLegt die ONNX-Opset-Version für die Kompatibilität mit verschiedenen ONNX-Parsern und Laufzeitumgebungen fest. Wenn keine Version angegeben ist, wird die neueste unterstützte Version verwendet.
nmsbool, optionalNoneWähle die Rohausgabe (None, Standard), das eingebettete NMS (True) oder den NMS-freien Kopf (False).
batchint1Legt die Batchgröße für die Inferenz des exportierten Modells oder die maximale Anzahl der Bilder fest, die das exportierte Modell im Modus predict gleichzeitig verarbeitet.
devicestrNoneGibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple-Silizium (device=mps).

Weitere Informationen zum Exportvorgang findest du auf der Ultralytics-Dokumentationsseite zum Export.

Exportierte YOLO26-ONNX-Modelle bereitstellen#

Nachdem du deine Ultralytics YOLO26-Modelle erfolgreich in das ONNX-Format exportiert hast, besteht der nächste Schritt darin, diese Modelle in verschiedenen Umgebungen bereitzustellen. Detaillierte Anleitungen zur Bereitstellung deiner ONNX-Modelle findest du in den folgenden Ressourcen:

  • Python-API-Dokumentation für ONNX Runtime: Diese Anleitung enthält wichtige Informationen zum Laden und Ausführen von ONNX-Modellen mit ONNX Runtime.

  • Bereitstellung auf Edge-Geräten: Auf dieser Dokumentationsseite findest du verschiedene Beispiele für die Bereitstellung von ONNX-Modellen auf Edge-Geräten.

  • ONNX-Tutorials auf GitHub: Eine Sammlung umfassender Tutorials zu verschiedenen Aspekten der Verwendung und Implementierung von ONNX-Modellen in unterschiedlichen Szenarien.

  • Triton Inference Server: Erfahre, wie du deine ONNX-Modelle mit NVIDIA Triton Inference Server für leistungsstarke und skalierbare Bereitstellungen einsetzt.

Zusammenfassung#

In dieser Anleitung hast du gelernt, wie du Ultralytics YOLO26-Modelle in das ONNX-Format exportierst, um ihre Interoperabilität und Leistung auf verschiedenen Plattformen zu verbessern. Außerdem hast du ONNX Runtime und die Bereitstellungsoptionen von ONNX kennengelernt.

Der ONNX-Export ist nur eines von vielen Exportformaten, die Ultralytics YOLO26 unterstützt. Dadurch kannst du deine Modelle praktisch in jeder Umgebung bereitstellen. Je nach deinen Anforderungen möchtest du möglicherweise auch andere Exportoptionen wie TensorRT für maximale GPU-Leistung oder CoreML für Apple-Geräte ausprobieren.

Weitere Informationen zur Verwendung findest du in der offiziellen ONNX-Dokumentation.

Wenn du mehr über andere Ultralytics-YOLO26-Integrationen erfahren möchtest, besuche unsere Seite mit dem Integrationsleitfaden. Dort findest du zahlreiche nützliche Ressourcen und Informationen.

FAQ#

  • Führe die folgenden Schritte aus, um deine YOLO26-Modelle mit Ultralytics in das ONNX-Format zu exportieren:

    Verwendung
    from ultralytics import YOLO
    
    # Load a YOLO26 model
    model = YOLO("yolo26n.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")  # creates 'yolo26n.onnx'
    
    # Load the exported ONNX model
    onnx_model = YOLO("yolo26n.onnx")
    
    # Run inference
    results = onnx_model("https://ultralytics.com/images/bus.jpg")

    Weitere Informationen findest du in der Exportdokumentation.

  • Die Verwendung von ONNX Runtime für die Bereitstellung von YOLO26-Modellen bietet mehrere Vorteile:

    • Plattformübergreifende Kompatibilität: ONNX Runtime unterstützt verschiedene Plattformen wie Windows, macOS und Linux und stellt sicher, dass deine Modelle in unterschiedlichen Umgebungen reibungslos ausgeführt werden.
    • Hardwarebeschleunigung: ONNX Runtime kann hardwarespezifische Optimierungen für CPUs, GPUs und dedizierte Beschleuniger nutzen und so eine leistungsstarke Inferenz ermöglichen.
    • Interoperabilität zwischen Frameworks: Modelle, die in beliebten Frameworks wie PyTorch oder TensorFlow trainiert wurden, können einfach in das ONNX-Format konvertiert und mit ONNX Runtime ausgeführt werden.
    • Leistungsoptimierung: ONNX Runtime kann im Vergleich zu nativen PyTorch-Modellen eine bis zu dreifache Beschleunigung auf CPUs bieten und eignet sich damit ideal für Bereitstellungsszenarien mit begrenzten GPU-Ressourcen.

    Weitere Informationen findest du in der ONNX-Runtime-Dokumentation.

  • In ONNX exportierte YOLO26-Modelle können auf verschiedenen Plattformen bereitgestellt werden, darunter:

    • CPUs: Nutzung von ONNX Runtime für eine optimierte CPU-Inferenz.
    • GPUs: Nutzung von NVIDIA CUDA für eine leistungsstarke GPU-Beschleunigung.
    • Edge-Geräte: Ausführung leichtgewichtiger Modelle auf Edge- und Mobilgeräten für Echtzeit-Inferenz direkt auf dem Gerät.
    • Webbrowser: Direkte Ausführung von Modellen in Webbrowsern für interaktive webbasierte Anwendungen.
    • Cloud-Dienste: Bereitstellung auf Cloud-Plattformen, die das ONNX-Format für skalierbare Inferenz unterstützen.

    Weitere Informationen findest du in unserem Leitfaden zu Optionen für die Modellbereitstellung.

  • Die Verwendung des ONNX-Formats für Ultralytics-YOLO26-Modelle bietet zahlreiche Vorteile:

    • Interoperabilität: ONNX ermöglicht die nahtlose Übertragung von Modellen zwischen verschiedenen Machine-Learning-Frameworks.
    • Leistungsoptimierung: ONNX Runtime kann die Modellleistung durch hardwarespezifische Optimierungen verbessern.
    • Flexibilität: ONNX unterstützt verschiedene Bereitstellungsumgebungen, sodass du dasselbe Modell ohne Änderungen auf unterschiedlichen Plattformen verwenden kannst.
    • Standardisierung: ONNX bietet ein standardisiertes Format, das branchenweit umfassend unterstützt wird und langfristige Kompatibilität gewährleistet.

    Weitere Informationen findest du im umfassenden Leitfaden zum Export von YOLO26-Modellen in ONNX.

  • Beim Export von YOLO26-Modellen in ONNX können häufige Probleme wie inkompatible Abhängigkeiten oder nicht unterstützte Operationen auftreten. Gehe zur Fehlerbehebung wie folgt vor:

    1. Vergewissere dich, dass die korrekten Versionen der erforderlichen Abhängigkeiten installiert sind.
    2. Prüfe in der offiziellen ONNX-Dokumentation, welche Operatoren und Funktionen unterstützt werden.
    3. Untersuche die Fehlermeldungen auf Hinweise und konsultiere den Leitfaden zu häufigen Problemen bei Ultralytics.
    4. Probiere andere Exportargumente wie simplify=True aus oder passe die Version von opset an.
    5. Bei Problemen mit dynamischen Eingabegrößen legst du beim Export dynamic=True fest.

    Wenn die Probleme weiterhin bestehen, wende dich an den Support von Ultralytics.

Kommentare