Modell Export mit Ultralytics YOLO
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
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
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
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
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
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)