Ultralytics YOLO27 :
Get Started

Exportation ONNX des modèles YOLO26#

Inférence CPU ONNX environ 43 % plus rapide : YOLO26n contre YOLO11n
  • YOLO26n est jusqu'à 43 % plus rapide que YOLO11n pour l'inférence CPU ONNX (CPU Intel Xeon @ 2.00 GHz). Consulte la page du modèle YOLO26 pour voir la comparaison complète.

Lors du déploiement de modèles de vision par ordinateur, tu as souvent besoin d'un format de modèle à la fois flexible et compatible avec plusieurs plateformes.

L'exportation des modèles Ultralytics YOLO26 au format ONNX simplifie le déploiement et garantit des performances optimales dans divers environnements. Ce guide t'explique comment convertir facilement tes modèles YOLO26 au format ONNX et améliorer leur évolutivité et leur efficacité dans des applications concrètes.



À regarder : Test d’inférence ONNX : Ultralytics YOLO26 face à Ultralytics YOLO11 | Inférence environ 43 % plus rapide avec YOLO26 🚀

ONNX et ONNX Runtime#

ONNX, qui signifie échange ouvert de réseaux neuronaux, 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 des modèles d'apprentissage automatique de manière à permettre leur utilisation dans différents frameworks d'IA et sur différents matériels.

Les modèles ONNX permettent de passer facilement d'un framework à un autre. Par exemple, un modèle d'apprentissage profond entraîné avec PyTorch peut être exporté au format ONNX, puis facilement importé dans TensorFlow.

ONNX model portability across deep learning frameworks

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, compatible avec des frameworks comme PyTorch, TensorFlow, scikit-learn, etc.

ONNX Runtime optimise l'exécution des modèles ONNX en exploitant les fonctionnalités propres au matériel. Cette optimisation permet aux modèles de s'exécuter 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 Runtime cross-platform inference acceleration

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

Caractéristiques clés des modèles ONNX#

La capacité d'ONNX à gérer différents formats repose sur les caractéristiques clés suivantes :

  • Représentation commune des modèles : 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é permet à tout framework prenant en charge ONNX de comprendre le modèle.

  • Gestion des versions et compatibilité ascendante : ONNX maintient un système de gestion des versions pour ses opérateurs. Ainsi, même si la norme évolue, les modèles créés avec des versions antérieures restent utilisables. La compatibilité ascendante est essentielle pour éviter que les modèles ne deviennent rapidement obsolètes.

  • Représentation des modèles sous forme de graphes : ONNX représente les modèles sous forme de graphes de calcul. Cette structure en graphe est une méthode universelle de représentation des modèles d'apprentissage automatique : 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 s'adapte facilement aux différents frameworks qui représentent eux aussi les modèles sous forme de graphes.

  • Outils et écosystème : ONNX bénéficie d'un vaste écosystème d'outils qui facilitent la conversion, la visualisation et l'optimisation des modèles. Ces outils aident les développeurs à travailler avec des modèles ONNX et à les convertir facilement d'un framework à un autre.

Utilisations courantes d'ONNX#

Avant de voir comment exporter des modèles YOLO26 au format ONNX, examinons les usages habituels des modèles ONNX.

Déploiement sur CPU#

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

Options de déploiement prises en charge#

Bien que les modèles ONNX soient souvent utilisés sur 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 sur les GPU NVIDIA avec CUDA et sur les GPU AMD avec ROCm et MIGraphX.

  • Appareils edge et mobiles : ONNX fonctionne sur les appareils edge et mobiles, ce qui convient parfaitement aux scénarios d'inférence embarquée et en temps réel. Léger et compatible avec le matériel edge, ONNX sert de base aux formats NPU des fabricants, comme Huawei Ascend, Qualcomm QNN pour les appareils Snapdragon et RKNN pour les NPU Rockchip.

  • Navigateurs Web : ONNX peut s'exécuter directement dans les navigateurs Web et alimenter des applications d'IA Web interactives et dynamiques.

