Ultralytics YOLO Hyperparameter Tuning Guide
Introdução
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.
O que são hiperparâmetros?
Os hiperparâmetros são definições estruturais de alto nível para o algoritmo. São definidos antes da fase de treino e permanecem constantes durante a mesma. Aqui estão alguns hiperparâmetros comumente ajustados em Ultralytics YOLO :
- Taxa de aprendizagem
lr0
: Determines the step size at each iteration while moving towards a minimum in the loss function. - Tamanho do lote
batch
: Número de imagens processadas simultaneamente numa passagem para a frente. - Number of Epochs
epochs
: Uma época é uma passagem completa para a frente e para trás de todos os exemplos de treino. - Especificidades da arquitetura: Como a contagem de canais, o número de camadas, os tipos de funções de ativação, etc.
For a full list of augmentation hyperparameters used in YOLO11 please refer to the configurations page.
Evolução genética e mutação
Ultralytics YOLO utiliza algoritmos genéticos para otimizar os hiperparâmetros. Os algoritmos genéticos são inspirados no mecanismo de seleção natural e na genética.
- Mutação: No contexto de Ultralytics YOLO , a mutação ajuda a pesquisar localmente o espaço dos hiperparâmetros, aplicando pequenas alterações aleatórias aos hiperparâmetros existentes, produzindo novos candidatos para avaliação.
- Cruzamento: Embora o crossover seja uma técnica popular de algoritmo genético, não é atualmente utilizado em Ultralytics YOLO para afinação de hiperparâmetros. O foco está principalmente na mutação para gerar novos conjuntos de hiperparâmetros.
Preparação para o ajuste de hiperparâmetros
Antes de iniciares o processo de afinação, é importante:
- Identifica as métricas: Determina as métricas que utilizarás para avaliar o desempenho do modelo. Pode ser AP50, F1-score ou outros.
- Define o orçamento do Tuning: Define a quantidade de recursos computacionais que estás disposto a atribuir. O ajuste de hiperparâmetros pode ser computacionalmente intensivo.
Etapas envolvidas
Inicializa os hiperparâmetros
Começa com um conjunto razoável de hiperparâmetros iniciais. Este pode ser o conjunto de hiperparâmetros predefinido por Ultralytics YOLO ou algo baseado no teu conhecimento do domínio ou em experiências anteriores.
Mutação de hiperparâmetros
Utiliza o _mutate
para produzir um novo conjunto de hiperparâmetros com base no conjunto existente.
Modelo de comboio
O treino é efectuado utilizando o conjunto mutado de hiperparâmetros. O desempenho do treino é então avaliado.
Avalia o modelo
Utiliza métricas como AP50, F1-score ou métricas personalizadas para avaliar o desempenho do modelo.
Resultados do registo
É crucial registar tanto as métricas de desempenho como os hiperparâmetros correspondentes para referência futura.
Repete
O processo é repetido até que o número definido de iterações seja atingido ou a métrica de desempenho seja satisfatória.
Exemplo de utilização
Vê aqui como utilizar o model.tune()
para utilizar o método 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.
Exemplo
Resultados
Depois de ter concluído com êxito o processo de afinação dos hiperparâmetros, obtém vários ficheiros e directórios que encapsulam os resultados da afinação. A seguir, descreve cada um deles:
Estrutura do ficheiro
Eis como será a estrutura de directórios dos resultados. Treina directórios como train1/
contém iterações de afinação individuais, ou seja, um modelo treinado com um conjunto de hiperparâmetros. Os tune/
contém os resultados da afinação de todos os treinos de modelos individuais:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── best_fitness.png
├── tune_results.csv
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt
Descrições de ficheiros
best_hyperparameters.yaml
Este arquivo YAML contém os hiperparâmetros de melhor desempenho encontrados durante o processo de ajuste. Podes utilizar este ficheiro para inicializar treinos futuros com estas definições optimizadas.
- Formato: YAML
- Usa: Resultados do hiperparâmetro
-
Exemplo:
# 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
melhor_fitness.png
Este é um gráfico que mostra a aptidão (normalmente uma métrica de desempenho como AP50) contra o número de iterações. Ajuda-te a visualizar o desempenho do algoritmo genético ao longo do tempo.
- Formato: PNG
- Usa: Visualização de desempenho
sintoniza_resultados.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.
- Formato: CSV
- Usa-o: Acompanhamento de resultados por iteração.
- Exemplo:
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
Este ficheiro contém gráficos de dispersão gerados a partir de tune_results.csv
ajudando-te a visualizar as relações entre diferentes hiperparâmetros e métricas de desempenho. Observa que os hiperparâmetros inicializados em 0 não serão ajustados, como degrees
e shear
abaixo.
- Formato: PNG
- Usa: Análise exploratória de dados
pesos/
This directory contains the saved PyTorch models for the last and the best iterations during the hyperparameter tuning process.
last.pt
: Os last.pt são os pesos da última época de treino.best.pt
: Os pesos best.pt para a iteração que obteve a melhor pontuação de aptidão.
Utilizando estes resultados, podes tomar decisões mais informadas para as tuas futuras formações e análises de modelos. Não hesites em consultar estes artefactos para compreenderes o desempenho do teu modelo e como o podes melhorar ainda mais.
Conclusão
O processo de ajuste de hiperparâmetros em Ultralytics YOLO é simplificado, mas poderoso, graças à sua abordagem baseada em algoritmo genético focada na mutação. Seguir os passos descritos neste guia ajudá-lo-á a afinar sistematicamente o seu modelo para obter um melhor desempenho.
Ler mais
- Otimização de hiperparâmetros na Wikipédia
- YOLOv5 Guia de evolução de hiperparâmetros
- Efficient Hyperparameter Tuning with Ray Tune and YOLO11
Para obteres informações mais detalhadas, podes explorar a Tuner
código-fonte da classe e a documentação que a acompanha. Se tiveres dúvidas, pedidos de funcionalidades ou precisares de mais assistência, não hesites em contactar-nos através de GitHub ou Discórdia.
FAQ
How do I optimize the learning rate for Ultralytics YOLO during hyperparameter tuning?
Para otimizar a taxa de aprendizagem para Ultralytics YOLO , começa por definir uma taxa de aprendizagem inicial utilizando o lr0
parâmetro. Os valores comuns variam entre 0.001
para 0.01
. Durante o processo de ajuste do hiperparâmetro, este valor será alterado para encontrar a definição óptima. Podes utilizar o model.tune()
para automatizar este processo. Por exemplo:
Exemplo
Para obter mais detalhes, consulta a página de configuraçãoUltralytics 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:
- Pesquisa eficiente: Os algoritmos genéticos, como a mutação, podem explorar rapidamente um grande conjunto de hiperparâmetros.
- Evitar mínimos locais: Ao introduzir a aleatoriedade, ajuda a evitar mínimos locais, garantindo uma melhor otimização global.
- Métricas de desempenho: Adapta-se com base em métricas de desempenho como AP50 e F1-score.
Para ver como os algoritmos genéticos podem otimizar os hiperparâmetros, consulta o guia de evolução de hiperparâmetros.
Quanto tempo demora o processo de afinação dos hiperparâmetros para 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.
Para gerir eficazmente o tempo de afinação, define previamente um orçamento de afinação claro(ligação da secção interna). Isto ajuda a equilibrar a atribuição de recursos e os objectivos de otimização.
Que métricas devo utilizar para avaliar o desempenho do modelo durante a afinação de hiperparâmetros em YOLO?
Ao avaliar o desempenho do modelo durante o ajuste de hiperparâmetros em YOLO, podes utilizar várias métricas importantes:
- AP50: A precisão média no limiar IoU de 0,50.
- F1-Score: A média harmónica da precisão e da recuperação.
- Precision and Recall: Individual metrics indicating the model's accuracy in identifying true positives versus false positives and false negatives.
Estas métricas ajudam-te a compreender diferentes aspectos do desempenho do teu modelo. Consulta o guia de métricas de desempenhoUltralytics YOLO para obteres uma visão geral abrangente.
Posso utilizar o Ultralytics HUB para afinar os hiperparâmetros dos modelos YOLO ?
Sim, podes utilizar o Ultralytics HUB para afinar os hiperparâmetros dos modelos YOLO . O HUB oferece uma plataforma sem código para carregar facilmente conjuntos de dados, treinar modelos e executar o ajuste de hiperparâmetros de forma eficiente. Fornece rastreamento e visualização em tempo real do progresso e dos resultados do ajuste.
Explora mais sobre como usar o Ultralytics HUB para ajuste de hiperparâmetros na documentação de treinamento doUltralytics HUB Cloud.