Ultralytics YOLO Guía de ajuste de hiperparámetros
Introducción
El ajuste de hiperparámetros no es un ajuste 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 el recuerdo. En el contexto de Ultralytics YOLO , estos hiperparámetros pueden ir desde la velocidad de aprendizaje hasta detalles de arquitectura, como el número de capas o los tipos de funciones de activación utilizados.
¿Qué son los hiperparámetros?
Los hiperparámetros son ajustes estructurales de alto nivel para el algoritmo. Se fijan antes de la fase de entrenamiento y permanecen constantes durante ella. Éstos 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 te mueves hacia un mínimo en la 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. - Específicos de la arquitectura: Como recuento de canales, número de capas, tipos de funciones de activación, etc.
Para obtener una lista completa de los hiperparámetros de aumento utilizados en YOLOv8 , consulta la página de configuraciones.
Evolución genética y mutación
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 técnica de algoritmo genético muy popular, 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:
- Identifica las métricas: Determina las métricas que utilizarás para evaluar el rendimiento del modelo. Podrían ser el AP50, la puntuación F1 u otros.
- Establece el Presupuesto de Ajuste: Define cuántos recursos computacionales estás dispuesto a asignar. El ajuste de hiperparámetros puede ser intensivo desde el punto de vista informático.
Pasos implicados
Inicializar hiperparámetros
Empieza con un conjunto razonable de hiperparámetros iniciales. Podrían ser los hiperparámetros predeterminados establecidos por Ultralytics YOLO o algo basado en tu conocimiento del dominio o en experimentos anteriores.
Mutar hiperparámetros
Utiliza el _mutate
para producir un nuevo conjunto de hiperparámetros a partir del 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
Utiliza métricas como AP50, puntuación F1 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.
Repite
El proceso se repite hasta que se alcanza el número de iteraciones establecido o la métrica de rendimiento es satisfactoria.
Ejemplo de uso
A continuación te explicamos cómo utilizar el model.tune()
para utilizar el método Tuner
clase para el ajuste de hiperparámetros de YOLOv8n en COCO8 durante 30 épocas con un optimizador AdamW y omitiendo el trazado, el punto de control y la validación salvo en la última época para un ajuste más rápido.
Ejemplo
Resultados
Cuando hayas completado con éxito el proceso de ajuste de hiperparámetros, obtendrás varios archivos y directorios que encapsulan los resultados del ajuste. A continuación se describe cada uno de ellos:
Estructura de archivos
Así es como se verá 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 página tune/
contiene los resultados del ajuste de todos los entrenamientos de los modelos individuales:
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
mejor_hiperparametros.yaml
Este archivo YAML contiene los hiperparámetros de mejor rendimiento encontrados durante el proceso de ajuste. Puedes utilizar este archivo para inicializar futuros entrenamientos con estos ajustes optimizados.
- Formato: YAML
- Utilización: Resultados de los hiperparámetros
-
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. Te ayuda a visualizar el rendimiento del algoritmo genético a lo largo del tiempo.
- Formato: PNG
- Utilización: Visualización del rendimiento
sintonizar_resultados.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 fitness, la precisión, el recall, 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
sintonizar_trazados_de_dispersión.png
Este archivo contiene gráficos de dispersión generados a partir de tune_results.csv
, ayudándote a visualizar las relaciones entre los distintos hiperparámetros y las métricas de rendimiento. Ten 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
pesos/
Este directorio contiene los modelos PyTorch guardados para la última y la mejor iteración 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 de la iteración que ha obtenido la mejor puntuación de aptitud.
Utilizando estos resultados, podrás tomar decisiones más informadas para tus futuros entrenamientos y análisis del modelo. No dudes en consultar estos artefactos para comprender el rendimiento de tu modelo y cómo podrías mejorarlo aún más.
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 te ayudará a afinar sistemáticamente tu modelo para conseguir un mejor rendimiento.
Otras lecturas
- Optimización de hiperparámetros en Wikipedia
- YOLOv5 Guía de evolución de hiperparámetros
- Ajuste eficiente de hiperparámetros con Ray Tune y YOLOv8
Para profundizar más, puedes explorar Tuner
y la documentación adjunta. Si tienes alguna pregunta, petición de funciones o necesitas más ayuda, no dudes en ponerte en contacto con nosotros en GitHub o Discordia.
PREGUNTAS FRECUENTES
¿Cómo optimizo la tasa de aprendizaje para Ultralytics YOLO durante el ajuste de hiperparámetros?
Para optimizar el ritmo de aprendizaje de Ultralytics YOLO , empieza por fijar un ritmo de aprendizaje inicial mediante la función lr0
parámetro. Los valores habituales van de 0.001
a 0.01
. Durante el proceso de ajuste de los hiperparámetros, este valor mutará para encontrar el ajuste óptimo. Puedes utilizar la función model.tune()
para automatizar este proceso. Por ejemplo:
Ejemplo
Para más detalles, consulta la página de configuraciónUltralytics YOLO .
¿Cuáles son las ventajas de utilizar algoritmos genéticos para el ajuste de hiperparámetros en YOLOv8?
Los algoritmos genéticos en Ultralytics YOLOv8 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, consulta la guía de evolución de hiperparámetros.
¿Cuánto tarda el proceso de ajuste de los 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, afinar YOLOv8n 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, define 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, puedes 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 la precisión y la recuperación.
- Precisión y Recall: 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 te ayudan a comprender distintos aspectos del rendimiento de tu modelo. Consulta 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í, puedes 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.
Explora más sobre el uso de Ultralytics HUB para el ajuste de hiperparámetros en la documentación de formación deUltralytics HUB Cloud.