Skip to content

Dépannage des problèmes courants sur YOLO

YOLO Image des problèmes courants

Introduction

Ce guide est une aide complète pour résoudre les problèmes courants rencontrés en travaillant avec YOLOv8 sur tes projets Ultralytics . Naviguer à travers ces problèmes peut être un jeu d'enfant avec les bons conseils, ce qui garantit que tes projets restent sur la bonne voie sans retards inutiles.



Regarde : Ultralytics YOLOv8 Problèmes courants | Erreurs d'installation, Problèmes de formation au 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érifie que tu fais bien ce qui suit :

  • Tu utilises Python 3.8 ou une version plus rĂ©cente, comme cela est recommandĂ©.

  • Assure-toi d'avoir installĂ© la bonne version de PyTorch (1.8 ou plus).

  • Envisage d'utiliser des environnements virtuels pour Ă©viter les conflits.

  • Suis le guide d'installation officiel Ă©tape par Ă©tape.

En outre, voici quelques problèmes d'installation courants que les utilisateurs ont rencontrés, ainsi que leurs solutions respectives :

  • Erreurs d'importation ou problèmes de dĂ©pendance - Si tu obtiens des erreurs pendant l'importation de YOLOv8, ou si tu as des problèmes liĂ©s aux dĂ©pendances, considère les Ă©tapes de dĂ©pannage suivantes :

    • Nouvelle installation: Parfois, commencer par une nouvelle installation peut rĂ©soudre des problèmes inattendus. En particulier avec des bibliothèques comme Ultralytics, oĂą les mises Ă  jour peuvent introduire des changements dans l'arborescence des fichiers ou dans les fonctionnalitĂ©s.

    • Mets-toi Ă  jour rĂ©gulièrement: Assure-toi que tu utilises la dernière version de la bibliothèque. Les anciennes versions peuvent ne pas ĂŞtre compatibles avec les mises Ă  jour rĂ©centes, ce qui entraĂ®ne des conflits ou des problèmes potentiels.

    • VĂ©rifie les dĂ©pendances : VĂ©rifie que toutes les dĂ©pendances requises sont correctement installĂ©es et que leurs versions sont compatibles.

    • Examine les changements: Si tu as initialement clonĂ© ou installĂ© une ancienne version, sache que des mises Ă  jour importantes peuvent affecter la structure ou les fonctionnalitĂ©s de la bibliothèque. Reporte-toi toujours Ă  la documentation officielle ou aux changelogs pour comprendre les changements majeurs.

    • N'oublie pas que la mise Ă  jour de tes bibliothèques et dĂ©pendances est cruciale pour une expĂ©rience fluide et sans erreur.

  • ExĂ©cuter YOLOv8 sur le GPU - Si tu as des difficultĂ©s Ă  exĂ©cuter YOLOv8 sur le GPU, considère les Ă©tapes de dĂ©pannage suivantes :

    • VĂ©rifier la compatibilitĂ© et l'installation de CUDA: Assure-toi que ton GPU est compatible avec CUDA et que CUDA est correctement installĂ©. Utilise le nvidia-smi pour vĂ©rifier l'Ă©tat de ton GPU NVIDIA et la version CUDA.

    • VĂ©rifie PyTorch et l'intĂ©gration CUDA: Assure-toi 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: Assure-toi que tu es dans le bon environnement oĂą tous les paquets nĂ©cessaires sont installĂ©s.

    • Mets Ă  jour tes paquets : Les paquets pĂ©rimĂ©s peuvent ne pas ĂŞtre compatibles avec ton GPU. Maintiens-les Ă  jour.

    • Configuration du programme: VĂ©rifie si le programme ou le code spĂ©cifie l'utilisation du GPU. Dans YOLOv8, cela peut se trouver dans les paramètres ou la configuration.

Questions relatives Ă  la formation au mannequinat

Cette section aborde les problèmes courants rencontrés lors de la formation, ainsi que leurs explications et solutions respectives.

Vérification des paramètres de configuration

Enjeu: Tu n'es pas sûr que les paramètres de configuration du .yaml sont appliqués correctement pendant la formation du modèle.

Solution: Les paramètres de configuration du .yaml doit être appliqué lors de l'utilisation du fichier model.train() fonction. Pour t'assurer que ces paramètres sont correctement appliqués, suis les étapes suivantes :

  • Confirme que le chemin d'accès Ă  ton .yaml Le fichier de configuration est correct.
  • Assure-toi de passer le chemin d'accès Ă  ton .yaml en tant que fichier data lors de l'appel Ă  model.train(), comme indiquĂ© ci-dessous :
