Zum Inhalt springen

Modell Export mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

EinfĂŒhrung

Das ultimative Ziel des Trainings eines Modells ist es, es fĂŒr reale Anwendungen einzusetzen. Der Exportmodus in Ultralytics YOLOv8 bietet eine Vielzahl von Optionen, um dein trainiertes Modell in verschiedene Formate zu exportieren, damit es auf verschiedenen Plattformen und GerĂ€ten eingesetzt werden kann. Dieser umfassende Leitfaden fĂŒhrt dich durch die Feinheiten des Modellexports und zeigt dir, wie du maximale KompatibilitĂ€t und Leistung erreichst.



Pass auf: Wie exportiere ich ein individuell trainiertes Ultralytics YOLOv8 Modell und fĂŒhre Live-Inferenz auf der Webcam durch?

Warum der Exportmodus von YOLOv8?

  • Vielseitigkeit: Exportiere in verschiedene Formate wie ONNX, TensorRT, CoreML und mehr.
  • Leistung: Bis zu 5x schneller als GPU mit TensorRT und 3x schneller als CPU mit ONNX oder OpenVINO.
  • KompatibilitĂ€t: Mach dein Modell universell einsetzbar in zahlreichen Hardware- und Softwareumgebungen.
  • Benutzerfreundlichkeit: Einfache CLI und Python API fĂŒr den schnellen und unkomplizierten Export von Modellen.

Hauptmerkmale des Exportmodus

Hier sind einige der herausragenden Funktionen:

  • Ein-Klick-Export: Einfache Befehle zum Exportieren in verschiedene Formate.
  • Batch-Export: Exportiere Batch-Inferenz-fĂ€hige Modelle.
  • Optimierte Inferenz: Exportierte Modelle sind fĂŒr schnellere Inferenzzeiten optimiert.
  • Tutorial-Videos: AusfĂŒhrliche Anleitungen und Tutorials fĂŒr ein reibungsloses Exporterlebnis.

Tipp

  • Exportieren nach ONNX oder OpenVINO fĂŒr eine bis zu 3-fache Beschleunigung CPU .
  • Exportiere nach TensorRT fĂŒr eine bis zu 5-fache Beschleunigung GPU .

Verwendungsbeispiele

Exportiere ein YOLOv8n Modell in ein anderes Format wie ONNX oder TensorRT. Eine vollstÀndige Liste der Exportargumente findest du im Abschnitt Argumente weiter unten.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Argumente

In dieser Tabelle sind die Konfigurationen und Optionen aufgefĂŒhrt, die fĂŒr den Export von YOLO Modellen in verschiedene Formate verfĂŒgbar sind. Diese Einstellungen sind entscheidend fĂŒr die Optimierung der Leistung, GrĂ¶ĂŸe und KompatibilitĂ€t des exportierten Modells auf verschiedenen Plattformen und in verschiedenen Umgebungen. Die richtige Konfiguration stellt sicher, dass das Modell fĂŒr den Einsatz in der vorgesehenen Anwendung mit optimaler Effizienz bereit ist.

