Ultralytics YOLO27 : Rejoins la liste d'attente.
Licence YOLO
Retour au glossaire Ultralytics

ONNX (Open Neural Network Exchange)

ONNX est un format ouvert qui stocke un modèle entraîné sous forme de graphe d’opérateurs standard. Un modèle entraîné dans PyTorch peut ainsi s’exécuter sur de nombreux environnements d’exécution.

ONNX (Open Neural Network Exchange) est un format de fichier ouvert et standardisé pour les modèles d’apprentissage automatique. Un fichier .onnx stocke un modèle entraîné sous la forme d’un graphe de calcul composé d’opérateurs standard et de ses poids, afin qu’un modèle entraîné dans un framework, comme PyTorch, puisse s’exécuter dans d’autres environnements et sur de nombreux types de matériel. Facebook et Microsoft ont lancé ONNX en septembre 2017 ; depuis novembre 2019, ONNX est un projet arrivé à maturité de LF AI & Data, la fondation de l’IA de la Linux Foundation. ONNX est le point de passage habituel entre l’entraînement et le déploiement de modèles : un seul fichier exporté peut alimenter ONNX Runtime, TensorRT, OpenVINO et les compilateurs de nombreux accélérateurs d’IA en périphérie.

Contenu d’un fichier ONNX#

Un modèle ONNX est sérialisé avec Protocol Buffers et contient quatre éléments :

  • Graphe : Des nœuds qui appellent des opérateurs comme Conv, MatMul et Relu, reliés par des tenseurs nommés. Les entrées et sorties du graphe comportent des types de données et des formes ; chaque dimension peut être fixe ou symbolique, comme la taille variable d’un lot.
  • Initialiseurs : Les poids entraînés. Protocol Buffers limite un fichier unique à 2 Go ; les modèles plus volumineux stockent donc leurs poids dans des fichiers de données externes placés à côté du fichier .onnx.
  • Version de l’ensemble d’opérateurs : Les opérateurs sont versionnés dans des ensembles d’opérateurs (opsets), et un environnement d’exécution doit prendre en charge l’opset utilisé pour exporter le modèle. Les nouveaux opsets ajoutent des opérateurs sans modifier les anciens, comme l’opérateur Attention ajouté dans l’opset 23.
  • Métadonnées : Le nom du producteur, la version du modèle et les paires clé-valeur personnalisées, comme les noms des classes.

Un deuxième domaine d’opérateurs, ONNX-ML, couvre les modèles classiques comme les ensembles d’arbres et les classificateurs linéaires. Des convertisseurs comme skl2onnx et onnxmltools exportent ainsi les modèles scikit-learn, LightGBM et XGBoost dans le même format. Des outils de visualisation comme Netron affichent le graphe nœud par nœud. En pratique, ONNX fait le lien entre de nombreux frameworks d’entraînement et environnements d’exécution :

Exécuter des modèles ONNX#

ONNX Runtime, le moteur d’inférence libre de Microsoft, exécute les fichiers ONNX sur des serveurs, des ordinateurs de bureau, des téléphones et des navigateurs. Il optimise le graphe au chargement du modèle, par exemple en repliant les constantes et en fusionnant une convolution avec la normalisation par lots qui la suit, puis confie chaque partie du graphe à un fournisseur d’exécution adapté au matériel disponible : CUDA ou TensorRT sur les GPU NVIDIA, OpenVINO sur le matériel Intel, DirectML sur les GPU Windows, Core ML sur les appareils Apple, QNN sur les NPU Qualcomm et WebGPU dans les navigateurs. Windows ML, le cadre d’inférence locale de Microsoft, repose sur ONNX Runtime ; d’autres moteurs, comme TensorRT et OpenVINO, importent les fichiers ONNX et les compilent dans leurs propres formats.

Ultralytics YOLO26 exporte vers ONNX avec model.export(format="onnx"), et l'export TensorRT d'Ultralytics crée son moteur à partir de ce même fichier ONNX. Le fichier exporté s'exécute dans ONNX Runtime sans PyTorch :

import onnxruntime as ort
from ultralytics import YOLO

# Exporter YOLO26n vers ONNX avec des dimensions symboliques pour le lot, la hauteur et la largeur
model = YOLO("yolo26n.pt")
onnx_path = model.export(format="onnx", dynamic=True)

# Charger le graphe dans ONNX Runtime, qui n'a besoin ni de PyTorch ni d'Ultralytics
session = ort.InferenceSession(onnx_path, providers=["CPUExecutionProvider"])
for tensor in session.get_inputs() + session.get_outputs():
    print(tensor.name, tensor.shape)

Il affiche l'entrée du graphe, images, avec des dimensions symboliques pour le lot, la hauteur et la largeur, ainsi que sa sortie de prédiction brute, output0, qui constitue la signature utilisée par tout moteur d'exécution ONNX pour transmettre les données au modèle et lire ses résultats.

  • ONNX Runtime : le moteur d'inférence qui exécute les fichiers ONNX, un projet distinct dirigé par Microsoft que l'on abrège souvent en « ONNX ».
  • TensorRT : le compilateur de NVIDIA, qui transforme un fichier ONNX en un moteur optimisé pour un type de GPU et une version de TensorRT spécifiques ; les équipes conservent donc le fichier ONNX comme source portable et recréent les moteurs pour chaque cible.
  • Formats PyTorch : les points de contrôle .pt et les fichiers safetensors stockent les poids pour du code qui reconstruit le modèle, tandis que TorchScript et torch.export capturent des graphes pour les propres moteurs d'exécution de PyTorch.
  • Autres formats de déploiement : l'IR OpenVINO, les fichiers .tflite LiteRT, les packages Core ML et les fichiers GGUF pour les LLM quantifiés ciblent chacun des moteurs d'exécution spécifiques. coremltools d'Apple convertit directement les modèles PyTorch et a abandonné la prise en charge des entrées ONNX dans la version 6.

