Passer au contenu

Exportation ONNX pour les modèles YOLO11

Souvent, lors du déploiement de modèles de vision par ordinateur, vous aurez besoin d'un format de modèle à la fois flexible et compatible avec plusieurs plateformes.

L'exportation des modèles Ultralytics YOLO11 au format ONNX simplifie le déploiement et garantit des performances optimales dans divers environnements. Ce guide vous montrera comment convertir facilement vos modèles YOLO11 en ONNX et améliorer leur évolutivité et leur efficacité dans des applications réelles.

ONNX et ONNX Runtime

ONNX, qui signifie Open Neural Network Exchange, est un projet communautaire initialement développé par Facebook et Microsoft. Le développement continu d'ONNX est un effort collaboratif soutenu par diverses organisations comme IBM, Amazon (via AWS) et Google. Le projet vise à créer un format de fichier ouvert conçu pour représenter les modèles d'apprentissage automatique d'une manière qui leur permette d'être utilisés dans différents frameworks d'IA et matériels.

Les modèles ONNX peuvent être utilisés pour assurer une transition fluide entre différents frameworks. Par exemple, un modèle de deep learning entraîné dans PyTorch peut être exporté au format ONNX, puis facilement importé dans TensorFlow.

ONNX

Alternativement, les modèles ONNX peuvent être utilisés avec ONNX Runtime. ONNX Runtime est un accélérateur multiplateforme polyvalent pour les modèles d'apprentissage automatique qui est compatible avec des frameworks tels que PyTorch, TensorFlow, TFLite, scikit-learn, etc.

ONNX Runtime optimise l'exécution des modèles ONNX en exploitant les capacités spécifiques du matériel. Cette optimisation permet aux modèles de fonctionner efficacement et avec des performances élevées sur diverses plateformes matérielles, notamment les CPU, les GPU et les accélérateurs spécialisés.

ONNX avec ONNX Runtime

Qu'il soit utilisé indépendamment ou en tandem avec ONNX Runtime, ONNX offre une solution flexible pour le déploiement de modèles d'apprentissage automatique et la compatibilité.

Principales caractéristiques des modèles ONNX

La capacité d'ONNX à gérer divers formats peut être attribuée aux caractéristiques clés suivantes :

  • Représentation de modèle commune : ONNX définit un ensemble commun d’opérateurs (tels que les convolutions, les couches, etc.) et un format de données standard. Lorsqu’un modèle est converti au format ONNX, son architecture et ses poids sont traduits dans cette représentation commune. Cette uniformité garantit que le modèle peut être compris par n’importe quel framework qui prend en charge ONNX.

  • Gestion des versions et compatibilité descendante : ONNX maintient un système de gestion des versions pour ses opérateurs. Cela garantit que même si la norme évolue, les modèles créés dans les versions antérieures restent utilisables. La compatibilité descendante est une fonctionnalité essentielle qui empêche les modèles de devenir rapidement obsolètes.

  • Représentation du modèle basée sur un graphe : ONNX représente les modèles sous forme de graphes de calcul. Cette structure basée sur un graphe est un moyen universel de représenter les modèles d’apprentissage automatique, où les nœuds représentent des opérations ou des calculs, et les arêtes représentent les tenseurs qui circulent entre eux. Ce format est facilement adaptable à divers frameworks qui représentent également les modèles sous forme de graphes.

  • Outils et écosystème : Il existe un riche écosystème d’outils autour d’ONNX qui aident à la conversion, à la visualisation et à l’optimisation des modèles. Ces outils permettent aux développeurs de travailler plus facilement avec les modèles ONNX et de convertir les modèles entre différents cadres de manière transparente.

Utilisation courante d'ONNX

Avant de voir comment exporter les modèles YOLO11 au format ONNX, examinons où les modèles ONNX sont généralement utilisés.

Déploiement sur CPU

Les modèles ONNX sont souvent déployés sur les CPU en raison de leur compatibilité avec ONNX Runtime. Cet environnement d'exécution est optimisé pour l'exécution sur CPU. Il améliore considérablement la vitesse d'inférence et rend possible les déploiements CPU en temps réel.

Options de déploiement prises en charge

Bien que les modèles ONNX soient couramment utilisés sur les CPU, ils peuvent également être déployés sur les plateformes suivantes :

  • Accélération GPU : ONNX prend entièrement en charge l'accélération GPU, en particulier NVIDIA CUDA. Cela permet une exécution efficace sur les GPU NVIDIA pour les tâches qui exigent une puissance de calcul élevée.

  • Appareils mobiles et périphériques : ONNX s'étend aux appareils mobiles et périphériques, parfait pour les scénarios d'inférence sur l'appareil et en temps réel. Il est léger et compatible avec le matériel périphérique.

  • Navigateurs Web : ONNX peut s’exécuter directement dans les navigateurs Web, alimentant des applications d’IA interactives et dynamiques basées sur le Web.

