Skip to content

Ultralytics YOLO Guide de réglage des hyperparamètres

Introduction

Le réglage des hyperparamètres n'est pas une simple mise en place ponctuelle, mais un processus itératif visant à optimiser les mesures de performance du modèle d'apprentissage automatique, telles que l'exactitude, la précision et le rappel. Dans le contexte de Ultralytics YOLO , ces hyperparamètres peuvent aller du taux d'apprentissage aux détails architecturaux, tels que le nombre de couches ou les types de fonctions d'activation utilisés.

Qu'est-ce qu'un hyperparamètre ?

Les hyperparamètres sont des paramètres structurels de haut niveau pour l'algorithme. Ils sont définis avant la phase de formation et restent constants pendant celle-ci. Voici quelques hyperparamètres couramment réglés dans Ultralytics YOLO :

  • Taux d'apprentissage lr0: DĂ©termine la taille du pas Ă  chaque itĂ©ration tout en se dirigeant vers un minimum de la fonction de perte.
  • Taille du lot batch: Nombre d'images traitĂ©es simultanĂ©ment lors d'une passe avant.
  • Nombre d'Ă©poques epochs: Une Ă©poque correspond Ă  un passage complet vers l'avant et vers l'arrière de tous les exemples d'apprentissage.
  • SpĂ©cificitĂ©s de l'architecture: Comme le nombre de canaux, le nombre de couches, les types de fonctions d'activation, etc.

Visuel de l'optimisation des hyperparamètres

Pour une liste complète des hyperparamètres d'augmentation utilisés dans YOLOv8 , tu peux te référer à la page des configurations.

Evolution génétique et mutation

Ultralytics YOLO utilise des algorithmes génétiques pour optimiser les hyperparamètres. Les algorithmes génétiques s'inspirent du mécanisme de la sélection naturelle et de la génétique.

  • Mutation: Dans le contexte de Ultralytics YOLO , la mutation aide Ă  rechercher localement l'espace des hyperparamètres en appliquant de petits changements alĂ©atoires aux hyperparamètres existants, produisant ainsi de nouveaux candidats pour l'Ă©valuation.
  • Croisement: Bien que le croisement soit une technique d'algorithme gĂ©nĂ©tique populaire, il n'est pas utilisĂ© actuellement dans Ultralytics YOLO pour le rĂ©glage des hyperparamètres. L'accent est principalement mis sur la mutation pour gĂ©nĂ©rer de nouveaux ensembles d'hyperparamètres.

Préparation à l'ajustement des hyperparamètres

Avant de commencer le processus de réglage, il est important de :

  1. Identifie les paramètres: Détermine les paramètres que tu utiliseras pour évaluer les performances du modèle. Il peut s'agir de l'AP50, du score F1 ou d'autres paramètres.
  2. Définis le budget des réglages: Définis la quantité de ressources informatiques que tu es prêt à allouer. Le réglage des hyperparamètres peut être très gourmand en ressources informatiques.

Étapes à suivre

Initialiser les hyperparamètres

Commence par un ensemble raisonnable d'hyperparamètres initiaux. Il peut s'agir des hyperparamètres par défaut définis par Ultralytics YOLO ou d'un ensemble basé sur tes connaissances du domaine ou tes expériences précédentes.

Mutation des hyperparamètres

Utilise le _mutate pour produire un nouvel ensemble d'hyperparamètres basé sur l'ensemble existant.

Modèle de train

L'entraînement est effectué à l'aide de l'ensemble muté d'hyperparamètres. Les performances de l'entraînement sont ensuite évaluées.

Évaluer le modèle

Utilise des mesures comme AP50, F1-score, ou des mesures personnalisées pour évaluer les performances du modèle.

RĂ©sultats du journal

Il est essentiel d'enregistrer à la fois les mesures de performance et les hyperparamètres correspondants pour pouvoir s'y référer ultérieurement.

Répéter

Le processus est répété jusqu'à ce que le nombre d'itérations fixé soit atteint ou que la mesure de performance soit satisfaisante.

Exemple d'utilisation

Voici comment utiliser le model.tune() pour utiliser la méthode Tuner classe pour le réglage des hyperparamètres de YOLOv8n sur COCO8 pendant 30 époques avec un optimiseur AdamW et en sautant le traçage, le point de contrôle et la validation autre que sur l'époque finale pour un réglage plus rapide.

Exemple

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolov8n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

RĂ©sultats

Après avoir terminé avec succès le processus de réglage des hyperparamètres, tu obtiendras plusieurs fichiers et répertoires qui encapsulent les résultats du réglage. Les paragraphes suivants décrivent chacun d'entre eux :

Structure du fichier

Voici à quoi ressemblera la structure des répertoires des résultats. Les répertoires de formation comme train1/ contiennent des itérations de réglage individuelles, c'est-à-dire un modèle formé avec un ensemble d'hyperparamètres. Les tune/ contient les résultats de la mise au point de tous les entraînements de modèles individuels :

runs/
└── detect/
    ├── train1/
    ├── train2/
    ├── ...
    └── tune/
        ├── best_hyperparameters.yaml
        ├── best_fitness.png
        ├── tune_results.csv
        ├── tune_scatter_plots.png
        └── weights/
            ├── last.pt
            └── best.pt

Description des fichiers

best_hyperparameters.yaml

Ce fichier YAML contient les hyperparamètres les plus performants trouvés au cours du processus de réglage. Tu peux utiliser ce fichier pour initialiser les formations futures avec ces paramètres optimisés.

  • Format: YAML
  • Utilisation: RĂ©sultats des hyperparamètres
  • Exemple:

    # 558/900 iterations complete âś… (45536.81s)
    # Results saved to /usr/src/ultralytics/runs/detect/tune
    # Best fitness=0.64297 observed at iteration 498
    # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297}
    # Best fitness model is /usr/src/ultralytics/runs/detect/train498
    # Best fitness hyperparameters are printed below.
    
    lr0: 0.00269
    lrf: 0.00288
    momentum: 0.73375
    weight_decay: 0.00015
    warmup_epochs: 1.22935
    warmup_momentum: 0.1525
    box: 18.27875
    cls: 1.32899
    dfl: 0.56016
    hsv_h: 0.01148
    hsv_s: 0.53554
    hsv_v: 0.13636
    degrees: 0.0
    translate: 0.12431
    scale: 0.07643
    shear: 0.0
    perspective: 0.0
    flipud: 0.0
    fliplr: 0.08631
    mosaic: 0.42551
    mixup: 0.0
    copy_paste: 0.0
    

meilleur_fitness.png

Il s'agit d'un graphique affichant l'aptitude (généralement une mesure de performance comme AP50) en fonction du nombre d'itérations. Il t'aide à visualiser les performances de l'algorithme génétique au fil du temps.

  • Format: PNG
  • Utilisation: Visualisation des performances

Optimisation de l'hyperparamètre Aptitude vs itération

tune_results.csv

Un fichier CSV contenant les résultats détaillés de chaque itération pendant la mise au point. Chaque ligne du fichier représente une itération et comprend des mesures telles que le score de fitness, la précision, le rappel, ainsi que les hyperparamètres utilisés.

  • Format: CSV
  • Utilisation: Suivi des rĂ©sultats par itĂ©ration.
  • Exemple:
      fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste
      0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0
      0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0
      0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
    

tune_scatter_plots.png

Ce fichier contient des diagrammes de dispersion générés à partir de tune_results.csvLa fonction d'optimisation de la performance permet de visualiser les relations entre les différents hyperparamètres et les mesures de la performance. Note que les hyperparamètres initialisés à 0 ne seront pas ajustés, tels que degrees et shear ci-dessous.

  • Format: PNG
  • Utilisation: Analyse exploratoire des donnĂ©es

Diagrammes de dispersion du réglage de l'hyperparamètre

poids/

Ce répertoire contient les modèles PyTorch sauvegardés pour la dernière et la meilleure itération pendant le processus de réglage des hyperparamètres.

  • last.pt: Les derniers.pt sont les poids de la dernière Ă©poque de formation.
  • best.pt: Les meilleurs poids.pt pour l'itĂ©ration qui a obtenu le meilleur score de fitness.

Grâce à ces résultats, tu pourras prendre des décisions plus éclairées pour tes futures formations et analyses de modèles. N'hésite pas à consulter ces artefacts pour comprendre les performances de ton modèle et comment tu pourrais encore l'améliorer.

Conclusion

Le processus de réglage des hyperparamètres dans Ultralytics YOLO est simplifié mais puissant, grâce à son approche basée sur les algorithmes génétiques et axée sur la mutation. En suivant les étapes décrites dans ce guide, tu pourras régler ton modèle de façon systématique afin d'obtenir de meilleures performances.

