Modèle d'exportation avec Ultralytics YOLO
Introduction
L'objectif 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 votre modèle formé vers différents formats, ce qui permet de le déployer sur diverses plates-formes et appareils. Ce guide complet a pour but de vous guider à travers les nuances de l'exportation de modèles, en vous montrant comment obtenir une compatibilité et des performances maximales.
Regarder : 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 : Exportation vers de multiples formats, y compris ONNX, TensorRT, CoreMLet bien d'autres encore.
- Performance : Gagnez jusqu'à 5 fois la vitesse du GPU avec TensorRT et 3 fois la vitesse du CPU avec ONNX ou OpenVINO.
- Compatibilité : Rendez votre 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 : Exporter des modèles capables d'effectuer une inférence 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 fluide.
Conseil
Exemples d'utilisation
Exporter un modèle YOLO11n dans un format différent comme ONNX ou TensorRT. Voir la section Arguments ci-dessous pour une liste complète des arguments d'exportation.
Exemple
Arguments
Ce tableau détaille les configurations et les options disponibles pour exporter les modèles YOLO dans différents formats. Ces paramètres sont essentiels pour optimiser les performances, la taille et la compatibilité du modèle exporté sur différentes plates-formes et dans différents environnements. Une configuration correcte 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é, tel que 'onnx' , 'torchscript' , 'engine' TensorRT), ou d'autres. Chaque format permet la compatibilité avec différents 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 (par exemple, 640 pour 640×640) ou un tuple (height, width) pour les dimensions spécifiques. |
keras |
bool |
False |
Permet l'exportation au format Keras pour TensorFlow SavedModel ce qui permet d'assurer la compatibilité avec les services et les API de TensorFlow . |
optimize |
bool |
False |
Applique l'optimisation pour les appareils mobiles lors de l'exportation vers TorchScript, réduisant potentiellement la taille du modèle et améliorant les performances d'inférence. Non compatible avec le format NCNN ou les appareils CUDA . |
half |
bool |
False |
Permet la quantification FP16 (demi-précision), réduisant la taille du modèle et accélérant potentiellement l'inférence sur le matériel supporté. Non compatible avec la quantification INT8 ou les exportations CPU pour ONNX. |
int8 |
bool |
False |
Active la quantification INT8, ce qui permet de compresser davantage le modèle et d'accélérer l'inférence avec une perte de précision minimale, principalement pour les appareils périphériques. Lorsqu'il est utilisé avec TensorRT, il effectue une quantification post-entraînement (PTQ). |
dynamic |
bool |
False |
Permet des tailles d'entrée dynamiques pour les exportations ONNX, TensorRT et OpenVINO , améliorant la flexibilité dans la gestion des dimensions d'image variables. Réglé automatiquement sur True lors de l'utilisation de TensorRT avec INT8. |
simplify |
bool |
True |
Simplifie le graphique du modèle pour les exportations ONNX avec onnxslim ce qui peut améliorer les performances et la compatibilité avec les moteurs d'inférence. |
opset |
int |
None |
Spécifie la version de l'opset ONNX pour assurer la compatibilité avec les différentes versions d ONNX et les moteurs d'exécution. Si elle n'est pas définie, elle utilise la dernière version supportée. |
workspace |
float ou None |
None |
Définit la taille maximale de l'espace de travail en gigaoctets pour TensorRT optimisant l'utilisation de la mémoire et les performances. Utiliser None pour une auto-attribution par TensorRT jusqu'au maximum de l'appareil. |
nms |
bool |
False |
Ajoute la suppression non maximale (NMS) au modèle exporté lorsqu'elle est prise en charge (voir Formats d'exportation), améliorant ainsi l'efficacité du post-traitement de la détection. Non disponible pour les modèles end2end. |
batch |
int |
1 |
Spécifie la taille du lot d'inférence du modèle exporté ou le nombre maximum d'images que le modèle exporté traitera simultanément en predict mode. Pour les exportations Edge TPU , cette valeur est automatiquement fixée à 1. |
device |
str |
None |
Spécifie le dispositif à 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 ). Les exportations TensorRT utilisent automatiquement le GPU. |
data |
str |
'coco8.yaml' |
Chemin d'accès à la ensemble de données fichier de configuration (par défaut : coco8.yaml ), essentielle pour l'étalonnage de la quantification INT8. Si elle n'est pas spécifiée lorsque la fonction INT8 est activée, un jeu de données par défaut sera attribué. |
L'ajustement de ces paramètres permet de personnaliser le processus d'exportation pour répondre à des 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 YOLO11 sont présentés dans le tableau ci-dessous. Vous pouvez exporter vers n'importe quel format à l'aide de la fonction format
l'argument, c'est-à-dire format='onnx'
ou format='engine'
. Vous pouvez prédire ou valider directement les modèles exportés, c'est-à-dire yolo predict model=yolo11n.onnx
. Des exemples d'utilisation sont présentés pour votre modèle une fois l'exportation terminée.
Format | format Argument |
Modèle | Métadonnées | Arguments |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , optimize , nms , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Lite | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , nms , batch , data |
TF Bord TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , nms , batch |
PaddlePaddle | paddle |
yolo11n_paddle_model/ |
✅ | imgsz , batch |
MNN | mnn |
yolo11n.mnn |
✅ | imgsz , batch , int8 , half |
NCNN | ncnn |
yolo11n_ncnn_model/ |
✅ | imgsz , half , batch |
IMX500 | imx |
yolov8n_imx_model/ |
✅ | imgsz , int8 , data |
RKNN | rknn |
yolo11n_rknn_model/ |
✅ | imgsz , batch , name |
FAQ
Comment exporter un modèle YOLO11 au format ONNX ?
L'exportation d'un modèle YOLO11 au format ONNX est simple à réaliser avec Ultralytics qui propose les méthodes Python et CLI pour l'exportation des modèles.
Exemple
Pour plus de détails sur le processus, y compris les options avancées telles que la gestion de différentes tailles d'entrée, consultez le guide d'intégrationONNX .
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 : Optimiser les modèles pour une configuration matérielle spécifique.
- Vitesse : Obtenez une inférence plus rapide grâce à des optimisations avancées.
- Compatibilité : S'intègre parfaitement au matériel NVIDIA .
Pour en savoir plus sur l'intégration de TensorRT, consultez 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
La quantification INT8 peut être appliquée à différents formats, tels que TensorRT, OpenVINOet CoreML. Pour obtenir des résultats optimaux en matière de quantification, il convient de fournir un échantillon représentatif. ensemble de données en utilisant le data
paramètre.
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 TensorRTl'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, utilisez la fonction dynamic=True
lors de l'exportation :
Exemple
Le dimensionnement dynamique des entrées est particulièrement utile pour les applications où les dimensions des entrées peuvent varier, comme le traitement vidéo ou la manipulation d'images provenant de différentes sources.
Quels sont les principaux arguments d'exportation à prendre en compte pour optimiser la performance du modèle ?
La compréhension et la configuration des arguments d'exportation sont essentielles pour optimiser les performances du modèle :
format:
Le format cible du modèle exporté (par ex,onnx
,torchscript
,tensorflow
).imgsz:
Taille de l'image souhaitée pour l'entrée du modèle (par ex,640
ou(height, width)
).half:
Permet la quantification FP16, réduisant la taille du modèle et accélérant potentiellement l'inférence.optimize:
Applique des optimisations spécifiques pour les environnements mobiles ou contraignants.int8:
Active la quantification INT8, ce qui est très bénéfique pour les IA de pointe déploiements.
Pour le déploiement sur des plates-formes matérielles spécifiques, envisagez d'utiliser des formats d'exportation spécialisés tels que TensorRT pour les GPU NVIDIA , CoreML pour les appareils Apple, ou Edge TPU pour les appareils Google Coral.