Meet YOLO26: next-gen vision AI.

Receta de entrenamiento de YOLO26

Introducción

Esta guía documenta la receta exacta de entrenamiento utilizada para producir los puntos de control preentrenados oficiales de YOLO26 en COCO. Cada hiperparámetro que se muestra aquí ya está integrado en los pesos .pt publicados y puede inspeccionarse mediante programación.

Entender cómo se entrenaron los modelos base te ayuda a tomar mejores decisiones al realizar un ajuste fino: qué aumentos de datos conservar, qué pesos de función de pérdida ajustar y qué configuraciones del optimizador funcionan mejor para el tamaño de tu conjunto de datos.

¿Para quién es esta guía?

Esta guía es para profesionales que quieren entender qué se utilizó en los puntos de control oficiales de YOLO26, no solo la arquitectura, sino también los programas de tasa de aprendizaje, las tuberías de aumento y los pesos de pérdida que dieron forma a su rendimiento. Usa esta información para tomar decisiones informadas al realizar ajustes finos en tus propios datos.

Inspección de los argumentos de entrenamiento

Cada punto de control de Ultralytics almacena la configuración de entrenamiento completa utilizada para producirlo. Puedes inspeccionar estos ajustes en cualquier momento:

Inspeccionar los argumentos de entrenamiento del punto de control
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])

Esto funciona para cualquier punto de control .pt, tanto para las versiones oficiales como para tus propios modelos ajustados. Para obtener la lista completa de argumentos de entrenamiento configurables, consulta la referencia de configuración de entrenamiento.

Descripción general del entrenamiento

Todos los modelos base de YOLO26 se entrenaron en COCO a una resolución de 640x640 usando el optimizador MuSGD con un tamaño de lote de 128. Los modelos se inicializaron a partir de pesos preentrenados intermedios y se refinaron con hiperparámetros encontrados mediante búsqueda evolutiva. Los registros de entrenamiento completos y las métricas para cada tamaño de modelo están disponibles en Ultralytics Platform:

Opciones de diseño clave en todos los tamaños:

  • Entrenamiento de extremo a extremo (end2end=True) con cabezal uno a uno sin NMS
  • Optimizador MuSGD que combina SGD con actualizaciones ortogonalizadas al estilo Muon para pesos de convolución
  • Aumento pesado de mosaico (probabilidad de ~0.9-1.0) desactivado en las últimas 10 épocas (close_mosaic=10)
  • Aumento de escala agresivo (0.56-0.95) para manejar objetos en diferentes tamaños
  • Rotación/cizallamiento mínimo para la mayoría de los tamaños, manteniendo baja la distorsión geométrica

Hiperparámetros por tamaño de modelo

Optimizador y tasa de aprendizaje

ConfiguraciónNSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640
Estrategia de tasa de aprendizaje

El modelo N utilizó una tasa de aprendizaje inicial más alta con una caída pronunciada (lrf=0.0495), mientras que los modelos S/M/L/X utilizaron una tasa inicial mucho más baja con un programa más suave (lrf=0.882). Esto refleja las diferentes dinámicas de convergencia de los modelos más pequeños frente a los más grandes: los modelos más pequeños necesitan actualizaciones más agresivas para aprender de manera efectiva.

Pesos de pérdida

ConfiguraciónNSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

El modelo N prioriza la pérdida DFL, mientras que los modelos S/M/L/X desplazan el énfasis a la regresión de caja delimitadora. La pérdida de clasificación permanece relativamente constante en todos los tamaños.

Tubería de aumento

Para una explicación detallada de cada técnica, consulta la guía de aumento de datos de YOLO.

ConfiguraciónNSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

Los modelos más grandes usan un aumento más agresivo en general (mixup, copy-paste y escala más altos), ya que tienen más capacidad y se benefician de una regularización más fuerte. El modelo N es el único tamaño con un aumento significativo de rotación, cizallamiento y BGR.

Parámetros de entrenamiento internos

Avanzado: parámetros de la tubería interna

Los puntos de control también contienen parámetros que se utilizaron en la tubería de entrenamiento interna pero que no se exponen como configuraciones configurables por el usuario en default.yaml:

ConfiguraciónDescripciónNSMLX
muon_wPeso de actualización de Muon en MuSGD0.5280.4360.4360.4360.436
sgd_wPeso de actualización de SGD en MuSGD0.6740.4790.4790.4790.479
cls_wPeso de clasificación interno2.743.483.483.483.48
o2mPeso de la pérdida de la cabeza uno-a-muchos1.00.7050.7050.7050.705
topkAsignación de etiquetas Top-k85555