Argument Typ Standard Beschreibung
format str 'torchscript' Zielformat fĂŒr das exportierte Modell, z. B. 'onnx', 'torchscript', 'tensorflow'oder andere, die die KompatibilitĂ€t mit verschiedenen Einsatzumgebungen definieren.
imgsz int oder tuple 640 GewĂŒnschte BildgrĂ¶ĂŸe fĂŒr die Modelleingabe. Kann eine ganze Zahl fĂŒr quadratische Bilder oder ein Tupel sein (height, width) fĂŒr bestimmte Abmessungen.
keras bool False Ermöglicht den Export in das Keras-Format fĂŒr TensorFlow SavedModel und bietet KompatibilitĂ€t mit TensorFlow serving and APIs.
optimize bool False Wendet beim Export nach TorchScript eine Optimierung fĂŒr mobile GerĂ€te an, wodurch die ModellgrĂ¶ĂŸe reduziert und die Leistung verbessert werden kann.
half bool False Ermöglicht die FP16-Quantisierung (halbe Genauigkeit), wodurch die ModellgrĂ¶ĂŸe reduziert und die Inferenz auf unterstĂŒtzter Hardware möglicherweise beschleunigt wird.
int8 bool False Aktiviert die INT8-Quantisierung, um das Modell weiter zu komprimieren und die Inferenz mit minimalem Genauigkeitsverlust zu beschleunigen, vor allem fĂŒr Edge-GerĂ€te.
dynamic bool False Ermöglicht dynamische EingabegrĂ¶ĂŸen fĂŒr ONNX und TensorRT Exporte, was die FlexibilitĂ€t beim Umgang mit unterschiedlichen BildgrĂ¶ĂŸen erhöht.
simplify bool False Vereinfacht das Modelldiagramm fĂŒr ONNX Exporte mit onnxslim, was die Leistung und KompatibilitĂ€t verbessern kann.
opset int None Gibt die ONNX opset-Version an, um die KompatibilitĂ€t mit verschiedenen ONNX Parsern und Laufzeiten zu gewĂ€hrleisten. Wenn nicht gesetzt, wird die letzte unterstĂŒtzte Version verwendet.
workspace float 4.0 Legt die maximale GrĂ¶ĂŸe des Arbeitsbereichs in GiB fĂŒr TensorRT Optimierungen fest, die Speicherverbrauch und Leistung ausgleichen.
nms bool False FĂŒgt dem CoreML Export die Nicht-Maximum-UnterdrĂŒckung (NMS) hinzu, die fĂŒr eine genaue und effiziente Nachbearbeitung der Aufdeckung unerlĂ€sslich ist.
batch int 1 Gibt die GrĂ¶ĂŸe der StapelrĂŒckschlĂŒsse des Exportmodells oder die maximale Anzahl von Bildern an, in denen das exportierte Modell gleichzeitig verarbeitet wird. predict Modus.

Die Anpassung dieser Parameter ermöglicht die Anpassung des Exportprozesses an spezifische Anforderungen, wie z. B. die Einsatzumgebung, HardwarebeschrĂ€nkungen und Leistungsziele. Die Wahl des richtigen Formats und der richtigen Einstellungen ist wichtig, um das beste Gleichgewicht zwischen ModellgrĂ¶ĂŸe, Geschwindigkeit und Genauigkeit zu erreichen.

Formate exportieren

Die verfĂŒgbaren YOLOv8 Exportformate findest du in der Tabelle unten. Du kannst in jedes beliebige Format exportieren, indem du die format Argument, d.h. format='onnx' oder format='engine'. Du kannst exportierte Modelle direkt vorhersagen oder validieren, d.h. yolo predict model=yolov8n.onnx. Nach Abschluss des Exports werden Anwendungsbeispiele fĂŒr dein Modell angezeigt.

Format format Argument Modell Metadaten Argumente
PyTorch - yolov8n.pt ✅ -
TorchScript torchscript yolov8n.torchscript ✅ imgsz, optimize, batch
ONNX onnx yolov8n.onnx ✅ imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ ✅ imgsz, half, int8, batch
TensorRT engine yolov8n.engine ✅ imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage ✅ imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ ✅ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb ❌ imgsz, batch
TF Lite tflite yolov8n.tflite ✅ imgsz, half, int8, batch
TF Kante TPU edgetpu yolov8n_edgetpu.tflite ✅ imgsz
TF.js tfjs yolov8n_web_model/ ✅ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ ✅ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ ✅ imgsz, half, batch

FAQ

Wie exportiere ich ein Modell von YOLOv8 in das Format ONNX ?

Der Export eines YOLOv8 Modells in das ONNX Format ist mit Ultralytics ganz einfach. Es bietet sowohl Python als auch CLI Methoden fĂŒr den Export von Modellen.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Weitere Einzelheiten zu diesem Prozess, einschließlich erweiterter Optionen wie die Handhabung unterschiedlicher EingabegrĂ¶ĂŸen, findest du im ONNX Abschnitt.

