Saltar para o conteúdo

Ultralytics YOLO Guiade afinação de hiperparâmetros

Introdução

A afinação dos hiperparâmetros não é apenas uma configuração pontual, mas um processo iterativo que visa otimizar as métricas de desempenho do modelo de aprendizagem automática, como a exatidão, a precisão e a recuperação. No contexto de Ultralytics YOLO , estes hiperparâmetros podem variar desde a taxa de aprendizagem até aos detalhes da arquitetura, como o número de camadas ou os tipos de funções de ativação utilizadas.



Ver: How to Tune Hyperparameters for Better Model Performance 🚀

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. Seguem-se alguns hiperparâmetros normalmente ajustados em Ultralytics YOLO :

  • Taxa de aprendizagem lr0: Determina o tamanho do passo em cada iteração enquanto se move em direção a um mínimo no função de perda.
  • Tamanho do lote batch: Número de imagens processadas simultaneamente numa passagem para a frente.
  • Número de épocas epochs: Uma época é uma passagem completa para a frente e para trás de todos os exemplos de treino.
  • Especificidades da arquitetura: Por exemplo, contagem de canais, número de camadas, tipos de funções de ativação, etc.

Afinação de hiperparâmetros Visual

Para obter uma lista completa dos hiperparâmetros de aumento utilizados em YOLO11 , consulte a página de configurações.

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 de hiperparâmetros, aplicando pequenas alterações aleatórias aos hiperparâmetros existentes, produzindo novos candidatos para avaliação.
  • Crossover: 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 a afinação de hiperparâmetros

Antes de iniciar o processo de afinação, é importante:

  1. Identificar as métricas: Determine as métricas que irá utilizar para avaliar o desempenho do modelo. Pode ser AP50, F1-score ou outros.
  2. Definir o orçamento do Tuning: Defina a quantidade de recursos computacionais que você está disposto a alocar. O ajuste de hiperparâmetros pode ser computacionalmente intensivo.

Etapas envolvidas

Inicializar hiperparâmetros

Comece 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 seu conhecimento do domínio ou em experiências anteriores.

Mutação de hiperparâmetros

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

Avaliar modelo

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

Repetir

O processo repete-se até que o número definido de iterações seja atingido ou a métrica de desempenho seja satisfatória.

Espaço de pesquisa predefinido Descrição

The following table lists the default search space parameters for hyperparameter tuning in YOLO11. Each parameter has a specific value range defined by a tuple (min, max).

Parâmetro Tipo Intervalo de valores Descrição
lr0 float (1e-5, 1e-1) Initial learning rate at the start of training. Lower values provide more stable training but slower convergence
lrf float (0.01, 1.0) Final learning rate factor as a fraction of lr0. Controls how much the learning rate decreases during training
momentum float (0.6, 0.98) SGD momentum factor. Higher values help maintain consistent gradient direction and can speed up convergence
weight_decay float (0.0, 0.001) L2 regularization factor to prevent overfitting. Larger values enforce stronger regularization
warmup_epochs float (0.0, 5.0) Number of epochs for linear learning rate warmup. Helps prevent early training instability
warmup_momentum float (0.0, 0.95) Initial momentum during warmup phase. Gradually increases to the final momentum value
box float (0.02, 0.2) Bounding box loss weight in the total loss function. Balances box regression vs classification
cls float (0.2, 4.0) Classification loss weight in the total loss function. Higher values emphasize correct class prediction
hsv_h float (0.0, 0.1) Random hue augmentation range in HSV color space. Helps model generalize across color variations
hsv_s float (0.0, 0.9) Random saturation augmentation range in HSV space. Simulates different lighting conditions
hsv_v float (0.0, 0.9) Random value (brightness) augmentation range. Helps model handle different exposure levels
degrees float (0.0, 45.0) Maximum rotation augmentation in degrees. Helps model become invariant to object orientation
translate float (0.0, 0.9) Maximum translation augmentation as fraction of image size. Improves robustness to object position
scale float (0.0, 0.9) Random scaling augmentation range. Helps model detect objects at different sizes
shear float (0.0, 10.0) Maximum shear augmentation in degrees. Adds perspective-like distortions to training images
perspective float (0.0, 0.001) Random perspective augmentation range. Simulates different viewing angles
flipud float (0.0, 1.0) Probability of vertical image flip during training. Useful for overhead/aerial imagery
fliplr float (0.0, 1.0) Probability of horizontal image flip. Helps model become invariant to object direction
mosaic float (0.0, 1.0) Probability of using mosaic augmentation, which combines 4 images. Especially useful for small object detection
mixup float (0.0, 1.0) Probability of using mixup augmentation, which blends two images. Can improve model robustness
copy_paste float (0.0, 1.0) Probability of using copy-paste augmentation. Helps improve instance segmentation performance

Exemplo de espaço de pesquisa personalizado

Here's how to define a search space and use the model.tune() para utilizar o método Tuner classe para a afinação de hiperparâmetros do YOLO11n no COCO8 para 30 épocas com um optimizador AdamW e saltando a plotagem, o ponto de controlo e a validação, exceto na última época, para uma afinação mais rápida.

