Zum Inhalt springen

ONNX Export für YOLOv8 Modelle

Bei der Bereitstellung von Modellen für maschinelles Sehen benötigen Sie häufig ein Modellformat, das sowohl flexibel als auch mit mehreren Plattformen kompatibel ist.

Der Export von Ultralytics YOLOv8 Modelle in das Format ONNX vereinfacht die Bereitstellung und gewährleistet eine optimale Leistung in verschiedenen Umgebungen. In diesem Leitfaden erfährst du, wie du deine YOLOv8 Modelle ganz einfach in ONNX konvertieren und ihre Skalierbarkeit und Effektivität in realen Anwendungen verbessern kannst.

ONNX und ONNX Laufzeit

ONNXsteht für Open Neural Network Exchange und ist ein Gemeinschaftsprojekt, das ursprünglich von Facebook und Microsoft entwickelt wurde. Die laufende Entwicklung von ONNX wird von verschiedenen Organisationen wie IBM, Amazon (über AWS) und Google unterstützt. Das Projekt zielt darauf ab, ein offenes Dateiformat zu schaffen, mit dem Modelle für maschinelles Lernen so dargestellt werden können, dass sie in verschiedenen KI-Frameworks und auf unterschiedlicher Hardware verwendet werden können.

ONNX Modelle können verwendet werden, um nahtlos zwischen verschiedenen Frameworks zu wechseln. Ein Deep Learning-Modell, das in PyTorch trainiert wurde, kann zum Beispiel in das Format ONNX exportiert und dann einfach in TensorFlow importiert werden.

ONNX

Alternativ können die Modelle von ONNX auch mit ONNX Runtime verwendet werden. ONNX Runtime ist ein vielseitiger plattformübergreifender Beschleuniger für Machine-Learning-Modelle, der mit Frameworks wie PyTorch, TensorFlow, TFLite, scikit-learn usw. kompatibel ist.

ONNX Runtime optimiert die Ausführung von ONNX Modellen, indem es hardwarespezifische Funktionen nutzt. Durch diese Optimierung können die Modelle effizient und mit hoher Leistung auf verschiedenen Hardware-Plattformen ausgeführt werden, darunter CPUs, GPUs und spezielle Beschleuniger.

ONNX mit ONNX Laufzeit

Ob unabhängig oder in Verbindung mit ONNX Runtime, ONNX bietet eine flexible Lösung für die Bereitstellung und Kompatibilität von Machine Learning-Modellen.

Die wichtigsten Merkmale der ONNX Modelle

Die Fähigkeit von ONNX , mit verschiedenen Formaten umzugehen, lässt sich auf die folgenden Hauptmerkmale zurückführen:

  • Gemeinsame Modelldarstellung: ONNX definiert einen gemeinsamen Satz von Operatoren (wie Faltungen, Schichten usw.) und ein Standarddatenformat. Wenn ein Modell in das Format ONNX konvertiert wird, werden seine Architektur und Gewichte in diese gemeinsame Darstellung übersetzt. Diese Einheitlichkeit stellt sicher, dass das Modell von jedem Framework, das ONNX unterstützt, verstanden werden kann.

  • Versionierung und Rückwärtskompatibilität: ONNX unterhält ein Versionierungssystem für seine Betreiber. Dadurch wird sichergestellt, dass Modelle, die in älteren Versionen erstellt wurden, auch dann noch verwendbar sind, wenn sich der Standard weiterentwickelt. Die Rückwärtskompatibilität ist ein wichtiges Merkmal, das verhindert, dass Modelle schnell veraltet sind.

  • Graphenbasierte Modelldarstellung: ONNX stellt Modelle als Berechnungsgraphen dar. Diese graphenbasierte Struktur ist eine universelle Art der Darstellung von Modellen des maschinellen Lernens, bei der die Knoten Operationen oder Berechnungen und die Kanten die Tensoren darstellen, die zwischen ihnen fließen. Dieses Format lässt sich leicht an verschiedene Frameworks anpassen, die Modelle ebenfalls als Graphen darstellen.

  • Tools und Ökosystem: Rund um ONNX gibt es ein reichhaltiges Ökosystem von Tools, die bei der Modellkonvertierung, Visualisierung und Optimierung helfen. Diese Tools erleichtern den Entwicklern die Arbeit mit ONNX Modellen und die nahtlose Konvertierung von Modellen zwischen verschiedenen Frameworks.

