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 des 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 — comme 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 complexes et personnalisés qui étaient historiquement nécessaires pour faire passer les modèles de la recherche à la production. Cette flexibilité est cruciale pour les workflows d'IA modernes, où l'entraînement peut se dérouler sur de puissants GPU cloud tandis que le déploiement cible divers matériels tels que des appareils edge, des téléphones mobiles ou des navigateurs web.
Link to this sectionLe 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 les différentes étapes du cycle de 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 OpenVINO pour le déploiement. Sans un format d'échange standard, le transfert d'un modèle entre ces écosystèmes est difficile et sujet aux erreurs.
ONNX comble ce fossé 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 ajustés pour l'accélération matérielle — tels que l'ONNX Runtime — d'exécuter le modèle efficacement sur plusieurs plateformes, y compris Linux, Windows, macOS, Android et iOS.
Link to this sectionPrincipaux 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 passer d'un framework à l'autre sans être enfermés dans un écosystème unique. Tu peux entraîner un modèle en utilisant l'API Python Ultralytics et l'exporter pour l'utiliser dans une application C++ ou un environnement JavaScript 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 (Neural Processing Units) mobiles en utilisant des outils comme OpenVINO ou CoreML. - Inférence plus rapide : L'ONNX Runtime applique des optimisations de graphe — telles que la fusion de nœuds et le pliage de constantes — qui peuvent réduire considérablement la latence d'inférence. C'est essentiel pour les applications en temps réel telles que les véhicules autonomes ou les lignes de fabrication à haute 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 sur ONNX comme format de livraison, rationalisant ainsi les processus ModelOps.
Link to this sectionApplications concrètes#
La polyvalence de ONNX en fait un incontournable dans diverses industries. Voici deux exemples concrets de son application :
Link to this sectionIA Edge sur appareils mobiles#
Consider a mobile application designed for real-time crop health monitoring. The model might be trained on a powerful cloud server using a large dataset of plant images. However, the app needs to run offline on a farmer's smartphone. By exporting the trained model to ONNX, developers can integrate it into the mobile app using ONNX Runtime Mobile. This allows the phone's processor to run object detection locally, identifying pests or diseases instantly without needing an internet connection.
Link to this sectionInférence web multiplateforme#
In e-commerce, a "virtual try-on" feature might use pose estimation to overlay clothing on a user's webcam feed. Training this model might happen in Python, but the deployment target is a web browser. Using ONNX, the model can be converted and run directly in the user's browser via ONNX Runtime Web. This utilizes the client's device capabilities (WebGL or WebAssembly) to perform computer vision tasks, ensuring a smooth, privacy-preserving experience since video data never leaves the user's computer.
Link to this sectionComparaison avec des termes associés#
Il est utile de distinguer ONNX des autres formats et outils de modèle :
- vs. TensorRT : Alors que ONNX est un format d'échange, TensorRT est un moteur d'inférence et un optimiseur spécifiquement conçu pour les GPU NVIDIA. Un workflow 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 de TensorFlow. Bien que robuste au sein de l'écosystème Google, il est moins universellement compatible que 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 de ONNX vers CoreML (ou directement) pour fonctionner efficacement sur les iPhones et iPads.
Link to this sectionExportation vers ONNX avec Ultralytics#
L'écosystème Ultralytics simplifie le processus de conversion de modèles de pointe tels que YOLO26 vers le format ONNX. La fonctionnalité d'exportation est intégrée directement dans la bibliothèque, gérant automatiquement la traversée complexe du graphe et le mappage des opérateurs.
L'exemple suivant montre comment exporter un modèle YOLO26 pré-entraîné vers le 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 plateforme Ultralytics pour la gestion ou déployé directement sur des appareils edge en utilisant l'ONNX Runtime, rendant la vision par ordinateur haute performance accessible dans pratiquement n'importe quel environnement.






