Ultralytics YOLO Hyperparameter Tuning Guide
Introduction
Hyperparameter tuning is not just a one-time set-up but an iterative process aimed at optimizing the machine learning model's performance metrics, such as accuracy, precision, and recall. In the context of Ultralytics YOLO, these hyperparameters could range from learning rate to architectural details, such as the number of layers or types of activation functions used.
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
: Determines the step size at each iteration while moving towards a minimum in the loss function. - Taille du lot
batch
: Nombre d'images traitées simultanément lors d'une passe avant. - Number of Epochs
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.
For a full list of augmentation hyperparameters used in YOLO11 please refer to the configurations page.
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 :
- 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.
- 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
class for hyperparameter tuning of YOLO11n on COCO8 for 30 epochs with an AdamW optimizer and skipping plotting, checkpointing and validation other than on final epoch for faster Tuning.
Exemple
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
tune_results.csv
A CSV file containing detailed results of each iteration during the tuning. Each row in the file represents one iteration, and it includes metrics like fitness score, precision, recall, as well as the hyperparameters used.
- 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.csv
La 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
poids/
This directory contains the saved PyTorch models for the last and the best iterations during the hyperparameter tuning process.
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
- Optimisation des hyperparamètres dans Wikipédia
- YOLOv5 Guide d'évolution des hyperparamètres
- Efficient Hyperparameter Tuning with Ray Tune and YOLO11
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
How do I optimize the learning rate for Ultralytics YOLO during hyperparameter tuning?
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
Pour plus de détails, consulte la page de configuration deUltralytics YOLO .
What are the benefits of using genetic algorithms for hyperparameter tuning in YOLO11?
Genetic algorithms in Ultralytics YOLO11 provide a robust method for exploring the hyperparameter space, leading to highly optimized model performance. Key benefits include:
- 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 ?
The time required for hyperparameter tuning with Ultralytics YOLO largely depends on several factors such as the size of the dataset, the complexity of the model architecture, the number of iterations, and the computational resources available. For instance, tuning YOLO11n on a dataset like COCO8 for 30 epochs might take several hours to days, depending on the hardware.
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.
- Precision and Recall: Individual metrics indicating the model's accuracy in identifying true positives versus false positives and false negatives.
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.