Ir al contenido

Ultralytics YOLO Guía deajuste de hiperparámetros

Introducción

El ajuste de hiperparámetros no es una configuración puntual, sino un proceso iterativo destinado a optimizar las métricas de rendimiento del modelo de aprendizaje automático, como la exactitud, la precisión y la recuperación. En el contexto de Ultralytics YOLO , estos hiperparámetros pueden abarcar desde la velocidad de aprendizaje hasta detalles arquitectónicos, como el número de capas o los tipos de funciones de activación utilizados.



Observa: How to Tune Hyperparameters for Better Model Performance 🚀

¿Qué son los hiperparámetros?

Los hiperparámetros son ajustes estructurales de alto nivel para el algoritmo. Se establecen antes de la fase de entrenamiento y permanecen constantes durante la misma. Estos son algunos de los hiperparámetros que se suelen ajustar en Ultralytics YOLO :

  • Tasa de aprendizaje lr0: Determina el tamaño del paso en cada iteración mientras se mueve hacia un mínimo en el función de pérdida.
  • Tamaño del lote batch: Número de imágenes procesadas simultáneamente en una pasada hacia delante.
  • Número de épocas epochs: Una época es una pasada completa hacia delante y hacia atrás de todos los ejemplos de entrenamiento.
  • Arquitectura específica: Como recuento de canales, número de capas, tipos de funciones de activación, etc.

Ajuste visual de hiperparámetros

Para obtener una lista completa de los hiperparámetros de aumento utilizados en YOLO11 , consulte la página de configuraciones.

Evolución y mutación genéticas

Ultralytics YOLO utiliza algoritmos genéticos para optimizar los hiperparámetros. Los algoritmos genéticos se inspiran en el mecanismo de la selección natural y la genética.

  • Mutación: En el contexto de Ultralytics YOLO , la mutación ayuda a buscar localmente el espacio de hiperparámetros aplicando pequeños cambios aleatorios a los hiperparámetros existentes, produciendo nuevos candidatos para la evaluación.
  • Cruzamiento: Aunque el cruce es una popular técnica de algoritmo genético, actualmente no se utiliza en Ultralytics YOLO para el ajuste de hiperparámetros. La atención se centra principalmente en la mutación para generar nuevos conjuntos de hiperparámetros.

Preparación para el ajuste de hiperparámetros

Antes de empezar el proceso de ajuste, es importante:

  1. Identifique las métricas: Determine los parámetros que utilizará para evaluar el rendimiento del modelo. Puede ser el AP50, la puntuación F1 u otros.
  2. Establezca el presupuesto de ajuste: Defina cuántos recursos computacionales está dispuesto a asignar. El ajuste de hiperparámetros puede requerir muchos recursos informáticos.

Pasos a seguir

Inicializar hiperparámetros

Comience con un conjunto razonable de hiperparámetros iniciales. Podrían ser los hiperparámetros predeterminados establecidos por Ultralytics YOLO o algo basado en su conocimiento del dominio o en experimentos anteriores.

Mutar hiperparámetros

Utiliza el _mutate para producir un nuevo conjunto de hiperparámetros basado en el conjunto existente.

Modelo de tren

El entrenamiento se realiza utilizando el conjunto mutado de hiperparámetros. A continuación se evalúa el rendimiento del entrenamiento.

Evaluar el modelo

Utilice métricas como AP50, F1-score o métricas personalizadas para evaluar el rendimiento del modelo.

Resultados del registro

Es crucial registrar tanto las métricas de rendimiento como los hiperparámetros correspondientes para futuras consultas.

Repita

El proceso se repite hasta que se alcanza el número de iteraciones establecido o la métrica de rendimiento es satisfactoria.

Espacio de búsqueda por defecto Descripción

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 Rango de valores Descripción
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

Ejemplo de espacio de búsqueda personalizado

Here's how to define a search space and use the model.tune() para utilizar el Tuner clase para la sintonización de hiperparámetros de YOLO11n en COCO8 durante 30 épocas con un optimizador AdamW y omitiendo el trazado, el punto de control y la validación excepto en la última época para una sintonización más rápida.

Ejemplo

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

Una vez completado con éxito el proceso de ajuste de hiperparámetros, obtendrá varios archivos y directorios que encapsulan los resultados del ajuste. A continuación se describen cada uno de ellos:

Estructura de archivos

Este es el aspecto que tendrá la estructura de directorios de los resultados. Directorios de formación como train1/ contienen iteraciones de ajuste individuales, es decir, un modelo entrenado con un conjunto de hiperparámetros. La dirección tune/ contiene los resultados de todos los entrenamientos de cada modelo:

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

Descripciones de archivos

best_hyperparameters.yaml

Este archivo YAML contiene los hiperparámetros de mejor rendimiento encontrados durante el proceso de ajuste. Puede utilizar este archivo para inicializar futuros entrenamientos con estos ajustes optimizados.

  • Formato: YAML
  • Utilización: Resultados de los hiperparámetros
  • Por ejemplo:

    # 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

Se trata de un gráfico que muestra la aptitud (normalmente una métrica de rendimiento como AP50) frente al número de iteraciones. Ayuda a visualizar el rendimiento del algoritmo genético a lo largo del tiempo.

  • Formato: PNG
  • Utilización: Visualización del rendimiento

Ajuste de hiperparámetros Aptitud frente a iteración

tune_results.csv

