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 Export-Modus in Ultralytics YOLO26 bietet eine vielseitige Auswahl an Optionen zum Export Ihres trainierten Modells in verschiedene Formate, wodurch es auf verschiedenen Plattformen und Geräten einsetzbar wird. Dieser umfassende Leitfaden soll Ihnen die Feinheiten des Modell-Exports näherbringen und zeigen, wie Sie maximale Kompatibilität und Leistung erzielen können.



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

Warum den Export-Modus von YOLO26 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 YOLO26n-Modell in ein anderes Format wie ONNX oder TensorRT. Eine vollständige Liste der Export-Argumente finden Sie im Abschnitt „Argumente“ unten.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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=yolo26n.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.

ArgumentTypStandardBeschreibung
formatstr'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.
imgszint oder tuple640Gewü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.
kerasboolFalseErmöglicht den Export in das Keras-Format für TensorFlow SavedModel und bietet Kompatibilität mit TensorFlow Serving und APIs.
optimizeboolFalseWendet 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.
halfboolFalseAktiviert die FP16 (Halbpräzisions-)Quantisierung, wodurch die Modellgröße reduziert und die Inferenz auf unterstützter Hardware potenziell beschleunigt wird. Nicht kompatibel mit INT8-Quantisierung oder CPU-only-Exports. Nur für bestimmte Formate verfügbar, z.B. ONNX (siehe unten).
int8boolFalseAktiviert 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.
dynamicboolFalseErmöglicht dynamische Eingabegrößen für ONNX-, TensorRT- und OpenVINO-Exporte, was die Flexibilität bei der Verarbeitung unterschiedlicher Bildabmessungen erhöht. Automatisch eingestellt auf True bei Verwendung von TensorRT mit INT8.
simplifyboolTrueVereinfacht den Modellgraphen für ONNX-Exporte mit onnxslim, was potenziell die Leistung und Kompatibilität mit Inferenz-Engines verbessert.
opsetintNoneGibt 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.
workspacefloat oder NoneNoneLegt 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.
nmsboolFalseFügt dem exportierten Modell Non-Maximum Suppression (NMS) hinzu, sofern unterstützt (siehe Exportformate), wodurch die Effizienz der Detektions-Nachbearbeitung verbessert wird. Nicht verfügbar für End2End-Modelle.
batchint1Gibt 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.
devicestrNoneGibt 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.
datastr'coco8.yaml'Pfad zu der Datensatz Konfigurationsdatei, unerlässlich für die INT8-Quantisierungskalibrierung. Wenn nicht angegeben und INT8 aktiviert ist, coco8.yaml wird als Fallback für die Kalibrierung verwendet.
fractionfloat1.0Gibt 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.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO , die NMS Inferenz unterstützen (YOLO26, YOLOv10). Wenn Sie ihn auf False ermöglicht Ihnen den Export dieser Modelle, sodass sie mit der herkömmlichen NMS Nachbearbeitungspipeline kompatibel sind.

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 YOLO26-Exportformate sind in der folgenden Tabelle aufgeführt. Sie können in jedes Format exportieren mit dem format Argument, d.h. format='onnx' oder format='engine'. Sie können direkt auf exportierten Modellen vorhersagen oder validieren, d.h., yolo predict model=yolo26n.onnx. Anwendungsbeispiele werden nach Abschluss des Exports für Ihr Modell angezeigt.

Formatformat ArgumentModellMetadatenArgumente
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, device
Axeleraaxelerayolo26n_axelera_model/imgsz, int8, data, fraction, device

FAQ

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

Der Export eines YOLO26-Modells in das ONNX-Format ist mit Ultralytics unkompliziert. Es bietet sowohl Python- als auch CLI-Methoden für den Export von Modellen.

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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=yolo26n.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 Modell-Export bietet erhebliche Leistungsverbesserungen. Nach TensorRT exportierte YOLO26-Modelle 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 Export meines YOLO26-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("yolo26n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo26n.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("yolo26n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo26n.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.

Was stellen die Ausgabe-tensoren in exportierten YOLO-Modellen dar?

Wenn Sie ein YOLO-Modell in Formate wie ONNX oder TensorRT exportieren, hängt die Struktur des Ausgabe-tensors von der Modellaufgabe ab. Das Verständnis dieser Ausgaben ist wichtig für benutzerdefinierte Inferenzimplementierungen.

Für detect-Modelle (z. B. yolo26n.pt), ist die Ausgabe typischerweise ein einzelner tensor mit der Form (batch_size, 4 + num_classes, num_predictions) wobei die Kanäle Box-Koordinaten plus klassenspezifische Scores darstellen, und num_predictions hängt von der Export-Eingangsauflösung ab (und kann dynamisch sein).

Für segment-Modelle (z. B. yolo26n-seg.pt), erhalten Sie typischerweise zwei Ausgaben: den ersten tensor mit der Form (batch_size, 4 + num_classes + mask_dim, num_predictions) (Boxen, Klassenscores und Maskenkoeffizienten) und den zweiten tensor mit der Form (batch_size, mask_dim, proto_h, proto_w) der Maskenprototypen enthält, die mit den Koeffizienten zur Generierung von Instanzmasken verwendet werden. Die Größen hängen von der Export-Eingangsauflösung ab (und können dynamisch sein).

Für Pose-Modelle (z. B. yolo26n-pose.pt), hat der Ausgabe-tensor typischerweise die Form (batch_size, 4 + num_classes + keypoint_dims, num_predictions), wobei keypoint_dims hängt von der Pose-Spezifikation ab (z.B. Anzahl der Keypoints und ob Konfidenz enthalten ist), und num_predictions hängt von der Export-Eingangsauflösung ab (und kann dynamisch sein).

Die Beispiele in den ONNX-Inferenzbeispielen zeigen, wie diese Ausgaben für jeden Modelltyp verarbeitet werden.



📅 Erstellt vor 2 Jahren ✏️ Aktualisiert vor 2 Tagen
glenn-jocherBurhan-QUltralyticsAssistantambitious-octopusKayzwerraimbekovmpderrengerY-T-Gjk4eMatthewNoyceRizwanMunawar

Kommentare