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: Gewinne bis zu 5x GPU-Beschleunigung mit TensorRT und 3x CPU-Beschleunigung 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

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

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 den Modellgraphen für ONNX Exporte, 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 GB für die TensorRT Optimierungen fest und sorgt für ein Gleichgewicht zwischen Speichernutzung und Leistung.
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 Legt die Größe des exportierten Modells oder die maximale Anzahl von Bildern fest, die das exportierte Modell gleichzeitig in 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, 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, batch
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


Erstellt am 2023-11-12, Aktualisiert am 2024-04-27
Autoren: glenn-jocher (11), Burhan-Q (2)

Kommentare