Un archivo CSV que contiene los resultados detallados de cada iteración durante el ajuste. Cada fila del archivo representa una iteración e incluye métricas como la puntuación de aptitud, la precisión y la recuperación, así como los hiperparámetros utilizados.

  • Formato: CSV
  • Utilización: Seguimiento de resultados por iteración.
  • Ejemplo:
      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 archivo contiene gráficos de dispersión generados a partir de tune_results.csvque le ayudará a visualizar las relaciones entre los distintos hiperparámetros y las métricas de rendimiento. Tenga en cuenta que los hiperparámetros inicializados a 0 no se ajustarán, como por ejemplo degrees y shear abajo.

  • Formato: PNG
  • Utilización: Análisis exploratorio de datos

Gráficos de dispersión del ajuste de hiperparámetros

pesos/

Este directorio contiene los modelos PyTorch de las últimas y mejores iteraciones durante el proceso de ajuste de hiperparámetros.

  • last.pt: Los últimos.pt son los pesos de la última época de entrenamiento.
  • best.pt: Los mejores pesos.pt para la iteración que alcanzó la mejor puntuación de fitness.

Gracias a estos resultados, podrá tomar decisiones más informadas para sus futuros entrenamientos y análisis de modelos. No dude en consultar estos artefactos para comprender el rendimiento de su modelo y cómo podría mejorarlo.

Conclusión

El proceso de ajuste de hiperparámetros en Ultralytics YOLO es simplificado pero potente, gracias a su enfoque basado en algoritmos genéticos centrados en la mutación. Seguir los pasos descritos en esta guía le ayudará a ajustar sistemáticamente su modelo para lograr un mejor rendimiento.

Lecturas complementarias

  1. Optimización de hiperparámetros en Wikipedia
  2. YOLOv5 Guía de evolución de hiperparámetros
  3. Ajuste eficiente de hiperparámetros con Ray Tune y YOLO11

Para obtener información más detallada, puede consultar Tuner y la documentación que lo acompaña. Si tiene alguna pregunta, solicitud de funciones o necesita más ayuda, no dude en ponerse en contacto con nosotros en GitHub o Discordia.

PREGUNTAS FRECUENTES

¿Cómo puedo optimizar la tasa de aprendizaje de Ultralytics YOLO durante el ajuste de hiperparámetros?

Para optimizar la tasa de aprendizaje de Ultralytics YOLO , comience por fijar una tasa de aprendizaje inicial utilizando la función lr0 parámetro. Los valores habituales oscilan entre 0.001 a 0.01. Durante el proceso de ajuste de los hiperparámetros, este valor mutará para encontrar el ajuste óptimo. Puede utilizar la función model.tune() para automatizar este proceso. Por ejemplo:

Ejemplo

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 más detalles, consulte la página de configuraciónUltralytics YOLO .

¿Cuáles son las ventajas de utilizar algoritmos genéticos para el ajuste de hiperparámetros en YOLO11?

Los algoritmos genéticos en Ultralytics YOLO11 proporcionan un método robusto para explorar el espacio de hiperparámetros, lo que conduce a un rendimiento del modelo altamente optimizado. Entre sus principales ventajas se incluyen:

  • Búsqueda eficiente: Los algoritmos genéticos como la mutación pueden explorar rápidamente un gran conjunto de hiperparámetros.
  • Evitar los mínimos locales: Al introducir la aleatoriedad, ayudan a evitar los mínimos locales, garantizando una mejor optimización global.
  • Métricas de rendimiento: Se adaptan en función de métricas de rendimiento como AP50 y F1-score.

Para ver cómo los algoritmos genéticos pueden optimizar los hiperparámetros, consulte la guía de evolución de hiperparámetros.

¿Cuánto tarda el proceso de ajuste de hiperparámetros en Ultralytics YOLO ?

El tiempo necesario para el ajuste de hiperparámetros con Ultralytics YOLO depende en gran medida de varios factores, como el tamaño del conjunto de datos, la complejidad de la arquitectura del modelo, el número de iteraciones y los recursos informáticos disponibles. Por ejemplo, el ajuste de YOLO11n en un conjunto de datos como COCO8 durante 30 épocas puede llevar de varias horas a días, dependiendo del hardware.

Para gestionar eficazmente el tiempo de ajuste, defina de antemano un presupuesto de ajuste claro(enlace interno de la sección). Esto ayuda a equilibrar la asignación de recursos y los objetivos de optimización.

¿Qué métricas debo utilizar para evaluar el rendimiento del modelo durante el ajuste de hiperparámetros en YOLO?

Al evaluar el rendimiento del modelo durante el ajuste de hiperparámetros en YOLO, puede utilizar varias métricas clave:

  • AP50: La precisión media en el umbral IoU de 0,50.
  • Puntuación F1: La media armónica de precisión y recall.
  • Precisión y recuperación: Métricas individuales que indican la precisión del modelo a la hora de identificar verdaderos positivos frente a falsos positivos y falsos negativos.

Estas métricas le ayudan a comprender diferentes aspectos del rendimiento de su modelo. Consulte la guía de métricas de rendimiento de Ultralytics YOLO para obtener una visión general completa.

¿Puedo utilizar Ultralytics HUB para el ajuste de hiperparámetros de los modelos YOLO ?

Sí, puede utilizar Ultralytics HUB para el ajuste de hiperparámetros de los modelos YOLO . El HUB ofrece una plataforma sin código para cargar fácilmente conjuntos de datos, entrenar modelos y realizar el ajuste de hiperparámetros de forma eficiente. Proporciona seguimiento y visualización en tiempo real del progreso y los resultados del ajuste.

Obtenga más información sobre el uso de Ultralytics HUB para el ajuste de hiperparámetros en la documentación de formación deUltralytics HUB Cloud.

Creado hace 1 año ✏️ Actualizado hace 23 días

Comentarios