YOLO Vision 2026:

ONNX-Export für YOLO26-Modelle#

~43 % schnellere Inferenz.
  • Der Export des Ultralytics YOLO26-Modells nach ONNX kann einen bis zu 43 % schnelleren Inferenzdurchsatz bieten und ermöglicht so eine schnellere und effizientere Bereitstellung.

Wenn du computer vision-Modelle bereitstellst, benötigst du oft ein Modellformat, das sowohl flexibel als auch mit mehreren Plattformen kompatibel ist.

Das Exportieren von Ultralytics YOLO26-Modellen in das ONNX-Format optimiert die Bereitstellung und sorgt für optimale Leistung in verschiedenen Umgebungen. Diese Anleitung zeigt dir, wie du deine YOLO26-Modelle einfach nach ONNX konvertierst und ihre Skalierbarkeit sowie Effektivität in realen Anwendungen steigerst.



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

ONNX und ONNX Runtime#

ONNX, was für Open Neural Network Exchange steht, ist ein Gemeinschaftsprojekt, das anfangs von Facebook und Microsoft entwickelt wurde. Die fortlaufende 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 es, ein offenes Dateiformat zu schaffen, das machine learning-Modelle so darstellt, dass sie über verschiedene KI-Frameworks und -Hardware hinweg verwendet werden können.

ONNX-Modelle können verwendet werden, um nahtlos zwischen verschiedenen Frameworks zu wechseln. Beispielsweise kann 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 können ONNX-Modelle mit ONNX Runtime verwendet werden. 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 durch die Nutzung hardwarespezifischer Funktionen. Diese Optimierung ermöglicht es, dass Modelle effizient und mit hoher Leistung auf verschiedenen Hardwareplattformen ausgeführt werden können, einschließlich CPUs, GPUs und spezialisierten Beschleunigern.

ONNX Runtime cross-platform inference acceleration

Ob unabhängig oder zusammen mit ONNX Runtime verwendet, bietet ONNX eine flexible Lösung für die model deployment und Kompatibilität im Bereich des Machine Learnings.

Hauptmerkmale von ONNX-Modellen#

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

  • Gemeinsame Modellrepräsentation: ONNX definiert eine gemeinsame Menge von Operatoren (wie Faltungen, Schichten usw.) und ein Standarddatenformat. Wenn ein Modell in das ONNX-Format konvertiert wird, werden seine Architektur und Gewichte in diese gemeinsame Repräsentation übersetzt. Diese Einheitlichkeit stellt sicher, dass das Modell von jedem Framework verstanden werden kann, das ONNX unterstützt.

  • Versionierung und Abwärtskompatibilität: ONNX unterhält ein Versionierungssystem für seine Operatoren. Dies stellt sicher, dass Modelle, die in älteren Versionen erstellt wurden, auch bei der Weiterentwicklung des Standards weiterhin verwendet werden können. Abwärtskompatibilität ist eine entscheidende Eigenschaft, die verhindert, dass Modelle schnell obsolet werden.

  • Graph-basierte Modellrepräsentation: ONNX stellt Modelle als Berechnungsgraphen dar. Diese graphbasierte Struktur ist eine universelle Art der Darstellung von Machine-Learning-Modellen, bei der Knoten Operationen oder Berechnungen darstellen und Kanten die zwischen ihnen fließenden Tensoren repräsentieren. Dieses Format ist leicht an verschiedene Frameworks anpassbar, die Modelle ebenfalls als Graphen darstellen.

  • Werkzeuge und Ökosystem: Es gibt ein reichhaltiges Ökosystem an Werkzeugen rund um ONNX, die bei der Modellkonvertierung, Visualisierung und Optimierung unterstützen. Diese Tools machen es für Entwickler einfacher, mit ONNX-Modellen zu arbeiten und Modelle nahtlos zwischen verschiedenen Frameworks zu konvertieren.

Häufige Verwendung von ONNX#

Bevor wir uns damit befassen, wie man YOLO26-Modelle in das ONNX-Format exportiert, werfen wir einen Blick darauf, wo ONNX-Modelle üblicherweise eingesetzt werden.

CPU-Bereitstellung#

ONNX-Modelle werden häufig auf CPUs bereitgestellt, da sie mit ONNX Runtime kompatibel sind. Diese Laufzeitumgebung ist für die CPU-Ausführung optimiert. Sie verbessert die Inferenzgeschwindigkeit erheblich und macht CPU-Bereitstellungen in Echtzeit praktikabel.

Unterstützte Bereitstellungsoptionen#

