Ultralytics YOLO27 :

Exportation ONNX des modèles YOLO26#

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

Souvent, lors du déploiement de modèles de vision par ordinateur, tu as 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 différents environnements. Ce guide t'expliquera comment convertir facilement tes modèles YOLO26 au format ONNX et améliorer leur évolutivité ainsi que leur efficacité dans des applications réelles.



Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀

ONNX et ONNX Runtime#

ONNX, qui signifie échange de réseaux neuronaux ouverts, 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 (par l'intermédiaire d'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 avec différents frameworks d'IA et matériels.

Les modèles ONNX peuvent être utilisés pour 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 fonctionner efficacement et avec de hautes performances sur différentes plateformes matérielles, notamment les CPU, les GPU et les accélérateurs spécialisés.

ONNX Runtime cross-platform inference acceleration

Utilisé indépendamment ou avec ONNX Runtime, ONNX offre une solution flexible pour le déploiement de modèles d'apprentissage automatique et la compatibilité.

Fonctionnalités clés des modèles ONNX#

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

  • Représentation commune des modèles : ONNX définit un ensemble commun d'opérateurs (comme les convolutions, les couches, etc.) ainsi qu'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 tout framework prenant en charge ONNX.

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

  • Représentation des modèles sous forme de graphe : ONNX représente les modèles sous forme de graphes de calcul. Cette structure basée sur les graphes constitue une manière universelle de représenter les modèles d'apprentissage automatique : les nœuds représentent les opérations ou les calculs, tandis que les arêtes représentent les tenseurs qui circulent entre eux. Ce format s'adapte facilement aux différents frameworks qui représentent également les modèles sous forme de graphes.

  • Outils et écosystème : ONNX bénéficie d'un riche écosystème d'outils facilitant 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 frameworks de manière transparente.

Utilisations courantes d'ONNX#

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

Déploiement sur CPU#

Les modèles ONNX sont souvent déployés sur des 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 possibles les déploiements en temps réel sur CPU.

Options de déploiement prises en charge#

Bien que les modèles ONNX soient couramment utilisés sur des 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, notamment avec NVIDIA CUDA. Pour l'entraînement et l'inférence natifs sur des GPU AMD, utilise PyTorch ROCm ; un fichier ONNX nécessite toujours un environnement d'exécution compatible avec AMD.

  • Appareils edge et mobiles : ONNX s'étend aux appareils edge et mobiles, ce qui convient parfaitement aux scénarios d'inférence sur l'appareil et en temps réel. Il est léger et compatible avec le matériel edge, et 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 Ultralytics. La segmentation sémantique et l'estimation de profondeur sont disponibles uniquement avec YOLO26, la seule famille à proposer ces têtes.

TâcheYOLOv8YOLO11YOLO26
Détection
Segmentation
Sémantique
Profondeur
Classification
Pose
OBB

Exportation des modèles YOLO26 au format ONNX#

Tu peux étendre la compatibilité des modèles et la flexibilité du déploiement en convertissant les modèles YOLO26 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 connaître les bonnes pratiques liées au 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, consulte 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 exécuter l'inférence ou valider sa précision.

Exportation
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

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

# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml")  # creates 'yolo26n_int8.onnx'
Prédiction
from ultralytics import YOLO

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

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Valider
from ultralytics import YOLO

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

# Validate accuracy on the COCO8 dataset
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'optimiser pour tes besoins spécifiques de déploiement :

ArgumentTypeValeur par défautDescription
formatstr'onnx'Format cible du modèle exporté, définissant 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 des dimensions spécifiques.
quantizeint ou strNonePrécision de quantification : 16 (FP16) ou 8 (quantification statique INT8 avec ONNX Runtime en utilisant des images de calibration de data, produisant un modèle _int8.onnx) ; 32/non défini est FP32. Un point de contrôle entraîné avec quantize=8 exporte toujours INT8 sous forme de nœuds Q/DQ à partir des plages qu'il transporte, sans calibration et sous le nom simple .onnx. Remplace les indicateurs obsolètes half/int8.
datastrNoneYAML de jeu de données utilisé pour la calibration INT8 ; la classification prend plutôt un répertoire de jeu de données ou un nom de jeu de données intégré. En cas d'omission avec quantize=8, Ultralytics sélectionne le jeu de données de calibration 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 sous forme de ratio, de nombre d’images ou de ratios/nombres [train, val, test]. Les listes de deux éléments laissent test complet, tandis que 0 l’ignore.
dynamicboolFalseAutorise les tailles d’entrée dynamiques, ce qui améliore la flexibilité pour gérer différentes dimensions d’image.
simplifyboolTrueSimplifie le graphe du modèle avec onnxslim, ce qui peut améliorer les performances et la compatibilité.
opsetintNoneSpécifie la version de l'opset ONNX pour assurer la compatibilité avec différents parseurs et environnements d'exécution ONNX. Si elle n'est pas définie, la dernière version prise en charge est utilisée.
nmsbool, optionnelNoneSélectionne la sortie brute (None, par défaut), la NMS intégrée (True) ou la tête sans NMS (False).
batchint1Indique la taille du lot d'inférence du modèle exporté ou le nombre maximal d'images que le modèle exporté traitera simultanément en mode predict.
devicestrNoneIndique l’appareil utilisé 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, consulte la page de la documentation Ultralytics consacrée à l’exportation.

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

Une fois que tu as 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 d'ONNX Runtime : ce guide fournit les 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 complets couvrant différents aspects de l'utilisation et de l'implémentation des modèles ONNX dans divers scénarios.

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

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 que l'un des nombreux formats d'exportation pris en charge par Ultralytics YOLO26, ce qui te permet de déployer tes modèles dans pratiquement n'importe quel environnement. Selon tes besoins spécifiques, tu peux également 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, consulte la documentation officielle d'ONNX.

Si tu souhaites également en savoir plus sur les autres intégrations Ultralytics YOLO26, consulte 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 ces étapes :

    Utilisation
    from ultralytics import YOLO
    
    # Load a YOLO26 model
    model = YOLO("yolo26n.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")  # creates 'yolo26n.onnx'
    
    # Load the exported ONNX model
    onnx_model = YOLO("yolo26n.onnx")
    
    # Run inference
    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, afin que tes modèles fonctionnent correctement dans différents 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, offrant ainsi une inférence haute performance.
    • Interopérabilité entre frameworks : les modèles entraînés avec des frameworks populaires comme PyTorch ou TensorFlow peuvent être facilement convertis au format ONNX et exécutés avec ONNX Runtime.
    • Optimisation des performances : ONNX Runtime peut offrir une accélération jusqu'à 3 fois supérieure sur CPU 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, 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 une inférence optimisée sur CPU.
    • GPU : exploitation de NVIDIA CUDA pour une accélération GPU haute performance.
    • Appareils edge : exécution de modèles légers sur des appareils edge et mobiles pour une inférence en temps réel, directement sur l'appareil.
    • Navigateurs web : exécution directe des modèles dans les navigateurs web pour des applications web interactives.
    • Services cloud : déploiement sur des plateformes cloud prenant en charge le format ONNX pour une inférence évolutive.

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

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

    • Interopérabilité : ONNX permet de transférer facilement les modèles entre différents frameworks d'apprentissage automatique.
    • Optimisation des performances : ONNX Runtime peut améliorer les performances des modèles en exploitant 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 modification.
    • Standardisation : ONNX fournit un format standardisé largement pris en charge par le secteur, 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 tels que des dépendances incompatibles ou des opérations non prises en charge. Pour résoudre ces problèmes :

    1. Vérifie que la version correcte 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 trouver des indices et consulte le guide Ultralytics des problèmes courants.
    4. Essaie d'utiliser différents arguments d'exportation, comme simplify=True, ou d'ajuster la version opset.
    5. Pour les problèmes liés à la taille dynamique des entrées, définis dynamic=True lors de l'exportation.

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

Commentaires