Übliche Verwendung von ONNX

Bevor wir uns mit dem Export befassen YOLOv8 Modelle bis hin zu den ONNX Format zu verwenden, werfen wir einen Blick darauf, wo ONNX Meist werden Modelle verwendet.

CPU Einsatz

ONNX Modelle werden aufgrund ihrer Kompatibilität mit ONNX Runtime häufig auf CPUs eingesetzt. Diese Runtime ist für die Ausführung von CPU optimiert. Sie verbessert die Inferenzgeschwindigkeit erheblich und ermöglicht den Einsatz von CPU in Echtzeit.

Unterstützte Bereitstellungsoptionen

Die Modelle von ONNX werden in der Regel auf CPUs verwendet, können aber auch auf den folgenden Plattformen eingesetzt werden:

  • GPU Beschleunigung: ONNX unterstützt vollständig GPU Beschleunigung, insbesondere NVIDIA CUDA . Dies ermöglicht eine effiziente Ausführung auf NVIDIA GPUs für Aufgaben, die eine hohe Rechenleistung erfordern.

  • Edge- und Mobilgeräte: ONNX ist auch für Edge- und Mobilgeräte geeignet und damit perfekt für On-Device- und Echtzeit-Inferenzszenarien. Es ist leichtgewichtig und kompatibel mit Edge-Hardware.

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

Exportieren von YOLOv8 Modellen nach ONNX

Du kannst die Modellkompatibilität und die Einsatzflexibilität erweitern, indem du die Modelle von YOLOv8 in das Format ONNX konvertierst.

Installation

Um das benötigte Paket zu installieren, führe es aus:

Installation

# Install the required package for YOLOv8
pip install ultralytics

Ausführliche Anweisungen und bewährte Verfahren für den Installationsprozess findest du in unserem YOLOv8 Installationsleitfaden. Wenn du bei der Installation der erforderlichen Pakete für YOLOv8 auf Schwierigkeiten stößt, findest du in unserem Leitfaden für häufige Probleme Lösungen und Tipps.

Verwendung

Bevor du dich in die Gebrauchsanweisung vertiefst, solltest du dir die verschiedenen Modelle vonYOLOv8 ansehen, die von Ultralytics angeboten werden. Das wird dir helfen, das am besten geeignete Modell für deine Projektanforderungen auszuwählen.

Verwendung

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

# Run inference with the exported model
yolo predict model=yolov8n.onnx source='https://ultralytics.com/images/bus.jpg'

Weitere Informationen über den Exportprozess findest du auf der Dokumentationsseite zum Export unterUltralytics .

Einsatz von exportierten YOLOv8 ONNX Modellen

Wenn du deine Ultralytics YOLOv8 Modelle erfolgreich in das ONNX Format exportiert hast, ist der nächste Schritt, diese Modelle in verschiedenen Umgebungen einzusetzen. Ausführliche Anleitungen für den Einsatz deiner ONNX Modelle findest du in den folgenden Ressourcen:

  • ONNX Laufzeit Python API Dokumentation: Dieser Leitfaden enthält wichtige Informationen zum Laden und Ausführen von ONNX Modellen mit ONNX Runtime.

  • Einsatz auf Edge-Geräten: Auf dieser Dokumentseite findest du verschiedene Beispiele für den Einsatz von ONNX Modellen auf Edge-Geräten.

  • ONNX Tutorials auf GitHub: Eine Sammlung umfassender Tutorials, die verschiedene Aspekte der Nutzung und Implementierung von ONNX Modellen in unterschiedlichen Szenarien behandeln.

Zusammenfassung

