Salta para o conteúdo

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.

Afinação de hiperparâmetros Visual

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:

  1. Identifica as métricas: Determina as métricas que utilizarás para avaliar o desempenho do modelo. Pode ser AP50, F1-score ou outros.
  2. 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

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.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)

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

Afinação de hiperparâmetros Adequação vs Iteração

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

Gráficos de dispersão de ajuste de hiperparâmetros

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

  1. Otimização de hiperparâmetros na Wikipédia
  2. YOLOv5 Guia de evolução de hiperparâmetros
  3. 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

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.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)

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.


📅 Created 11 months ago ✏️ Updated 6 days ago

Comentários