Tâches prises en charge#

L'exportation ONNX prend en charge les sept tâches d'Ultralytics. La segmentation sémantique et l'estimation de profondeur sont uniquement disponibles avec YOLO26, la seule famille qui intègre ces têtes.

TâcheYOLOv8YOLO11YOLO26
Détecter✅✅✅
Segmenter✅✅✅
Sémantique❌❌✅
Profondeur❌❌✅
Classifier✅✅✅
Pose✅✅✅
OBB✅✅✅

Exporter des modèles YOLO26 au format ONNX#

Tu peux étendre la compatibilité et la flexibilité de déploiement des modèles YOLO26 en les convertissant au format ONNX. Ultralytics YOLO26 propose un processus d'exportation simple, qui peut améliorer considérablement les performances de ton modèle sur différentes plateformes.

Installation#

Pour installer le package requis, exécute :

Installation
# Install the required package for YOLO26
pip install ultralytics

Pour obtenir des instructions détaillées et des bonnes pratiques sur le processus d’installation, consulte notre guide d’installation de YOLO26. Si tu rencontres des difficultés lors de l’installation des packages requis pour YOLO26, consulte notre guide des problèmes courants pour trouver des solutions et des conseils.

Utilisation#

Avant de passer aux instructions d’utilisation, pense à découvrir la gamme de modèles YOLO26 proposés par Ultralytics. Cela t’aidera à choisir le modèle le mieux adapté aux exigences de ton projet.

Le format ONNX prend en charge les modes Export, Predict et Validate. Exporte ton modèle, puis charge le modèle exporté pour effectuer des inférences ou valider sa précision.

Export
from ultralytics import YOLO

# Charger un modèle YOLO26
model = YOLO("yolo26n.pt")

# Exporter le modèle au format ONNX
model.export(format="onnx")  # crée « yolo26n.onnx »

# Exporte un modèle ONNX quantifié en INT8 avec des données d'étalonnage
model.export(format="onnx", quantize=8, data="coco8.yaml")  # crée 'yolo26n_int8.onnx'
Prédiction
from ultralytics import YOLO

# Charger le modèle ONNX exporté
model = YOLO("yolo26n.onnx")

# Exécuter l’inférence
results = model("https://ultralytics.com/images/bus.jpg")
Valider
from ultralytics import YOLO

# Charger le modèle ONNX exporté
model = YOLO("yolo26n.onnx")

# Valider la précision sur le jeu de données COCO8
metrics = model.val(data="coco8.yaml")

Arguments d’exportation#

Lors de l'exportation de ton modèle YOLO26 au format ONNX, tu peux personnaliser le processus à l'aide de différents arguments afin de l'adapter à tes besoins de déploiement :

