Dépannage des problèmes courants de YOLO
Introduction
Ce guide sert d'aide complète pour le dépannage des problèmes courants rencontrés lors de l'utilisation de YOLO11 sur vos projets Ultralytics. La navigation à travers ces problèmes peut être un jeu d'enfant avec les bons conseils, garantissant que vos projets restent sur la bonne voie sans retards inutiles.
Regarder : Ultralytics YOLO11 Problèmes courants | Erreurs d'installation, problèmes de formation du modèle
Problèmes courants
Erreurs d'installation
Les erreurs d'installation peuvent survenir pour diverses raisons, telles que des versions incompatibles, des dépendances manquantes ou des configurations d'environnement incorrectes. Tout d'abord, vérifiez que vous effectuez les opérations suivantes :
- Vous utilisez Python 3.8 ou une version ultérieure, comme recommandé.
- Assurez-vous que la version correcte de PyTorch (1.8 ou ultérieure) est installée.
- Pensez à utiliser des environnements virtuels pour éviter les conflits.
- Suivez le guide d'installation officiel étape par étape.
De plus, voici quelques problèmes d'installation courants rencontrés par les utilisateurs, ainsi que leurs solutions respectives :
-
Erreurs d'importation ou problèmes de dépendances - Si vous rencontrez des erreurs lors de l'importation de YOLO11, ou si vous avez des problèmes liés aux dépendances, envisagez les étapes de dépannage suivantes :
-
Installation propre : Parfois, une nouvelle installation peut résoudre des problèmes inattendus, surtout avec des bibliothèques comme Ultralytics, où les mises à jour peuvent introduire des modifications dans l'arborescence des fichiers ou les fonctionnalités.
-
Mise à jour régulière : Assurez-vous d'utiliser la dernière version de la bibliothèque. Les versions plus anciennes peuvent ne pas être compatibles avec les mises à jour récentes, ce qui peut entraîner des conflits ou des problèmes potentiels.
-
Vérifier les dépendances: Vérifiez que toutes les dépendances requises sont correctement installées et qu'elles sont des versions compatibles.
-
Vérifier les modifications : Si vous avez initialement cloné ou installé une version antérieure, sachez que des mises à jour importantes pourraient affecter la structure ou les fonctionnalités de la bibliothèque. Consultez toujours la documentation officielle ou les journaux des modifications pour comprendre les changements majeurs.
-
N'oubliez pas qu'il est essentiel de maintenir vos bibliothèques et dépendances à jour pour une expérience fluide et sans erreur.
-
-
Exécution de YOLO11 sur GPU - Si vous rencontrez des problèmes lors de l'exécution de YOLO11 sur GPU, tenez compte des étapes de dépannage suivantes :
-
Vérifier la compatibilité et l'installation de CUDA: Assurez-vous que votre GPU est compatible CUDA et que CUDA est correctement installé. Utilisez le
nvidia-smi
commande pour vérifier l'état de votre GPU NVIDIA et la version de CUDA. -
Vérifier l'intégration de PyTorch et CUDA: Assurez-vous que PyTorch peut utiliser CUDA en exécutant
import torch; print(torch.cuda.is_available())
dans un terminal Python. S'il renvoie 'True', PyTorch est configuré pour utiliser CUDA. -
Activation de l'Environnement : Assurez-vous que vous êtes dans l'environnement correct où tous les packages nécessaires sont installés.
-
Mettez à jour vos paquets : Les paquets obsolètes peuvent ne pas être compatibles avec votre GPU. Maintenez-les à jour.
-
Configuration du programme : Vérifiez si le programme ou le code spécifie l'utilisation du GPU. Dans YOLO11, cela peut se trouver dans les paramètres ou la configuration.
-
Problèmes d'entraînement du modèle
Cette section traitera des problèmes courants rencontrés lors de l'entraînement, ainsi que de leurs explications et solutions respectives.
Vérification des paramètres de configuration
Problème: Vous n'êtes pas sûr des paramètres de configuration dans le .yaml
fichier sont correctement appliquées pendant l'entraînement du modèle.
Solution: Les paramètres de configuration dans le .yaml
fichier doit être appliqué lors de l'utilisation du model.train()
fonction. Pour vous assurer que ces paramètres sont correctement appliqués, suivez ces étapes :
- Confirmez que le chemin d'accès à votre
.yaml
le fichier de configuration est correct. -
Assurez-vous de transmettre le chemin d'accès à votre
.yaml
fichier comme ledata
argument lors de l’appel demodel.train()
, comme indiqué ci-dessous :model.train(data="/path/to/your/data.yaml", batch=4)
Accélérer l'entraînement avec plusieurs GPU
Problème : L'entraînement est lent sur un seul GPU, et vous souhaitez accélérer le processus en utilisant plusieurs GPU.
Solution : L’augmentation de la taille du lot peut accélérer l’entraînement, mais il est essentiel de tenir compte de la capacité de la mémoire GPU. Pour accélérer l’entraînement avec plusieurs GPU, suivez ces étapes :
- Assurez-vous d'avoir plusieurs GPU disponibles.
- Modifiez votre fichier de configuration .yaml pour spécifier le nombre de GPU à utiliser, par exemple, gpus : 4.
- Augmentez la taille du lot en conséquence pour utiliser pleinement les multiples GPU sans dépasser les limites de mémoire.
-
Modifiez votre commande d'entraînement pour utiliser plusieurs GPU :
# Adjust the batch size and other settings as needed to optimize training speed model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)
Paramètres de surveillance continue
Problème : Vous voulez savoir quels paramètres doivent être surveillés en permanence pendant l'entraînement, en dehors de la perte.
Solution : Bien que la perte soit une métrique cruciale à surveiller, il est également essentiel de suivre d’autres métriques pour l’optimisation des performances du modèle. Voici quelques métriques clés à surveiller pendant l’entraînement :
- Précision
- Rappel
- Précision moyenne moyenne (mAP)
Vous pouvez accéder à ces métriques à partir des journaux d'entraînement ou en utilisant des outils tels que TensorBoard ou wandb pour la visualisation. La mise en œuvre d'un arrêt précoce basé sur ces métriques peut vous aider à obtenir de meilleurs résultats.
Outils de suivi de la progression de l'entraînement
Problème : Vous recherchez des recommandations sur les outils pour suivre la progression de l'entraînement.
Solution : Pour suivre et visualiser la progression de l’entraînement, vous pouvez envisager d’utiliser les outils suivants :
- TensorBoard : TensorBoard est un choix populaire pour la visualisation des métriques d'entraînement, y compris la perte, la précision, et plus encore. Vous pouvez l'intégrer à votre processus d'entraînement YOLO11.
- Comet : Comet fournit une boîte à outils complète pour le suivi et la comparaison des expériences. Il vous permet de suivre les métriques, les hyperparamètres et même les poids du modèle. L'intégration avec les modèles YOLO est également simple, vous offrant une vue d'ensemble complète de votre cycle d'expérimentation.
- Ultralytics HUB : Ultralytics HUB offre un environnement spécialisé pour le suivi des modèles YOLO, vous offrant une plateforme unique pour gérer les métriques, les jeux de données et même collaborer avec votre équipe. Compte tenu de son orientation spécifique sur YOLO, il offre des options de suivi plus personnalisées.
Chacun de ces outils offre son propre ensemble d'avantages, il est donc important de tenir compte des besoins spécifiques de votre projet lors de votre choix.
Comment vérifier si l'entraînement se déroule sur le GPU
Problème : La valeur 'device' dans les journaux d'entraînement est 'null', et vous ne savez pas si l'entraînement se déroule sur le GPU.
Solution : La valeur « device » étant « null » signifie généralement que le processus d’entraînement est configuré pour utiliser automatiquement un GPU disponible, ce qui est le comportement par défaut. Pour vous assurer que l’entraînement se déroule sur un GPU spécifique, vous pouvez définir manuellement la valeur « device » sur l’index du GPU (par exemple, « 0 » pour le premier GPU) dans votre fichier de configuration .yaml :
device: 0
Cela attribuera explicitement le processus d'entraînement au GPU spécifié. Si vous souhaitez vous entraîner sur le CPU, définissez 'device' sur 'cpu'.
Gardez un œil sur le dossier 'runs' pour les logs et les métriques afin de suivre efficacement la progression de l'entraînement.
Considérations clés pour un entraînement de modèle efficace
Voici quelques éléments à garder à l'esprit si vous rencontrez des problèmes liés à l'entraînement du modèle.
Format de l'ensemble de données et étiquettes
- Importance : La base de tout modèle d'apprentissage automatique réside dans la qualité et le format des données sur lesquelles il est entraîné.
- Recommandation : Assurez-vous que votre ensemble de données personnalisé et ses étiquettes associées respectent le format attendu. Il est crucial de vérifier que les annotations sont précises et de haute qualité. Des annotations incorrectes ou de qualité inférieure peuvent faire dérailler le processus d'apprentissage du modèle, entraînant des résultats imprévisibles.
Convergence du modèle
- Importance : La convergence du modèle garantit que le modèle a suffisamment appris des données d'entraînement.
- Recommandation : Lors de l'entraînement d'un modèle 'à partir de zéro', il est essentiel de s'assurer que le modèle atteint un niveau de convergence satisfaisant. Cela pourrait nécessiter une durée d'entraînement plus longue, avec plus d'epochs, par rapport à l'ajustement fin d'un modèle existant.
Taux d'apprentissage et taille du lot
- Importance : Ces hyperparamètres jouent un rôle essentiel dans la détermination de la manière dont le modèle met à jour ses poids pendant l'entraînement.
- Recommandation : Évaluez régulièrement si le taux d'apprentissage et la taille du lot choisis sont optimaux pour votre ensemble de données spécifique. Des paramètres qui ne sont pas en harmonie avec les caractéristiques de l'ensemble de données peuvent entraver les performances du modèle.
Distribution des classes
- Importance : La distribution des classes dans votre ensemble de données peut influencer les tendances de prédiction du modèle.
- Recommandation : Évaluez régulièrement la distribution des classes au sein de votre ensemble de données. S'il y a un déséquilibre des classes, il existe un risque que le modèle développe un biais envers la classe la plus répandue. Ce biais peut être évident dans la matrice de confusion, où le modèle pourrait principalement prédire la classe majoritaire.
Vérification croisée avec des poids pré-entraînés
- Importance : L'utilisation de poids pré-entraînés peut fournir un point de départ solide pour l'entraînement du modèle, en particulier lorsque les données sont limitées.
- Recommandation : À titre de diagnostic, envisagez d'entraîner votre modèle en utilisant les mêmes données, mais en l'initialisant avec des poids pré-entraînés. Si cette approche donne une matrice de confusion bien formée, cela pourrait suggérer que le modèle 'à partir de zéro' pourrait nécessiter davantage d'entraînement ou des ajustements.
Problèmes liés aux prédictions du modèle
Cette section traitera des problèmes courants rencontrés lors de la prédiction du modèle.
Obtenir les prédictions de boîtes englobantes avec votre modèle personnalisé YOLO11
Problème : Lors de l'exécution de prédictions avec un modèle YOLO11 personnalisé, il existe des défis avec le format et la visualisation des coordonnées de la boîte englobante.
Solution :
-
Format des coordonnées : YOLO11 fournit les coordonnées des boîtes englobantes en valeurs de pixels absolues. Pour convertir ces valeurs en coordonnées relatives (allant de 0 à 1), vous devez diviser par les dimensions de l'image. Par exemple, supposons que la taille de votre image soit de 640 x 640. Vous devez alors procéder comme suit :
# Convert absolute coordinates to relative coordinates x1 = x1 / 640 # Divide x-coordinates by image width x2 = x2 / 640 y1 = y1 / 640 # Divide y-coordinates by image height y2 = y2 / 640
-
Nom du fichier : Pour obtenir le nom du fichier de l'image sur laquelle vous effectuez une prédiction, accédez directement au chemin d'accès du fichier image à partir de l'objet de résultat dans votre boucle de prédiction.
Filtrage des objets dans les prédictions YOLO11
Problème : Rencontre de problèmes sur la façon de filtrer et d'afficher uniquement des objets spécifiques dans les résultats de prédiction lors de l'exécution de YOLO11 à l'aide de la bibliothèque Ultralytics.
Solution : Pour détecter des classes spécifiques, utilisez l’argument classes pour spécifier les classes que vous souhaitez inclure dans la sortie. Par exemple, pour détecter uniquement les voitures (en supposant que les « voitures » ont l’indice de classe 2) :
yolo task=detect mode=segment model=yolo11n-seg.pt source='path/to/car.mp4' show=True classes=2
Comprendre les métriques de précision dans YOLO11
Problème : Confusion concernant la différence entre la précision de la boîte, la précision du masque et la précision de la matrice de confusion dans YOLO11.
Solution : La précision de la boîte mesure l’exactitude des boîtes englobantes prédites par rapport aux boîtes de vérité terrain réelles en utilisant IoU (Intersection sur Union) comme métrique. La précision du masque évalue la concordance entre les masques de segmentation prédits et les masques de vérité terrain dans la classification d’objets pixel par pixel. La précision de la matrice de confusion, d’autre part, se concentre sur la précision globale de la classification dans toutes les classes et ne tient pas compte de la précision géométrique des prédictions. Il est important de noter qu’une boîte englobante peut être géométriquement précise (vrai positif) même si la prédiction de classe est erronée, ce qui entraîne des différences entre la précision de la boîte et la précision de la matrice de confusion. Ces métriques évaluent différents aspects de la performance d’un modèle, reflétant la nécessité de différentes métriques d’évaluation dans diverses tâches.
Extraction des dimensions des objets dans YOLO11
Problème : Difficulté à récupérer la longueur et la hauteur des objets détectés dans YOLO11, en particulier lorsque plusieurs objets sont détectés dans une image.
Solution : Pour récupérer les dimensions de la boîte englobante, utilisez d’abord le modèle Ultralytics YOLO11 pour prédire les objets dans une image. Ensuite, extrayez les informations de largeur et de hauteur des boîtes englobantes à partir des résultats de la prédiction.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"
# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)
# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
x, y, w, h = box
print(f"Width of Box: {w}, Height of Box: {h}")
Défis de déploiement
Problèmes de déploiement de GPU
Problème : Le déploiement de modèles dans un environnement multi-GPU peut parfois entraîner des comportements inattendus tels qu'une utilisation inattendue de la mémoire, des résultats incohérents entre les GPU, etc.
Solution : Vérifiez l’initialisation GPU par défaut. Certains frameworks, comme PyTorch, peuvent initialiser les opérations CUDA sur un GPU par défaut avant de passer aux GPU désignés. Pour contourner les initialisations par défaut inattendues, spécifiez le GPU directement pendant le déploiement et la prédiction. Ensuite, utilisez des outils pour surveiller l’utilisation du GPU et l’utilisation de la mémoire afin d’identifier toute anomalie en temps réel. Assurez-vous également que vous utilisez la dernière version du framework ou de la bibliothèque.
Problèmes de conversion/exportation de modèle
Problème : Pendant le processus de conversion ou d'exportation de modèles d'apprentissage automatique vers différents formats ou plateformes, les utilisateurs peuvent rencontrer des erreurs ou des comportements inattendus.
Solution :
- Vérification de la compatibilité : assurez-vous que vous utilisez des versions de bibliothèques et de frameworks compatibles entre elles. Des versions incompatibles peuvent entraîner des erreurs inattendues lors de la conversion.
- Réinitialisation de l'environnement : Si vous utilisez un environnement interactif comme Jupyter ou Colab, envisagez de redémarrer votre environnement après avoir effectué des modifications ou des installations importantes. Un nouveau départ peut parfois résoudre les problèmes sous-jacents.
- Documentation officielle : Référez-vous toujours à la documentation officielle de l'outil ou de la bibliothèque que vous utilisez pour la conversion. Elle contient souvent des directives spécifiques et des meilleures pratiques pour l'exportation de modèles.
- Assistance communautaire : consultez le référentiel officiel de la bibliothèque ou du framework pour connaître les problèmes similaires signalés par d'autres utilisateurs. Les mainteneurs ou la communauté peuvent avoir fourni des solutions ou des contournements dans les fils de discussion.
- Mettez à jour régulièrement : assurez-vous d'utiliser la dernière version de l'outil ou de la bibliothèque. Les développeurs publient fréquemment des mises à jour qui corrigent les bogues connus ou améliorent les fonctionnalités.
- Tester de manière incrémentielle : Avant d'effectuer une conversion complète, testez le processus avec un modèle ou un ensemble de données plus petit afin d'identifier rapidement les problèmes potentiels.
Communauté et assistance
S'engager avec une communauté de personnes partageant les mêmes idées peut considérablement améliorer votre expérience et votre succès dans l'utilisation de YOLO11. Vous trouverez ci-dessous quelques canaux et ressources qui pourraient vous être utiles.
Forums et canaux pour obtenir de l'aide
Problèmes GitHub : Le dépôt YOLO11 sur GitHub possède un onglet Problèmes où vous pouvez poser des questions, signaler des bugs et suggérer de nouvelles fonctionnalités. La communauté et les mainteneurs sont actifs ici, et c'est un excellent endroit pour obtenir de l'aide sur des problèmes spécifiques.
Serveur Discord Ultralytics : Ultralytics possède un serveur Discord où vous pouvez interagir avec d’autres utilisateurs et les développeurs.
Documentation et ressources officielles
Documentation Ultralytics YOLO11 : La documentation officielle offre une vue d'ensemble complète de YOLO11, ainsi que des guides sur l'installation, l'utilisation et le dépannage.
Ces ressources devraient fournir une base solide pour le dépannage et l'amélioration de vos projets YOLO11, ainsi que pour la connexion avec d'autres membres de la communauté YOLO11.
Conclusion
Le dépannage fait partie intégrante de tout processus de développement, et le fait d'être équipé des bonnes connaissances peut réduire considérablement le temps et les efforts consacrés à la résolution des problèmes. Ce guide visait à aborder les défis les plus courants rencontrés par les utilisateurs du modèle YOLO11 au sein de l'écosystème Ultralytics. En comprenant et en résolvant ces problèmes courants, vous pouvez assurer une progression plus fluide de vos projets et obtenir de meilleurs résultats avec vos tâches de vision par ordinateur.
N'oubliez pas que la communauté Ultralytics est une ressource précieuse. S'engager avec d'autres développeurs et experts peut fournir des informations et des solutions supplémentaires qui pourraient ne pas être couvertes dans la documentation standard. Continuez toujours à apprendre, à expérimenter et à partager vos expériences pour contribuer aux connaissances collectives de la communauté.
Bon dépannage !
FAQ
Comment résoudre les erreurs d'installation avec YOLO11 ?
Les erreurs d'installation sont souvent dues à des problèmes de compatibilité ou à des dépendances manquantes. Assurez-vous d'utiliser Python 3.8 ou une version ultérieure et d'avoir PyTorch 1.8 ou une version ultérieure installée. Il est préférable d'utiliser des environnements virtuels pour éviter les conflits. Pour un guide d'installation étape par étape, suivez notre guide d'installation officiel. Si vous rencontrez des erreurs d'importation, essayez une nouvelle installation ou mettez à jour la bibliothèque vers la dernière version.
Pourquoi mon modèle YOLO11 s'entraîne-t-il lentement sur un seul GPU ?
L'entraînement sur un seul GPU peut être lent en raison de tailles de lots importantes ou d'une mémoire insuffisante. Pour accélérer l'entraînement, utilisez plusieurs GPU. Assurez-vous que votre système dispose de plusieurs GPU disponibles et ajustez votre .yaml
fichier de configuration pour spécifier le nombre de GPU, par exemple : gpus: 4
. Augmentez la taille du lot en conséquence pour utiliser pleinement les GPU sans dépasser les limites de mémoire. Exemple de commande :
model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)
Comment puis-je m'assurer que mon modèle YOLO11 s'entraîne sur le GPU ?
Si la valeur 'device' affiche 'null' dans les journaux d'entraînement, cela signifie généralement que le processus d'entraînement est configuré pour utiliser automatiquement un GPU disponible. Pour attribuer explicitement un GPU spécifique, définissez la valeur 'device' dans votre .yaml
fichier de configuration. Par exemple :
device: 0
Ceci configure le processus d'entraînement sur le premier GPU. Consultez le nvidia-smi
commande pour confirmer votre configuration CUDA.
Comment puis-je surveiller et suivre la progression de l'entraînement de mon modèle YOLO11 ?
Le suivi et la visualisation de la progression de l'entraînement peuvent être gérés efficacement grâce à des outils tels que TensorBoard, Comet et Ultralytics HUB. Ces outils vous permettent d'enregistrer et de visualiser des métriques telles que la perte, la précision, le rappel et le mAP. La mise en œuvre d'un arrêt précoce basé sur ces métriques peut également contribuer à améliorer les résultats de l'entraînement.
Que dois-je faire si YOLO11 ne reconnaît pas le format de mon ensemble de données ?
Assurez-vous que votre ensemble de données et vos étiquettes sont conformes au format attendu. Vérifiez que les annotations sont précises et de haute qualité. Si vous rencontrez des problèmes, consultez le guide de Collecte et d'Annotation des Données pour connaître les meilleures pratiques. Pour des conseils plus spécifiques à l'ensemble de données, consultez la section Ensembles de Données dans la documentation.