ONNX (Open Neural Network Exchange)
Explore le format Open Neural Network Exchange (ONNX). Apprends comment exporter Ultralytics YOLO26 vers ONNX pour un déploiement rapide multiplateforme et une optimisation matérielle.
ONNX (Open Neural Network Exchange) est un format open-source conçu pour représenter les modèles de machine learning, permettant l'interopérabilité entre divers frameworks et outils d'IA. Il sert de traducteur universel pour le deep learning, permettant aux développeurs de construire des modèles dans un framework — tel que PyTorch, TensorFlow ou Scikit-learn — et de les déployer de manière transparente dans un autre environnement optimisé pour l'inférence. En définissant un ensemble commun d'opérateurs et un format de fichier standard, ONNX élimine le besoin de scripts de conversion personnalisés et complexes qui étaient historiquement nécessaires pour faire passer les modèles de la recherche à la production. Cette flexibilité est cruciale pour les flux de travail d'IA modernes, où l'entraînement peut avoir lieu sur de puissants GPU cloud tandis que le déploiement cible divers matériels tels que des appareils de périphérie, des téléphones mobiles ou des navigateurs web.
Le rôle de ONNX dans l'IA moderne#
Dans le paysage en évolution rapide de l'intelligence artificielle, les chercheurs et les ingénieurs utilisent souvent différents outils pour différentes étapes du cycle de vie du développement. Un data scientist peut préférer la flexibilité de PyTorch pour l'expérimentation et l'entraînement, tandis qu'un ingénieur de production a besoin des performances optimisées de TensorRT ou d'OpenVINO pour le déploiement. Sans format d'échange standard, le déplacement d'un modèle entre ces écosystèmes est difficile et source d'erreurs.
ONNX comble cette lacune en fournissant une définition partagée du graphe de calcul. Lorsqu'un modèle est exporté vers ONNX, il est sérialisé dans un format qui capture la structure du réseau (couches, connexions) et les paramètres (poids, biais) d'une manière agnostique au framework. Cela permet aux moteurs d'inférence spécifiquement réglés pour l'accélération matérielle — tels que le ONNX Runtime — d'exécuter le modèle efficacement sur de multiples plateformes, notamment Linux, Windows, macOS, Android et iOS.
Principaux avantages de l'utilisation de ONNX#
L'adoption du format Open Neural Network Exchange offre plusieurs avantages stratégiques pour les projets d'IA :
- Interopérabilité des frameworks : Les développeurs peuvent basculer entre les frameworks sans être enfermés dans un seul écosystème. Tu peux entraîner un modèle à l'aide de l'Ultralytics Python API facile d'utilisation et l'exporter pour l'utiliser dans une application C++ ou un environnement JavaScript basé sur le web.
- Optimisation matérielle : De nombreux fabricants de matériel fournissent des fournisseurs d'exécution spécialisés qui s'interfacent avec ONNX. Cela signifie qu'un seul fichier
.onnxpeut être accéléré sur des GPU NVIDIA, des CPU Intel ou des NPU mobiles (Neural Processing Units) en utilisant des outils tels que OpenVINO ou CoreML. - Inférence plus rapide : Le ONNX Runtime applique des optimisations de graphes — telles que la fusion de nœuds et le pliage de constantes — qui peuvent réduire considérablement la latence d'inférence. Ceci est essentiel pour les applications en temps réel telles que les véhicules autonomes ou les lignes de fabrication à grande vitesse.
- Déploiement simplifié : Au lieu de maintenir des pipelines de déploiement séparés pour chaque framework d'entraînement, les équipes d'ingénierie peuvent standardiser sur ONNX comme format de livraison, rationalisant les processus de ModelOps.
Applications concrètes#
La polyvalence de ONNX en fait un incontournable dans diverses industries. Voici deux exemples concrets de son application :
IA Edge sur appareils mobiles#
Considère une application mobile conçue pour la surveillance en temps réel de la santé des cultures. Le modèle peut être entraîné sur un serveur cloud puissant en utilisant un vaste ensemble de données d'images de plantes. Cependant, l'application doit s'exécuter hors ligne sur le smartphone d'un agriculteur. En exportant le modèle entraîné vers ONNX, les développeurs peuvent l'intégrer dans l'application mobile en utilisant ONNX Runtime Mobile. Cela permet au processeur du téléphone d'exécuter la détection d'objets localement, identifiant instantanément les parasites ou les maladies sans nécessiter de connexion Internet.
Inférence web multiplateforme#
Dans le commerce électronique, une fonctionnalité « d'essayage virtuel » peut utiliser l'estimation de pose pour superposer des vêtements sur le flux de la webcam d'un utilisateur. L'entraînement de ce modèle peut se faire en Python, mais la cible de déploiement est un navigateur web. En utilisant ONNX, le modèle peut être converti et exécuté directement dans le navigateur de l'utilisateur via ONNX Runtime Web. Cela utilise les capacités de l'appareil du client (WebGL ou WebAssembly) pour effectuer des tâches de computer vision, garantissant une expérience fluide et respectueuse de la vie privée puisque les données vidéo ne quittent jamais l'ordinateur de l'utilisateur.
Comparaison avec des termes associés#
Il est utile de distinguer ONNX des autres formats et outils de modèle :
- vs. TensorRT : Alors qu'ONNX est un format d'échange, TensorRT est un moteur d'inférence et un optimisateur spécifiquement destiné aux GPU NVIDIA. Un flux de travail courant consiste à exporter d'abord un modèle vers ONNX, puis à analyser ce fichier ONNX dans TensorRT pour obtenir un débit maximal sur le matériel NVIDIA.
- vs. TensorFlow SavedModel : SavedModel est le format de sérialisation natif pour TensorFlow. Bien que robuste au sein de l'écosystème Google, il est moins universellement compatible qu'ONNX. Des outils existent souvent pour convertir les SavedModels en ONNX afin d'obtenir un support de plateforme plus large.
- vs. CoreML : CoreML est le framework d'Apple pour le machine learning sur appareil. Bien que distincts, les modèles sont fréquemment convertis de PyTorch vers ONNX, puis d'ONNX vers CoreML (ou directement) pour s'exécuter efficacement sur les iPhones et iPads.
Exportation vers ONNX avec Ultralytics#
L'écosystème Ultralytics simplifie le processus de conversion de modèles de pointe tels que YOLO26 au format ONNX. La fonctionnalité d'exportation est intégrée directement dans la bibliothèque, gérant automatiquement la traversée de graphes complexes et le mappage des opérateurs.
L'exemple suivant montre comment exporter un modèle pré-entraîné Ultralytics YOLO26 au format ONNX pour le déploiement :
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")Une fois exporté, ce fichier .onnx peut être utilisé dans la Ultralytics Platform pour la gestion ou déployé directement sur des appareils de périphérie à l'aide du ONNX Runtime, rendant la computer vision haute performance accessible dans pratiquement n'importe quel environnement.






