Ultralytics YOLO27:
Get Started

ONNX-Export für YOLO26-Modelle#

Etwa 43 % schnellere ONNX-Inferenz auf der CPU: YOLO26n im Vergleich zu YOLO11n
  • YOLO26n läuft bei der ONNX-Inferenz auf der CPU bis zu 43 % schneller als YOLO11n (Intel Xeon CPU @ 2.00 GHz). Den vollständigen Vergleich 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 ins ONNX-Format vereinfacht die Bereitstellung und sorgt für optimale Leistung in verschiedenen Umgebungen. Diese Anleitung zeigt dir, wie du deine YOLO26-Modelle ganz einfach in ONNX konvertierst und ihre Skalierbarkeit sowie Effektivität in realen Anwendungen steigerst.



Ansehen: Inferenztest: Ultralytics YOLO26 vs. Ultralytics YOLO11 mit ONNX | YOLO26 ermöglicht rund 43 % schnellere Inferenz 🚀

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 Weiterentwicklung von ONNX ist eine gemeinschaftliche Arbeit, die von verschiedenen Organisationen wie IBM, Amazon (über AWS) und Google unterstützt wird. Ziel des Projekts ist es, ein offenes Dateiformat zur Darstellung von Machine-Learning-Modellen zu schaffen, damit diese mit verschiedenen KI-Frameworks und auf unterschiedlicher Hardware verwendet werden können.

ONNX-Modelle ermöglichen einen nahtlosen Wechsel zwischen verschiedenen Frameworks. So kann beispielsweise ein mit PyTorch trainiertes Deep-Learning-Modell ins 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 und mit Frameworks wie PyTorch, TensorFlow, scikit-learn usw. kompatibel.

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

ONNX Runtime cross-platform inference acceleration

Ob unabhängig oder zusammen mit ONNX Runtime: ONNX bietet eine flexible Lösung für die Modellbereitstellung und Kompatibilität im Machine Learning.

Wichtige Merkmale von ONNX-Modellen#

Die Fähigkeit von ONNX, verschiedene Formate zu verarbeiten, beruht auf den folgenden wichtigen Merkmalen:

  • Einheitliche Modelldarstellung: ONNX definiert einen gemeinsamen Satz von Operatoren (etwa Faltungen, Schichten usw.) und ein standardisiertes Datenformat. Bei der Konvertierung eines Modells ins ONNX-Format werden dessen Architektur und Gewichte in diese gemeinsame Darstellung übertragen. Dank dieser Einheitlichkeit kann jedes Framework, das ONNX unterstützt, das Modell verarbeiten.

  • Versionierung und Abwärtskompatibilität: ONNX verwaltet ein Versionierungssystem für seine Operatoren. So bleiben auch bei Weiterentwicklung des Standards Modelle aus älteren Versionen weiterhin nutzbar. Abwärtskompatibilität ist ein wichtiges Merkmal, das verhindert, dass Modelle schnell veralten.

  • Graphbasierte Modelldarstellung: ONNX stellt Modelle als Rechengraphen dar. Diese graphbasierte Struktur ist eine universelle Methode zur Darstellung von Machine-Learning-Modellen: Knoten stehen für Operationen oder Berechnungen, Kanten für die zwischen ihnen fließenden Tensoren. Dieses Format lässt sich problemlos an verschiedene Frameworks anpassen, die Modelle ebenfalls als Graphen darstellen.

  • Werkzeuge und Ökosystem: ONNX verfügt über ein umfangreiches Ökosystem von Werkzeugen, die bei der Modellkonvertierung, Visualisierung und Optimierung helfen. Diese Werkzeuge erleichtern Entwicklern die Arbeit mit ONNX-Modellen und die nahtlose Konvertierung von Modellen zwischen verschiedenen Frameworks.

Typische Anwendungsbereiche von ONNX#

