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: Export in mehrere Formate, darunter ONNX, TensorRT, CoreMLund mehr.
  • Leistung: Bis zu 5x mehr GPU mit TensorRT und 3x mehr 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', 'engine' TensorRT), oder andere. Jedes Format ermöglicht die Kompatibilität mit verschiedenen Einsatzumgebungen.
imgsz int oder tuple 640 Gewünschte Bildgröße für die Modelleingabe. Kann eine ganze Zahl für quadratische Bilder sein (z. B., 640 für 640×640) oder ein Tupel (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 Inferenzleistung verbessert werden kann. Nicht kompatibel mit dem NCNN oder CUDA .
half bool False Ermöglicht die FP16-Quantisierung (halbe Genauigkeit), wodurch die Modellgröße verringert und die Inferenz auf unterstützter Hardware möglicherweise beschleunigt wird. Nicht kompatibel mit INT8-Quantisierung oder CPU für ONNX.
int8 bool False Aktiviert die INT8-Quantisierung, wodurch das Modell weiter komprimiert und die Inferenz mit minimalem Genauigkeitsverlust beschleunigt wird, hauptsächlich für Edge-Geräte. Bei Verwendung mit TensorRT wird eine Quantisierung nach dem Training (PTQ) durchgeführt.
dynamic bool False Ermöglicht dynamische Eingabegrößen für ONNX, TensorRT und OpenVINO , was die Flexibilität bei der Handhabung unterschiedlicher Bildgrößen erhöht. Automatisch eingestellt auf True bei Verwendung von TensorRT mit INT8.
simplify bool True Vereinfacht den Modellgraphen für ONNX Exporte mit onnxslimDies kann die Leistung und die Kompatibilität mit Inferenzmaschinen verbessern.
opset int None Gibt die ONNX an, um die Kompatibilität mit verschiedenen ONNX Parsern und Laufzeiten. Wenn nicht festgelegt, wird die letzte unterstützte Version verwendet.
workspace float oder None None Legt die maximale Größe des Arbeitsbereichs in GiB für TensorRT Optimierungen, die Speicherverbrauch und Leistung ausgleichen. verwenden None für die automatische Zuweisung durch TensorRT bis zum Geräte-Maximum.
nms bool False Fügt dem exportierten Modell die Nicht-Maximum-Unterdrückung (NMS) hinzu, sofern dies unterstützt wird (siehe Exportformate), um die Effizienz der Nachbearbeitung der Erkennung zu verbessern. Nicht verfügbar für end2end-Modelle.
batch int 1 Gibt die Größe des Exportmodells oder die maximale Anzahl der Bilder an, die das exportierte Modell gleichzeitig in predict Modus. Bei TPU wird dies automatisch auf 1 gesetzt.
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). TensorRT verwenden automatisch die GPU.
data str 'coco8.yaml' Weg zum Datensatz Konfigurationsdatei (Standard: coco8.yaml), wichtig für die INT8-Quantisierungskalibrierung. Wird bei aktiviertem INT8 kein Datensatz angegeben, wird ein Standarddatensatz zugewiesen.

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, nms, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, nms, batch, data
TF Kante TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, 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, data
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name

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 zum Prozess, einschließlich erweiterter Optionen wie die Handhabung unterschiedlicher Eingabegrößen, finden Sie im ONNX .

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, OpenVINOund CoreML. Für optimale Quantisierungsergebnisse ist eine repräsentative Datensatz unter Verwendung der data Parameter.

Warum ist die dynamische Eingabegröße beim Export von Modellen wichtig?

Dank der dynamischen Eingabegröße kann das exportierte Modell mit unterschiedlichen Bildgrößen umgehen, was für Flexibilität sorgt und die Verarbeitungseffizienz für verschiedene Anwendungsfälle optimiert. Beim Exportieren in Formate wie ONNX oder TensorRTwird durch die Aktivierung der dynamischen Eingabegröße sichergestellt, 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

Die dynamische Eingabegrößenanpassung ist besonders nützlich für Anwendungen, bei denen die Abmessungen der Eingaben variieren können, z. B. bei der Videoverarbeitung oder bei der Verarbeitung von Bildern aus verschiedenen Quellen.

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 INT8-Quantisierung, sehr vorteilhaft für KI Einsätze.

Für den Einsatz auf bestimmten Hardware-Plattformen sollten Sie die Verwendung spezieller Exportformate wie TensorRT für NVIDIA GPUs, CoreML für Apple-Geräte oder Edge TPU für Google Coral-Geräte.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 3 Tagen

Kommentare