Zum Inhalt springen

ONNX Export für YOLOv8 Modelle

Wenn du Computer-Vision-Modelle einsetzt, brauchst du oft 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 Weiterentwicklung von ONNX ist eine Gemeinschaftsarbeit, die von verschiedenen Organisationen wie IBM, Amazon (über AWS) und Google unterstützt wird. Das Projekt zielt darauf ab, ein offenes Dateiformat zu schaffen, das Modelle für maschinelles Lernen so darstellt, 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 ansehen, wie man YOLOv8 Modelle in das Format ONNX exportiert, schauen wir uns an, wo ONNX Modelle normalerweise verwendet werden.

CPU-Einsatz

ONNX Modelle werden aufgrund ihrer Kompatibilität mit ONNX Runtime häufig auf CPUs eingesetzt. Diese Laufzeit ist für die CPU-Ausführung optimiert. Sie verbessert die Inferenzgeschwindigkeit erheblich und ermöglicht den Einsatz von CPUs 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 die GPU-Beschleunigung, insbesondere NVIDIA CUDA. Dies ermöglicht eine effiziente Ausführung von Aufgaben, die eine hohe Rechenleistung erfordern, auf NVIDIA-GPUs.

  • 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.



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

Kommentare