Exporter des modèles YOLO11 vers ONNX

Vous pouvez étendre la compatibilité des modèles et la flexibilité du déploiement en convertissant les modèles YOLO11 au format ONNX. Ultralytics YOLO11 fournit un processus d'exportation simple qui peut améliorer considérablement les performances de votre modèle sur différentes plateformes.

Installation

Pour installer le paquet requis, exécutez :

Installation

# Install the required package for YOLO11
pip install ultralytics

Pour des instructions détaillées et les meilleures pratiques relatives au processus d'installation, consultez notre guide d'installation YOLO11. Si vous rencontrez des difficultés lors de l'installation des packages requis pour YOLO11, consultez notre guide des problèmes courants pour obtenir des solutions et des conseils.

Utilisation

Avant de plonger dans les instructions d'utilisation, assurez-vous de consulter la gamme de modèles YOLO11 proposés par Ultralytics. Cela vous aidera à choisir le modèle le plus approprié pour les exigences de votre projet.

Utilisation

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

Arguments d'exportation

Lorsque vous exportez votre modèle YOLO11 au format ONNX, vous pouvez personnaliser le processus en utilisant divers arguments pour optimiser vos besoins de déploiement spécifiques :

Argument Type Par défaut Description
format str 'onnx' Format cible pour le modèle exporté, définissant la compatibilité avec divers environnements de déploiement.
imgsz int ou tuple 640 Taille d'image souhaitée pour l'entrée du modèle. Peut être un entier pour les images carrées ou un tuple (height, width) pour des dimensions spécifiques.
half bool False Active 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 pris en charge.
dynamic bool False Permet des tailles d'entrée dynamiques, améliorant la flexibilité dans la gestion des différentes dimensions d'image.
simplify bool True Simplifie le graphe du modèle avec onnxslim, améliorant potentiellement les performances et la compatibilité.
opset int None Spécifie la version de l'opset ONNX pour la compatibilité avec différents analyseurs et environnements d'exécution ONNX. Si elle n'est pas définie, la dernière version prise en charge est utilisée.
nms bool False Ajoute la suppression non maximale (NMS), essentielle pour un post-traitement de détection précis et efficace.
batch int 1 Spécifie la taille du lot d'inférence du modèle d'exportation ou le nombre maximal d'images que le modèle exporté traitera simultanément en predict mode.
device str None Spécifie le dispositif pour l'exportation : GPU (device=0), CPU (device=cpu), MPS pour Apple Silicon (device=mps).

Pour plus de détails sur le processus d'exportation, consultez la page de la documentation Ultralytics sur l'exportation.

Déploiement de modèles YOLO11 ONNX exportés

Une fois que vous avez exporté avec succès vos modèles Ultralytics YOLO11 au format ONNX, l'étape suivante consiste à déployer ces modèles dans divers environnements. Pour obtenir des instructions détaillées sur le déploiement de vos modèles ONNX, consultez les ressources suivantes :

  • Documentation de l'API python ONNX Runtime : Ce guide fournit des informations essentielles pour charger et exécuter des modèles ONNX à l'aide de ONNX Runtime.

  • Déploiement sur des appareils Edge : Consultez cette page de documentation pour différents exemples de déploiement de modèles ONNX sur des appareils Edge.

  • Tutoriels ONNX sur GitHub : Une collection de tutoriels complets qui couvrent divers aspects de l'utilisation et de l'implémentation des modèles ONNX dans différents scénarios.

  • Serveur d'inférence Triton : Découvrez comment déployer vos modèles ONNX avec le serveur d'inférence Triton de NVIDIA pour des déploiements évolutifs et à hautes performances.

Résumé

Dans ce guide, vous avez appris à exporter les modèles Ultralytics YOLO11 au format ONNX afin d'accroître leur interopérabilité et leurs performances sur diverses plateformes. Vous avez également été initié à ONNX Runtime et aux options de déploiement ONNX.

L'exportation ONNX n'est qu'un des nombreux formats d'exportation pris en charge par Ultralytics YOLO11, vous permettant de déployer vos modèles dans pratiquement n'importe quel environnement. Selon vos besoins spécifiques, vous pourriez également vouloir explorer d'autres options d'exportation comme TensorRT pour des performances GPU maximales ou CoreML pour les appareils Apple.

