Comprendre les options de déploiement de YOLOv8
Introduction
Tu as parcouru un long chemin avec YOLOv8. Tu as collecté des données avec diligence, tu les as méticuleusement annotées et tu as passé des heures à former et à évaluer rigoureusement ton modèle personnalisé YOLOv8 . Maintenant, il est temps de mettre ton modèle au service de ton application spécifique, de ton cas d'utilisation ou de ton projet. Mais une décision cruciale se présente à toi : comment exporter et déployer ton modèle de manière efficace.
Ce guide te présente les options de déploiement de YOLOv8'et les facteurs essentiels à prendre en compte pour choisir la bonne option pour ton projet.
Comment choisir la bonne option de déploiement pour ton modèle YOLOv8
Lorsqu'il est temps de déployer ton modèle YOLOv8 , le choix d'un format d'exportation approprié est très important. Comme indiqué dans la documentationUltralytics YOLOv8 Modes, la fonction model.export() permet de convertir ton modèle formé en une variété de formats adaptés à divers environnements et exigences de performance.
Le format idéal dépend du contexte opérationnel prévu pour ton modèle, en équilibrant la vitesse, les contraintes matérielles et la facilité d'intégration. Dans la section suivante, nous examinerons de plus près chaque option d'exportation, en comprenant quand choisir chacune d'entre elles.
YOLOv8Options de déploiement
Passons en revue les différentes options de déploiement de YOLOv8 . Pour une présentation détaillée du processus d'exportation, visite la page de documentationUltralytics sur l'exportation.
PyTorch
PyTorch est une bibliothèque d'apprentissage automatique open-source largement utilisée pour les applications d'apprentissage profond et d'intelligence artificielle. Elle offre un haut niveau de flexibilité et de rapidité, ce qui en a fait l'une des préférées des chercheurs et des développeurs.
-
Benchmarks de performance: PyTorch est connu pour sa facilité d'utilisation et sa flexibilité, ce qui peut entraîner un léger compromis en termes de performance brute par rapport à d'autres frameworks qui sont plus spécialisés et optimisés.
-
Compatibilité et intégration: Offre une excellente compatibilité avec diverses bibliothèques de science des données et d'apprentissage automatique sur Python.
-
Soutien de la communauté et écosystème: L'une des communautés les plus dynamiques, avec des ressources étendues pour l'apprentissage et le dépannage.
-
Études de cas: Couramment utilisés dans les prototypes de recherche, de nombreux articles académiques font référence à des modèles déployés sur PyTorch.
-
Maintenance et mises à jour: Mises à jour régulières avec développement actif et soutien pour les nouvelles fonctionnalités.
-
Considérations de sécurité: Des correctifs réguliers pour les problèmes de sécurité, mais la sécurité dépend largement de l'environnement global dans lequel il est déployé.
-
Accélération matérielle: Prend en charge CUDA pour l'accélération GPU, essentielle pour accélérer la formation et l'inférence des modèles.
TorchScript
TorchScript étend les capacités de PyTorchen permettant l'exportation de modèles à exécuter dans un environnement d'exécution C++. Il convient donc aux environnements de production où Python n'est pas disponible.
-
Repères de performance: Peut offrir des performances améliorées par rapport au site natif PyTorch, en particulier dans les environnements de production.
-
Compatibilité et intégration: Conçu pour une transition transparente entre PyTorch et les environnements de production C++, bien que certaines fonctions avancées puissent ne pas être parfaitement transposées.
-
Soutien de la communauté et écosystème: Bénéficie de la grande communauté de PyTorchmais a un champ d'action plus restreint de développeurs spécialisés.
-
Études de cas: Largement utilisé dans les environnements industriels où les frais généraux de performance de Pythonsont un goulot d'étranglement.
-
Maintenance et mises à jour: Maintenu aux côtés de PyTorch avec des mises à jour régulières.
-
Considérations relatives à la sécurité: Offre une sécurité améliorée en permettant l'exécution de modèles dans des environnements sans installation complète de Python .
-
Accélération matérielle: Hérite de la prise en charge CUDA de PyTorch, garantissant une utilisation efficace du GPU.
ONNX
L'Open Neural Network Exchange (ONNX) est un format qui permet l'interopérabilité des modèles entre différents cadres, ce qui peut s'avérer essentiel lors du déploiement sur diverses plateformes.
-
Repères de performance: les modèles ONNX peuvent avoir des performances variables en fonction de la durée d'exécution spécifique sur laquelle ils sont déployés.
-
Compatibilité et intégration: Grande interopérabilité sur plusieurs plateformes et matériels grâce à sa nature agnostique.
-
Soutien de la communauté et écosystème: Soutenu par de nombreuses organisations, ce qui conduit à un large écosystème et à une variété d'outils pour l'optimisation.
-
Études de cas: Fréquemment utilisé pour déplacer des modèles entre différents cadres d'apprentissage automatique, ce qui démontre sa flexibilité.
-
Maintenance et mises à jour: En tant que norme ouverte, ONNX est régulièrement mis à jour pour prendre en charge de nouvelles opérations et de nouveaux modèles.
-
Considérations relatives à la sécurité: Comme pour tout outil multiplateforme, il est essentiel d'assurer des pratiques sécurisées dans le pipeline de conversion et de déploiement.
-
Accélération matérielle: Avec ONNX Runtime, les modèles peuvent tirer parti de diverses optimisations matérielles.
OpenVINO
OpenVINO est une boîte à outils Intel conçue pour faciliter le déploiement de modèles d'apprentissage profond sur le matériel Intel, en améliorant les performances et la vitesse.
-
Repères de performance: Spécifiquement optimisé pour les CPU, GPU et VPU d'Intel, offrant des augmentations de performance significatives sur le matériel compatible.
-
Compatibilité et intégration: Fonctionne mieux au sein de l'écosystème Intel, mais prend également en charge une série d'autres plateformes.
-
Soutien de la communauté et écosystème: Soutenu par Intel, avec une base d'utilisateurs solide, en particulier dans le domaine de la vision par ordinateur.
-
Études de cas: Souvent utilisé dans des scénarios d'IoT et d'informatique périphérique où le matériel Intel est prépondérant.
-
Maintenance et mises à jour: Intel met régulièrement à jour OpenVINO pour prendre en charge les derniers modèles d'apprentissage profond et le matériel Intel.
-
Considérations sur la sécurité: Fournit des fonctions de sécurité robustes adaptées au déploiement dans des applications sensibles.
-
Accélération matérielle: Adapté à l'accélération sur le matériel Intel, en tirant parti de jeux d'instructions et de fonctions matérielles dédiés.
Pour plus de détails sur le déploiement à l'aide de OpenVINO, voir la documentation sur l'intégration Ultralytics : Intel OpenVINO Export.
TensorRT
TensorRT est un optimiseur d'inférence et un runtime de deep learning hautes performances de NVIDIA, idéal pour les applications ayant besoin de vitesse et d'efficacité.
-
Tests de performance: Offre des performances de premier ordre sur les GPU NVIDIA avec la prise en charge de l'inférence à grande vitesse.
-
Compatibilité et intégration: Convient le mieux au matériel NVIDIA, avec un soutien limité en dehors de cet environnement.
-
Soutien de la communauté et écosystème: Réseau d'assistance solide grâce aux forums de développeurs et à la documentation de NVIDIA.
-
Études de cas: Largement adopté dans les industries nécessitant une inférence en temps réel sur les données vidéo et les images.
-
Maintenance et mises à jour: NVIDIA maintient TensorRT avec des mises à jour fréquentes pour améliorer les performances et prendre en charge les nouvelles architectures GPU.
-
Considérations de sécurité: Comme de nombreux produits NVIDIA, il met fortement l'accent sur la sécurité, mais les spécificités dépendent de l'environnement de déploiement.
-
Accélération matérielle: Conçue exclusivement pour les GPU NVIDIA, elle offre une optimisation et une accélération profondes.
CoreML
CoreML est le cadre d'apprentissage automatique d'Apple, optimisé pour les performances sur appareil dans l'écosystème Apple, notamment iOS, macOS, watchOS et tvOS.
-
Repères de performance: Optimisé pour les performances sur l'appareil sur le matériel Apple avec une utilisation minimale de la batterie.
-
Compatibilité et intégration: Exclusivement pour l'écosystème d'Apple, offrant un flux de travail rationalisé pour les applications iOS et macOS.
-
Soutien de la communauté et écosystème: Un soutien solide de la part d'Apple et une communauté de développeurs dévoués, avec une documentation et des outils complets.
-
Études de cas: Couramment utilisé dans les applications qui nécessitent des capacités d'apprentissage automatique sur l'appareil sur les produits Apple.
-
Maintenance et mises à jour: Régulièrement mis à jour par Apple pour prendre en charge les dernières avancées en matière d'apprentissage automatique et le matériel Apple.
-
Considérations sur la sécurité: Bénéficie de l'attention portée par Apple à la confidentialité des utilisateurs et à la sécurité des données.
-
Accélération matérielle: Tire pleinement parti du moteur neuronal et du GPU d'Apple pour des tâches d'apprentissage automatique accélérées.
TF SavedModel
TF SavedModel est le format de TensorFlowpour enregistrer et servir les modèles d'apprentissage automatique, particulièrement adapté aux environnements de serveurs évolutifs.
-
Repères de performance: Offre des performances évolutives dans les environnements de serveurs, en particulier lorsqu'il est utilisé avec TensorFlow Serving.
-
Compatibilité et intégration: Large compatibilité à travers l'écosystème de TensorFlow's, y compris les déploiements de serveurs en nuage et d'entreprise.
-
Soutien de la communauté et écosystème: Large soutien de la communauté en raison de la popularité de TensorFlow, avec une vaste gamme d'outils pour le déploiement et l'optimisation.
-
Études de cas: Largement utilisé dans des environnements de production pour servir des modèles d'apprentissage profond à l'échelle.
-
Maintenance et mises à jour: Prise en charge par Google et la communauté TensorFlow , garantissant des mises à jour régulières et de nouvelles fonctionnalités.
-
Considérations relatives à la sécurité: Le déploiement à l'aide de TensorFlow Serving comprend des fonctions de sécurité robustes pour les applications d'entreprise.
-
Accélération matérielle: Prend en charge diverses accélérations matérielles par l'intermédiaire des serveurs de TensorFlow.
TF GraphDef
TF GraphDef est un format TensorFlow qui représente le modèle sous forme de graphe, ce qui est avantageux pour les environnements où un graphe de calcul statique est nécessaire.
-
Repères de performance: Fournit des performances stables pour les graphes de calcul statiques, en mettant l'accent sur la cohérence et la fiabilité.
-
Compatibilité et intégration: S'intègre facilement à l'infrastructure de TensorFlow mais est moins flexible que SavedModel.
-
Soutien de la communauté et écosystème: Bon soutien de l'écosystème de TensorFlow, avec de nombreuses ressources disponibles pour optimiser les graphes statiques.
-
Études de cas: Utile dans les scénarios où un graphique statique est nécessaire, comme dans certains systèmes embarqués.
-
Maintenance et mises à jour: Mises à jour régulières en même temps que les mises à jour de base de TensorFlow.
-
Considérations relatives à la sécurité: Garantit un déploiement sûr grâce aux pratiques de sécurité établies sur TensorFlow.
-
Accélération matérielle: Peut utiliser les options d'accélération matérielle de TensorFlow, bien qu'elles ne soient pas aussi flexibles que SavedModel.
TF Lite
TF Lite est la solution de TensorFlowpour l'apprentissage automatique des appareils mobiles et embarqués, qui fournit une bibliothèque légère pour l'inférence sur l'appareil.
-
Repères de performance: Conçus pour la vitesse et l'efficacité sur les appareils mobiles et embarqués.
-
Compatibilité et intégration: Peut être utilisé sur une large gamme d'appareils grâce à sa légèreté.
-
Soutien de la communauté et écosystème: Soutenu par Google, il dispose d'une communauté solide et d'un nombre croissant de ressources pour les développeurs.
-
Études de cas: Populaire dans les applications mobiles qui nécessitent une inférence sur l'appareil avec un encombrement minimal.
-
Maintenance et mises à jour: Régulièrement mis à jour pour inclure les dernières fonctionnalités et optimisations pour les appareils mobiles.
-
Considérations relatives à la sécurité: Fournit un environnement sécurisé pour l'exécution des modèles sur les appareils des utilisateurs finaux.
-
Accélération matérielle: Prend en charge une variété d'options d'accélération matérielle, y compris le GPU et le DSP.
TF Bord TPU
TF Edge TPU est conçu pour un calcul rapide et efficace sur le matériel Edge TPU de Google, parfait pour les appareils IoT nécessitant un traitement en temps réel.
-
Repères de performance: Spécifiquement optimisé pour des calculs rapides et efficaces sur le matériel Edge TPU de Google.
-
Compatibilité et intégration: Fonctionne exclusivement avec les modèles TensorFlow Lite sur les appareils Edge TPU .
-
Soutien de la communauté et écosystème: Soutien croissant grâce aux ressources fournies par Google et les développeurs tiers.
-
Études de cas: Utilisé dans les appareils IoT et les applications qui nécessitent un traitement en temps réel avec une faible latence.
-
Maintenance et mises à jour: Amélioration continue pour tirer parti des capacités des nouvelles versions du matériel Edge TPU .
-
Considérations relatives à la sécurité: S'intègre à la sécurité robuste de Google pour les appareils IoT et de périphérie.
-
Accélération matérielle: Conçu sur mesure pour tirer pleinement parti des appareils Google Coral.
TF.js
TensorFlow.js (TF.js) est une bibliothèque qui apporte des capacités d'apprentissage automatique directement dans le navigateur, offrant ainsi un nouveau champ de possibilités aux développeurs web et aux utilisateurs. Elle permet d'intégrer des modèles d'apprentissage automatique dans les applications web sans avoir besoin d'une infrastructure dorsale.
-
Repères de performance: Permet l'apprentissage automatique directement dans le navigateur avec des performances raisonnables, en fonction de l'appareil client.
-
Compatibilité et intégration: Grande compatibilité avec les technologies web, permettant une intégration facile dans les applications web.
-
Soutien de la communauté et écosystème: Soutien d'une communauté de développeurs web et Node.js, avec une variété d'outils pour déployer des modèles ML dans les navigateurs.
-
Études de cas: Idéal pour les applications web interactives qui bénéficient de l'apprentissage automatique côté client sans avoir besoin de traitement côté serveur.
-
Maintenance et mises à jour: Maintenu par l'équipe de TensorFlow avec les contributions de la communauté open-source.
-
Considérations relatives à la sécurité: S'exécute dans le contexte sécurisé du navigateur, en utilisant le modèle de sécurité de la plateforme web.
-
Accélération matérielle: Les performances peuvent être améliorées grâce à des API basées sur le Web qui accèdent à l'accélération matérielle comme WebGL.
PaddlePaddle
PaddlePaddle est un cadre d'apprentissage profond open-source développé par Baidu. Il est conçu pour être à la fois efficace pour les chercheurs et facile à utiliser pour les développeurs. Il est particulièrement populaire en Chine et offre un support spécialisé pour le traitement de la langue chinoise.
-
Repères de performance: Offre des performances compétitives en mettant l'accent sur la facilité d'utilisation et l'évolutivité.
-
Compatibilité et intégration: Bien intégré dans l'écosystème de Baidu et prend en charge un large éventail d'applications.
-
Soutien de la communauté et écosystème: Bien que la communauté soit plus petite à l'échelle mondiale, elle se développe rapidement, en particulier en Chine.
-
Études de cas: Couramment utilisé sur les marchés chinois et par les développeurs qui cherchent des alternatives aux autres frameworks majeurs.
-
Maintenance et mises à jour: Régulièrement mis à jour en mettant l'accent sur la desserte des applications et des services d'IA en langue chinoise.
-
Considérations sur la sécurité: Met l'accent sur la confidentialité et la sécurité des données, en respectant les normes chinoises en matière de gouvernance des données.
-
Accélération matérielle: Prend en charge diverses accélérations matérielles, y compris les puces Kunlun de Baidu.
NCNN
NCNN est un cadre d'inférence de réseau neuronal très performant optimisé pour la plateforme mobile. Il se distingue par sa légèreté et son efficacité, ce qui le rend particulièrement adapté aux appareils mobiles et embarqués où les ressources sont limitées.
-
Repères de performance: hautement optimisé pour les plateformes mobiles, offrant une inférence efficace sur les appareils basés sur ARM.
-
Compatibilité et intégration: Convient aux applications sur les téléphones mobiles et les systèmes embarqués avec l'architecture ARM.
-
Soutien de la communauté et écosystème: Soutenu par une communauté niche mais active qui se concentre sur les applications ML mobiles et embarquées.
-
Études de cas: Privilégié pour les applications mobiles où l'efficacité et la vitesse sont essentielles sur Android et d'autres systèmes basés sur ARM.
-
Maintenance et mises à jour: Amélioration continue pour maintenir des performances élevées sur une gamme d'appareils ARM.
-
Considérations relatives à la sécurité: L'accent est mis sur l'exécution locale sur l'appareil, ce qui permet de tirer parti de la sécurité inhérente au traitement sur l'appareil.
-
Accélération matérielle: Adapté aux processeurs ARM et aux GPU, avec des optimisations spécifiques pour ces architectures.
Analyse comparative des options de déploiement de YOLOv8
Le tableau suivant donne un aperçu des différentes options de déploiement disponibles pour les modèles YOLOv8 , et t'aide à évaluer celle qui peut le mieux répondre aux besoins de ton projet en fonction de plusieurs critères essentiels. Pour un examen approfondi du format de chaque option de déploiement, tu peux consulter la page de documentation deUltralytics sur les formats d'exportation.
Option de déploiement | Critères de performance | Compatibilité et intégration | Soutien communautaire et écosystème | Études de cas | Maintenance et mises à jour | Considérations sur la sécurité | Accélération matérielle |
---|---|---|---|---|---|---|---|
PyTorch | Bonne flexibilité ; peut compromettre la performance brute | Excellent avec les bibliothèques Python | Ressources et communauté étendues | Recherche et prototypes | Développement régulier et actif | Dépend de l'environnement de déploiement | Prise en charge de CUDA pour l'accélération GPU |
TorchScript | Meilleur pour la production que PyTorch | Transition en douceur de PyTorch à C++ | Spécialisé mais plus étroit que PyTorch | Industrie où Python est un goulot d'étranglement | Mises à jour régulières avec PyTorch | Une sécurité améliorée sans être complète Python | Hérite de la prise en charge de CUDA de PyTorch |
ONNX | Variable en fonction de la durée d'exécution | Haut dans les différents cadres de travail | Vaste écosystème, soutenu par de nombreuses organisations | Flexibilité à travers les cadres de ML | Mises à jour régulières pour les nouvelles opérations | Assurer des pratiques de conversion et de déploiement sécurisées. | Diverses optimisations matérielles |
OpenVINO | Optimisé pour le matériel Intel | Le meilleur dans l'écosystème Intel | Solide dans le domaine de la vision par ordinateur | IoT et edge avec le matériel Intel | Mises à jour régulières pour le matériel Intel | Caractéristiques robustes pour les applications sensibles | Adapté au matériel Intel |
TensorRT | Top-tier sur les GPU NVIDIA | Le meilleur pour le matériel NVIDIA | Un réseau solide grâce à NVIDIA | Inférence vidéo et image en temps réel | Mises à jour fréquentes pour les nouveaux GPU | L'accent mis sur la sécurité | Conçu pour les GPU NVIDIA |
CoreML | Optimisé pour le matériel Apple sur l'appareil | Exclusif à l'écosystème Apple | Soutien solide d'Apple et des développeurs | ML on-device sur les produits Apple | Mises à jour régulières d'Apple | Priorité à la protection de la vie privée et à la sécurité | Moteur neuronal et GPU d'Apple |
TF SavedModel | Évolutif dans les environnements de serveurs | Large compatibilité dans l'écosystème TensorFlow | Un soutien important grâce à la popularité de TensorFlow | Servir des modèles à l'échelle | Mises à jour régulières par Google et la communauté | Fonctionnalités robustes pour l'entreprise | Diverses accélérations matérielles |
TF GraphDef | Stable pour les graphes de calcul statiques | S'intègre bien à l'infrastructure TensorFlow | Ressources pour l'optimisation des graphes statiques | Scénarios nécessitant des graphes statiques | Mises à jour en même temps que TensorFlow core | Pratiques de sécurité établies TensorFlow | TensorFlow options d'accélération |
TF Lite | Vitesse et efficacité sur mobile/embedded | Large gamme d'appareils pris en charge | Communauté solide, soutenue par Google | Applications mobiles avec une empreinte minimale | Dernières fonctionnalités pour les mobiles | Environnement sécurisé sur les appareils des utilisateurs finaux | GPU et DSP entre autres |
TF Bord TPU | Optimisé pour le matériel Edge de Google TPU | Exclusif aux appareils Edge TPU | Se développer avec Google et des ressources tierces | Appareils IoT nécessitant un traitement en temps réel. | Améliorations pour le nouveau matériel Edge TPU | La sécurité robuste de l'IdO de Google | Conçu sur mesure pour Google Coral |
TF.js | Performances raisonnables dans le navigateur | Haut niveau en technologies web | Prise en charge des développeurs web et Node.js | Applications web interactives | TensorFlow contributions de l'équipe et de la communauté | Modèle de sécurité de la plate-forme Web | Amélioré avec WebGL et d'autres API |
PaddlePaddle | Compétitif, facile à utiliser et évolutif | L'écosystème Baidu, un large support d'applications | Croissance rapide, surtout en Chine | Marché chinois et traitement de la langue | Focus sur les applications chinoises de l'IA | Met l'accent sur la confidentialité et la sécurité des données | Y compris les puces Kunlun de Baidu |
NCNN | Optimisé pour les appareils mobiles basés sur la technologie ARM | Systèmes ARM mobiles et embarqués | Niche mais communauté ML mobile/embedded active | Efficacité des systèmes Android et ARM | Maintenance haute performance sur ARM | Avantages de la sécurité sur l'appareil | Optimisations des processeurs ARM et des GPU |
Cette analyse comparative te donne un aperçu de haut niveau. Pour le déploiement, il est essentiel de prendre en compte les exigences et les contraintes spécifiques de ton projet, et de consulter la documentation détaillée et les ressources disponibles pour chaque option.
Communauté et soutien
Lorsque tu commences à utiliser le site YOLOv8, le fait de pouvoir compter sur une communauté et un soutien utiles peut avoir un impact considérable. Voici comment entrer en contact avec d'autres personnes qui partagent tes intérêts et obtenir l'aide dont tu as besoin.
Engage-toi auprès de la communauté élargie
-
Discussions sur GitHub : Le dépôt YOLOv8 sur GitHub possède une section "Discussions" où tu peux poser des questions, signaler des problèmes et suggérer des améliorations.
-
Ultralytics Serveur Discord : Ultralytics dispose d'un serveur Discord où tu peux interagir avec d'autres utilisateurs et développeurs.
Documentation et ressources officielles
- Ultralytics YOLOv8 Docs : La documentation officielle fournit une vue d'ensemble de YOLOv8, ainsi que des guides sur l'installation, l'utilisation et le dépannage.
Ces ressources t'aideront à relever les défis et à rester au courant des dernières tendances et des meilleures pratiques de la communauté YOLOv8 .
Conclusion
Dans ce guide, nous avons exploré les différentes options de déploiement pour YOLOv8. Nous avons également abordé les facteurs importants à prendre en compte pour faire ton choix. Ces options te permettent de personnaliser ton modèle en fonction de divers environnements et exigences de performance, ce qui le rend adapté aux applications du monde réel.
N'oublie pas que la communauté YOLOv8 et Ultralytics est une source d'aide précieuse. Connecte-toi avec d'autres développeurs et experts pour apprendre des astuces et des solutions uniques que tu ne trouveras peut-être pas dans la documentation habituelle. Continue à chercher des connaissances, à explorer de nouvelles idées et à partager tes expériences.
Bon déploiement !