Skip to content

ONNX Exportation pour les modèles YOLOv8

Often, when deploying computer vision models, you'll need a model format that's both flexible and compatible with multiple platforms.

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.

ONNX

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.

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 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

Before we jump into how to export YOLOv8 models to the ONNX format, let's take a look at where ONNX models are usually used.

Déploiement de l'unité centrale

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 sur l'unité centrale. Il améliore considérablement la vitesse d'inférence et rend possible les déploiements en temps réel sur l'unité centrale.

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 :

  • AccĂ©lĂ©ration du GPU: ONNX prend entièrement en charge l'accĂ©lĂ©ration du 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 :

Installation

# Install the required package for YOLOv8
pip install ultralytics

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")
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

# Run inference with the exported model
yolo predict model=yolov8n.onnx source='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 .

Also, if you'd like to know more about other Ultralytics YOLOv8 integrations, visit our integration guide page. You'll find plenty of useful resources and insights there.



Created 2024-01-25, Updated 2024-06-10
Authors: glenn-jocher (5), abirami-vina (1)

Commentaires