Applications concrètes#

  • Applications multiplateformes : un seul fichier ONNX sert aux serveurs Linux, aux applications Windows via Windows ML et aux applications Android et iOS via ONNX Runtime Mobile.
  • Inférence dans le navigateur : ONNX Runtime Web exécute les modèles sur l'appareil de l'utilisateur avec WebGPU ou WebAssembly ; les images de caméra utilisées pour des fonctionnalités comme l'estimation de pose ne quittent donc jamais le navigateur.
  • Accélérateurs en périphérie : les chaînes d'outils NPU de fournisseurs comme Hailo, Qualcomm et Rockchip acceptent des modèles ONNX en entrée et les compilent, souvent avec une quantification en INT8, pour leurs puces.
  • Modèles classiques en production : les arbres de décision à gradient boosté et les pipelines scikit-learn convertis en ONNX s'exécutent dans des services C#, Java et C++ via ONNX Runtime, sans interpréteur Python dans le chemin de service.

Découvre les solutions

La vision par ordinateur dans le sport

La vision par ordinateur dans le sport

Découvre comment Ultralytics YOLO propulse la vision par ordinateur dans le sport grâce au suivi des joueurs et du ballon, aux analyses de performance, aux conseils d’entraînement et à la rééducation des athlètes.
En savoir plus
Vision par ordinateur pour les images aériennes

Vision par ordinateur pour les images aériennes

Transforme les images de drones et les images aériennes en informations exploitables en temps réel pour l’agriculture, l’aquaculture, la conservation et l’analyse géospatiale avec Ultralytics YOLO.
En savoir plus
Vision par ordinateur dans l’aérospatiale

Vision par ordinateur dans l’aérospatiale

Applique la vision par ordinateur dans l’aérospatiale avec Ultralytics YOLO pour l’inspection des aéronefs, la détection des corps étrangers sur les pistes, les opérations au sol des aéroports et la détection des défauts des matériaux composites.
En savoir plus
La vision par ordinateur dans la sécurité

La vision par ordinateur dans la sécurité

Protège chaque site avec les modèles Ultralytics YOLO. L’IA visuelle permet la surveillance des périmètres, la détection des menaces, la reconnaissance des plaques d’immatriculation et la sécurité au travail.
En savoir plus
La vision par ordinateur en robotique

La vision par ordinateur en robotique

Donne plus de capacités à tes machines grâce aux modèles Ultralytics YOLO. Dans la robotique, l’IA visuelle permet la navigation autonome, la perception, le suivi des objets et le contrôle en temps réel.
En savoir plus
La vision par ordinateur dans la logistique

La vision par ordinateur dans la logistique

Optimise la logistique avec les modèles Ultralytics YOLO. La vision par IA permet d’inspecter les colis, de les trier, de suivre les véhicules et de surveiller la sécurité des entrepôts en temps réel.
En savoir plus
La vision par ordinateur dans le commerce de détail

La vision par ordinateur dans le commerce de détail

Réinvente le commerce de détail avec les modèles Ultralytics YOLO. La vision par IA permet de suivre les stocks, de surveiller les rayons, de gérer les files d’attente et de mieux comprendre les clients.
En savoir plus
La vision par ordinateur dans le secteur de la santé

La vision par ordinateur dans le secteur de la santé

Crée des solutions de santé avec les modèles Ultralytics YOLO. La vision par IA dans le secteur de la santé accélère l’imagerie médicale, améliore les diagnostics et facilite la surveillance des patients.
En savoir plus
La vision par ordinateur dans l’industrie manufacturière

La vision par ordinateur dans l’industrie manufacturière

Optimise la fabrication avec les modèles Ultralytics YOLO. La vision par IA améliore le contrôle qualité, la détection des défauts, le respect des règles concernant les EPI et l’automatisation des chaînes de montage.
En savoir plus
La vision par ordinateur dans l’automobile

La vision par ordinateur dans l’automobile

Mets la vision par ordinateur au service de l’automobile avec les modèles Ultralytics YOLO. La vision par IA renforce la sécurité routière, l’aide à la conduite et l’automatisation des véhicules pour des routes plus intelligentes.
En savoir plus
Vision par ordinateur dans l’agriculture

Vision par ordinateur dans l’agriculture

Fais entrer l’IA de vision dans l’agriculture intelligente avec les modèles Ultralytics YOLO. Optimise le suivi des cultures et du bétail ainsi que l’agriculture de précision pour obtenir des rendements plus élevés et plus intelligents.
En savoir plus

Construisons ensemble l’avenir de l’IA !

Commence ton parcours vers l’avenir de l’apprentissage automatique