Zum Inhalt springen

Modellexport mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

Einführung

Das ultimative Ziel des Modelltrainings ist der Einsatz in realen Anwendungen. Der Exportmodus in Ultralytics YOLO11 bietet eine vielseitige Auswahl an Optionen, um Ihr trainiertes Modell in verschiedene Formate zu exportieren und es so auf verschiedenen Plattformen und Geräten einsetzbar zu machen. Dieser umfassende Leitfaden soll Sie durch die Nuancen des Modellexports führen und zeigen, wie Sie maximale Kompatibilität und Leistung erzielen.



Ansehen: So exportieren Sie ein benutzerdefiniert trainiertes Ultralytics YOLO-Modell und führen Live-Inferenz auf der Webcam aus.

Warum den Exportmodus von YOLO11 wählen?

  • Vielseitigkeit: Export in verschiedene Formate, darunter ONNX, TensorRT, CoreML und mehr.
  • Leistung: Erziele bis zu 5x GPU-Beschleunigung mit TensorRT und 3x CPU-Beschleunigung mit ONNX oder OpenVINO.
  • Kompatibilität: Machen Sie Ihr Modell universell einsetzbar in zahlreichen Hardware- und Softwareumgebungen.
  • Benutzerfreundlichkeit: Einfache CLI und Python API für schnellen und unkomplizierten Modellexport.

Hauptmerkmale des Exportmodus

Hier sind einige der herausragenden Funktionalitäten:

  • One-Click-Export: Einfache Befehle zum Exportieren in verschiedene Formate.
  • Batch-Export: Export von Modellen, die für Batched-Inference geeignet sind.
  • Optimierte Inferenz: Exportierte Modelle sind für schnellere Inferenzzeiten optimiert.
  • Tutorial-Videos: Ausführliche Anleitungen und Tutorials für ein reibungsloses Exporterlebnis.

Tipp

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

Anwendungsbeispiele

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

Diese Tabelle beschreibt detailliert die Konfigurationen und Optionen, 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, wie z. B. 'onnx', 'torchscript', 'engine' (TensorRT) oder andere. Jedes Format ermöglicht die Kompatibilität mit verschiedenen Bereitstellungsumgebungen.
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 sein.
keras bool False Ermöglicht den Export in das Keras-Format für TensorFlow SavedModel und bietet Kompatibilität mit TensorFlow Serving und APIs.
optimize bool False Wendet die Optimierung für mobile Geräte beim Exportieren nach TorchScript an, wodurch potenziell die Modellgröße reduziert und die Inferenz-Leistung verbessert wird. Nicht kompatibel mit dem NCNN-Format oder CUDA-Geräten.
half bool False Aktiviert die FP16-Quantisierung (halbe Präzision), wodurch die Modellgröße reduziert und die Inferenz auf unterstützter Hardware potenziell beschleunigt wird. Nicht kompatibel mit INT8-Quantisierung oder CPU-only-Exporten 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 Post-Training-Quantisierung (PTQ) durchgeführt.
dynamic bool False Ermöglicht dynamische Eingabegrößen für ONNX-, TensorRT- und OpenVINO-Exporte, wodurch die Flexibilität bei der Verarbeitung unterschiedlicher Bilddimensionen erhöht wird. Automatisch gesetzt auf True bei Verwendung von TensorRT mit INT8.
simplify bool True Vereinfacht den Modellgraphen für ONNX-Exporte mit onnxslim, was potenziell die Leistung und Kompatibilität mit Inferenz-Engines verbessert.
opset int None Gibt die ONNX-Opset-Version für die Kompatibilität mit verschiedenen ONNX-Parsern und -Laufzeitumgebungen an. Wenn nicht festgelegt, wird die neueste unterstützte Version verwendet.
workspace float oder None None Legt die maximale Workspace-Größe in GiB fest für TensorRT Optimierungen, die ein Gleichgewicht zwischen Speichernutzung und Leistung herstellen. Verwenden Sie None zur automatischen Zuweisung durch TensorRT bis zum Gerätemaximum.
nms bool False Fügt dem exportierten Modell, falls unterstützt, Non-Maximum Suppression (NMS) hinzu (siehe Exportformate), wodurch die Effizienz der Nachbearbeitung der Erkennung verbessert wird. Nicht verfügbar für End-to-End-Modelle.
batch int 1 Gibt die Batch-Inferenzgröße des Exportmodells oder die maximale Anzahl von Bildern an, die das exportierte Modell gleichzeitig verarbeitet in predict Modus. Für Edge TPU-Exporte wird dies automatisch auf 1 gesetzt.
device str None Gibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps) oder DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1). TensorRT-Exporte verwenden automatisch die GPU.
data str 'coco8.yaml' Pfad zu der Datensatz Konfigurationsdatei (Standard: coco8.yaml), unerlässlich für die INT8-Quantisierungskalibrierung. Wenn nicht mit aktivierter INT8 angegeben, wird ein Standard-Datensatz zugewiesen.
fraction float 1.0 Gibt den Bruchteil des Datensatzes an, der für die INT8-Quantisierungskalibrierung verwendet werden soll. Ermöglicht die Kalibrierung auf einer Teilmenge des vollständigen Datensatzes, was für Experimente oder bei begrenzten Ressourcen nützlich ist. Wenn nicht mit aktiviertem INT8 angegeben, wird der vollständige Datensatz verwendet.