Bevor wir uns ansehen, wie du YOLO26-Modelle ins ONNX-Format exportierst, werfen wir einen Blick auf die üblichen Einsatzbereiche von ONNX-Modellen.

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 steigert die Inferenzgeschwindigkeit deutlich und ermöglicht den Einsatz auf CPUs in Echtzeit.

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 auf NVIDIA-GPUs über CUDA sowie auf AMD-GPUs über ROCm und MIGraphX vollständig.

  • Edge- und Mobilgeräte: ONNX eignet sich auch für Edge- und Mobilgeräte und ist damit ideal für die geräteinterne Inferenz und Echtzeitanwendungen. 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
Erkennung✅✅✅
Segmentierung✅✅✅
Semantik❌❌✅
Tiefe❌❌✅
Klassifizierung✅✅✅
Pose✅✅✅
OBB✅✅✅

YOLO26-Modelle ins ONNX-Format exportieren#

Durch die Konvertierung von YOLO26-Modellen ins ONNX-Format kannst du die Modellkompatibilität und Flexibilität bei der Bereitstellung erweitern. Ultralytics YOLO26 bietet einen unkomplizierten Exportprozess, der die Leistung deines Modells auf verschiedenen Plattformen deutlich steigern kann.

Installation#

Führe zum Installieren des erforderlichen Pakets Folgendes aus:

Installation
# Install the required package for YOLO26
pip install ultralytics

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

Verwendung#

Bevor du mit den Anwendungshinweisen beginnst, solltest du dir die verschiedenen YOLO26-Modelle von Ultralytics ansehen. So findest du das Modell, das am besten zu den Anforderungen deines Projekts passt.

Das ONNX-Format unterstützt die Modi Export, Vorhersage und Validierung. Exportiere dein Modell und lade dann das exportierte Modell, um Inferenz auszuführen oder seine Genauigkeit zu validieren.

Exportieren
from ultralytics import YOLO

# Ein YOLO26-Modell laden
model = YOLO("yolo26n.pt")

# Exportiere das Modell in das ONNX-Format
model.export(format="onnx")  # erstellt 'yolo26n.onnx'

# Ein INT8-quantisiertes ONNX-Modell mit Kalibrierungsdaten exportieren
model.export(format="onnx", quantize=8, data="coco8.yaml")  # Erstellt „yolo26n_int8.onnx“
Vorhersagen
from ultralytics import YOLO

# Das exportierte ONNX-Modell laden
model = YOLO("yolo26n.onnx")

# Inferenz ausführen
results = model("https://ultralytics.com/images/bus.jpg")
Validieren
from ultralytics import YOLO

# Das exportierte ONNX-Modell laden
model = YOLO("yolo26n.onnx")

# Die Genauigkeit anhand des COCO8-Datensatzes validieren
metrics = model.val(data="coco8.yaml")

Exportargumente#

Beim Export deines YOLO26-Modells ins ONNX-Format kannst du den Vorgang mithilfe verschiedener Argumente an deine spezifischen Anforderungen bei der Bereitstellung anpassen:

ArgumentTypStandardBeschreibung
formatstr'onnx'Zielformat des exportierten Modells, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen festlegt.
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 strNoneQuantisierungsgenauigkeit: 16 (FP16) oder 8 (statische INT8-Quantisierung mit ONNX Runtime und Kalibrierungsbildern aus data; erzeugt ein _int8.onnx-Modell); 32/nicht angegeben bedeutet FP32. Ein mit quantize=8 trainierter Checkpoint exportiert INT8 immer als Q/DQ-Knoten auf Grundlage der darin enthaltenen Wertebereiche, ohne Kalibrierung und unter dem einfachen Namen .onnx. Ersetzt die veralteten Flags half/int8.
datastrNoneFür die INT8-Kalibrierung verwendete Dataset-YAML-Datei; bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name angegeben. Wird die Option zusammen mit quantize=8 weggelassen, wählt Ultralytics den standardmäßigen Kalibrierungsdatensatz für die Modellaufgabe aus; bei einem mit quantize=8 trainierten Checkpoint ist keine Kalibrierung erforderlich.
fractionfloat, int oder list1.0Kalibrierungsteilstichprobe als Verhältnis, Bildanzahl oder [train, val, test]-Verhältnisse/-Anzahlen. Bei Listen mit zwei Elementen bleibt test vollständig erhalten, während 0 es überspringt.
dynamicboolFalseErmöglicht dynamische Eingabegrößen und sorgt so für mehr Flexibilität beim Umgang mit unterschiedlichen Bildabmessungen.
simplifyboolTrueVereinfacht den Modellgraphen mit onnxslim und kann dadurch Leistung und Kompatibilität verbessern.
opsetintNoneGibt die ONNX-Opset-Version an, um die Kompatibilität mit verschiedenen ONNX-Parsern und Laufzeitumgebungen sicherzustellen. Ist keine Version festgelegt, wird die neueste unterstützte Version verwendet.
nmsbool, optionalNoneWähle die Rohausgabe (None, Standard), eingebettetes NMS (True) oder den NMS-freien Kopf (False).
batchint1Gibt die Batchgröße für die Inferenz des Exportmodells oder die Höchstzahl der Bilder an, die das exportierte Modell gleichzeitig im predict-Modus verarbeiten kann.
devicestrNoneLegt das Exportgerät fest: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (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 ins ONNX-Format exportiert hast, kannst du sie als Nächstes in verschiedenen Umgebungen bereitstellen. Ausführliche Anleitungen zur Bereitstellung deiner ONNX-Modelle findest du in den folgenden Ressourcen:

  • Dokumentation zur ONNX Runtime Python-API: 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 ausführlicher 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, skalierbare Bereitstellungen einsetzt.

AMD-GPU-Inferenz mit MIGraphX#

Ultralytics führt exportierte ONNX-Modelle auf AMD-GPUs mithilfe des MIGraphX-Ausführungsproviders von ONNX Runtime aus. Auf einem ROCm-(HIP-)System installiert das ONNX-Backend beim ersten Einsatz das Plugin onnxruntime-ep-migraphx und wählt MIGraphXExecutionProvider automatisch aus, ohne dass Codeänderungen erforderlich sind. Alle YOLO26-Aufgaben werden unterstützt. In der Anleitung zur AMD-GPU-Inferenz findest du Informationen zu Voraussetzungen, Installation, Verwendung, Benchmarks und zum Cache für kompilierte Programme.

Zusammenfassung#

In dieser Anleitung hast du erfahren, wie du Ultralytics-YOLO26-Modelle ins ONNX-Format exportierst, um ihre Interoperabilität und Leistung auf verschiedenen Plattformen zu verbessern. Außerdem hast du ONNX Runtime und die Bereitstellungsoptionen für ONNX kennengelernt.

Der ONNX-Export ist eines von vielen Exportformaten, die Ultralytics YOLO26 unterstützt und mit denen du deine Modelle praktisch in jeder Umgebung bereitstellen kannst. Je nach deinen Anforderungen kannst du auch andere Exportoptionen in Betracht ziehen, etwa TensorRT für maximale GPU-Leistung oder CoreML für Apple-Geräte.

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

Wenn du mehr über weitere Integrationen von Ultralytics YOLO26 erfahren möchtest, besuche auch unsere Seite mit Integrationsanleitungen. Dort findest du zahlreiche nützliche Ressourcen und Einblicke.

Häufig gestellte Fragen#

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

    Verwendung
    from ultralytics import YOLO
    
    # Ein YOLO26-Modell laden
    model = YOLO("yolo26n.pt")
    
    # Exportiere das Modell in das ONNX-Format
    model.export(format="onnx")  # erstellt 'yolo26n.onnx'
    
    # Das exportierte ONNX-Modell laden
    onnx_model = YOLO("yolo26n.onnx")
    
    # Inferenz ausführen
    results = onnx_model("https://ultralytics.com/images/bus.jpg")

    Weitere Einzelheiten findest du in der Dokumentation zum Export.

  • Die Verwendung von ONNX Runtime zur Bereitstellung von YOLO26-Modellen bietet mehrere Vorteile:

    • Plattformübergreifende Kompatibilität: ONNX Runtime unterstützt verschiedene Plattformen wie Windows, macOS und Linux und sorgt dafür, dass deine Modelle in unterschiedlichen Umgebungen reibungslos laufen.
    • 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 mit beliebten Frameworks wie PyTorch oder TensorFlow trainiert wurden, lassen sich problemlos ins ONNX-Format konvertieren und mit ONNX Runtime ausführen.
    • Leistungsoptimierung: ONNX Runtime kann die CPU-Geschwindigkeit im Vergleich zu nativen PyTorch-Modellen um bis zu das Dreifache steigern. Damit eignet sich ONNX Runtime ideal für Bereitstellungsszenarien mit begrenzten GPU-Ressourcen.

    Weitere Informationen findest du in der Dokumentation zu ONNX Runtime.

  • YOLO26-Modelle, die nach ONNX exportiert wurden, lassen sich auf verschiedenen Plattformen bereitstellen, darunter:

    • CPUs: Nutze ONNX Runtime für eine optimierte CPU-Inferenz.
    • NVIDIA-GPUs: Nutze NVIDIA CUDA für eine leistungsstarke GPU-Beschleunigung.
    • AMD-GPUs: Nutze AMD ROCm und den MIGraphX-Ausführungsanbieter für eine leistungsstarke GPU-Beschleunigung unter Linux.
    • Edge-Geräte: Führe schlanke Modelle auf Edge- und Mobilgeräten aus, um Inferenz in Echtzeit direkt auf dem Gerät zu ermöglichen.
    • Webbrowser: Führe Modelle direkt in Webbrowsern für interaktive webbasierte Anwendungen aus.
    • Cloud-Dienste: Stelle Modelle auf Cloud-Plattformen bereit, die das ONNX-Format für skalierbare Inferenz unterstützen.

    Weitere Informationen findest du in unserem Leitfaden zu Bereitstellungsoptionen für Modelle.

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

    • Interoperabilität: Mit ONNX lassen sich Modelle nahtlos zwischen verschiedenen Frameworks für maschinelles Lernen übertragen.
    • Leistungsoptimierung: ONNX Runtime kann die Modellleistung durch hardwarespezifische Optimierungen verbessern.
    • Flexibilität: ONNX unterstützt verschiedene Bereitstellungsumgebungen. So kannst du dasselbe Modell ohne Änderungen auf unterschiedlichen Plattformen verwenden.
    • Standardisierung: ONNX bietet ein standardisiertes Format, das branchenweit umfassend unterstützt wird und so langfristige Kompatibilität gewährleistet.

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

  • Beim Export von YOLO26-Modellen nach ONNX können häufig Probleme auftreten, etwa inkompatible Abhängigkeiten oder nicht unterstützte Operationen. So gehst du bei der Fehlersuche vor:

    1. Vergewissere dich, dass die erforderlichen Abhängigkeiten in den richtigen Versionen installiert sind.
    2. Informiere dich in der offiziellen ONNX-Dokumentation über unterstützte Operatoren und Funktionen.
    3. Untersuche die Fehlermeldungen auf Hinweise und sieh dir den Ultralytics-Leitfaden zu häufigen Problemen an.
    4. Probiere andere Exportargumente wie simplify=True aus oder passe die Version von opset an.
    5. Bei Problemen mit dynamischen Eingabegrößen setze beim Export dynamic=True.

    Wenn die Probleme weiterhin bestehen, wende dich für weitere Unterstützung an den Ultralytics-Support.

Kommentare