Was sind die Vorteile von TensorRT fĂŒr den Modellexport?

Die Verwendung von TensorRT fĂŒr den Modellexport bietet erhebliche Leistungsverbesserungen. YOLOv8 Modelle, die nach TensorRT exportiert werden, können bis zu 5x schneller sein als GPU , was sie ideal fĂŒr Echtzeit-Inferenzanwendungen macht.

  • Vielseitigkeit: Optimiere die Modelle fĂŒr ein bestimmtes Hardware-Setup.
  • Geschwindigkeit: Erreiche schnellere Schlussfolgerungen durch erweiterte Optimierungen.
  • KompatibilitĂ€t: Reibungslose Integration mit NVIDIA Hardware.

Wenn du mehr ĂŒber die Integration von TensorRT erfahren möchtest, lies den TensorRT Integrationsleitfaden.

Wie aktiviere ich die INT8-Quantisierung, wenn ich mein YOLOv8 Modell exportiere?

Die INT8-Quantisierung ist eine hervorragende Möglichkeit, das Modell zu komprimieren und die Inferenz zu beschleunigen, insbesondere auf Edge-GerÀten. Hier erfÀhrst du, wie du die INT8-Quantisierung aktivieren kannst:

Beispiel

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a model
model.export(format="onnx", int8=True)
yolo export model=yolov8n.pt format=onnx int8=True   # export model with INT8 quantization

Die INT8-Quantisierung kann auf verschiedene Formate angewendet werden, z. B. TensorRT und CoreML. Weitere Einzelheiten findest du im Abschnitt Export.

Warum ist die dynamische EingabegrĂ¶ĂŸe beim Export von Modellen wichtig?

Die dynamische EingabegrĂ¶ĂŸe ermöglicht es dem exportierten Modell, mit unterschiedlichen BildgrĂ¶ĂŸen umzugehen, was fĂŒr FlexibilitĂ€t sorgt und die Verarbeitungseffizienz fĂŒr verschiedene AnwendungsfĂ€lle optimiert. Beim Export in Formate wie ONNX oder TensorRT sorgt die Aktivierung der dynamischen EingabegrĂ¶ĂŸe dafĂŒr, dass sich das Modell nahtlos an unterschiedliche Eingabeformen anpassen kann.

Um diese Funktion zu aktivieren, verwenden Sie die dynamic=True Flagge beim Export:

Beispiel

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolov8n.pt format=onnx dynamic=True

Weitere Informationen findest du in der Konfiguration der dynamischen EingangsgrĂ¶ĂŸe.

Was sind die wichtigsten Exportargumente, die bei der Optimierung der Modellleistung zu berĂŒcksichtigen sind?

Das VerstĂ€ndnis und die Konfiguration von Exportargumenten sind entscheidend fĂŒr die Optimierung der Modellleistung:

  • format: Das Zielformat fĂŒr das exportierte Modell (z.B., onnx, torchscript, tensorflow).
  • imgsz: GewĂŒnschte BildgrĂ¶ĂŸe fĂŒr die Modelleingabe (z. B., 640 oder (height, width)).
  • half: Ermöglicht die FP16-Quantisierung, wodurch die ModellgrĂ¶ĂŸe reduziert und die Inferenz potenziell beschleunigt wird.
  • optimize: Wendet spezielle Optimierungen fĂŒr mobile oder eingeschrĂ€nkte Umgebungen an.
  • int8: Ermöglicht die INT8-Quantisierung, was fĂŒr den Einsatz an den RĂ€ndern von großem Vorteil ist.

Eine detaillierte Liste und ErklÀrungen zu allen Exportargumenten findest du im Abschnitt Exportargumente.



Erstellt am 2023-11-12, Aktualisiert am 2024-07-04
Autoren: glenn-jocher (17), Burhan-Q (4), Kayzwer (2)

Kommentare