Skip to content

Conseils pour obtenir les meilleurs résultats d'entraînement

📚 Ce guide explique comment produire les meilleurs résultats de mAP et d'entraînement avec YOLOv5 🚀.

La plupart du temps, il est possible d'obtenir de bons résultats sans modifier les modèles ou les paramètres d'entraînement, à condition que ton ensemble de données soit suffisamment grand et bien étiqueté. Si, au début, tu n'obtiens pas de bons résultats, il y a des mesures que tu peux prendre pour t'améliorer, mais nous recommandons toujours aux utilisateurs de s'entraîner d'abord avec tous les paramètres par défaut avant d'envisager tout changement. Cela permet d'établir une base de performance et de repérer les points à améliorer.

Si tu as des questions sur les résultats de ton entraînement nous te recommandons de fournir le maximum d'informations possible si tu attends une réponse utile, y compris les graphiques de résultats (pertes de train, pertes de val, P, R, mAP), la courbe PR, la matrice de confusion, les mosaïques d'entraînement, les résultats des tests et les images de statistiques de l'ensemble de données telles que labels.png. Tous ces éléments se trouvent dans ton project/name répertoire, généralement yolov5/runs/train/exp.

Nous avons rassemblé ci-dessous un guide complet pour les utilisateurs qui cherchent à obtenir les meilleurs résultats sur leurs formations YOLOv5 .

Ensemble de données

  • Images par classe. ≥ 1500 images par classe recommandĂ©es.
  • Instances par classe. ≥ 10000 instances (objets Ă©tiquetĂ©s) par classe recommandĂ©es.
  • VariĂ©tĂ© d'images. Doit ĂŞtre reprĂ©sentative de l'environnement dĂ©ployĂ©. Pour les cas d'utilisation dans le monde rĂ©el, nous recommandons des images prises Ă  diffĂ©rents moments de la journĂ©e, Ă  diffĂ©rentes saisons, par diffĂ©rents temps, sous diffĂ©rents Ă©clairages, sous diffĂ©rents angles, Ă  partir de diffĂ©rentes sources (scrapĂ©es en ligne, collectĂ©es localement, diffĂ©rentes camĂ©ras), etc.
  • CohĂ©rence des Ă©tiquettes. Toutes les instances de toutes les classes dans toutes les images doivent ĂŞtre Ă©tiquetĂ©es. Un Ă©tiquetage partiel ne fonctionnera pas.
  • PrĂ©cision des Ă©tiquettes. Les Ă©tiquettes doivent entourer Ă©troitement chaque objet. Il ne doit pas y avoir d'espace entre un objet et sa boĂ®te de dĂ©limitation. Aucun objet ne doit manquer d'Ă©tiquette.
  • VĂ©rification de l'Ă©tiquette. Voir train_batch*.jpg au dĂ©part du train pour vĂ©rifier que tes Ă©tiquettes semblent correctes, c'est-Ă -dire voir exemple mosaĂŻque.
  • Images d'arrière-plan. Les images d'arrière-plan sont des images sans objet qui sont ajoutĂ©es Ă  un ensemble de donnĂ©es pour rĂ©duire les faux positifs (FP). Nous recommandons d'ajouter entre 0 et 10 % d'images d'arrière-plan pour rĂ©duire le nombre de faux positifs (COCO contient 1000 images d'arrière-plan Ă  titre de rĂ©fĂ©rence, soit 1 % du total). Aucune Ă©tiquette n'est requise pour les images d'arrière-plan.

Analyse COCO

Choix du modèle

Les modèles plus grands comme YOLOv5x et YOLOv5x6 produiront de meilleurs résultats dans presque tous les cas, mais ils ont plus de paramètres, nécessitent plus de mémoire CUDA pour s'entraîner et sont plus lents à exécuter. Pour les déploiements mobiles, nous recommandons YOLOv5s/m, pour les déploiements dans le nuage, nous recommandons YOLOv5l/x. Consulte notre tableau README pour une comparaison complète de tous les modèles.

