Skip to content

Modèle d'exportation avec Ultralytics YOLO

Ultralytics YOLO écosystème et intégrations

Introduction

Le but ultime de la formation d'un modèle est de le déployer pour des applications réelles. Le mode d'exportation dans Ultralytics YOLOv8 offre une gamme polyvalente d'options pour exporter ton modèle formé vers différents formats, ce qui le rend déployable sur diverses plateformes et appareils. Ce guide complet a pour but de te guider à travers les nuances de l'exportation de modèles, en te montrant comment obtenir une compatibilité et des performances maximales.



Regarde : Comment exporter un modèle Ultralytics YOLOv8 personnalisé et exécuter une inférence en direct sur une webcam.

Pourquoi choisir le mode d'exportation de YOLOv8?

  • Polyvalence : Exporte vers plusieurs formats, y compris ONNX, TensorRT, CoreML, et plus encore.
  • Performance : Gagne jusqu'Ă  5 fois la vitesse du GPU avec TensorRT et 3 fois la vitesse du CPU avec ONNX ou OpenVINO.
  • CompatibilitĂ© : Rends ton modèle universellement dĂ©ployable dans de nombreux environnements matĂ©riels et logiciels.
  • FacilitĂ© d'utilisation : CLI et Python API simples pour une exportation rapide et directe des modèles.

Principales caractéristiques du mode d'exportation

Voici quelques-unes des fonctionnalités les plus remarquables :

  • Exportation en un clic : Des commandes simples pour exporter vers diffĂ©rents formats.
  • Exportation par lots : Exporte des modèles capables d'effectuer des infĂ©rences par lots.
  • InfĂ©rence optimisĂ©e : Les modèles exportĂ©s sont optimisĂ©s pour une infĂ©rence plus rapide.
  • Tutoriels vidĂ©o : Des guides et des tutoriels approfondis pour une expĂ©rience d'exportation en douceur.

Astuce

  • Exporter vers ONNX ou OpenVINO pour tripler la vitesse de l'unitĂ© centrale.
  • Exporte vers TensorRT pour accĂ©lĂ©rer jusqu'Ă  5 fois la vitesse du GPU.

Exemples d'utilisation

Exporte un modèle YOLOv8n vers un format différent comme ONNX ou TensorRT. Voir la section Arguments ci-dessous pour une liste complète des arguments d'exportation.

Exemple

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

Arguments

Ce tableau détaille les configurations et les options disponibles pour exporter les modèles YOLO vers différents formats. Ces paramètres sont essentiels pour optimiser les performances, la taille et la compatibilité du modèle exporté sur différentes plateformes et dans différents environnements. Une configuration adéquate garantit que le modèle est prêt à être déployé dans l'application prévue avec une efficacité optimale.

Argument Type DĂ©faut Description
format str 'torchscript' Format cible pour le modèle exporté, par exemple 'onnx', 'torchscript', 'tensorflow'ou d'autres, définissant la compatibilité avec divers environnements de déploiement.
imgsz int ou tuple 640 Taille de l'image souhaitée pour l'entrée du modèle. Il peut s'agir d'un nombre entier pour les images carrées ou d'un tuple (height, width) pour les dimensions spécifiques.
keras bool False Permet l'exportation au format Keras pour TensorFlow SavedModel , assurant la compatibilité avec TensorFlow serving et les API.
optimize bool False Applique l'optimisation pour les appareils mobiles lors de l'exportation vers TorchScript, ce qui permet de réduire la taille du modèle et d'améliorer les performances.
half bool False Permet la quantification FP16 (demi-précision), ce qui réduit la taille du modèle et accélère potentiellement l'inférence sur le matériel pris en charge.
int8 bool False Active la quantification INT8, ce qui compresse davantage le modèle et accélère l'inférence avec une perte de précision minimale, principalement pour les appareils périphériques.
dynamic bool False Permet des tailles d'entrée dynamiques pour les exportations ONNX et TensorRT , ce qui améliore la flexibilité dans la gestion des dimensions d'image variables.
simplify bool False Simplifies the model graph for ONNX exports with onnxslim, potentially improving performance and compatibility.
opset int None Spécifie la version de l'opset ONNX pour la compatibilité avec les différents analyseurs et moteurs d'exécution ONNX . Si elle n'est pas définie, elle utilise la dernière version prise en charge.
workspace float 4.0 Définit la taille maximale de l'espace de travail en GiB pour les optimisations de TensorRT , en équilibrant l'utilisation de la mémoire et les performances.
nms bool False Ajoute la suppression non maximale (NMS) à l'exportation CoreML , ce qui est essentiel pour un post-traitement précis et efficace de la détection.
batch int 1 Specifies export model batch inference size or the max number of images the exported model will process concurrently in predict mode.

L'ajustement de ces paramètres permet de personnaliser le processus d'exportation en fonction d'exigences spécifiques, telles que l'environnement de déploiement, les contraintes matérielles et les objectifs de performance. La sélection du format et des paramètres appropriés est essentielle pour atteindre le meilleur équilibre entre la taille du modèle, la vitesse et la précision.

Formats d'exportation

Les formats d'exportation disponibles sur YOLOv8 sont présentés dans le tableau ci-dessous. Tu peux exporter vers n'importe quel format à l'aide de la fonction format argument, c'est-à-dire format='onnx' ou format='engine'. Tu peux prédire ou valider directement sur les modèles exportés, c'est-à-dire . yolo predict model=yolov8n.onnx. Des exemples d'utilisation sont montrés pour ton modèle une fois l'exportation terminée.

Format format Argument Modèle Métadonnées Arguments
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 Bord 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


Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (15), Burhan-Q (4), Kayzwer (2)

Commentaires