ONNX Exportation pour les modèles YOLOv8
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 Ultralytics YOLOv8 vers le format ONNX simplifie le déploiement et garantit des performances optimales dans divers environnements. Ce guide te montrera comment convertir facilement tes modèles YOLOv8 au format ONNX et améliorer leur évolutivité et leur efficacité dans des applications réelles.
ONNX et ONNX Runtime
ONNXOpen Neural Network Exchange, est un projet communautaire initialement développé par Facebook et Microsoft . Le développement continu de ONNX est un effort de collaboration soutenu par diverses organisations comme IBM, Amazon (par le biais d'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 cadres et matériels d'IA.
ONNX Les modèles peuvent être utilisés pour faire la transition entre différents frameworks de manière transparente. Par exemple, un modèle d'apprentissage profond formé dans PyTorch peut être exporté au format ONNX , puis importé facilement dans TensorFlow.
Les modèles ONNX peuvent également ê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 cadres 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 s'exécuter efficacement et avec des performances élevées sur diverses plates-formes matérielles, y compris les CPU, les GPU et les accélérateurs spécialisés.
Qu'il soit utilisé indépendamment ou en tandem avec ONNX Runtime, ONNX offre une solution flexible pour le déploiement et la compatibilité des modèles d'apprentissage automatique.
Caractéristiques principales des modèles ONNX
La capacité de ONNX à gérer différents formats peut être attribuée aux caractéristiques clés suivantes :
-
Représentation commune du modèle: ONNX définit un ensemble commun d'opérateurs (comme 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 cadre de travail qui prend en charge ONNX.
-
Version et rétrocompatibilité: ONNX maintient un système de version pour ses opérateurs. Cela permet de garantir que même si la norme évolue, les modèles créés dans des versions plus anciennes restent utilisables. La rétrocompatibilité est une caractéristique cruciale qui empêche les modèles de devenir rapidement obsolètes.
-
Représentation graphique des modèles: ONNX représente les modèles sous forme de graphes informatiques. Cette structure basée sur les graphes est une façon universelle de représenter les modèles d'apprentissage automatique, où les nœuds représentent les opérations ou les calculs, et les arêtes représentent les tenseurs qui circulent entre eux. Ce format est facilement adaptable à divers cadres qui représentent également les modèles sous forme de graphes.
-
Outils et écosystème: Il existe un riche écosystème d'outils autour de 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 de ONNX
Avant de passer à l’exportation YOLOv8 modèles à la ONNX format, voyons où ONNX des modèles sont généralement utilisés.
CPU DĂ©ploiement
ONNX sont souvent déployés sur des unités centrales en raison de leur compatibilité avec ONNX Runtime. Ce moteur d'exécution est optimisé pour l'exécution de CPU . Il améliore considérablement la vitesse d'inférence et permet de déployer CPU en temps réel.
Options de déploiement prises en charge
Bien que les modèles ONNX soient couramment utilisés sur les unités centrales, ils peuvent également être déployés sur les plateformes suivantes :
-
GPU Accélération: 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 grande puissance de calcul.
-
Appareils périphériques et mobiles: ONNX s'étend aux appareils périphériques et mobiles, ce qui est parfait pour les scénarios d'inférence en temps réel et sur l'appareil. Il est léger et compatible avec le matériel périphérique.
-
Navigateurs Web: ONNX peut fonctionner directement dans les navigateurs Web, ce qui permet d'alimenter des applications d'IA interactives et dynamiques basées sur le Web.
Exporter les modèles YOLOv8 vers ONNX
Tu peux étendre la compatibilité des modèles et la flexibilité du déploiement en convertissant les modèles YOLOv8 au format ONNX .
Installation
Pour installer le paquetage requis, exécute :
Pour des instructions détaillées et les meilleures pratiques liées au processus d'installation, consulte notre guide d'installationYOLOv8 . Pendant l'installation des paquets requis pour YOLOv8, si tu rencontres des difficultés, consulte notre guide des problèmes courants pour trouver des solutions et des conseils.
Utilisation
Avant de te plonger dans les instructions d'utilisation, n'oublie pas de consulter la gamme de modèlesYOLOv8 proposée par Ultralytics. Cela t'aidera à choisir le modèle le plus approprié aux exigences de ton projet.
Utilisation
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO("yolov8n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolov8n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolov8n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
Pour plus de détails sur le processus d'exportation, visite la page de documentationUltralytics sur l'exportation.
Déploiement des modèles exportés YOLOv8 ONNX
Une fois que tu as réussi à exporter tes modèles Ultralytics YOLOv8 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 tes modèles ONNX , jette un coup d'œil aux ressources suivantes :
-
ONNX Runtime Python Documentation de l'API: Ce guide fournit des informations essentielles pour le chargement et l'exécution des modèles ONNX à l'aide de ONNX Runtime.
-
Déploiement sur les appareils Edge: Consulte cette page de documentation pour voir différents exemples de déploiement des modèles ONNX sur les périphériques.
-
ONNX Tutoriels sur GitHub: Une collection de tutoriels complets qui couvrent divers aspects de l'utilisation et de la mise en œuvre des modèles ONNX dans différents scénarios.
Résumé
Dans ce guide, tu as appris à exporter les modèles Ultralytics YOLOv8 au format ONNX afin d'accroître leur interopérabilité et leurs performances sur diverses plates-formes. Tu as également découvert les options de déploiement ONNX Runtime et ONNX .
Pour plus de détails sur l'utilisation, consulte la documentation officielle deONNX .
Par ailleurs, si tu souhaites en savoir plus sur d'autres intégrations de Ultralytics YOLOv8 , visite notre page de guide d'intégration. Tu y trouveras de nombreuses ressources et informations utiles.
FAQ
Comment exporter les modèles YOLOv8 au format ONNX en utilisant Ultralytics?
Pour exporter tes modèles YOLOv8 au format ONNX à l'aide de Ultralytics, suis les étapes suivantes :
Utilisation
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO("yolov8n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolov8n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolov8n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
Pour plus de détails, consulte la documentation sur l'exportation.
Quels sont les avantages de l'utilisation de ONNX Runtime pour le déploiement des modèles YOLOv8 ?
L'utilisation de ONNX Runtime pour déployer les modèles YOLOv8 offre plusieurs avantages :
- Compatibilité multiplateforme: ONNX Runtime prend en charge diverses plateformes, telles que Windows, macOS et Linux, ce qui garantit que tes modèles s'exécutent sans problème dans différents environnements.
- Accélération matérielle: ONNX Le Runtime peut exploiter les optimisations spécifiques au matériel pour les CPU, les GPU et les accélérateurs dédiés, ce qui permet une inférence très performante.
- Interopérabilité des cadres: Les modèles formés dans des cadres populaires comme PyTorch ou TensorFlow peuvent être facilement convertis au format ONNX et exécutés à l'aide de ONNX Runtime.
Pour en savoir plus, consulte la documentation deONNX Runtime.
Quelles sont les options de déploiement disponibles pour les modèles YOLOv8 exportés vers ONNX?
YOLOv8 Les modèles exportés vers ONNX peuvent être déployés sur diverses plates-formes, notamment :
- CPUs: Utilisation de ONNX Runtime pour une inférence optimisée de CPU .
- GPU: Tirer parti de NVIDIA CUDA pour une accélération haute performance de GPU .
- Appareils périphériques: Exécuter des modèles légers sur les appareils périphériques et mobiles pour une inférence en temps réel sur l'appareil.
- Navigateurs web: Exécuter des modèles directement dans les navigateurs web pour des applications interactives basées sur le web.
Pour plus d'informations, explore notre guide sur les options de déploiement des modèles.
Pourquoi dois-je utiliser le format ONNX pour les modèles Ultralytics YOLOv8 ?
L'utilisation du format ONNX pour les modèles Ultralytics YOLOv8 présente de nombreux avantages :
- Interopérabilité: ONNX permet de transférer les modèles entre différents cadres d'apprentissage automatique de façon transparente.
- Optimisation des performances: ONNX Le moteur d'exécution 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 te permet d'utiliser le même modèle sur différentes plateformes sans modification.
Reporte-toi au guide complet sur l'exportation des modèles YOLOv8 vers ONNX.
Comment puis-je résoudre les problèmes lors de l'exportation des modèles YOLOv8 vers ONNX?
Lors de l'exportation de modèles YOLOv8 vers ONNX, tu peux rencontrer des problèmes courants tels que des dépendances mal assorties ou des opérations non prises en charge. Pour résoudre ces problèmes :
- Vérifie que tu as installé la bonne version des dépendances requises.
- Consulte la documentation officielle deONNX pour connaître les opérateurs et les fonctions pris en charge.
- Examine les messages d'erreur pour trouver des indices et consulte le guideUltralytics Common Issues.
Si les problèmes persistent, contacte l'assistance Ultralytics pour obtenir de l'aide.