ONNX (Open Neural Network Exchange)
Explore le format Open Neural Network Exchange (ONNX). Apprends à exporter Ultralytics YOLO26 vers ONNX pour un déploiement multiplateforme rapide et une optimisation matérielle.
ONNX (échange ouvert de réseaux neuronaux) est un format open source conçu pour représenter les modèles de machine learning, permettant l’interopérabilité entre différents frameworks et outils d’IA. Il sert de traducteur universel pour le deep learning, permettant aux développeurs de créer des modèles dans un framework, comme PyTorch, TensorFlow ou Scikit-learn, puis de les déployer facilement 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 complexes et personnalisés qui étaient historiquement nécessaires pour transférer les modèles de la recherche vers la production. Cette flexibilité est essentielle pour les workflows d’IA modernes, où l’entraînement peut avoir lieu sur de puissants GPU cloud tandis que le déploiement cible des équipements variés, comme des appareils edge, des téléphones mobiles ou des navigateurs web.
Le rôle d’ONNX dans l’IA moderne#
Dans le paysage en constante évolution de l’intelligence artificielle, les chercheurs et les ingénieurs utilisent souvent différents outils selon les étapes du cycle de développement. Un data scientist peut privilégier 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, transférer un modèle entre ces écosystèmes est difficile et sujet aux 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) de manière indépendante du framework. Cela permet aux moteurs d’inférence spécialement optimisés pour l’accélération matérielle, comme ONNX Runtime, d’exécuter efficacement le modèle sur plusieurs plateformes, notamment Linux, Windows, macOS, Android et iOS.
Principaux avantages d’ONNX#
Adopter le format Open Neural Network Exchange offre plusieurs avantages stratégiques pour les projets d’IA :
- Interopérabilité entre frameworks : les développeurs peuvent passer d’un framework à un autre sans être enfermés dans un seul écosystème. Tu peux entraîner un modèle avec l’API Python d’Ultralytics, puis 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 proposent des fournisseurs d’exécution spécialisés qui s’interfacent avec ONNX. Ainsi, un seul fichier
.onnxpeut être accéléré sur des GPU NVIDIA, des CPU Intel ou des NPU mobiles (unités de traitement neuronal) à l’aide d’outils comme OpenVINO ou CoreML. - Inférence plus rapide : ONNX Runtime applique des optimisations du graphe, comme la fusion de nœuds et la propagation des constantes, qui peuvent réduire considérablement la latence d’inférence. Cela est essentiel pour les applications en temps réel, comme les véhicules autonomes ou les lignes de production à grande vitesse.
- Déploiement simplifié : au lieu de maintenir des pipelines de déploiement distincts pour chaque framework d’entraînement, les équipes d’ingénierie peuvent standardiser le format de livraison sur ONNX, ce qui rationalise les processus de ModelOps.
Applications concrètes#
La polyvalence d’ONNX en fait un outil incontournable dans de nombreux secteurs. Voici deux exemples concrets de son utilisation :
1. IA edge sur appareils mobiles#
Prenons l’exemple d’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 à l’aide d’un vaste jeu de données d’images de plantes. Cependant, l’application doit fonctionner hors ligne sur le smartphone d’un agriculteur. En exportant le modèle entraîné vers ONNX, les développeurs peuvent l’intégrer à l’application mobile avec ONNX Runtime Mobile. Le processeur du téléphone peut ainsi effectuer localement la détection d’objets, en identifiant instantanément les nuisibles ou les maladies sans connexion Internet.
2. Inférence web multiplateforme#
Dans le e-commerce, une fonctionnalité d’« essayage virtuel » peut utiliser l’estimation de pose pour superposer des vêtements au flux de la webcam d’un utilisateur. L’entraînement de ce modèle peut avoir lieu en Python, mais la cible de déploiement est un navigateur web. Avec ONNX, le modèle peut être converti et exécuté directement dans le navigateur de l’utilisateur via ONNX Runtime Web. Cette approche exploite les capacités de l’appareil client (WebGL ou WebAssembly) pour effectuer des tâches de vision par ordinateur, tout en 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 les termes associés#
Il est utile de distinguer ONNX des autres formats et outils de modèles :
- vs. TensorRT : alors qu’ONNX est un format d’échange, TensorRT est un moteur d’inférence et un optimiseur spécialement conçus pour les GPU NVIDIA. Un workflow courant consiste à exporter d’abord un modèle vers ONNX, puis à analyser ce fichier ONNX avec TensorRT afin d’atteindre un débit maximal sur le matériel NVIDIA.
- vs. TensorFlow SavedModel : SavedModel est le format de sérialisation natif de TensorFlow. Bien qu’il soit robuste au sein de l’écosystème Google, il est moins universellement compatible qu’ONNX. Il existe souvent des outils permettant de convertir les SavedModels en ONNX afin de bénéficier d’une prise en charge plus large des plateformes.
- vs. CoreML : CoreML est le framework d’Apple pour le machine learning sur appareil. Bien que distincts, les modèles sont souvent convertis de PyTorch vers ONNX, puis d’ONNX vers CoreML (ou directement) afin de fonctionner efficacement sur les iPhones et les iPads.
Exporter vers ONNX avec Ultralytics#
L’écosystème Ultralytics simplifie la conversion de modèles de pointe comme YOLO26 au format ONNX. La fonctionnalité d’exportation est directement intégrée à la bibliothèque et gère automatiquement le parcours complexe du graphe ainsi que la correspondance des opérateurs.
L’exemple suivant montre comment exporter un modèle Ultralytics YOLO26 préentraîné au format ONNX pour le déployer :
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 l’Ultralytics Platform pour la gestion des modèles ou être déployé directement sur des appareils edge avec ONNX Runtime, rendant la vision par ordinateur haute performance accessible dans pratiquement tous les environnements.