model.train(data="/path/to/your/data.yaml", batch=4)

Accélérer la formation avec plusieurs GPU

Problème: La formation est lente sur un seul GPU, et tu veux accélérer le processus en utilisant plusieurs GPU.

Solution: L'augmentation de la taille des lots peut accélérer la formation, mais il est essentiel de tenir compte de la capacité de mémoire du GPU. Pour accélérer la formation avec plusieurs GPU, suis les étapes suivantes :

  • Assure-toi que tu disposes de plusieurs GPU.

  • Modifie ton fichier de configuration .yaml pour spĂ©cifier le nombre de GPU Ă  utiliser, par exemple, gpus : 4.

  • Augmente la taille du lot en consĂ©quence pour utiliser pleinement les multiples GPU sans dĂ©passer les limites de mĂ©moire.

  • Modifie ta 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

Question: Tu veux 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 mesure cruciale à surveiller, il est également essentiel de suivre d'autres mesures pour optimiser les performances du modèle. Voici quelques mesures clés à surveiller pendant la formation :

  • PrĂ©cision
  • Rappel
  • PrĂ©cision moyenne (mAP)

Tu peux accéder à ces métriques à partir des journaux d'entraînement ou en utilisant des outils comme TensorBoard ou wandb pour la visualisation. La mise en œuvre d'un arrêt précoce basé sur ces métriques peut t'aider à obtenir de meilleurs résultats.

Outils de suivi des progrès de la formation

Question: Tu cherches des recommandations sur les outils permettant de suivre les progrès de la formation.

Solution: Pour suivre et visualiser les progrès de la formation, tu peux envisager d'utiliser les outils suivants :

  • TensorBoard: TensorBoard est un choix populaire pour visualiser les mĂ©triques de formation, y compris les pertes, la prĂ©cision, et plus encore. Tu peux l'intĂ©grer Ă  ton processus de formation YOLOv8 .
  • Comet: Comet fournit une boĂ®te Ă  outils complète pour le suivi et la comparaison des expĂ©riences. Il te permet de suivre les mĂ©triques, les hyperparamètres et mĂŞme les poids des modèles. L'intĂ©gration avec les modèles YOLO est Ă©galement simple, ce qui te permet d'avoir une vue d'ensemble de ton cycle d'expĂ©rimentation.
  • Ultralytics HUB: Ultralytics HUB offre un environnement spĂ©cialisĂ© pour le suivi des modèles YOLO , te donnant une plateforme unique pour gĂ©rer les mesures, les ensembles de donnĂ©es et mĂŞme collaborer avec ton Ă©quipe. Étant donnĂ© qu'il se concentre sur YOLO, il offre des options de suivi plus personnalisĂ©es.

Chacun de ces outils offre son propre ensemble d'avantages, tu peux donc prendre en compte les besoins spécifiques de ton projet au moment de faire un choix.

Comment vérifier si la formation se déroule sur le GPU ?

Problème: La valeur 'device' dans les journaux de formation est 'null', et tu n'es pas sûr que la formation se déroule sur le GPU.

Solution: La valeur 'device' étant 'null' signifie généralement que le processus de formation est configuré pour utiliser automatiquement un GPU disponible, ce qui est le comportement par défaut. Pour t'assurer que la formation se déroule sur un GPU spécifique, tu peux définir manuellement la valeur 'device' à l'index du GPU (par exemple, '0' pour le premier GPU) dans ton fichier de configuration .yaml :

device: 0

Ceci affectera explicitement le processus de formation au GPU spécifié. Si tu souhaites que l'entraînement se fasse sur l'unité centrale, définis 'device' à 'cpu'.

Garde un œil sur le dossier "runs" pour les journaux et les mesures afin de suivre efficacement les progrès de l'entraînement.

Considérations clés pour une formation efficace au mannequinat

Voici quelques éléments à garder à l'esprit, si tu es confronté à des problèmes liés à la formation des mannequins.

