Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

ONNX (Open Neural Network Exchange)

Découvrez comment ONNX améliore la portabilité et l'interopérabilité des modèles d'IA, permettant un déploiement transparent des modèlesYOLO d'Ultralytics sur diverses plateformes.

Open Neural Network ExchangeONNX est une norme à code source ouvert conçue pour représenter les modèles d'apprentissage machine (ML) d'une manière qui permette d'améliorer la qualité de l'information et de la communication. modèles d'apprentissage machine (ML) d'une manière qui de manière à garantir la portabilité des modèles dans différents cadres et matériels. Développé à l'origine par des entreprises telles que Microsoft et Facebook, ONNX sert de "traducteur universel" pour l'IA. Il permet aux développeurs de former un modèle dans un écosystème, tel que PyTorchet de le déployer de manière transparente dans un autre écosystème, comme PyTorch un autre, comme TensorFlow ou un moteur d'inférence moteur d'inférence spécialisé. Cette interopérabilité élimine la nécessité de reconstruire ou d'entraîner à nouveau les réseaux lors du passage d'un environnement de recherche à des applications de production, de production, ce qui simplifie considérablement le le pipeline de déploiement des modèles.

Comment fonctionne ONNX

ONNX définit un ensemble commun d'opérateurs - les éléments constitutifs des modèles d'apprentissage profond (DL) et d'apprentissage automatique - et de modèles d'apprentissage automatique. modèles d'apprentissage profond (DL) et d'apprentissage automatique, ainsi qu'un un format de fichier standard. Lorsqu'un modèle est converti en ONNX, sa structure de calcul est mappée en un graphe de calcul statique. graphique de calcul statique. Dans ce graphe, les nœuds représentent des opérations mathématiques (comme les convolutions ou les fonctions d'activation), et les arêtes représentent le flux de tenseurs de données entre eux.

Cette représentation graphique étant normalisée, les fabricants de matériel peuvent créer des fournisseurs d'exécution optimisés pour ONNX. Cela signifie qu'un seul .onnx peut être accéléré sur divers matériels, y compris un ordinateur de bureau. CPU, GPU (unité de traitement graphique)ou spécialisés TPU Tensor Processing Unit)souvent à l'aide de l'outil performant ONNX Runtime.

Exportation de modèles vers ONNX

Pour les utilisateurs de l'application ultralytics la conversion d'un modèle entraîné au format ONNX est un processus simple. simple. La bibliothèque gère automatiquement le mappage complexe des couches au standard ONNX . L'extrait de code suivant suivant montre comment exporter un modèle YOLO11 modèle, le préparant ainsi à un déploiement plus large. à un déploiement plus large.

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

Applications concrètes

La flexibilité d'ONNX en fait un composant essentiel des infrastructures modernes d'IA, en particulier pour les tâches de vision par ordinateur (CV). pour les tâches de vision artificielle (CV).

  1. Déploiement mobile multiplateforme : Un développeur peut entraîner un modèle de modèle de détection d'objets à l'aide de PyTorch sur une station de travail puissante. Cependant, l'application finale doit fonctionner sur les appareils iOS et Android . En exportant le modèle vers ONNX, le développeur peut intégrer le même fichier de modèle dans des applications mobiles en utilisant le Runtime for Mobile d'ONNX. ONNX Runtime for Mobile, garantissant un comportement cohérent sur différents systèmes d'exploitation sans maintenir des bases de code séparées.
  2. Intégration avec les systèmes existants : De nombreuses applications industrielles sont conçues à l'aide de langages tels que C++ ou C# pour des raisons de performance et de stabilité. Bien que Python soit la norme pour la formation, l'intégration d'un modèle Python dans un environnement de production Python peut être lente et sujette à des erreurs. dans un environnement de production C++ peut être lente et sujette à des erreurs. ONNX comble ce fossé. Un site de production utilisant vision par ordinateur en robotique peut former un modèle en Python, l'exporter vers ONNX, puis le charger directement dans son logiciel de contrôle C++ pour une inférence en temps réel à grande vitesse dans l'usine. l'inférence en temps réel et à grande vitesse l'usine.

ONNX vs. concepts apparentés

Comprendre comment ONNX interagit avec d'autres outils aide à choisir la bonne stratégie de déploiement.

  • ONNX vs. TensorRT: ONNX est un format de fichier pour représenter les modèles, TensorRT est un SDK d'optimisation haute performance développé par NVIDIA spécifiquement pour les GPU NVIDIA . Les deux travaillent souvent ensemble ; les développeurs exportent les modèles vers ONNX et utilisent ensuite TensorRT pour l'ingestion des données. puis utilisent TensorRT pour ingérer ce fichier ONNX , en appliquant une d'optimisation de modèle comme la fusion et la calibration des couches pour une vitesse maximale sur le matériel NVIDIA .
  • ONNX vs. Formats cadres (par exemple, .pt, .h5) : Les formats natifs comme celui de PyTorch .pt ou Keras .h5 sont excellents pour la formation et l'épargne poids du modèle dans leurs écosystèmes spécifiques. Cependant, ils nécessitent souvent l'installation du cadre original pour faire fonctionner le modèle. ONNX dissocie le modèle du cadre du cadre d'apprentissage, ce qui facilite l'exécution IA de pointe les déploiements où l'installation d'une bibliothèque n'est pas pratique en raison de contraintes de stockage ou de mémoire.
  • ONNX vs. quantification : ONNX est un format, tandis que la quantification du modèle est une technique visant à réduire la taille la taille du modèle et d'augmenter la vitesse en réduisant la précision (par exemple, de float32 à int8). La norme ONNX prend en charge les opérateurs quantifiés, ce qui permet aux développeurs de stocker et d'exécuter des modèles quantifiés efficacement.

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant