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 zusammen 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 zum Exportvorgang 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