ArgumentTypeValeur par défautDescription
formatstr'onnx'Format cible du modèle exporté, qui définit sa compatibilité avec différents environnements de déploiement.
imgszint ou tuple640Taille 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 définir des dimensions spécifiques.
quantizeint ou strNonePrécision de quantification : 16 (FP16) ou 8 (quantification statique INT8 avec ONNX Runtime, à l'aide des images d'étalonnage de data, produisant un modèle _int8.onnx) ; 32/non défini correspond à FP32. Un point de contrôle entraîné avec quantize=8 exporte toujours en INT8 sous forme de nœuds Q/DQ, à partir des plages qu'il contient, sans étalonnage et sous le nom simple .onnx. Remplace les indicateurs obsolètes half/int8.
datastrNoneFichier YAML du jeu de données utilisé pour l'étalonnage INT8 ; pour la classification, un répertoire de jeu de données ou le nom d'un jeu de données intégré est utilisé à la place. Si cette valeur n'est pas indiquée avec quantize=8, Ultralytics sélectionne le jeu de données d'étalonnage par défaut pour la tâche du modèle ; un point de contrôle entraîné avec quantize=8 n'en a pas besoin.
fractionfloat, int ou list1.0Sous-ensemble de calibration exprimé en ratio, en nombre d’images ou en listes [train, val, test] de ratios/de nombres. Les listes de deux éléments laissent test complet, tandis que 0 l’ignore.
dynamicboolFalsePermet d'utiliser des tailles d'entrée dynamiques, offrant ainsi une plus grande flexibilité pour traiter des images de dimensions variables.
simplifyboolTrueSimplifie le graphe du modèle avec onnxslim, ce qui peut améliorer les performances et la compatibilité.
opsetintNoneIndique la version de l'opset ONNX pour assurer la compatibilité avec différents analyseurs et environnements d'exécution ONNX. Si aucune version n'est définie, la dernière version prise en charge est utilisée.
nmsbool, facultatifNoneSélectionne la sortie brute (None, par défaut), NMS intégrée (True) ou la tête sans NMS (False).
batchint1Indique la taille de lot pour l’inférence du modèle exporté ou le nombre maximal d’images que le modèle exporté traitera simultanément en mode predict.
devicestrNoneDéfinit l’appareil utilisé pour l’export : GPU (device=0), CPU (device=cpu), MPS pour Apple Silicon (device=mps).

Pour en savoir plus sur le processus d’export, consulte la page de la documentation Ultralytics consacrée à l’export.

Déployer des modèles YOLO26 ONNX exportés#

Après avoir exporté avec succès tes modèles Ultralytics YOLO26 au format ONNX, l'étape suivante consiste à les déployer dans différents environnements. Pour obtenir des instructions détaillées sur le déploiement de tes modèles ONNX, consulte 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 avec ONNX Runtime.

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

  • Tutoriels ONNX sur GitHub : une collection de tutoriels détaillés couvrant différents aspects de l'utilisation et de l'implémentation des modèles ONNX dans divers contextes.

  • Triton Inference Server : découvre comment déployer tes modèles ONNX avec Triton Inference Server de NVIDIA pour des déploiements évolutifs et performants.

Inférence sur GPU AMD avec MIGraphX#

Ultralytics exécute les modèles ONNX exportés sur les GPU AMD grâce au fournisseur d'exécution MIGraphX d'ONNX Runtime. Sur un système ROCm (HIP), le backend ONNX installe le plugin onnxruntime-ep-migraphx lors de la première utilisation et sélectionne automatiquement MIGraphXExecutionProvider, sans modification du code ; toutes les tâches YOLO26 sont prises en charge. Consulte le guide d'inférence sur GPU AMD pour connaître les prérequis, l'installation, l'utilisation, les benchmarks et le cache des programmes compilés.

Résumé#

Dans ce guide, tu as appris à exporter des modèles Ultralytics YOLO26 au format ONNX afin d'améliorer leur interopérabilité et leurs performances sur différentes plateformes. Tu as également découvert ONNX Runtime et les options de déploiement ONNX.

L'exportation ONNX n'est qu'un des nombreux formats d'exportation pris en charge par Ultralytics YOLO26, qui te permettent de déployer tes modèles dans pratiquement tous les environnements. Selon tes besoins, tu peux également explorer d'autres options d'exportation, comme TensorRT pour des performances GPU maximales ou CoreML pour les appareils Apple.

Pour plus d'informations sur l'utilisation, consulte la documentation officielle d'ONNX.

Pour en savoir plus sur les autres intégrations Ultralytics YOLO26, consulte également notre page du guide des intégrations. Tu y trouveras de nombreuses ressources et informations utiles.