Pour en savoir plus

  1. Optimisation des hyperparamètres dans Wikipédia
  2. YOLOv5 Guide d'évolution des hyperparamètres
  3. Optimisation efficace des hyperparamètres avec Ray Tune et YOLOv8

Pour en savoir plus, tu peux explorer le site Tuner et la documentation qui l'accompagne. Si tu as des questions, des demandes de fonctionnalités ou si tu as besoin d'aide, n'hésite pas à nous contacter sur GitHub ou Discorde.

FAQ

Comment optimiser le taux d'apprentissage pour Ultralytics YOLO lors de l'ajustement des hyperparamètres ?

Pour optimiser le taux d'apprentissage pour Ultralytics YOLO , commence par définir un taux d'apprentissage initial à l'aide de la fonction lr0 paramètre. Les valeurs courantes vont de 0.001 à 0.01. Au cours du processus de réglage de l'hyperparamètre, cette valeur sera modifiée pour trouver le réglage optimal. Tu peux utiliser la fonction model.tune() pour automatiser ce processus. Par exemple :

Exemple

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolov8n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

Pour plus de détails, consulte la page de configuration deUltralytics YOLO .

Quels sont les avantages de l'utilisation d'algorithmes génétiques pour l'ajustement des hyperparamètres dans YOLOv8?

Les algorithmes génétiques dans Ultralytics YOLOv8 fournissent une méthode robuste pour explorer l'espace des hyperparamètres, ce qui permet d'optimiser les performances du modèle. Les principaux avantages sont les suivants :

  • Recherche efficace: Les algorithmes gĂ©nĂ©tiques comme la mutation peuvent explorer rapidement un grand ensemble d'hyperparamètres.
  • Éviter les minima locaux: en introduisant le hasard, ils permettent d'Ă©viter les minima locaux, ce qui garantit une meilleure optimisation globale.
  • Mesures de performance: Ils s'adaptent en fonction des mesures de performance telles que l'AP50 et le score F1.

Pour voir comment les algorithmes génétiques peuvent optimiser les hyperparamètres, consulte le guide sur l'évolution des hyperparamètres.

Combien de temps dure le processus de réglage des hyperparamètres pour Ultralytics YOLO ?

Le temps nécessaire à l'ajustement des hyperparamètres avec Ultralytics YOLO dépend largement de plusieurs facteurs tels que la taille de l'ensemble de données, la complexité de l'architecture du modèle, le nombre d'itérations et les ressources informatiques disponibles. Par exemple, l'ajustement de YOLOv8n sur un ensemble de données comme COCO8 pour 30 époques peut prendre plusieurs heures, voire plusieurs jours, en fonction du matériel.

Pour gérer efficacement le temps de réglage, définis au préalable un budget de réglage clair(lien interne de la section). Cela permet d'équilibrer l'allocation des ressources et les objectifs d'optimisation.

Quelles mesures dois-je utiliser pour évaluer les performances du modèle lors de l'ajustement des hyperparamètres dans YOLO?

Lors de l'évaluation des performances du modèle pendant l'ajustement des hyperparamètres dans YOLO, tu peux utiliser plusieurs mesures clés :

  • AP50: La prĂ©cision moyenne au seuil de 0,50 de l'IoU.
  • Score F1: La moyenne harmonique de la prĂ©cision et du rappel.
  • PrĂ©cision et rappel: Mesures individuelles indiquant la prĂ©cision du modèle dans l'identification des vrais positifs par rapport aux faux positifs et aux faux nĂ©gatifs.

Ces métriques t'aident à comprendre différents aspects des performances de ton modèle. Reporte-toi au guide des mesures de performanceUltralytics YOLO pour en avoir une vue d'ensemble.

Puis-je utiliser Ultralytics HUB pour régler les hyperparamètres des modèles YOLO ?

Oui, tu peux utiliser Ultralytics HUB pour l'ajustement des hyperparamètres des modèles YOLO . Le HUB offre une plateforme sans code qui permet de télécharger facilement des ensembles de données, d'entraîner des modèles et d'effectuer efficacement le réglage des hyperparamètres. Il permet de suivre et de visualiser en temps réel la progression et les résultats de l'ajustement.

Pour en savoir plus sur l'utilisation de Ultralytics HUB pour le réglage des hyperparamètres, consulte la documentation de formation deUltralytics HUB Cloud.



Créé le 2023-11-12, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (11)

Commentaires