Die Anpassung dieser Parameter ermöglicht die Anpassung des Exportprozesses an spezifische Anforderungen, wie z. B. Einsatzumgebung, Hardwarebeschränkungen und Leistungsziele. Die Auswahl des geeigneten Formats und der geeigneten Einstellungen ist entscheidend, um das beste Gleichgewicht zwischen Modellgröße, Geschwindigkeit und Genauigkeit zu erreichen.

Exportformate

Die verfügbaren YOLO11-Exportformate sind in der folgenden Tabelle aufgeführt. Sie können in jedes Format exportieren, indem Sie die format Argument in ein beliebiges Format exportieren, z. B. format='onnx' oder format='engine'. Sie können direkt mit exportierten Modellen Vorhersagen treffen oder diese validieren, z. B. yolo predict model=yolo11n.onnx. Anwendungsbeispiele werden nach Abschluss des Exports für Ihr Modell angezeigt.

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

FAQ

Wie exportiere ich ein YOLO11-Modell in das ONNX-Format?

Das Exportieren eines YOLO11-Modells in das ONNX-Format ist mit Ultralytics unkompliziert. Es bietet sowohl Python- als auch CLI-Methoden zum Exportieren 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 Informationen zu diesem Prozess, einschließlich erweiterter Optionen wie dem Umgang mit unterschiedlichen Eingabegrößen, finden Sie im ONNX-Integrationsleitfaden.

Welche Vorteile bietet die 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 ein bestimmtes Hardware-Setup.
  • Geschwindigkeit: Erzielen Sie eine schnellere Inferenz durch fortschrittliche Optimierungen.
  • Kompatibilität: Nahtlose Integration mit NVIDIA Hardware.

Um mehr über die Integration von TensorRT zu erfahren, lesen Sie den TensorRT-Integrationsleitfaden.

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

Die INT8-Quantisierung ist eine ausgezeichnete 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, wie z. B. TensorRT, OpenVINOund CoreML. Um optimale Quantisierungsergebnisse zu erzielen, stellen Sie eine repräsentative Datensatz Verwendung des data Parameter.

Warum ist eine dynamische Eingabegröße beim Exportieren von Modellen wichtig?

Die dynamische Eingabegröße ermöglicht es dem exportierten Modell, unterschiedliche Bilddimensionen zu verarbeiten, was Flexibilität bietet 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 verschiedene Eingabeformen anpassen kann.

Um diese Funktion zu aktivieren, verwenden Sie das dynamic=True Flag während des Exports:

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 Eingabedimensionen variieren können, wie z. B. bei der Videoverarbeitung oder bei der Verarbeitung von Bildern aus verschiedenen Quellen.

Welche wichtigen Exportargumente sind für die Optimierung der Modellleistung zu berücksichtigen?

Das Verständnis und die Konfiguration von Exportargumenten ist entscheidend für die Optimierung der Modellleistung:

  • format: Das Zielformat für das exportierte Modell (z. B. onnx, torchscript, tensorflow), oder Auto-Modus mit angegebener Auslastungsfraktion (
  • imgsz: Gewünschte Bildgröße für die Modelleingabe (z. B. 640 oder (height, width)), oder Auto-Modus mit angegebener Auslastungsfraktion (
  • half: Aktiviert die FP16-Quantisierung, wodurch die Modellgröße reduziert und potenziell die Inferenz beschleunigt wird.
  • optimize: Wendet spezifische Optimierungen für mobile oder eingeschränkte Umgebungen an.
  • int8: Aktiviert die INT8-Quantisierung, was sehr vorteilhaft ist für Edge-KI Bereitstellungen.

Für die Bereitstellung auf bestimmten Hardwareplattformen 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 in Betracht ziehen.



📅 Vor 1 Jahr erstellt ✏️ Vor 5 Monaten aktualisiert

Kommentare