Zum Inhalt springen

Modellexport mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

Einführung

Das ultimative Ziel beim Trainieren eines Modells ist es, es für reale Anwendungen einzusetzen. Der Exportmodus in Ultralytics YOLO11 bietet eine Vielzahl von Optionen für den Export Ihres trainierten Modells in verschiedene Formate, sodass es auf verschiedenen Plattformen und Geräten eingesetzt werden kann. Dieser umfassende Leitfaden soll Sie durch die Feinheiten des Modellexports führen und Ihnen zeigen, wie Sie ein Maximum an Kompatibilität und Leistung erreichen können.



Beobachten: Exportieren eines individuell trainierten Ultralytics YOLO Modells und Ausführen von Live-Inferenz auf der Webcam.

Warum der Exportmodus von YOLO11?

  • Vielseitigkeit: Exportieren Sie in mehrere Formate, darunter ONNX, TensorRT, CoreML, und mehr.
  • Leistung: Bis zu 5x mehr Geschwindigkeit auf GPU mit TensorRT und 3x mehr Geschwindigkeit auf CPU mit ONNX oder OpenVINO.
  • Kompatibilität: Machen Sie Ihr Modell in zahlreichen Hardware- und Softwareumgebungen universell einsetzbar.
  • Benutzerfreundlichkeit: Einfache CLI und Python API für den schnellen und unkomplizierten Export von Modellen.

Hauptmerkmale des Exportmodus

Hier sind einige der herausragenden Funktionalitäten:

  • Exportieren mit einem Klick: Einfache Befehle zum Exportieren in verschiedene Formate.
  • Batch-Export: Exportieren Sie Batch-Inferenz-fähige Modelle.
  • Optimierte Inferenz: Exportierte Modelle sind für schnellere Inferenzzeiten optimiert.
  • Tutorial-Videos: Ausführliche Anleitungen und Tutorials für einen reibungslosen Export.

Tipp

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

Beispiele für die Verwendung

Exportieren Sie ein YOLO11n-Modell in ein anderes Format wie ONNX oder TensorRT. Eine vollständige Liste der Exportargumente finden Sie im Abschnitt Argumente weiter unten.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.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 verfügbaren Konfigurationen und Optionen für den Export von YOLO Modellen in verschiedene Formate aufgeführt. 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 festlegen.
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 und 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 FP16-Quantisierung (mit halber Genauigkeit), wodurch die Modellgröße reduziert und die Inferenz auf unterstützter Hardware möglicherweise beschleunigt wird.
int8 bool False Aktiviert die INT8-Quantisierung, wodurch das Modell weiter komprimiert und die Inferenz mit minimalem Genauigkeitsverlust beschleunigt wird, vor allem für Randgeräte.
dynamic bool False Ermöglicht dynamische Eingabegrößen für die Exporte von ONNX, TensorRT und OpenVINO , was die Flexibilität bei der Handhabung unterschiedlicher Bildgrößen erhöht.
simplify bool True Vereinfacht den Modellgraphen für ONNX Exporte mit onnxslimDadurch können Leistung und Kompatibilität verbessert werden.
opset int None Gibt die ONNX opset Version an, um die Kompatibilität mit verschiedenen ONNX Parsern und Laufzeiten zu gewährleisten. Wenn nicht festgelegt, wird die neueste unterstützte Version verwendet.
workspace float 4.0 Legt die maximale Größe des Arbeitsbereichs in GiB für TensorRT -Optimierungen fest, um ein Gleichgewicht zwischen Speichernutzung und Leistung zu schaffen.
nms bool False Fügt dem CoreML Export die Nicht-Maximum-Unterdrückung (NMS) hinzu, die für eine genaue und effiziente Nachbearbeitung der Erkennung unerlässlich ist.
batch int 1 Gibt die Größe der exportierten Modellstapelinferenz oder die maximale Anzahl der Bilder an, die das exportierte Modell gleichzeitig in predict Modus.
device str None Gibt das zu exportierende Gerät an: GPU (device=0), CPU (device=cpu), MPS für Apple-Silizium (device=mps) oder DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1).

Die Anpassung dieser Parameter ermöglicht die Anpassung des Exportprozesses an spezifische Anforderungen, z. B. an die Einsatzumgebung, Hardwarebeschränkungen und Leistungsziele. Die Auswahl des richtigen Formats und der richtigen Einstellungen ist entscheidend für ein optimales Gleichgewicht zwischen Modellgröße, Geschwindigkeit und Genauigkeit.

Exportformate

Die verfügbaren YOLO11 Exportformate sind in der nachstehenden Tabelle aufgeführt. Sie können in jedes beliebige Format exportieren, indem Sie die format Argument, d.h. format='onnx' oder format='engine'. Sie können exportierte Modelle direkt vorhersagen oder validieren, d. h. yolo predict model=yolo11n.onnx. Nach Abschluss des Exports werden Anwendungsbeispiele für Ihr Modell angezeigt.

Format format Argument Modell Metadaten Argumente
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, batch
TF Kante TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
MNN mnn yolo11n.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch
IMX500 imx yolov8n_imx_model/ imgsz, int8

FAQ

Wie kann ich ein Modell von YOLO11 in das Format ONNX exportieren?

Der Export eines YOLO11 Modells in das ONNX Format ist mit Ultralytics 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("yolo11n.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=yolo11n.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, finden Sie im AbschnittONNX .

Was sind die Vorteile der Verwendung von TensorRT für den Modellexport?

Die Verwendung von TensorRT für den Modellexport bietet erhebliche Leistungsverbesserungen. YOLO11 Modelle, die nach TensorRT exportiert werden, können eine bis zu 5-fache GPU Beschleunigung erreichen, was sie ideal für Echtzeit-Inferenzanwendungen macht.

  • Vielseitigkeit: Optimieren Sie Modelle für eine bestimmte Hardwarekonfiguration.
  • Geschwindigkeit: Erzielen Sie schnellere Schlussfolgerungen durch erweiterte Optimierungen.
  • Kompatibilität: Reibungslose Integration mit NVIDIA Hardware.

Weitere Informationen zur Integration von TensorRT finden Sie in der IntegrationsanleitungTensorRT .

Wie aktiviere ich die INT8-Quantisierung beim Exportieren meines YOLO11 Modells?

Die INT8-Quantisierung ist eine hervorragende Möglichkeit, das Modell zu komprimieren und die Inferenz zu beschleunigen, insbesondere auf Edge-Geräten. Hier erfahren Sie, wie Sie die INT8-Quantisierung aktivieren können:

Beispiel

from ultralytics import YOLO

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

Die INT8-Quantisierung kann auf verschiedene Formate angewendet werden, z. B. TensorRT und CoreML. Weitere Einzelheiten finden Sie 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 stellt die Aktivierung der dynamischen Eingabegröße sicher, 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("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.pt format=onnx dynamic=True

Weitere Informationen finden Sie in der Konfiguration der dynamischen Eingabegröße.

Welches 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 FP16-Quantisierung, wodurch die Modellgröße reduziert und die Inferenz möglicherweise beschleunigt wird.
  • optimize: Wendet spezielle Optimierungen für mobile oder eingeschränkte Umgebungen an.
  • int8: Ermöglicht die INT8-Quantisierung, die für Edge-Einsätze von großem Vorteil ist.

Eine ausführliche Liste und Erläuterungen zu allen Exportargumenten finden Sie im Abschnitt Exportargumente.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 27 Tagen

Kommentare