Format des données et étiquettes

  • Importance : Le fondement de tout modèle d'apprentissage automatique repose sur la qualitĂ© et le format des donnĂ©es sur lesquelles il est formĂ©.

  • Recommandation : Assure-toi que ton jeu de donnĂ©es personnalisĂ© et ses Ă©tiquettes associĂ©es respectent le format attendu. Il est crucial de vĂ©rifier que les annotations sont exactes et de haute qualitĂ©. Des annotations incorrectes ou imparfaites peuvent faire dĂ©railler le processus d'apprentissage du modèle, entraĂ®nant des rĂ©sultats imprĂ©visibles.

Convergence des modèles

  • Importance : Atteindre la convergence du modèle permet de s'assurer que le modèle a suffisamment appris Ă  partir 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 peut nĂ©cessiter une durĂ©e d'entraĂ®nement plus longue, avec plus d'Ă©poques, que lorsque tu peaufines un modèle existant.

Taux d'apprentissage et taille des lots

  • Importance : Ces hyperparamètres jouent un rĂ´le central dans la dĂ©termination de la façon dont le modèle met Ă  jour ses poids pendant la formation.

  • Recommandation : Évalue rĂ©gulièrement si le taux d'apprentissage et la taille du lot choisis sont optimaux pour ton ensemble de donnĂ©es spĂ©cifique. Les 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.

RĂ©partition des classes

  • Importance : La rĂ©partition des classes dans ton ensemble de donnĂ©es peut influencer les tendances de prĂ©diction du modèle.

  • Recommandation : Évalue rĂ©gulièrement la rĂ©partition des classes au sein de ton ensemble de donnĂ©es. S'il y a un dĂ©sĂ©quilibre entre les classes, le modèle risque de dĂ©velopper un biais en faveur de la classe la plus rĂ©pandue. Ce biais peut ĂŞtre Ă©vident dans la matrice de confusion, oĂą le modèle peut prĂ©dire de façon prĂ©dominante la classe majoritaire.

Vérification croisée avec les poids pré-entraînés

  • Importance : L'exploitation des 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 : En tant qu'Ă©tape de diagnostic, envisage d'entraĂ®ner ton modèle en utilisant les mĂŞmes donnĂ©es mais en l'initialisant avec des poids prĂ©-entraĂ®nĂ©s. Si cette approche produit une matrice de confusion bien formĂ©e, cela pourrait suggĂ©rer que le modèle "Ă  partir de zĂ©ro" pourrait nĂ©cessiter une formation ou des ajustements supplĂ©mentaires.

Cette section abordera les problèmes courants rencontrés lors de la prédiction des modèles.

Obtenir des prédictions de la boîte de délimitation avec ton modèle personnalisé YOLOv8

Problème: Lors de l'exécution de prédictions avec un modèle personnalisé YOLOv8 , le format et la visualisation des coordonnées de la boîte de délimitation posent des problèmes.

Solution:

  • Coordinate Format: YOLOv8 provides bounding box coordinates in absolute pixel values. To convert these to relative coordinates (ranging from 0 to 1), you need to divide by the image dimensions. For example, let's say your image size is 640x640. Then you would do the following:
# 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 tu prĂ©dis, accède au chemin du fichier de l'image directement Ă  partir de l'objet rĂ©sultat dans ta boucle de prĂ©diction.

Filtrer les objets dans les prédictions de YOLOv8

Problème: Problèmes de filtrage et d'affichage d'objets spécifiques dans les résultats de prédiction lors de l'exécution de YOLOv8 à l'aide de la bibliothèque Ultralytics .

Solution: Pour détecter des classes spécifiques, utilise l'argument classes pour spécifier les classes que tu veux inclure dans le résultat. Par exemple, pour détecter uniquement les voitures (en supposant que les "voitures" ont un indice de classe 2) :

yolo task=detect mode=segment model=yolov8n-seg.pt source='path/to/car.mp4' show=True classes=2

Comprendre les mesures de précision dans YOLOv8

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 YOLOv8.

Solution: La précision des boîtes mesure l'exactitude des boîtes de délimitation prédites par rapport aux boîtes réelles de la vérité terrain en utilisant l'IoU (Intersection over Union) comme métrique. La précision des masques évalue l'accord entre les masques de segmentation prédits et les masques de vérité terrain dans la classification des objets par pixel. La précision de la matrice de confusion, quant à elle, se concentre sur la précision globale de la classification pour toutes les classes et ne prend pas en compte la précision géométrique des prédictions. Il est important de noter qu'une boîte de délimitation peut être géométriquement exacte (vrai positif) même si la prédiction de la 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 mesures évaluent des aspects distincts de la performance d'un modèle, ce qui reflète la nécessité de disposer de mesures d'évaluation différentes pour diverses tâches.

