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 speedup met TensorRT en 3x CPU speedup 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 een versnelling tot 3x CPU .
  • 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 modelgrafiek voor ONNX uitvoer met onnxslim, waardoor de prestaties en compatibiliteit kunnen worden verbeterd.
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 Hiermee geeft u de batchgrootte van het exportmodel op, de grootte van de deductie of het maximale aantal afbeeldingen waarin het geƫxporteerde model gelijktijdig wordt verwerkt 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
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

FAQ

Hoe exporteer ik een YOLOv8 model naar het formaat ONNX ?

Het exporteren van een YOLOv8 model naar het formaat ONNX is eenvoudig met Ultralytics. Het biedt zowel Python als CLI methoden voor het exporteren van modellen.

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

Raadpleeg het gedeelte ONNX sectie.

Wat zijn de voordelen van het gebruik van TensorRT voor modelexport?

Het gebruik van TensorRT voor modelexport biedt aanzienlijke prestatieverbeteringen. YOLOv8 modellen geƫxporteerd naar TensorRT kunnen tot 5x sneller zijn dan GPU , waardoor het ideaal is voor real-time inferentietoepassingen.

  • Veelzijdigheid: Optimaliseer modellen voor een specifieke hardwareopstelling.
  • Snelheid: Bereik snellere inferentie door geavanceerde optimalisaties.
  • Compatibiliteit: Integreer probleemloos met NVIDIA hardware.

Voor meer informatie over de integratie van TensorRT, zie de TensorRT integratiegids.

Hoe schakel ik INT8 kwantisatie in bij het exporteren van mijn YOLOv8 model?

INT8 kwantisatie is een uitstekende manier om het model te comprimeren en inferentie te versnellen, vooral op randapparaten. Hier lees je hoe je INT8 kwantisatie kunt inschakelen:

Voorbeeld

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a model
model.export(format="onnx", int8=True)
yolo export model=yolov8n.pt format=onnx int8=True   # export model with INT8 quantization

INT8 kwantisatie kan worden toegepast op verschillende formaten, zoals TensorRT en CoreML. Meer details zijn te vinden in de sectie Exporteren.

Waarom is de dynamische invoergrootte belangrijk bij het exporteren van modellen?

Dynamische invoergrootte zorgt ervoor dat het geƫxporteerde model om kan gaan met verschillende afbeeldingsafmetingen, wat flexibiliteit biedt en de verwerkingsefficiƫntie optimaliseert voor verschillende gebruikssituaties. Bij het exporteren naar formaten zoals ONNX of TensorRT zorgt het inschakelen van dynamische invoerafmetingen ervoor dat het model zich naadloos kan aanpassen aan verschillende invoervormen.

Gebruik de optie dynamic=True vlag tijdens het exporteren:

Voorbeeld

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolov8n.pt format=onnx dynamic=True

Raadpleeg voor meer informatie de configuratie van de dynamische invoergrootte.

Wat zijn de belangrijkste exportargumenten om te overwegen voor het optimaliseren van de modelprestaties?

Het begrijpen en configureren van exportargumenten is cruciaal voor het optimaliseren van de modelprestaties:

  • format: Het doelformaat voor het geĆ«xporteerde model (bijv, onnx, torchscript, tensorflow).
  • imgsz: Gewenste afbeeldingsgrootte voor de modelinvoer (bijv, 640 of (height, width)).
  • half: Maakt FP16 kwantisatie mogelijk, waardoor het model kleiner wordt en de inferentie mogelijk sneller.
  • optimize: Past specifieke optimalisaties toe voor mobiele of beperkte omgevingen.
  • int8: Maakt INT8 kwantisatie mogelijk, zeer gunstig voor randimplementaties.

Ga voor een gedetailleerde lijst en uitleg van alle exportargumenten naar het gedeelte Exportargumenten.



Aangemaakt 2023-11-12, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (17), Burhan-Q (4), Kayzwer (2)

Reacties