Obwohl ONNX-Modelle häufig auf CPUs verwendet werden, können sie auch auf den folgenden Plattformen bereitgestellt werden:

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

  • Edge- und Mobilgeräte: ONNX lässt sich auf Edge- und Mobilgeräte ausdehnen und eignet sich perfekt für Szenarien mit On-Device- und Echtzeit-Inferenz. Es ist leichtgewichtig, mit Edge-Hardware kompatibel und dient als Basis für Hersteller-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 treibt interaktive sowie dynamische webbasierte KI-Anwendungen an.

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 Familie, die diese Heads enthält.

AufgabeYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Exportieren von YOLO26-Modellen nach ONNX#

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

Installation#

Um das erforderliche Paket zu installieren, führe Folgendes aus:

Installation
# Install the required package for YOLO26
pip install ultralytics

Detaillierte Anweisungen und Best Practices zum Installationsprozess findest du in unserer YOLO26-Installationsanleitung. Solltest du bei der Installation der erforderlichen Pakete für YOLO26 auf Schwierigkeiten stoßen, ziehe unsere Anleitung für häufige Probleme für Lösungen und Tipps heran.

Verwendung#

Bevor du in die Nutzungshinweise eintauchst, solltest du dir unbedingt die Reihe der von Ultralytics angebotenen YOLO26-Modelle ansehen. Dies hilft dir dabei, das am besten geeignete Modell für deine Projektanforderungen auszuwählen.

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

Exportieren
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'
Vorhersagen
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")

Export-Argumente#

Beim Export deines YOLO26-Modells in das ONNX-Format kannst du den Prozess mit verschiedenen Argumenten anpassen, um ihn für deine spezifischen Bereitstellungsanforderungen zu optimieren:

ArgumentTypStandardBeschreibung
formatstr'onnx'Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen definiert.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein.
quantizeint oder strNoneQuantisierungspräzision: 16 (FP16) oder 8 (INT8 statische Quantisierung mit ONNX Runtime unter Verwendung von Kalibrierungsbildern aus data, wodurch ein _int8.onnx-Modell erzeugt wird); 32/nicht gesetzt ist FP32. Ersetzt die veralteten half/int8-Flags.
datastrNoneDatensatz-YAML, die für die INT8-Kalibrierung verwendet wird; für die Klassifizierung wird stattdessen ein Datensatzverzeichnis oder ein integrierter Datensatzname verwendet. Wenn dies bei quantize=8 weggelassen wird, wählt Ultralytics den Standard-Kalibrierungsdatensatz für die Modellaufgabe aus.
fractionfloat, int oder list1.0Kalibrierungs-Teilmenge als Verhältnis, Bildanzahl oder [train, val]-Verhältnisse/-Anzahlen; eine Liste schränkt train oder val ein, während test vollständig bleibt.
dynamicboolFalseErmöglicht dynamische Eingabegrößen, was die Flexibilität bei der Verarbeitung variierender Bilddimensionen erhöht.
simplifyboolTrueVereinfacht den Modellgraphen mit onnxslim, wodurch möglicherweise Leistung und Kompatibilität verbessert werden.
opsetintNoneGibt die ONNX-Opset-Version für die Kompatibilität mit verschiedenen ONNX-Parsern und Laufzeitumgebungen an. Wenn nicht festgelegt, wird die neueste unterstützte Version verwendet.
nmsboolFalseFügt Non-Maximum Suppression (NMS) hinzu, was für eine genaue und effiziente Detektions-Nachbearbeitung unerlässlich ist.
batchint1Legt die Batch-Inferenzgröße des exportierten Modells fest oder die maximale Anzahl an Bildern, 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 Silicon (device=mps).

Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.

Bereitstellung exportierter YOLO26-ONNX-Modelle#

Sobald du deine Ultralytics YOLO26-Modelle erfolgreich in das ONNX-Format exportiert hast, ist der nächste Schritt die Bereitstellung dieser Modelle in verschiedenen Umgebungen. Für detaillierte Anweisungen zur Bereitstellung deiner ONNX-Modelle schau dir die folgenden Ressourcen an:

  • ONNX Runtime Python API Documentation: Diese Anleitung bietet wichtige Informationen zum Laden und Ausführen von ONNX-Modellen mit ONNX Runtime.

  • Deploying on Edge Devices: Sieh dir diese Dokumentationsseite an, um verschiedene Beispiele für die Bereitstellung von ONNX-Modellen auf Edge-Geräten zu erhalten.

  • ONNX Tutorials on GitHub: Eine Sammlung umfassender Tutorials, die verschiedene Aspekte der Verwendung und Implementierung von ONNX-Modellen in unterschiedlichen Szenarien abdecken.

  • Triton Inference Server: Erfahre, wie du deine ONNX-Modelle mit dem Triton Inference Server von NVIDIA für leistungsstarke, skaliert einsetzbare Bereitstellungen nutzt.