In diesem Handbuch hast du gelernt, wie du Ultralytics YOLOv8 Modelle in das ONNX Format exportierst, um ihre Interoperabilität und Leistung auf verschiedenen Plattformen zu verbessern. Außerdem hast du die Optionen ONNX Runtime und ONNX deployment kennengelernt.

Weitere Einzelheiten zur Verwendung findest du in der offiziellen DokumentationONNX .

Wenn du mehr über andere Ultralytics YOLOv8 Integrationen erfahren möchtest, besuche unseren Integrationsleitfaden. Dort findest du viele nützliche Ressourcen und Einblicke.

FAQ

Wie exportiere ich YOLOv8 Modelle in das ONNX Format mit Ultralytics?

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

Verwendung

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

# Run inference with the exported model
yolo predict model=yolov8n.onnx source='https://ultralytics.com/images/bus.jpg'

Weitere Informationen findest du in der Exportdokumentation.

Welche Vorteile hat die Verwendung von ONNX Runtime für die Bereitstellung von YOLOv8 Modellen?

Die Verwendung von ONNX Runtime für die Bereitstellung von YOLOv8 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.
  • Hardware-Beschleunigung: ONNX Die Laufzeitumgebung kann hardwarespezifische Optimierungen für CPUs, GPUs und spezielle Beschleuniger nutzen, um leistungsstarke Inferenzen zu ermöglichen.
  • Interoperabilität der Frameworks: Modelle, die in gängigen Frameworks wie PyTorch oder TensorFlow trainiert wurden, können leicht in das Format ONNX konvertiert und mit ONNX Runtime ausgeführt werden.

Weitere Informationen findest du in der ONNX Runtime-Dokumentation.

Welche Einsatzmöglichkeiten gibt es für YOLOv8 Modelle, die nach ONNX exportiert werden?

YOLOv8 Die nach ONNX exportierten Modelle können auf verschiedenen Plattformen eingesetzt werden:

  • CPUs: Die Nutzung von ONNX Runtime für optimierte CPU Inferenz.
  • GPUs: Die Nutzung von NVIDIA CUDA für eine leistungsstarke GPU Beschleunigung.
  • Edge-Geräte: Leichtgewichtige Modelle auf Edge- und Mobilgeräten für Echtzeit-Inferenzen auf dem Gerät.
  • Webbrowser: Ausführen von Modellen direkt in Webbrowsern für interaktive webbasierte Anwendungen.

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

Warum sollte ich das Format ONNX für Ultralytics YOLOv8 Modelle verwenden?

Die Verwendung des Formats ONNX für Ultralytics YOLOv8 Modelle bietet zahlreiche Vorteile:

  • Interoperabilität: ONNX ermöglicht die nahtlose Übertragung von Modellen zwischen verschiedenen Machine-Learning-Frameworks.
  • Leistungsoptimierung: ONNX Die Laufzeit kann die Modellleistung durch hardwarespezifische Optimierungen verbessern.
  • Flexibilität: ONNX unterstützt verschiedene Einsatzumgebungen, so dass du dasselbe Modell ohne Änderungen auf verschiedenen Plattformen verwenden kannst.

Siehe den umfassenden Leitfaden zum Export von YOLOv8 Modellen auf ONNX.

Wie kann ich Probleme beim Export von YOLOv8 Modellen nach ONNX beheben?

Wenn du YOLOv8 Modelle nach ONNX exportierst, kannst du auf häufige Probleme stoßen, wie z.B. nicht übereinstimmende Abhängigkeiten oder nicht unterstützte Operationen. So behebst du diese Probleme:

  1. Überprüfe, ob du die richtige Version der erforderlichen Abhängigkeiten installiert hast.
  2. In der offiziellen DokumentationONNX findest du die unterstützten Operatoren und Funktionen.
  3. Prüfe die Fehlermeldungen auf Hinweise und konsultiere den Ultralytics Leitfaden für häufige Probleme.

Wenn das Problem weiterhin besteht, wende dich an den Ultralytics Support, um weitere Unterstützung zu erhalten.



Erstellt 2024-01-25, Aktualisiert 2024-07-05
Autoren: glenn-jocher (6), abirami-vina (1)

Kommentare