Pour plus de détails sur l'utilisation, consultez la documentation officielle d'ONNX.

De plus, si vous souhaitez en savoir plus sur les autres intégrations Ultralytics YOLO11, consultez notre page de guide d'intégration. Vous y trouverez de nombreuses ressources et informations utiles.

FAQ

Comment exporter des modèles YOLO11 au format ONNX en utilisant Ultralytics ?

Pour exporter vos modèles YOLO11 au format ONNX à l’aide d’Ultralytics, suivez ces étapes :

Utilisation

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

Pour plus de détails, consultez la documentation sur l'exportation.

Quels sont les avantages de l'utilisation d'ONNX Runtime pour le déploiement des modèles YOLO11 ?

L'utilisation de ONNX Runtime pour le déploiement de modèles YOLO11 offre plusieurs avantages :

  • Compatibilité multiplateforme : ONNX Runtime prend en charge diverses plateformes, telles que Windows, macOS et Linux, garantissant ainsi que vos modèles fonctionnent correctement dans différents environnements.
  • Accélération matérielle : ONNX Runtime peut exploiter des optimisations spécifiques au matériel pour les CPU, les GPU et les accélérateurs dédiés, offrant ainsi une inférence haute performance.
  • Interopérabilité de framework : Les modèles entraînés dans des frameworks populaires comme PyTorch ou TensorFlow peuvent être facilement convertis au format ONNX et exécutés à l’aide de ONNX Runtime.
  • Optimisation des performances : ONNX Runtime peut fournir une accélération du CPU jusqu'à 3x par rapport aux modèles PyTorch natifs, ce qui le rend idéal pour les scénarios de déploiement où les ressources GPU sont limitées.

Pour en savoir plus, consultez la documentation ONNX Runtime.

Quelles options de déploiement sont disponibles pour les modèles YOLO11 exportés vers ONNX ?

Les modèles YOLO11 exportés vers ONNX peuvent être déployés sur diverses plateformes, notamment :

  • CPU : Utilisation de ONNX Runtime pour une inférence CPU optimisée.
  • GPU : Exploitation de NVIDIA CUDA pour une accélération GPU haute performance.
  • Appareils périphériques : Exécution de modèles légers sur des appareils périphériques et mobiles pour une inférence en temps réel, sur l'appareil.
  • Navigateurs Web : Exécution de modèles directement dans les navigateurs Web pour des applications interactives basées sur le Web.
  • Services Cloud : Déploiement sur des plateformes cloud qui prennent en charge le format ONNX pour l’inférence évolutive.

Pour plus d'informations, consultez notre guide sur les options de déploiement de modèles.

Pourquoi devrais-je utiliser le format ONNX pour les modèles Ultralytics YOLO11 ?

L'utilisation du format ONNX pour les modèles Ultralytics YOLO11 offre de nombreux avantages :

  • Interopérabilité : ONNX permet de transférer des modèles entre différents frameworks d'apprentissage automatique de manière transparente.
  • Optimisation des performances : ONNX Runtime peut améliorer les performances du modèle en utilisant des optimisations spécifiques au matériel.
  • Flexibilité : ONNX prend en charge divers environnements de déploiement, ce qui vous permet d’utiliser le même modèle sur différentes plateformes sans modification.
  • Normalisation : ONNX fournit un format normalisé qui est largement pris en charge dans l’ensemble de l’industrie, assurant une compatibilité à long terme.

Consultez le guide complet sur l'exportation des modèles YOLO11 vers ONNX.

Comment puis-je dépanner les problèmes lors de l'exportation de modèles YOLO11 vers ONNX ?

Lors de l'exportation de modèles YOLO11 vers ONNX, vous pourriez rencontrer des problèmes courants tels que des dépendances incompatibles ou des opérations non prises en charge. Pour résoudre ces problèmes :

  1. Vérifiez que vous avez installé la version correcte des dépendances requises.
  2. Consultez la documentation ONNX officielle pour connaître les opérateurs et les fonctionnalités pris en charge.
  3. Examinez les messages d’erreur pour trouver des indices et consultez le guide des problèmes courants d’Ultralytics.
  4. Essayez d'utiliser différents arguments d'exportation, comme simplify=True ou en ajustant le opset version.
  5. Pour les problèmes de taille d'entrée dynamique, définissez dynamic=True pendant l'exportation.

Si les problèmes persistent, contactez le support Ultralytics pour obtenir de l'aide.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 4 mois

Commentaires