Modellexport mit Ultralytics YOLO
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
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.