Estos valores se registran para garantizar la reproducibilidad, pero no es necesario configurarlos al realizar un ajuste fino. Consulta las FAQ para más detalles.

Guía para el ajuste fino

Al ajustar YOLO26 con tu propio conjunto de datos, no necesitas replicar toda la receta de preentrenamiento. Los pesos preentrenados ya codifican el conocimiento sobre aumentación y optimización derivado del entrenamiento en COCO. Para obtener mejores prácticas generales de entrenamiento, consulta los Consejos para el entrenamiento de modelos.

Empieza de forma sencilla

Ajuste fino con los valores predeterminados
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

El ajuste fino con los valores predeterminados es una base sólida. Ajusta los hiperparámetros únicamente si tienes un motivo específico para hacerlo.

Cuándo realizar ajustes

Conjuntos de datos pequeños (< 1.000 imágenes):

  • Reduce la intensidad de la aumentación: mosaic=0.5, mixup=0.0, copy_paste=0.0
  • Reduce la tasa de aprendizaje: lr0=0.001
  • Usa menos épocas con paciencia: epochs=50, patience=20
  • Considera congelar las capas del backbone: freeze=10

Conjuntos de datos grandes (> 50.000 imágenes):

  • Iguala la receta de preentrenamiento más estrechamente
  • Considera optimizer=MuSGD para ejecuciones más largas
  • Aumenta la aumentación: mosaic=1.0, mixup=0.3, scale=0.9

Imágenes específicas de un dominio (aéreas, médicas, submarinas):

  • Aumenta flipud=0.5 si la orientación vertical varía
  • Aumenta degrees si los objetos aparecen con rotaciones arbitrarias
  • Ajusta hsv_s y hsv_v si las condiciones de iluminación difieren significativamente de las de COCO

Para la optimización automatizada de hiperparámetros, consulta la guía de ajuste de hiperparámetros.

Elegir el tamaño del modelo

ModeloIdeal paraGuía sobre el tamaño del lote
YOLO26nDispositivos Edge, móviles, tiempo real en CPULotes grandes (64-128) en GPUs de consumo
YOLO26sVelocidad y precisión equilibradasLotes medianos (32-64)
YOLO26mMayor precisión con cómputo moderadoLotes más pequeños (16-32)
YOLO26lAlta precisión cuando hay GPU disponibleLotes pequeños (8-16) o multi-GPU
YOLO26xMáxima precisión, despliegue en servidorLotes pequeños (4-8) o multi-GPU

Para opciones de exportación y despliegue, consulta la guía de exportación y las Opciones de despliegue de modelos.

Preguntas frecuentes

¿Cómo puedo ver los hiperparámetros exactos utilizados para cualquier punto de control (checkpoint)?

Carga el punto de control con torch.load() y accede a la clave train_args, o utiliza model.ckpt["train_args"] con la API de Ultralytics. Consulta Inspección de argumentos de entrenamiento para ver ejemplos completos.

¿Por qué los recuentos de épocas son diferentes para cada tamaño de modelo?

Los modelos más grandes convergen más rápido en COCO porque tienen más capacidad. El modelo N necesitó 245 épocas mientras que el modelo X solo necesitó 40. Al realizar el ajuste fino con tu propio conjunto de datos, el número óptimo de épocas depende del tamaño y la complejidad de tu conjunto de datos, no del tamaño del modelo. Utiliza la parada temprana (patience) para encontrar el punto de parada correcto automáticamente.

¿Debería usar MuSGD para el ajuste fino?

Cuando optimizer=auto (el valor predeterminado), Ultralytics selecciona automáticamente MuSGD para ejecuciones de entrenamiento más largas (>10.000 iteraciones) y AdamW para las más cortas. Puedes configurar explícitamente optimizer=MuSGD si lo prefieres. Para más información sobre la selección del optimizador, consulta la documentación de entrenamiento.

¿Qué son muon_w, sgd_w, cls_w, o2m y topk en el punto de control?

Estos son parámetros internos de la tubería de entrenamiento que produjo los puntos de control base. Se almacenan para fines de reproducibilidad, pero no son configuraciones que el usuario pueda cambiar en default.yaml. No necesitas configurarlos al realizar el ajuste fino. Consulta Parámetros de entrenamiento internos para más detalles.

¿Puedo replicar exactamente el preentrenamiento desde cero?

Los puntos de control fueron producidos utilizando una rama de entrenamiento interna con características adicionales que no están en la base de código pública (como los pesos configurables de o2m y cls_w). Puedes obtener resultados muy cercanos utilizando los hiperparámetros documentados en esta página con el paquete público de Ultralytics, pero una reproducción exacta requiere la rama interna.

Comentarios