Zusammenfassung#

In diesem Leitfaden hast du gelernt, wie du Ultralytics YOLO26-Modelle in das ONNX-Format exportierst, um ihre Interoperabilität und Leistung auf verschiedenen Plattformen zu erhöhen. Du wurdest außerdem in die ONNX Runtime und die ONNX-Bereitstellungsoptionen eingeführt.

Der ONNX-Export ist nur eines von vielen export formats, die von Ultralytics YOLO26 unterstützt werden, sodass du deine Modelle in nahezu jeder Umgebung bereitstellen kannst. Je nach deinen spezifischen Anforderungen möchtest du vielleicht auch andere Exportoptionen wie TensorRT für maximale GPU-Leistung oder CoreML für Apple-Geräte erkunden.

Weitere Details zur Verwendung findest du in der ONNX official documentation.

Wenn du außerdem mehr über andere Ultralytics YOLO26-Integrationen erfahren möchtest, besuche unsere Seite zum Integrationsleitfaden. Dort findest du zahlreiche nützliche Ressourcen und Einblicke.

FAQ#

  • Um deine YOLO26-Modelle mit Ultralytics in das ONNX-Format zu exportieren, befolge diese Schritte:

    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 Details findest du in der export documentation.

  • 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 reibungslos in verschiedenen Umgebungen laufen.
    • Hardwarebeschleunigung: ONNX Runtime kann hardwarespezifische Optimierungen für CPUs, GPUs und dedizierte Beschleuniger nutzen und bietet so eine leistungsstarke Inferenz.
    • Framework-Interoperabilität: In gängigen Frameworks wie PyTorch oder TensorFlow trainierte Modelle lassen sich problemlos in das ONNX-Format konvertieren und mit ONNX Runtime ausführen.
    • Leistungsoptimierung: ONNX Runtime kann im Vergleich zu nativen PyTorch-Modellen eine bis zu 3-fache CPU-Beschleunigung bieten, was es ideal für Bereitstellungsszenarien macht, in denen GPU-Ressourcen begrenzt sind.

    Erfahre mehr, indem du dir die ONNX Runtime documentation ansiehst.

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

    • CPUs: Nutzung von ONNX Runtime für optimierte CPU-Inferenz.
    • GPUs: Nutzung von NVIDIA CUDA für leistungsstarke GPU-Beschleunigung.
    • Edge-Geräte: Ausführung leichtgewichtiger Modelle auf Edge- und Mobilgeräten für Inferenz in Echtzeit 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 unserer Anleitung zu model deployment options.

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

    • Interoperabilität: ONNX ermöglicht das nahtlose Übertragen von Modellen zwischen verschiedenen Machine-Learning-Frameworks.
    • Leistungsoptimierung: ONNX Runtime kann die Modellleistung durch die Nutzung hardwarespezifischer Optimierungen steigern.
    • Flexibilität: ONNX unterstützt verschiedene Bereitstellungsumgebungen, wodurch du dasselbe Modell ohne Modifikationen auf verschiedenen Plattformen verwenden kannst.
    • Standardisierung: ONNX bietet ein standardisiertes Format, das branchenweit weitgehend unterstützt wird, und gewährleistet so eine langfristige Kompatibilität.

    Beziehe dich auf die umfassende Anleitung zum exporting YOLO26 models to ONNX.

  • Beim Exportieren von YOLO26-Modellen nach ONNX können häufige Probleme wie nicht übereinstimmende Abhängigkeiten oder nicht unterstützte Operationen auftreten. So behebst du diese Probleme:

    1. Überprüfe, ob die korrekte Version der erforderlichen Abhängigkeiten installiert ist.
    2. Überprüfe die offizielle ONNX documentation auf unterstützte Operatoren und Funktionen.
    3. Überprüfe die Fehlermeldungen auf Hinweise und konsultiere den Ultralytics Common Issues guide.
    4. Versuche, andere Exportargumente wie simplify=True zu verwenden oder die Version von opset anzupassen.
    5. Setze bei Problemen mit dynamischer Eingabegröße dynamic=True während des Exports.

    Sollten die Probleme weiterhin bestehen, kontaktiere den Ultralytics-Support für weitere Unterstützung.

Kommentare