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 YOLO11 offre une gamme polyvalente d'options pour exporter ton modèle formé vers différents formats, ce qui permet de le déployer sur diverses plateformes et appareils. Ce guide complet a pour but de te guider à travers les nuances de l'exportation de modèles, en montrant comment obtenir une compatibilité et des performances maximales.



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

Pourquoi choisir le mode d'exportation de YOLO11 ?

  • Polyvalence : Exporte vers plusieurs formats, y compris ONNX, TensorRT, CoreML, et plus encore.
  • Performance : Gagne jusqu'à 5 fois la vitesse de GPU avec TensorRT et 3 fois la vitesse de 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 accélérer jusqu'à 3 fois CPU .
  • Exporte vers TensorRT pour accélérer jusqu'à 5 fois GPU .

Exemples d'utilisation

Exporte un modèle YOLO11n 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("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

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.

ArgumentTypeDéfautDescription
formatstr'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.
imgszint ou tuple640Taille 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.
kerasboolFalsePermet l'exportation au format Keras pour TensorFlow SavedModel, ce qui assure la compatibilité avec les services et les API de TensorFlow .
optimizeboolFalseApplique 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.
halfboolFalsePermet 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.
int8boolFalseActive 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.
dynamicboolFalsePermet des tailles d'entrée dynamiques pour les exportations ONNX, TensorRT et OpenVINO , ce qui améliore la flexibilité dans la gestion des dimensions d'image variables.
simplifyboolTrueSimplifie le graphique du modèle pour les exportations ONNX avec onnxslimCe qui permet d'améliorer les performances et la compatibilité.
opsetintNoneSpé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.
workspacefloat4.0Dé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.
nmsboolFalseAjoute la suppression non maximale (NMS) à l'exportation CoreML , ce qui est essentiel pour un post-traitement précis et efficace de la détection.
batchint1Spécifie la taille de l'inférence par lot du modèle exporté ou le nombre maximum d'images que le modèle exporté traitera simultanément dans l'espace de travail. predict mode.
devicestrNoneSpécifie l'appareil à exporter : GPU (device=0), CPU (device=cpu), MPS pour le silicium d'Apple (device=mps) ou DLA pour NVIDIA Jetson (device=dla:0 ou device=dla:1).

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 pour YOLO11 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=yolo11n.onnx. Des exemples d'utilisation sont montrés pour ton modèle une fois l'exportation terminée.

Formatformat ArgumentModèleMétadonnéesArguments
PyTorch-yolo11n.pt-
TorchScripttorchscriptyolo11n.torchscriptimgsz, optimize, batch
ONNXonnxyolo11n.onnximgsz, half, dynamic, simplify, opset, batch
OpenVINOopenvinoyolo11n_openvino_model/imgsz, half, int8, batch
TensorRTengineyolo11n.engineimgsz, half, dynamic, simplify, workspace, int8, batch
CoreMLcoremlyolo11n.mlpackageimgsz, half, int8, nms, batch
TF SavedModelsaved_modelyolo11n_saved_model/imgsz, keras, int8, batch
TF GraphDefpbyolo11n.pbimgsz, batch
TF Litetfliteyolo11n.tfliteimgsz, half, int8, batch
TF Bord TPUedgetpuyolo11n_edgetpu.tfliteimgsz
TF.jstfjsyolo11n_web_model/imgsz, half, int8, batch
PaddlePaddlepaddleyolo11n_paddle_model/imgsz, batch
MNNmnnyolo11n.mnnimgsz, batch, int8, half
NCNNncnnyolo11n_ncnn_model/imgsz, half, batch
IMX500imxyolo11n_imx_model/imgsz, int8

FAQ

Comment exporter un modèle YOLO11 au format ONNX ?

L'exportation d'un modèle YOLO11 au format ONNX est très simple avec Ultralytics. Il fournit les méthodes Python et CLI pour exporter les modèles.

Exemple

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

Pour plus de détails sur le processus, y compris les options avancées comme la gestion des différentes tailles d'entrée, reporte-toi à la sectionONNX .

Quels sont les avantages de l'utilisation de TensorRT pour l'exportation de modèles ?

L'utilisation de TensorRT pour l'exportation de modèles offre des améliorations significatives en termes de performances. Les modèles YOLO11 exportés vers TensorRT peuvent atteindre une vitesse de 5x GPU , ce qui les rend idéaux pour les applications d'inférence en temps réel.

  • Polyvalence : Optimise les modèles pour une configuration matérielle spécifique.
  • Vitesse : Réalise des inférences plus rapides grâce à des optimisations avancées.
  • Compatibilité : S'intègre sans problème au matériel NVIDIA .

Pour en savoir plus sur l'intégration de TensorRT, consulte le guide d'intégration deTensorRT .

Comment activer la quantification INT8 lors de l'exportation de mon modèle YOLO11 ?

La quantification INT8 est un excellent moyen de compresser le modèle et d'accélérer l'inférence, en particulier sur les appareils périphériques. Voici comment activer la quantification INT8 :

Exemple

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

La quantification INT8 peut être appliquée à différents formats, tels que TensorRT et CoreML. Tu trouveras plus de détails dans la section Exportation.

Pourquoi la taille des entrées dynamiques est-elle importante lors de l'exportation de modèles ?

La taille d'entrée dynamique permet au modèle exporté de gérer des dimensions d'image variables, ce qui apporte de la flexibilité et optimise l'efficacité du traitement pour différents cas d'utilisation. Lors de l'exportation vers des formats tels que ONNX ou TensorRT, l'activation de la taille d'entrée dynamique garantit que le modèle peut s'adapter à différentes formes d'entrée de manière transparente.

Pour activer cette fonction, utilise le dynamic=True lors de l'exportation :

Exemple

from ultralytics import YOLO

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

Pour un contexte supplémentaire, reporte-toi à la configuration de la taille d'entrée dynamique.

Quels sont les principaux arguments d'exportation à prendre en compte pour optimiser les performances du modèle ?

Comprendre et configurer les arguments d'exportation est crucial pour optimiser les performances du modèle :

  • format: Le format cible du modèle exporté (par ex, onnx, torchscript, tensorflow).
  • imgsz: Taille d'image souhaitée pour l'entrée du modèle (par ex, 640 ou (height, width)).
  • half: Permet la quantification FP16, ce qui réduit la taille du modèle et accélère potentiellement l'inférence.
  • optimize: Applique des optimisations spécifiques pour les environnements mobiles ou contraints.
  • int8: Permet la quantification INT8, très utile pour les déploiements en périphérie.

Pour obtenir une liste détaillée et des explications sur tous les arguments d'exportation, visite la section Arguments d'exportation.

📅 C réé il y a 1 an ✏️ Mis à jour il y a 27 jours

Commentaires