Overslaan naar inhoud

Model exporteren met Ultralytics YOLO

Ultralytics YOLO ecosysteem en integraties

Inleiding

Het uiteindelijke doel van het trainen van een model is om het in te zetten voor echte toepassingen. De exportmodus in Ultralytics YOLOv8 biedt een veelzijdige reeks opties voor het exporteren van je getrainde model naar verschillende formaten, zodat het kan worden ingezet op verschillende platforms en apparaten. Deze uitgebreide gids leidt je door de nuances van het exporteren van modellen en laat zien hoe je maximale compatibiliteit en prestaties kunt bereiken.



Kijken: Hoe exporteer je een op maat gemaakt Ultralytics YOLOv8 model en voer je live-inferentie uit op een webcam.

Waarom kiezen voor YOLOv8's Exportmodus?

  • Veelzijdigheid: Exporteer naar meerdere formaten, waaronder ONNX, TensorRT, CoreML, en meer.
  • Prestaties: Krijg tot 5x GPU-snelheidstoename met TensorRT en 3x CPU-snelheidstoename met ONNX of OpenVINO.
  • Compatibiliteit: Maak je model universeel inzetbaar in verschillende hardware- en softwareomgevingen.
  • Gebruiksgemak: Eenvoudige CLI en Python API voor het snel en eenvoudig exporteren van modellen.

Belangrijkste functies van de Exportmodus

Hier zijn enkele van de opvallende functionaliteiten:

  • Exporteren met één klik: Eenvoudige commando's voor exporteren naar verschillende formaten.
  • Batch export: Modellen exporteren die geschikt zijn voor batchgewijze inferentie.
  • Geoptimaliseerde inferentie: Geëxporteerde modellen zijn geoptimaliseerd voor snellere inferentietijden.
  • Instructievideo's: Diepgaande gidsen en tutorials voor een soepele exportervaring.

Tip

  • Exporteren naar ONNX of OpenVINO voor tot 3x CPU-snelheid.
  • Exporteren naar TensorRT voor een versnelling tot 5x GPU.

Voorbeelden

Exporteer een YOLOv8n model naar een ander formaat zoals ONNX of TensorRT. Zie het gedeelte Argumenten hieronder voor een volledige lijst van exportargumenten.

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.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=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Argumenten

Deze tabel beschrijft de beschikbare configuraties en opties voor het exporteren van YOLO modellen naar verschillende formaten. Deze instellingen zijn cruciaal voor het optimaliseren van de prestaties, grootte en compatibiliteit van het geëxporteerde model voor verschillende platforms en omgevingen. De juiste configuratie zorgt ervoor dat het model klaar is voor gebruik in de beoogde toepassing met optimale efficiëntie.

Argument Type Standaard Beschrijving
format str 'torchscript' Doelformaat voor het geëxporteerde model, zoals 'onnx', 'torchscript', 'tensorflow'of andere, die compatibiliteit definiëren met verschillende inzetomgevingen.
imgsz int of tuple 640 Gewenste afbeeldingsgrootte voor de modelinvoer. Kan een geheel getal zijn voor vierkante afbeeldingen of een tupel (height, width) voor specifieke afmetingen.
keras bool False Maakt export naar Keras formaat mogelijk voor TensorFlow SavedModel , waardoor compatibiliteit met TensorFlow serving en API's mogelijk is.
optimize bool False Optimalisatie toepassen voor mobiele apparaten bij het exporteren naar TorchScript, waardoor het model kleiner kan worden en de prestaties verbeteren.
half bool False Maakt FP16 (half-precisie) kwantisatie mogelijk, waardoor het model kleiner wordt en de inferentie mogelijk sneller op ondersteunde hardware.
int8 bool False Activeert INT8 kwantisatie, waardoor het model verder wordt gecomprimeerd en de inferentie wordt versneld met minimaal verlies van nauwkeurigheid, voornamelijk voor randapparaten.
dynamic bool False Dynamische invoerformaten voor ONNX en TensorRT export zijn mogelijk, wat de flexibiliteit vergroot bij het verwerken van verschillende afbeeldingsafmetingen.
simplify bool False Vereenvoudigt de modeldiagram voor ONNX export, waardoor de prestaties en compatibiliteit mogelijk verbeteren.
opset int None Specificeert de versie van de ONNX opset voor compatibiliteit met verschillende ONNX parsers en runtimes. Als deze niet is ingesteld, wordt de laatst ondersteunde versie gebruikt.
workspace float 4.0 Stelt de maximale grootte van de werkruimte in GiB in voor TensorRT optimalisaties, waarbij geheugengebruik en prestaties in balans worden gebracht.
nms bool False Voegt Non-Maximum Suppression (NMS) toe aan de export CoreML , essentieel voor nauwkeurige en efficiënte detectie post-processing.
batch int 1 Specificeert de grootte van de batch-inferentie van het geëxporteerde model of het maximum aantal afbeeldingen dat het geëxporteerde model gelijktijdig zal verwerken in predict modus.

Door deze parameters aan te passen kan het exportproces worden aangepast aan specifieke eisen, zoals de inzetomgeving, hardwarebeperkingen en prestatiedoelen. Het kiezen van het juiste formaat en de juiste instellingen is essentieel voor het bereiken van de beste balans tussen modelgrootte, snelheid en nauwkeurigheid.

Exportformaten

Beschikbare YOLOv8 exportformaten staan in de tabel hieronder. Je kunt naar elk formaat exporteren met de format argument, d.w.z. format='onnx' of format='engine'. Je kunt direct voorspellen of valideren op geëxporteerde modellen, d.w.z. yolo predict model=yolov8n.onnx. Gebruiksvoorbeelden worden getoond voor je model nadat het exporteren is voltooid.

Formaat format Argument Model Metagegevens Argumenten
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Lite tflite yolov8n.tflite imgsz, half, int8, batch
TF Rand TPU edgetpu yolov8n_edgetpu.tflite imgsz, batch
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch


Gemaakt 2023-11-12, Bijgewerkt 2024-05-08
Auteurs: Burhan-Q (3), glenn-jocher (11)

Reacties