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