Exportation ONNX pour les modèles YOLO26#
~43% d'inférence plus rapide.
- L'exportation du modèle Ultralytics YOLO26 vers ONNX peut offrir jusqu'à 43 % de gain en vitesse d'inférence, permettant un déploiement plus rapide et plus efficace.
Souvent, lorsque tu déploies des modèles de computer vision, tu as besoin d'un format de modèle qui soit à la fois flexible et compatible avec plusieurs plateformes.
L'exportation de modèles Ultralytics YOLO26 au format ONNX simplifie le déploiement et garantit des performances optimales dans divers environnements. Ce guide te montre comment convertir facilement tes modèles YOLO26 en ONNX et améliorer leur scalabilité ainsi que leur efficacité dans des applications du monde réel.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
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 telles qu'IBM, Amazon (via AWS) et Google. Le projet vise à créer un format de fichier ouvert conçu pour représenter des modèles de machine learning de manière à ce qu'ils puissent être utilisés sur différents frameworks d'IA et matériels.
Les modèles ONNX peuvent être utilisés pour effectuer 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.
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 de machine learning, compatible avec des frameworks tels que PyTorch, TensorFlow, scikit-learn, etc.
ONNX Runtime optimise l'exécution des modèles ONNX en tirant parti des capacités spécifiques au matériel. Cette optimisation permet aux modèles de s'exécuter efficacement et avec de hautes performances sur diverses plateformes matérielles, notamment 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 de modèles de machine learning et pour la compatibilité.
Fonctionnalités clés des modèles ONNX#
La capacité d'ONNX à gérer divers formats peut être attribuée aux fonctionnalités 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 tout framework prenant en charge ONNX.
-
Versionnage et rétrocompatibilité : ONNX maintient un système de versionnage pour ses opérateurs. Cela garantit que même à mesure que la norme évolue, les modèles créés dans des versions antérieures restent utilisables. La rétrocompatibilité est une fonctionnalité cruciale qui évite aux modèles de devenir rapidement obsolètes.
-
Représentation de modèle basée sur des graphes : ONNX représente les modèles sous forme de graphes de calcul. Cette structure basée sur des graphes est une méthode universelle pour représenter les modèles de machine learning, où les nœuds représentent des opérations ou des calculs, et les arêtes représentent les tenseurs circulant 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 facilitent le travail des développeurs avec les modèles ONNX et permettent de convertir les modèles entre différents frameworks de manière transparente.
Utilisation courante d'ONNX#
Avant de plonger dans la manière d'exporter les modèles YOLO26 vers le format ONNX, jetons un coup d'œil à l'endroit 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 des CPU en raison de leur compatibilité avec ONNX Runtime. Ce runtime est optimisé pour l'exécution sur CPU. Il améliore considérablement la vitesse d'inférence et rend possibles les déploiements sur 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. Pour l'entraînement natif et l'inférence sur des GPU AMD, utilise PyTorch ROCm ; un fichier ONNX nécessite toujours un runtime compatible AMD.
-
Appareils de périphérie et mobiles : ONNX s'étend aux appareils de périphérie (edge) et mobiles, ce qui est parfait pour les scénarios d'inférence locale et en temps réel. Il est léger et compatible avec le matériel de périphérie, et sert de base aux formats NPU des fabricants tels que 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, alimentant des applications d'IA interactives et dynamiques basées sur le Web.
Tâches prises en charge#
L'exportation ONNX prend en charge les sept tâches Ultralytics. La segmentation sémantique et l'estimation de la profondeur ne sont disponibles qu'avec YOLO26, la seule famille qui intègre ces têtes.
Exportation des modèles YOLO26 vers ONNX#
Tu peux étendre la compatibilité des modèles et la flexibilité de 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 :
# Install the required package for YOLO26
pip install ultralyticsPour des instructions détaillées et les meilleures pratiques concernant le processus d'installation, consulte notre YOLO26 Installation guide. Si tu rencontres des difficultés lors de l'installation des packages requis pour YOLO26, consulte notre Common Issues guide pour trouver des solutions et des astuces.
Utilisation#
Avant de te lancer dans les instructions d'utilisation, assure-toi de découvrir la gamme de YOLO26 models offered by Ultralytics. Cela t'aidera à choisir le modèle le plus 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.
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'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")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 divers arguments pour optimiser tes besoins de déploiement spécifiques :
| Argument | Type | 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 des images carrées ou un tuple (height, width) pour des dimensions spécifiques. |
quantize | int ou str | None | Précision de quantification : 16 (FP16) ou 8 (quantification statique INT8 avec ONNX Runtime en utilisant des images de calibration provenant de data, produisant un modèle _int8.onnx) ; 32 / non défini correspond à FP32. Remplace les indicateurs obsolètes half / int8. |
data | str | None | YAML de dataset utilisé pour la calibration INT8 ; la classification prend à la place un répertoire de dataset ou un nom de dataset intégré. S'il est omis avec quantize=8, Ultralytics sélectionne le dataset de calibration par défaut pour la tâche du modèle. |
fraction | float, int ou list | 1.0 | Sous-ensemble de calibration sous forme de rapport, de nombre d'images ou de rapports/comptes [train, val, test]. Les listes à deux éléments laissent test complet, tandis que 0 l'ignore. |
dynamic | bool | False | Autorise des tailles d'entrée dynamiques, améliorant la flexibilité dans la gestion de dimensions d'image variables. |
simplify | bool | True | Simplifie le graphe du modèle avec onnxslim, ce qui peut améliorer les performances et la compatibilité. |
opset | int | None | Spécifie la version de l'opset ONNX pour la compatibilité avec différents analyseurs et runtimes ONNX. Si non défini, utilise la dernière version prise en charge. |
nms | bool | False | Ajoute le NMS (Non-Maximum Suppression), essentiel pour un post-traitement de détection précis et efficace. |
batch | int | 1 | Spécifie la taille d'inférence par lots du modèle exporté ou le nombre maximal d'images que le modèle exporté traitera simultanément en mode predict. |
device | str | None | Spécifie le périphérique 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, visite la page de documentation d'Ultralytics sur l'exportation.
Déploiement des modèles ONNX YOLO26 exportés#
Une fois que tu as exporté avec succès tes modèles Ultralytics YOLO26 au format ONNX, l'étape suivante consiste à déployer ces modèles dans divers environnements. Pour des instructions détaillées sur le déploiement de tes modèles ONNX, consulte les ressources suivantes :
-
ONNX Runtime Python API Documentation : Ce guide fournit des informations essentielles pour charger et exécuter des modèles ONNX à l'aide d'ONNX Runtime.
-
Deploying on Edge Devices : Consulte cette page de documentation pour découvrir différents exemples de déploiement de modèles ONNX sur des appareils de périphérie.
-
ONNX Tutorials on GitHub : Une collection de tutoriels complets couvrant divers aspects de l'utilisation et de l'implémentation de modèles ONNX dans différents scénarios.
-
Triton Inference Server : Apprends à déployer tes modèles ONNX avec le serveur d'inférence Triton de NVIDIA pour des déploiements haute performance et scalables.
Résumé#
Dans ce guide, tu as appris à exporter des modèles Ultralytics YOLO26 au format ONNX pour augmenter leur interopérabilité et leurs performances sur diverses plateformes. Tu as également été initié au ONNX Runtime et aux options de déploiement ONNX.
L'exportation ONNX n'est que l'un des nombreux export formats pris en charge par Ultralytics YOLO26, te permettant de déployer tes modèles dans pratiquement n'importe quel environnement. Selon tes besoins spécifiques, tu pourrais également souhaiter explorer d'autres options d'exportation telles que TensorRT pour des performances GPU maximales ou CoreML pour les appareils Apple.
Pour plus de détails sur l'utilisation, visite la ONNX official documentation.
De plus, si tu souhaites en savoir plus sur d'autres intégrations d'Ultralytics YOLO26, visite notre integration guide page. Tu y trouveras de nombreuses ressources et informations utiles.
FAQ#
L'utilisation d'ONNX Runtime pour le déploiement de modèles YOLO26 offre plusieurs avantages :
- Compatibilité multiplateforme : ONNX Runtime prend en charge diverses plateformes, telles que Windows, macOS et Linux, garantissant que tes modèles s'exécutent de manière fluide dans différents environnements.
- Accélération matérielle : ONNX Runtime peut tirer parti des optimisations spécifiques au matériel pour les CPU, les GPU et les accélérateurs dédiés, offrant une inférence haute performance.
- Interopérabilité des frameworks : Les modèles entraînés dans des frameworks populaires tels que PyTorch ou TensorFlow peuvent être facilement convertis au format ONNX et exécutés à l'aide d'ONNX Runtime.
- Optimisation des performances : ONNX Runtime peut offrir une accélération 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.
Apprends-en plus en consultant la ONNX Runtime documentation.
Les modèles YOLO26 exportés vers ONNX peuvent être déployés sur diverses plateformes, notamment :
- CPU : Utilisation d'ONNX Runtime pour une inférence optimisée sur CPU.
- GPU : Utilisation 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 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 prenant en charge le format ONNX pour une inférence évolutive.
Pour plus d'informations, explore notre guide sur les model deployment options.
L'utilisation du format ONNX pour les modèles Ultralytics YOLO26 présente de nombreux avantages :
- Interopérabilité : ONNX permet aux modèles d'être transférés entre différents frameworks de machine learning de manière transparente.
- Optimisation des performances : ONNX Runtime peut améliorer les performances des modèles en utilisant des optimisations spécifiques au matériel.
- Flexibilité : ONNX prend en charge divers environnements de déploiement, te permettant d'utiliser le même modèle sur différentes plateformes sans modification.
- Standardisation : ONNX fournit un format standardisé largement pris en charge dans l'industrie, garantissant une compatibilité à long terme.
Consulte le guide complet sur l'exporting YOLO26 models to ONNX.
Lors de l'exportation des modèles YOLO26 vers ONNX, tu pourrais 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 :
- Vérifie que tu as installé la bonne version des dépendances requises.
- Consulte la documentation officielle ONNX documentation pour connaître les opérateurs et fonctionnalités pris en charge.
- Examine les messages d'erreur pour obtenir des indices et consulte le Ultralytics Common Issues guide.
- Essaie d'utiliser différents arguments d'exportation tels que
simplify=Trueou d'ajuster la version deopset. - En cas de problèmes liés à la taille d'entrée dynamique, définis
dynamic=Truelors de l'exportation.
Si les problèmes persistent, contacte le support Ultralytics pour obtenir une assistance supplémentaire.
Pour exporter tes modèles YOLO26 au format ONNX en utilisant Ultralytics, suis ces étapes :
Pour plus de détails, consulte la export documentation.