Extraction des dimensions des objets dans YOLOv8

Problème: Difficulté à récupérer la longueur et la hauteur des objets détectés sur YOLOv8, surtout lorsque plusieurs objets sont détectés dans une image.

Solution: Pour récupérer les dimensions des boîtes de délimitation, utilise d'abord le modèle Ultralytics YOLOv8 pour prédire les objets dans une image. Ensuite, extrais les informations sur la largeur et la hauteur des boîtes de délimitation à partir des résultats de la prédiction.

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.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 liés au déploiement

Problèmes de déploiement du GPU

Problème : Le déploiement de modèles dans un environnement multi-GPU peut parfois entraîner des comportements inattendus comme une utilisation inattendue de la mémoire, des résultats incohérents entre les GPU, etc.

Solution : Vérifie l'initialisation du 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écifie le GPU directement pendant le déploiement et la prédiction. Utilise ensuite des outils pour surveiller l'utilisation du GPU et de la mémoire afin d'identifier toute anomalie en temps réel. Assure-toi également d'utiliser la dernière version du framework ou de la bibliothèque.

Problèmes de conversion/exportation de modèles

Problème : Au cours du processus de conversion ou d'exportation des 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Ă© : Assure-toi que tu utilises des versions de bibliothèques et de frameworks compatibles entre elles. Des versions non compatibles peuvent entraĂ®ner des erreurs inattendues lors de la conversion.

  • RĂ©initialisation de l'environnement : Si tu utilises un environnement interactif comme Jupyter ou Colab, pense Ă  redĂ©marrer ton environnement après avoir effectuĂ© des modifications ou des installations importantes. Un nouveau dĂ©part peut parfois rĂ©soudre des problèmes sous-jacents.

  • Documentation officielle : Reporte-toi toujours Ă  la documentation officielle de l'outil ou de la bibliothèque que tu utilises pour la conversion. Elle contient souvent des directives spĂ©cifiques et des bonnes pratiques pour l'exportation de modèles.

  • Soutien de la communautĂ© : VĂ©rifie le dĂ©pĂ´t officiel de la bibliothèque ou du framework pour voir si des problèmes similaires ont Ă©tĂ© signalĂ©s par d'autres utilisateurs. Les responsables ou la communautĂ© peuvent avoir fourni des solutions ou des solutions de contournement dans les fils de discussion.

  • Mets rĂ©gulièrement Ă  jour : Assure-toi que tu utilises 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.

  • Teste progressivement : Avant d'effectuer une conversion complète, teste le processus avec un modèle ou un ensemble de donnĂ©es plus petit afin d'identifier les problèmes potentiels dès le dĂ©but.

Communauté et soutien

En t'engageant auprès d'une communauté de personnes partageant les mêmes idées, tu peux améliorer considérablement ton expérience et ton succès en travaillant avec YOLOv8. Tu trouveras ci-dessous quelques canaux et ressources qui pourraient t'être utiles.

Forums et canaux pour obtenir de l'aide

GitHub Issues: The YOLOv8 repository on GitHub has an Issues tab where you can ask questions, report bugs, and suggest new features. The community and maintainers are active here, and it's a great place to get help with specific problems.

Ultralytics Serveur Discord : Ultralytics dispose d'un serveur Discord où tu peux interagir avec les autres utilisateurs et les 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 devraient fournir une base solide pour dépanner et améliorer tes projets YOLOv8 , ainsi que pour entrer en contact avec d'autres membres de la communauté YOLOv8 .

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 à répondre aux défis les plus courants rencontrés par les utilisateurs du modèle YOLOv8 au sein de l'écosystème Ultralytics . En comprenant et en réglant ces problèmes courants, tu pourras assurer une progression plus fluide du projet et obtenir de meilleurs résultats dans tes tâches de vision par ordinateur.

N'oublie pas que la communauté Ultralytics est une ressource précieuse. S'engager avec des collègues développeurs et des experts peut apporter des idées et des solutions supplémentaires qui pourraient ne pas être couvertes par la documentation standard. Continue toujours à apprendre, à expérimenter et à partager tes expériences pour contribuer au savoir collectif de la communauté.

Joyeux dépannage !



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), RizwanMunawar (1)

Commentaires