YOLOv5 Modèles

  • Commence par les poids prĂ©-entraĂ®nĂ©s. RecommandĂ© pour les ensembles de donnĂ©es de taille petite Ă  moyenne (c'est-Ă -dire COV, VisDrone, GlobalWheat). Passe le nom du modèle Ă  la fonction --weights argument. Les modèles se tĂ©lĂ©chargent automatiquement Ă  partir du site Dernière version de YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Pars de zĂ©ro. RecommandĂ© pour les grands ensembles de donnĂ©es (c.-Ă -d. COCO, Objets365, OIv6). Passe le modèle d'architecture YAML qui t'intĂ©resse, ainsi qu'un fichier vide --weights '' argument :
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Paramètres de formation

Avant de modifier quoi que ce soit, entraîne-toi d'abord avec les paramètres par défaut pour établir une base de performance. Une liste complète des paramètres de train.py se trouve dans l'analyseur d'argents de train.py.

  • Époques. Commence avec 300 Ă©poques. Si l'adaptation est trop rapide, tu peux rĂ©duire le nombre d'Ă©poques. Si l'adaptation excessive ne se produit pas après 300 Ă©poques, entraĂ®ne-toi plus longtemps, c'est-Ă -dire 600, 1200, etc. Ă©poques.
  • Taille de l'image. COCO s'entraĂ®ne Ă  une rĂ©solution native de --img 640Cependant, en raison du grand nombre de petits objets dans l'ensemble de donnĂ©es, il peut ĂŞtre avantageux de s'entraĂ®ner Ă  des rĂ©solutions plus Ă©levĂ©es, telles que --img 1280. S'il y a beaucoup de petits objets, les ensembles de donnĂ©es personnalisĂ©s bĂ©nĂ©ficieront d'une formation Ă  la rĂ©solution native ou supĂ©rieure. Les meilleurs rĂ©sultats d'infĂ©rence sont obtenus Ă  la mĂŞme rĂ©solution. --img que l'entraĂ®nement, c'est-Ă -dire que si tu t'entraĂ®nes Ă  --img 1280 tu dois aussi tester et dĂ©tecter Ă  --img 1280.
  • Taille du lot. Utilise le plus grand --batch-size que ton matĂ©riel le permet. Les lots de petite taille produisent de mauvaises statistiques sur la norme des lots et doivent ĂŞtre Ă©vitĂ©s.
  • Hyperparamètres. Les hyperparamètres par dĂ©faut se trouvent dans hyp.scratch-low.yaml. Nous te recommandons de t'entraĂ®ner d'abord avec les hyperparamètres par dĂ©faut avant d'envisager de les modifier. En gĂ©nĂ©ral, l'augmentation des hyperparamètres d'augmentation rĂ©duira et retardera le surajustement, ce qui permettra des entraĂ®nements plus longs et une mAP finale plus Ă©levĂ©e. La rĂ©duction des hyperparamètres de gain des composantes de perte comme hyp['obj'] aidera Ă  rĂ©duire le surajustement dans ces composantes de perte spĂ©cifiques. Pour une mĂ©thode automatisĂ©e d'optimisation de ces hyperparamètres, voir notre Tutoriel sur l'Ă©volution des hyperparamètres.

Pour en savoir plus

Si tu veux en savoir plus, tu peux commencer par la "Recette pour la formation des réseaux neuronaux" de Karpathy, qui propose des idées géniales pour la formation qui s'appliquent largement à tous les domaines de la ML : https://karpathy.github.io/2019/04/25/recipe/.

Bonne chance 🍀 et fais-nous savoir si tu as d'autres questions !



Créé le 2023-11-12, Mis à jour le 2024-07-10
Auteurs : glenn-jocher (5), Burhan-Q (1)

Commentaires