FAQ#

  • Pour exporter tes modèles YOLO26 au format ONNX avec Ultralytics, suis les étapes suivantes :

    Utilisation
    from ultralytics import YOLO
    
    # Charger un modèle YOLO26
    model = YOLO("yolo26n.pt")
    
    # Exporter le modèle au format ONNX
    model.export(format="onnx")  # crée « yolo26n.onnx »
    
    # Charger le modèle ONNX exporté
    onnx_model = YOLO("yolo26n.onnx")
    
    # Exécuter l’inférence
    results = onnx_model("https://ultralytics.com/images/bus.jpg")

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

  • L'utilisation d'ONNX Runtime pour déployer des modèles YOLO26 offre plusieurs avantages :

    • Compatibilité multiplateforme : ONNX Runtime prend en charge différentes plateformes, comme Windows, macOS et Linux, ce qui garantit le bon fonctionnement de tes modèles dans divers environnements.
    • Accélération matérielle : ONNX Runtime peut exploiter des optimisations propres au matériel pour les CPU, les GPU et les accélérateurs dédiés, afin d'offrir des inférences performantes.
    • Interopérabilité des frameworks : les modèles entraînés avec des frameworks populaires comme PyTorch ou TensorFlow peuvent facilement être convertis au format ONNX et exécutés avec ONNX Runtime.
    • Optimisation des performances : ONNX Runtime peut offrir une accélération CPU jusqu'à 3 fois supérieure à celle des modèles PyTorch natifs, ce qui en fait une solution idéale pour les déploiements où les ressources GPU sont limitées.

    Pour en savoir plus, consulte la documentation d'ONNX Runtime.

  • Les modèles YOLO26 exportés au format ONNX peuvent être déployés sur différentes plateformes, notamment :

    • CPU : utilisation d’ONNX Runtime pour optimiser l’inférence sur CPU.
    • GPU NVIDIA : exploitation de NVIDIA CUDA pour accélérer les calculs sur GPU et obtenir des performances élevées.
    • GPU AMD : utilisation de AMD ROCm et du fournisseur d’exécution MIGraphX pour accélérer les calculs sur GPU sous Linux et obtenir des performances élevées.
    • Appareils en périphérie : exécution de modèles légers sur des appareils en périphérie et mobiles pour réaliser une inférence en temps réel, directement sur l’appareil.
    • Navigateurs web : exécution des modèles directement dans les navigateurs web pour les applications interactives en ligne.
    • Services cloud : déploiement sur des plateformes cloud prenant en charge le format ONNX pour une inférence évolutive.

    Pour en savoir plus, consulte notre guide sur les options de déploiement des modèles.

  • L’utilisation du format ONNX pour les modèles Ultralytics YOLO26 présente de nombreux avantages :

    • Interopérabilité : ONNX permet de transférer facilement des modèles entre différents frameworks de machine learning.
    • Optimisation des performances : ONNX Runtime peut améliorer les performances des modèles grâce à des optimisations propres au matériel.
    • Flexibilité : ONNX prend en charge différents environnements de déploiement, ce qui te permet d’utiliser le même modèle sur différentes plateformes sans le modifier.
    • Normalisation : ONNX fournit un format normalisé largement pris en charge dans l’industrie, garantissant une compatibilité à long terme.

    Consulte le guide complet sur l’exportation des modèles YOLO26 au format ONNX.

  • Lors de l’exportation de modèles YOLO26 au format ONNX, tu peux rencontrer des problèmes courants, comme des dépendances incompatibles ou des opérations non prises en charge. Pour résoudre ces problèmes :

    1. Vérifie que la bonne version des dépendances requises est installée.
    2. Consulte la documentation officielle d’ONNX pour connaître les opérateurs et fonctionnalités pris en charge.
    3. Examine les messages d’erreur pour y trouver des indices et consulte le guide Ultralytics sur les problèmes courants.
    4. Essaie différents arguments d’exportation, comme simplify=True, ou modifie la version de opset.
    5. En cas de problème avec les dimensions d’entrée dynamiques, définis dynamic=True lors de l’exportation.

    Si les problèmes persistent, contacte le service d’assistance Ultralytics pour obtenir de l’aide.

Commentaires