En cliquant sur « Accepter tous les cookies », vous acceptez le stockage de cookies sur votre appareil pour améliorer la navigation sur le site, analyser son utilisation et contribuer à nos efforts de marketing. Plus d’infos
Paramètres des cookies
En cliquant sur « Accepter tous les cookies », vous acceptez le stockage de cookies sur votre appareil pour améliorer la navigation sur le site, analyser son utilisation et contribuer à nos efforts de marketing. Plus d’infos
Découvrez comment exporter des modèles Ultralytics YOLO comme Ultralytics YOLO11 au format ExecuTorch pour un déploiement efficace et natif de PyTorch sur des appareils périphériques et mobiles.
Certaines applications de vision par ordinateur, comme l'inspection automatisée de la qualité, les drones autonomes ou les systèmes de sécurité intelligents, sont plus performantes lorsque les modèles Ultralytics YOLO, comme Ultralytics YOLO11, fonctionnent à proximité du capteur qui capture les images. En d'autres termes, ces modèles doivent traiter les données directement là où elles sont générées, sur des caméras, des drones ou des systèmes embarqués, plutôt que de les envoyer dans le nuage.
Cette approche, connue sous le nom d'IA périphérique, permet aux modèles d'effectuer des inférences directement sur l'appareil où les données sont capturées. En traitant les informations localement au lieu de s'appuyer sur des serveurs distants, les systèmes peuvent réduire le temps de latence, améliorer la confidentialité des données et la fiabilité, même dans des environnements où la connectivité internet est limitée ou inexistante.
Par exemple, une caméra de fabrication qui inspecte des milliers de produits chaque minute, ou un drone qui navigue dans des environnements complexes, ne peuvent pas se permettre les retards liés au traitement dans le nuage. L'exécution de YOLO11 directement sur l'appareil permet une inférence instantanée sur l'appareil.
Pour rendre l'exécution des modèles YOLO d'Ultralytics plus facile et plus efficace, la nouvelle intégration ExecuTorch prise en charge par Ultralytics offre un moyen rationalisé d'exporter et de déployer des modèles directement sur des appareils mobiles et embarqués. ExecuTorch fait partie de l'écosystème PyTorch Edge et fournit une solution de bout en bout pour l'exécution de modèles d'IA directement sur le matériel mobile et périphérique, y compris les téléphones, les wearables, les cartes embarquées et les microcontrôleurs.
Cette intégration facilite le passage d'un modèle YOLO d'Ultralytics, tel que YOLO11, de la formation au déploiement sur des appareils périphériques. En combinant les capacités de vision de YOLO11 avec le moteur d'exécution léger d'ExecuTorch et le pipeline d'exportation PyTorch, les utilisateurs peuvent déployer des modèles qui s'exécutent efficacement sur du matériel périphérique tout en préservant la précision et les performances de l'inférence basée sur PyTorch.
Dans cet article, nous allons examiner de plus près le fonctionnement de l'intégration d'ExecuTorch, les raisons pour lesquelles elle convient parfaitement aux applications d'intelligence artificielle et la manière dont vous pouvez commencer à déployer les modèles YOLO d'Ultralytics avec ExecuTorch. C'est parti !
Qu'est-ce que ExecuTorch ?
Généralement, lorsque vous entraînez un modèle dans PyTorch, il s'exécute sur des serveurs puissants ou des unités de traitement graphique (GPU) dans le nuage. Cependant, le déploiement de ce même modèle sur un appareil mobile ou embarqué, tel qu'un smartphone, un drone ou un microcontrôleur, nécessite une solution spécialisée capable de gérer une puissance de calcul, une mémoire et une connectivité limitées.
C'est exactement ce qu'ExecuTorch apporte. ExecuTorch est une solution de bout en bout développée dans le cadre de l'écosystème PyTorch Edge, qui permet une inférence efficace sur les plates-formes mobiles, embarquées et périphériques. Elle étend les capacités de PyTorch au-delà du nuage, permettant aux modèles d'IA de fonctionner directement sur les appareils locaux.
Amener l'inférence PyTorch à la périphérie
ExecuTorch fournit un moteur d'exécution C++ léger qui permet aux modèles PyTorch de s'exécuter directement sur l'appareil. ExecuTorch utilise le format de modèle PyTorch ExecuTorch (.pte), une exportation optimisée conçue pour un chargement plus rapide, une empreinte mémoire plus petite et une portabilité améliorée.
Il prend en charge XNNPACK en tant que backend par défaut pour une inférence efficace de l'unité centrale de traitement (CPU) et étend la compatibilité à un large éventail de backends matériels, y compris Core ML, Metal, Vulkan, Qualcomm, MediaTek, Arm EthosU, OpenVINO, et d'autres.
Ces backends permettent une accélération optimisée sur les appareils mobiles, embarqués et spécialisés. ExecuTorch s'intègre également au pipeline d'exportation PyTorch et prend en charge des fonctions avancées telles que la quantification et la gestion dynamique des formes afin d'améliorer les performances et l'adaptabilité dans différents environnements de déploiement.
La quantification réduit la taille du modèle et augmente la vitesse d'inférence en convertissant les valeurs de haute précision (telles que les valeurs flottantes de 32 bits) en valeurs de plus faible précision, tandis que la gestion dynamique des formes est utilisée pour permettre aux modèles de traiter efficacement des entrées de taille variable. Ces deux caractéristiques sont cruciales pour l'exécution de modèles d'intelligence artificielle sur des appareils périphériques aux ressources limitées.
Fig 1. Aperçu du fonctionnement d'ExecuTorch(Source)
Une couche unifiée pour le matériel périphérique
Au-delà de son temps d'exécution, ExecuTorch agit également comme une couche d'abstraction unifiée pour de multiples backends matériels. En d'autres termes, il fait abstraction des détails spécifiques au matériel et gère la façon dont les modèles interagissent avec les différentes unités de traitement, y compris les CPU, les GPU et les unités de traitement neuronal (NPU).
Une fois le modèle exporté, ExecuTorch peut être configuré pour cibler le backend le mieux adapté à un appareil donné. Les développeurs peuvent déployer efficacement des modèles sur divers matériels sans avoir à écrire un code personnalisé spécifique à un appareil ou à maintenir des flux de travail de conversion distincts.
Grâce à sa conception modulaire et portable et à l'intégration transparente de PyTorch, ExecuTorch est une excellente option pour déployer des modèles de vision artificielle comme Ultralytics YOLO11 sur des systèmes mobiles et embarqués. Il comble le fossé entre la formation au modèle et le déploiement dans le monde réel, rendant l'IA de pointe plus rapide, plus efficace et plus facile à mettre en œuvre.
Principales caractéristiques d'ExecuTorch
Avant de voir comment exporter les modèles YOLO d'Ultralytics au format ExecuTorch, examinons ce qui fait d'ExecuTorch une option fiable pour le déploiement de l'IA en périphérie.
Voici un aperçu de ses principales caractéristiques :
Prise en charge de la quantification : ExecuTorch prend en charge la quantification des modèles, une technique qui convertit les valeurs de haute précision en valeurs de plus faible précision afin de réduire la taille des modèles et d'accélérer l'inférence. Cela permet aux modèles de s'exécuter plus rapidement et d'utiliser moins de mémoire sur les appareils périphériques tout en conservant pratiquement le même niveau de précision.
Utilisation efficace de la mémoire : L'un des principaux avantages d'ExecuTorch réside dans la façon dont il gère la mémoire. Au lieu de s'appuyer sur l'allocation dynamique de la mémoire, qui peut entraîner une latence et une surconsommation d'énergie, ExecuTorch utilise la planification de la mémoire à l'avance (AOT). Pendant l'exportation, il analyse le graphe du modèle et calcule à l'avance la quantité de mémoire nécessaire pour chaque opération. Cela permet au runtime d'exécuter les modèles en utilisant un plan de mémoire statique, ce qui garantit des performances prévisibles et évite les ralentissements ou les plantages sur les appareils dont la mémoire vive ou la capacité de traitement sont limitées.
Métadonnées de modèle intégrées: Lors de l'exportation à l'aide de l'intégration prise en charge par Ultralytics, chaque modèle comprend un fichier YAML qui contient des métadonnées importantes telles que la taille de l'image d'entrée, les noms de classe et les paramètres de configuration. Ce fichier supplémentaire simplifie l'intégration du modèle dans diverses applications et garantit un comportement cohérent entre les différentes plates-formes.
Comment exporter les modèles YOLO d'Ultralytics au format ExecuTorch ?
Maintenant que nous avons une meilleure compréhension de ce qu'offre ExecuTorch, voyons comment exporter les modèles YOLO d'Ultralytics au format ExecuTorch.
Étape 1 : Installez le paquet Python Ultralytics
Pour commencer, vous devez installer le paquet Ultralytics Python à l'aide de pip, un programme d'installation de paquets. Vous pouvez le faire en exécutant "pip install ultralytics" dans votre terminal ou votre invite de commande.
Si vous travaillez dans un environnement Jupyter Notebook ou Google Colab, ajoutez simplement un point d'exclamation avant la commande, comme "!pip install ultralytics". Une fois installé, le paquet Ultralytics fournit tous les outils dont vous avez besoin pour entraîner, tester et exporter des modèles de vision par ordinateur, y compris Ultralytics YOLO11.
Si vous rencontrez des problèmes lors de l'installation ou de l'exportation de votre modèle, la documentation officielle d'Ultralytics et le guide des problèmes courants contiennent des étapes de dépannage détaillées et les meilleures pratiques pour vous aider à démarrer en douceur.
Étape 2 : Exportation d'Ultralytics YOLO11
Après avoir installé le package Ultralytics, vous pouvez charger une variante du modèle YOLO11 et l'exporter au format ExecuTorch. Par exemple, vous pouvez utiliser un modèle pré-entraîné tel que "yolo11n.pt" et l'exporter en appelant la fonction export avec le format "executorch".
Cela crée un répertoire nommé "yolo11n_executorch_model", qui comprend le fichier de modèle optimisé (.pte) et un fichier de métadonnées YAML séparé contenant des détails importants tels que la taille de l'image et les noms de classe.
Voici le code pour exporter votre modèle :
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
Étape 3 : Exécution des inférences après l'exportation du modèle
Une fois exporté, le modèle est prêt à être déployé sur des appareils périphériques et mobiles à l'aide du moteur d'exécution ExecuTorch. Le fichier modèle .pte exporté peut être chargé dans votre application pour exécuter l'inférence en temps réel sur l'appareil sans avoir besoin d'une connexion au cloud.
Par exemple, l'extrait de code ci-dessous montre comment charger le modèle exporté et lancer l'inférence. L'inférence consiste simplement à utiliser un modèle entraîné pour faire des prédictions sur de nouvelles données. Ici, le modèle est testé sur une image d'un bus provenant d'une URL publique.
Après avoir exécuté le code, vous trouverez l'image de sortie avec les objets détectés dans le dossier "runs/detect/predict".
Fig. 2. Détection d'objets à partir d'un modèle YOLO11 exporté au format ExecuTorch.
Avantages de l'intégration d'ExecuTorch
En explorant les différentes options d'exportation prises en charge par Ultralytics, vous vous demanderez peut-être ce qui rend l'intégration d'ExecuTorch unique. La principale différence réside dans la façon dont elle combine performance, simplicité et flexibilité, ce qui facilite le déploiement de puissants modèles d'IA directement sur les appareils mobiles et périphériques.
Voici quelques-uns des principaux avantages de l'intégration d'ExecuTorch :
Options de déploiement flexibles : Les modèles ExecuTorch peuvent être déployés sur des applications mobiles, des systèmes embarqués, des appareils IoT (Internet des objets) et du matériel d'IA périphérique spécialisé. Cette flexibilité permet aux développeurs d'élaborer des solutions d'IA évolutives qui fonctionnent de manière cohérente sur diverses plateformes et dans divers environnements.
Des performances prouvées par des benchmarks : Des tests sur des appareils tels que le Raspberry Pi 5 montrent que les modèles YOLO11 exportés au format ExecuTorch s'exécutent environ deux fois plus vite que leurs équivalents PyTorch, avec une précision presque identique.
Des API d'intégration flexibles : ExecuTorch fournit des API C++, Kotlin et Objective-C pour iOS, Android et Linux embarqué, ce qui permet aux développeurs d'intégrer les modèles YOLO directement dans les applications natives.
Prise en charge de l'accélération matérielle : ExecuTorch prend en charge plusieurs backends d'accélération matérielle, notamment Vulkan et Metal pour les GPU mobiles, avec une intégration optionnelle pour OpenCL et d'autres API spécifiques au fournisseur. Il peut également tirer parti d'accélérateurs dédiés tels que les NPU et les DSP pour obtenir des accélérations substantielles par rapport à l'inférence effectuée uniquement par le CPU.
Applications concrètes de YOLO11 et de l'exportation ExecuTorch
Récemment, Ultralytics a été reconnue comme une réussite de PyTorch ExecuTorch, soulignant notre soutien précoce à l'inférence sur l'appareil et nos contributions continues à l'écosystème PyTorch. Cette reconnaissance reflète notre objectif commun de rendre l'IA de haute performance plus accessible sur les plateformes mobiles et périphériques.
Du nuage à la périphérie : Comment ExecuTorch et YOLO11 donnent vie à Vision AI
En pratique, cela se traduit par des solutions Vision AI qui fonctionnent efficacement sur tous les supports, des smartphones aux systèmes intégrés. Par exemple, dans l'industrie manufacturière, les appareils de pointe jouent un rôle crucial dans la surveillance des chaînes de production et la détection des défauts en temps réel.
Fig. 3. Exemple d'utilisation de YOLO11 pour l'analyse d'une chaîne de montage.(Source)
Au lieu d'envoyer des images ou des données de capteurs dans le nuage pour traitement, ce qui peut entraîner des retards et dépendre de la connectivité Internet, l'intégration d'ExecuTorch permet aux modèles YOLO11 de s'exécuter directement sur le matériel local. Cela signifie que les usines peuvent détecter instantanément les problèmes de qualité, réduire les temps d'arrêt et préserver la confidentialité des données, tout en fonctionnant avec des ressources informatiques limitées.
Voici quelques autres exemples d'application de l'intégration d'ExecuTorch et des modèles YOLO d'Ultralytics :
Villes intelligentes : En exécutant localement les modèles YOLO11 avec ExecuTorch, les villes peuvent prendre plus rapidement des décisions fondées sur des données, qu'il s'agisse de détecter les embouteillages ou d'identifier les dangers, améliorant ainsi la mobilité et la sécurité globales.
Commerce de détail et entreposage : Grâce à l'inférence sur l'appareil, les détaillants peuvent automatiser la surveillance des rayons, suivre les stocks et inspecter les colis rapidement et en toute sécurité, sans dépendre des connexions en nuage.
Robotique et drones: Les modèles YOLO11 optimisés pour les bords permettent aux robots et aux drones de reconnaître des objets, de naviguer dans des environnements et de prendre des décisions en temps réel, même sans accès à l'internet.
Fig. 4. Détection et comptage des voitures dans le trafic à l'aide de YOLO11(Source)
Principaux points à retenir
L'exportation des modèles YOLO d'Ultralytics au format ExecuTorch facilite le déploiement des modèles de vision par ordinateur sur de nombreux appareils, y compris les smartphones, les tablettes et les systèmes embarqués tels que le Raspberry Pi. Cela signifie qu'il est possible d'exécuter une inférence optimisée sur l'appareil sans dépendre de la connectivité au nuage, ce qui améliore la vitesse, la confidentialité et la fiabilité.
Outre ExecuTorch, Ultralytics prend en charge un large éventail d'intégrations, notamment TensorRT, OpenVINO, CoreML et bien d'autres, ce qui donne aux développeurs la possibilité d'exécuter leurs modèles sur plusieurs plates-formes. À mesure que l'adoption de Vision AI augmente, ces intégrations simplifient le déploiement de systèmes intelligents conçus pour fonctionner efficacement dans des conditions réelles.