Receta de entrenamiento de YOLO26#
Introducción#
Esta guía documenta la receta exacta de entrenamiento utilizada para producir los checkpoints oficiales preentrenados de YOLO26 en COCO. Cada hiperparámetro que se muestra aquí ya está integrado en los pesos .pt publicados, junto con el registro de entrenamiento por época y la revisión del código de la ejecución, y todo se puede inspeccionar mediante programación.
Saber qué se incluyó en los checkpoints oficiales —no solo la arquitectura, sino también las estrategias de tasa de aprendizaje, las canalizaciones de aumento y los pesos de la función de pérdida que determinaron su rendimiento— te ayuda a tomar mejores decisiones al hacer fine-tuning: qué aumentos de datos conservar, qué pesos de la función de pérdida ajustar y qué configuraciones del optimizador funcionan mejor con el tamaño de tu dataset.
Esta página cubre los hiperparámetros registrados en los checkpoints publicados. Para conocer los motivos que los justifican, incluidos la arquitectura, los cambios en la pérdida y en la asignación de etiquetas, y las ablaciones, lee Ultralytics YOLO26: Unified Real-Time End-to-End Vision Models.
Resumen del entrenamiento#
Todos los modelos base de YOLO26 se entrenaron en dos etapas: preentrenamiento en Objects365v1 durante 150 épocas, seguido de fine-tuning en COCO. Ambas etapas se ejecutaron con una resolución de 640x640, el optimizador MuSGD y un tamaño de batch de 128. Ningún checkpoint de YOLO26 se entrenó en COCO partiendo de pesos aleatorios, por eso la etapa de COCO es corta para la mayoría de los tamaños y sus hiperparámetros se obtuvieron mediante una búsqueda evolutiva. Los registros de entrenamiento y las métricas completos de cada tamaño de modelo se almacenan dentro de los checkpoints publicados y se muestran como gráficos en Ultralytics Platform.
Decisiones de diseño clave para todos los tamaños:
- Preentrenamiento en Objects365 para todos los tamaños antes de la etapa de COCO
- Entrenamiento de extremo a extremo (
end2end=True) con una cabecera one-to-one sin NMS - Optimizador MuSGD que combina SGD con actualizaciones ortogonalizadas al estilo de Muon para matrices de pesos (pesos lineales 2D y filtros convolucionales 4D, que se redimensionan a 2D)
- Aumento de mosaico intenso (probabilidad de ~0.9-1.0) desactivado durante las últimas épocas (
close_mosaic=8en el preentrenamiento,close_mosaic=10en COCO) - Aumento de escala agresivo (0.5-0.95) para gestionar objetos de distintos tamaños
- Rotación y deformación mínimas para la mayoría de los tamaños, manteniendo baja la distorsión geométrica
Etapa 1: preentrenamiento en Objects365#
Cada checkpoint de YOLO26 para COCO se sometió a fine-tuning a partir de un checkpoint de Objects365v1 del mismo tamaño. Esos pesos preentrenados también se publican y están documentados en la página del dataset Objects365. Cada checkpoint de COCO indica sus pesos iniciales en la configuración de entrenamiento integrada en el archivo .pt, y la sección Inspección de los argumentos de entrenamiento del checkpoint de YOLO26 que aparece más abajo muestra cómo leerlos:
| Checkpoint de COCO | Pesos iniciales |
|---|---|
yolo26n.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
El preentrenamiento utilizó principalmente la configuración predeterminada en lugar de valores obtenidos mediante búsqueda. lr0, lrf, momentum, weight_decay, box y cls coinciden con default.yaml, mientras que warmup_epochs, close_mosaic y dfl se sobrescribieron. La configuración se comparte entre tamaños, salvo warmup_epochs en X, las intensidades de los aumentos y los pesos internos de MuSGD y de la cabecera que aparecen después de las tablas:
| Configuración | Valor |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1 (2 para X) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| Aumento | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
Estas tablas cubren la configuración que determina el preentrenamiento, no la configuración completa. Los checkpoints registran más de 100 argumentos, así que muestra train_args como se indica abajo para consultar la lista autorizada.
Avanzado: parámetros internos del preentrenamiento
El preentrenamiento también varió el mismo tipo de parámetros de la rama experimental descritos en Parámetros internos de entrenamiento. cls_w tenía el valor 1.0 para todos los tamaños:
| Configuración | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
No necesitas el dataset Objects365 para reutilizar la etapa 1. Los checkpoints preentrenados se descargan automáticamente como cualquier otro recurso de Ultralytics, así que puedes hacer fine-tuning con tu propio dataset:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Para volver a ejecutar la etapa de COCO, parte de los mismos pesos y pasa los valores del optimizador, la pérdida y los aumentos de la etapa 2 correspondientes a ese tamaño, indicados en las tablas siguientes. Estas tablas omiten argumentos no predeterminados menores, como warmup_momentum, warmup_bias_lr, perspective, flipud y cutmix, así que muestra train_args del checkpoint para obtener la configuración exacta. El paquete publicado rechaza los parámetros internos, que requieren la rama experimental.
Inspección de los argumentos de entrenamiento del checkpoint de YOLO26#
Cada checkpoint de Ultralytics almacena la configuración de entrenamiento completa utilizada para producirlo, así que puedes verificar por ti mismo cada número de esta página:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])La salida muestra la configuración completa, con más de 100 entradas, incluidos todos los valores de la receta documentados en esta página. Este es un fragmento de yolo26n.pt:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGDEsto funciona con cualquier checkpoint .pt, tanto con las versiones oficiales como con tus propios modelos sometidos a fine-tuning. Para consultar la lista completa de argumentos de entrenamiento configurables, visita la referencia de configuración del entrenamiento.
Visualización de las curvas de entrenamiento#
train_args no es lo único que se almacena. Cada checkpoint también contiene el results.csv completo, época por época, de la ejecución que lo produjo, junto con sus métricas finales de validación. Las curvas de los checkpoints oficiales de YOLO26 se publican en Ultralytics Platform, y cualquier archivo .pt se puede arrastrar y soltar en un proyecto para representar los mismos datos, ya que los metadatos se analizan automáticamente a partir del archivo.
Cada checkpoint cubre la etapa que lo produjo, por lo que las curvas de COCO están en yolo26s.pt y las curvas de 150 épocas de Objects365 están en yolo26s-objv1-150.pt.
Comprobación de la revisión del código#
ckpt["git"] registra el commit que produjo el checkpoint, y esos commits se encuentran en ramas experimentales públicas del repositorio de Ultralytics, por lo que puedes consultar el código exacto de entrenamiento:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849Las ramas experimentales contienen trabajo que nunca llegó a main, como o2m y cls_w configurables. Entrenar en main con los hiperparámetros documentados abajo no producirá resultados idénticos bit a bit, pero quedará a una distancia insignificante de las métricas publicadas.
Hiperparámetros de entrenamiento de YOLO26 por tamaño de modelo#
Estos son los valores de la etapa 2, aplicados sobre los pesos de Objects365 anteriores. Las tablas siguientes agrupan la receta por categorías: optimizador y estrategia, pesos de la pérdida y aumentos. Cada valor procede directamente de train_args, integrado en los checkpoints publicados.
Optimizador y tasa de aprendizaje#
Esta configuración del optimizador y de la estrategia controló el fine-tuning en COCO para cada tamaño; fíjate en que el modelo N se diferencia del resto:
| Configuración | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
El modelo N utilizó una tasa de aprendizaje inicial más alta con una reducción pronunciada (lrf=0.0495), mientras que los modelos S/M/L/X utilizaron una tasa de aprendizaje inicial mucho más baja con una estrategia más gradual (lrf=0.882). Esto refleja las distintas dinámicas de convergencia de los modelos pequeños y grandes: los modelos pequeños necesitan actualizaciones más agresivas para aprender de forma eficaz.
Pesos de la pérdida#
Los pesos de la pérdida equilibran los tres componentes de la pérdida de detección: regresión de IoU de la caja delimitadora (box), clasificación (cls) y un término de regresión de distancia de la caja (dfl). Ten en cuenta que YOLO26 sin DFL reutiliza la ganancia dfl para ponderar una pérdida L1 sobre las distancias normalizadas de las cajas, en lugar de la pérdida focal de distribución:
| Configuración | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
El modelo N prioriza el término de regresión de distancia dfl, mientras que los modelos S/M/L/X dan más importancia a la regresión de cajas basada en IoU. La pérdida de clasificación se mantiene relativamente constante en todos los tamaños.
Canalización de aumentos#
Para obtener una explicación detallada de cada técnica, consulta la guía de aumentos de datos de YOLO.
| Configuración | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
Los valores mostrados como ~0 son inferiores a 0.01 en los checkpoints reales (por ejemplo, degrees=0.00012 para el modelo S), por lo que el aumento está prácticamente desactivado.
Los modelos más grandes utilizan aumentos más agresivos en general (mayor mixup y escala), ya que tienen más capacidad y se benefician de una regularización más intensa. El modelo N es el único tamaño con una rotación, deformación y aumento BGR significativos.
Parámetros internos de entrenamiento#
Avanzado: parámetros internos de la canalización
Los checkpoints también contienen parámetros utilizados en la rama experimental de entrenamiento, pero que no se ofrecen como configuraciones ajustables por el usuario en default.yaml:
| Configuración | Descripción | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Peso de actualización de Muon en MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Peso de actualización de SGD en MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Peso interno de clasificación | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Peso de pérdida de la cabecera one-to-many | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Asignación de etiquetas top-k | 8 | 5 | 5 | 5 | 5 |
Consulta la entrada de preguntas frecuentes sobre estos parámetros para saber qué significan al hacer fine-tuning.
Fine-tuning de YOLO26 con tu propio dataset#
Al hacer fine-tuning de YOLO26 con tu propio dataset, no necesitas replicar toda la receta de preentrenamiento. Los pesos preentrenados ya incorporan los conocimientos sobre aumentos y optimización adquiridos durante el entrenamiento en COCO. Para conocer las prácticas recomendadas generales de entrenamiento, consulta Consejos para entrenar modelos.
Fine-tuning con la configuración predeterminada#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)El fine-tuning con la configuración predeterminada es una base sólida. Ajusta los hiperparámetros solo si tienes un motivo concreto para hacerlo.
Cuándo ajustar los hiperparámetros de YOLO26#
Datasets pequeños (< 1.000 imágenes):
- Reduce la intensidad de los aumentos:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Reduce la tasa de aprendizaje con un optimizador explícito:
optimizer=AdamW,lr0=0.001 - Utiliza menos épocas con paciencia:
epochs=50,patience=20 - Considera congelar las capas del backbone:
freeze=10
Datasets grandes (> 50.000 imágenes):
- Reproduce la receta de preentrenamiento con mayor fidelidad
- Considera
optimizer=MuSGDpara ejecuciones más largas - Aumenta los aumentos:
mosaic=1.0,mixup=0.3,scale=0.9
Imágenes específicas del dominio (aéreas, médicas, submarinas):
- Aumenta
flipud=0.5si varía la orientación vertical - Aumenta
degreessi los objetos aparecen con rotaciones arbitrarias - Ajusta
hsv_syhsv_vsi 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.
Elige un tamaño de modelo#
| Modelo | Ideal para | Guía sobre el tamaño de batch |
|---|---|---|
| YOLO26n | Dispositivos Edge, móviles y tiempo real en CPU | Batches grandes (64-128) en GPU de consumo |
| YOLO26s | Equilibrio entre velocidad y precisión | Batches medianos (32-64) |
| YOLO26m | Mayor precisión con un uso moderado de recursos | Batches más pequeños (16-32) |
| YOLO26l | Alta precisión cuando hay una GPU disponible | Lotes pequeños (8-16) o varias GPU |
| YOLO26x | Máxima precisión, despliegue en servidor | Lotes pequeños (4-8) o varias GPU |
Para consultar las opciones de exportación y despliegue, visita la guía de exportación y Opciones de despliegue de modelos.
Conclusión#
Los checkpoints de YOLO26 incluyen su receta de entrenamiento completa, por lo que los hiperparámetros exactos de cada tamaño de modelo están siempre a una consulta de train_args. Empieza el ajuste fino con los valores predeterminados, realiza ajustes deliberados usando las tablas de esta página y verifica cada cambio con tu propio conjunto de validación. Si te surgen dudas durante el proceso, pregunta a la comunidad en el repositorio de Ultralytics en GitHub o en el servidor de Discord de Ultralytics.
Preguntas frecuentes#
Carga el checkpoint con
torch.load()y accede a la clavetrain_args, o utilizamodel.ckpt["train_args"]con la API de Ultralytics. Consulta Inspección de los argumentos de entrenamiento de los checkpoints de YOLO26 para ver ejemplos completos.Cada tamaño recibió las mismas 150 épocas de preentrenamiento con Objects365, por lo que los recuentos de COCO solo abarcan la fase de ajuste fino. Los modelos más grandes convergen en COCO en menos de esas épocas: 40 para X frente a 245 para N. Los recuentos no son estrictamente monotónicos (S utilizó 70 y M utilizó 80) porque se obtuvieron mediante la búsqueda de hiperparámetros específica de cada tamaño. Al realizar el ajuste fino con tu propio conjunto de datos, el número óptimo de épocas depende del tamaño y la complejidad del conjunto de datos, no del tamaño del modelo. Utiliza la detención temprana (
patience) para encontrar automáticamente el momento adecuado de detener el entrenamiento.Proceden de la rama experimental que generó los checkpoints base y se registraron en
train_argspara garantizar la reproducibilidad. No son ajustes configurables por el usuario endefault.yaml, y pasarlos amodel.train()genera un error de argumento no válido porque el paquete publicado no los lee. No necesitas establecerlos al realizar el ajuste fino; consulta Parámetros de entrenamiento internos para ver sus valores correspondientes a cada tamaño de modelo.No. Cada checkpoint de COCO se ajustó a partir de un checkpoint de Objects365v1 del mismo tamaño que ya había sido entrenado durante 150 épocas, tal como se describe en Fase 1: preentrenamiento con Objects365 y en el artículo de YOLO26. No hay ningún entrenamiento de COCO desde cero detrás de las cifras publicadas, por lo que una comparación desde cero con esas cifras no se realiza en igualdad de condiciones.
Están dentro de los checkpoints y se representan gráficamente en Ultralytics Platform. Cada checkpoint almacena el
results.csvcompleto de su ejecución, por época, de modo que al cargar un archivo.pten un proyecto de Platform se representan las pérdidas, la evolución de mAP y las tasas de aprendizaje sin necesidad de escribir código. Consulta Visualización de las curvas de entrenamiento. La fase de Objects365 tiene su propio registro en los checkpointsyolo26*-objv1-150.pt.Obtendrás unas métricas muy próximas a las publicadas, pero no idénticas. Para utilizar una configuración idéntica, comprueba el commit registrado en el checkpoint y entrena en esa rama. Consulta Comprobación de la revisión del código.