Exemplo

from ultralytics import YOLO

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

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

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

Resultados

Depois de ter concluído com êxito o processo de afinação dos hiperparâmetros, obterá vários ficheiros e diretórios que encapsulam os resultados da afinação. A seguir, descrevemos cada um deles:

Estrutura do ficheiro

Eis o aspeto da estrutura de diretórios dos resultados. Diretórios de formação como train1/ contêm iterações de afinação individuais, ou seja, um modelo treinado com um conjunto de hiperparâmetros. O 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

Esse arquivo YAML contém os hiperparâmetros de melhor desempenho encontrados durante o processo de ajuste. É possível usar esse arquivo para inicializar treinamentos futuros com essas configurações otimizadas.

  • Formato: YAML
  • Utilização: 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
    

best_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. Ele ajuda a visualizar o desempenho do algoritmo genético ao longo do tempo.

  • Formato: PNG
  • Utilização: Visualização de desempenho

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

tune_results.csv

Um ficheiro CSV que contém resultados detalhados de cada iteração durante o ajuste. Cada linha do ficheiro representa uma iteração e inclui métricas como a pontuação de aptidão, precisão, recuperação, bem como os hiperparâmetros utilizados.

  • Formato: CSV
  • Utilização: Controlo 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-o a visualizar as relações entre diferentes hiperparâmetros e métricas de desempenho. Observe que os hiperparâmetros inicializados em 0 não serão ajustados, como degrees e shear abaixo.

  • Formato: PNG
  • Utilização: Análise exploratória de dados

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

pesos/

Este diretório contém os modelos guardados PyTorch modelos guardados para as últimas e melhores iterações durante o processo de afinação de hiperparâmetros.

  • 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, pode tomar decisões mais informadas para as suas futuras formações e análises de modelos. Não hesite em consultar estes artefactos para compreender o desempenho do seu modelo e como pode melhorá-lo ainda mais.

Conclusão

O processo de afinação de hiperparâmetros em Ultralytics YOLO é simplificado mas poderoso, graças à sua abordagem baseada em algoritmos genéticos centrada 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. Afinação eficiente de hiperparâmetros com Ray Tune e YOLO11

Para obter informações mais aprofundadas, pode explorar a Tuner código-fonte da classe e a documentação que a acompanha. Se tiver quaisquer perguntas, pedidos de funcionalidades ou precisar de mais assistência, não hesite em contactar-nos em GitHub ou Discórdia.

FAQ

Como posso otimizar a taxa de aprendizagem para Ultralytics YOLO durante a afinação de hiperparâmetros?

Para otimizar a taxa de aprendizagem para Ultralytics YOLO , comece 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 afinação do hiperparâmetro, este valor será alterado para encontrar a definição óptima. É possível 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 mais pormenores, consulte a página de configuraçãoUltralytics YOLO .

Quais são as vantagens da utilização de algoritmos genéticos para a afinação de hiperparâmetros em YOLO11?

Os algoritmos genéticos em Ultralytics YOLO11 fornecem um método robusto para explorar o espaço de hiperparâmetros, conduzindo a um desempenho de modelo altamente optimizado. Os principais benefícios incluem:

  • 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, ajudam a evitar mínimos locais, assegurando uma melhor otimização global.
  • Métricas de desempenho: Adaptam-se com base em métricas de desempenho, tais como AP50 e F1-score.

Para ver como os algoritmos genéticos podem otimizar os hiperparâmetros, consulte o guia de evolução de hiperparâmetros.

Quanto tempo demora o processo de afinação dos hiperparâmetros para Ultralytics YOLO ?

O tempo necessário para a afinação de hiperparâmetros com Ultralytics YOLO depende em grande medida de vários factores, como o tamanho do conjunto de dados, a complexidade da arquitetura do modelo, o número de iterações e os recursos computacionais disponíveis. Por exemplo, a afinação do YOLO11n num conjunto de dados como o COCO8 para 30 épocas pode demorar várias horas a dias, dependendo do hardware.

Para gerir eficazmente o tempo de afinação, defina 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 a afinação de hiperparâmetros em YOLO, pode 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.
  • Precisão e Recuperação: Métricas individuais que indicam a exatidão do modelo na identificação de verdadeiros positivos versus falsos positivos e falsos negativos.

Estas métricas ajudam-no a compreender diferentes aspectos do desempenho do seu modelo. Consulte o guia de métricas de desempenhoUltralytics YOLO para obter uma visão geral abrangente.

Posso utilizar o Ultralytics HUB para afinar os hiperparâmetros dos modelos YOLO ?

Sim, pode utilizar o Ultralytics HUB para afinação de 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. Ele fornece rastreamento e visualização em tempo real do progresso e dos resultados do ajuste.

Saiba mais sobre como usar o Ultralytics HUB para ajuste de hiperparâmetros na documentação de treinamento doUltralytics HUB Cloud.

📅C riado há 1 ano ✏️ Atualizado há 26 dias

Comentários