Ultralytics YOLO27:
Get Started

Entrenamiento de modelos con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introducción#

Entrenar un modelo de aprendizaje profundo consiste en proporcionarle datos y ajustar sus parámetros para que pueda realizar predicciones precisas. El modo de entrenamiento de Ultralytics YOLO26 está diseñado para entrenar modelos de detección de objetos de forma eficaz y eficiente, aprovechando al máximo las capacidades del hardware moderno. Esta guía cubre todos los detalles que necesitas para empezar a entrenar tus propios modelos con el sólido conjunto de funciones de YOLO26. Si aún no has instalado Ultralytics, empieza por la guía de inicio rápido.

Consulta la versión preliminar no publicada de YOLO27 para ver los ejemplos de entrenamiento previstos.



Ver: Cómo entrenar un modelo YOLO con tu conjunto de datos personalizado en Google Colab.

¿Por qué elegir Ultralytics YOLO para entrenar?#

Estas son algunas razones de peso para elegir el modo de entrenamiento de YOLO26:

  • Eficiencia: Saca el máximo partido a tu hardware, tanto si usas una sola GPU como si amplías la capacidad con varias GPU.
  • Versatilidad: Entrena con conjuntos de datos personalizados, además de los disponibles, como COCO, VOC e ImageNet.
  • Facilidad de uso: Interfaces sencillas pero potentes de CLI y Python para que entrenar sea fácil.
  • Flexibilidad de los hiperparámetros: Amplia variedad de hiperparámetros personalizables para ajustar el rendimiento del modelo. Si necesitas un control más preciso, puedes personalizar el entrenador.
  • Entrenamiento en la nube: Entrena en GPU en la nube a través de Ultralytics Platform, con métricas en tiempo real y guardado automático de checkpoints.

Funciones clave del modo de entrenamiento#

Estas son algunas de las funciones más destacadas del modo de entrenamiento de YOLO26:

  • Descarga automática de conjuntos de datos: Las configuraciones de conjuntos de datos que incluyen una fuente de descarga se descargan automáticamente la primera vez que se utilizan; por ejemplo, yolo train data=coco8.yaml. Consulta la descripción general de los conjuntos de datos para ver los formatos y conjuntos de datos compatibles.
  • Compatibilidad con varias GPU: Amplía fácilmente el entrenamiento a varias GPU para agilizar el proceso.
  • Configuración de hiperparámetros: Puedes modificar los hiperparámetros mediante archivos de configuración YAML o argumentos de CLI.
  • Visualización y supervisión: Seguimiento en tiempo real de las métricas de entrenamiento y visualización del proceso de aprendizaje para obtener información más útil.

Ejemplos de uso#

Entrena YOLO26n con el conjunto de datos COCO8 durante 100 épocas con un tamaño de imagen de 640. Puedes especificar el dispositivo de entrenamiento mediante el argumento device. Si no se indica ningún argumento, se usará la GPU device=0 cuando esté disponible; de lo contrario, se usará device='cpu'. Consulta la sección Argumentos más abajo para ver la lista completa de argumentos de entrenamiento.

Error de multiprocesamiento en Windows

En Windows, puede aparecer un RuntimeError al iniciar el entrenamiento como script. Añade un bloque if __name__ == "__main__": antes del código de entrenamiento para solucionarlo.

Ejemplo de entrenamiento con una sola GPU y con CPU

El dispositivo se determina automáticamente. Si hay una GPU disponible, se utilizará (dispositivo CUDA 0 de forma predeterminada); de lo contrario, el entrenamiento se iniciará en la CPU.

from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n.yaml")  # Crea un modelo nuevo a partir de YAML
model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # Crea el modelo a partir de YAML y transfiere los pesos

# Entrenar el modelo
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Entrenamiento con varias GPU#

El entrenamiento con varias GPU permite aprovechar mejor los recursos de hardware disponibles al distribuir la carga de entrenamiento entre varias GPU. Esta función está disponible tanto en la API de Python como en la interfaz de línea de comandos. Para activar el entrenamiento con varias GPU, especifica los ID de los dispositivos GPU que quieras usar.

Ejemplo de entrenamiento con varias GPU

Para entrenar con 2 GPU, los dispositivos CUDA 0 y 1, usa los siguientes comandos. Añade más GPU según sea necesario.

from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)

# Entrena el modelo con 2 GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Entrena el modelo con las dos GPU más inactivas
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Compatibilidad con varias GPU en Windows

El entrenamiento con varias GPU no funciona en Windows con las versiones oficiales de PyTorch para torch>=2.4. Ultralytics inicia DDP mediante torch.distributed.run, cuyo paso de encuentro crea un TCPStore que utiliza el backend libuv de forma predeterminada desde PyTorch 2.4; las versiones oficiales de PyTorch para Windows se compilan sin libuv. El entrenamiento se cierra inmediatamente con:

RuntimeError: use_libuv was requested but PyTorch was built without libuv support

Establecer USE_LIBUV=0 no lo soluciona, porque el proceso de encuentro crea directamente TCPStore y esa ruta de código nunca lee la variable. Entrena en Linux o WSL2 para usar varias GPU, o entrena con una sola GPU usando device=0 en Windows.

Entrenamiento con varias GPU y código personalizado

Cuando especificas varios dispositivos (por ejemplo, device=[0, 1]), Ultralytics inicia internamente una nueva instancia del entrenador y ejecuta torch.distributed.run en segundo plano. Esto funciona sin problemas con el uso estándar de la CLI y con scripts de Python sin modificar.

Sin embargo, si tu script contiene componentes personalizados, como un entrenador, un validador, un conjunto de datos o una canalización de aumento de datos personalizados, estos objetos no se pueden serializar y transferir automáticamente a los subprocesos de DDP. En ese caso, debes iniciar el script directamente con torch.distributed.run:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

El entrenamiento en GPU AMD utiliza una compilación de PyTorch con ROCm y la sintaxis estándar device=0 o device=cuda:0. Consulta la guía de integración de AMD para obtener información sobre la instalación de ROCm, el entrenamiento con varias GPU, las notas sobre AMP y la inferencia con MIGraphX de los modelos exportados.

El entrenamiento en GPU Intel utiliza device=xpu:0 o varios ID de XPU con una compilación de PyTorch que incluya XCCL.

Entrenamiento en NPU Huawei Ascend#

Ultralytics permite entrenar y validar en NPU Huawei Ascend mediante torch_npu. Instala versiones compatibles entre sí de CANN, PyTorch y torch_npu siguiendo la guía de instalación de Ascend Extension for PyTorch y, a continuación, activa el entorno de CANN antes de iniciar Ultralytics:

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Ejemplo de entrenamiento en NPU Ascend
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Entrena en una NPU Ascend
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Entrena en dos NPU Ascend mediante HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Las funciones de entrenamiento estándar, como AMP, la validación, los checkpoints y la reanudación, utilizan la NPU activa. AutoBatch está disponible para el entrenamiento con una sola NPU, mientras que varios ID de NPU inician el entrenamiento distribuido mediante HCCL. Consulta la guía de integración de Huawei Ascend para exportar y desplegar el modelo después del entrenamiento.

Entrenamiento en GPU inactivas#

El entrenamiento en GPU inactivas selecciona automáticamente las GPU menos utilizadas en sistemas con varias GPU y optimiza el uso de los recursos sin que tengas que elegir las GPU manualmente. Esta función detecta las GPU disponibles según las métricas de utilización y la disponibilidad de VRAM.

Ejemplo de entrenamiento en GPU inactivas

Para seleccionar y utilizar automáticamente la GPU o las GPU más inactivas para el entrenamiento, usa el parámetro de dispositivo -1. Esto resulta especialmente útil en entornos de computación compartidos o servidores con varios usuarios.

from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)

# Entrena con la GPU más inactiva
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Entrena con las dos GPU más inactivas
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

El algoritmo de selección automática da prioridad a las GPU con:

  1. Menores porcentajes de utilización actual
  2. Más memoria disponible (VRAM libre)

Esta función resulta especialmente útil en entornos de computación compartidos o cuando se ejecutan varios trabajos de entrenamiento para distintos modelos. Se adapta automáticamente a los cambios en las condiciones del sistema y garantiza una asignación óptima de los recursos sin intervención manual.

Entrenamiento con MPS en Apple Silicon#

Gracias a la compatibilidad integrada con los chips Apple silicon en los modelos Ultralytics YOLO, ahora puedes entrenar tus modelos en dispositivos que utilizan el potente framework Metal Performance Shaders (MPS). MPS ofrece una forma de alto rendimiento de ejecutar cálculos y tareas de procesamiento de imágenes en el silicio personalizado de Apple.

Para activar el entrenamiento en chips Apple silicon, especifica 'mps' como dispositivo al iniciar el proceso. A continuación tienes un ejemplo de cómo hacerlo con Python y desde la línea de comandos:

Ejemplo de entrenamiento con MPS
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)

# Entrena el modelo con MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Al aprovechar la potencia de cálculo de los chips Apple silicon, puedes procesar las tareas de entrenamiento con mayor eficiencia. Para obtener instrucciones más detalladas y opciones de configuración avanzadas, consulta la documentación de PyTorch sobre MPS.

Reanudación de entrenamientos interrumpidos#

Reanudar el entrenamiento desde un estado guardado previamente es una función crucial al trabajar con modelos de aprendizaje profundo. Puede resultar útil en distintas situaciones, por ejemplo, si el proceso de entrenamiento se interrumpe inesperadamente o si quieres seguir entrenando un modelo con datos nuevos o durante más épocas.

Al reanudar el entrenamiento, Ultralytics YOLO carga los pesos del último modelo guardado y también restaura el estado del optimizador, el planificador de la tasa de aprendizaje, el número de época y el conjunto de datos. Esto te permite continuar el proceso de entrenamiento sin interrupciones desde el punto en el que se detuvo. Pasa explícitamente data= junto con resume para continuar con un conjunto de datos distinto del del punto de control.

Puedes reanudar fácilmente el entrenamiento en Ultralytics YOLO estableciendo el argumento resume en True al llamar al método train y especificando la ruta al archivo .pt que contiene los pesos del modelo entrenado parcialmente.

A continuación se muestra un ejemplo de cómo reanudar un entrenamiento interrumpido con Python y mediante la línea de comandos:

Ejemplo de reanudación del entrenamiento
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("path/to/last.pt")  # cargar un modelo entrenado parcialmente

# Reanudar el entrenamiento
results = model.train(resume=True)

Al establecer resume=True, la función train continuará el entrenamiento desde el punto en el que se detuvo, usando el estado almacenado en el archivo 'path/to/last.pt'. Si se omite el argumento resume o se establece en False, la función train iniciará una nueva sesión de entrenamiento.

Recuerda que, de forma predeterminada, los puntos de control se guardan al final de cada época, o a intervalos fijos mediante el argumento save_period, por lo que debes completar al menos 1 época para reanudar una ejecución de entrenamiento.

Ajustes de entrenamiento#

La configuración de entrenamiento de los modelos YOLO incluye varios hiperparámetros y ajustes que se usan durante el proceso de entrenamiento. Estos ajustes influyen en el rendimiento, la velocidad y la precisión del modelo. Entre los ajustes de entrenamiento más importantes se encuentran el tamaño del lote, la tasa de aprendizaje, el momentum y la disminución de pesos. Además, la elección del optimizador, la función de pérdida y la composición del conjunto de datos de entrenamiento pueden afectar al proceso. Para optimizar el rendimiento, es fundamental ajustar estos valores con cuidado y experimentar con ellos.

Optimizador MuSGD#

En YOLO26, MuSGD es un optimizador híbrido que combina actualizaciones estándar de SGD con actualizaciones ortogonalizadas al estilo de Muon.

Se recomienda para entrenamientos prolongados de YOLO26 y conjuntos de datos más grandes, donde las actualizaciones ortogonalizadas de Muon pueden ayudar a estabilizar la optimización.

Solo los pesos lineales 2D y los filtros convolucionales 4D (reorganizados en 2D) reciben la actualización al estilo de Muon junto con SGD; el resto de parámetros, como los pesos de normalización por lotes y los términos de sesgo, siguen usando SGD estándar.

Cuando se usa optimizer=auto, Ultralytics selecciona automáticamente MuSGD para los entrenamientos prolongados (normalmente cuando iterations > 10000). En las ejecuciones más cortas, el entrenador recurre a AdamW. En el modo auto, el entrenador también selecciona la tasa de aprendizaje, por lo que se ignora cualquier lr0 proporcionado por el usuario. Para controlar estos ajustes manualmente, selecciona un optimizador explícitamente, por ejemplo, optimizer=AdamW lr0=0.001.

Ejemplo de uso:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Consulta la implementación en ultralytics/optim/muon.py y la lógica de selección automática del optimizador en BaseTrainer.build_optimizer.

ArgumentoTipoPredeterminadoDescripción
modelstrNoneEspecifica el archivo del modelo para el entrenamiento. Acepta la ruta a un modelo preentrenado .pt o a un archivo de configuración .yaml. Es esencial para definir la estructura del modelo o inicializar los pesos.
datastrNoneRuta al YAML del conjunto de datos (p. ej., coco8.yaml), que contiene las rutas a los datos de entrenamiento y validación, los nombres de las clases y el número de clases. Para la clasificación, se usa en su lugar un directorio del conjunto de datos o el nombre de un conjunto de datos integrado (p. ej., imagenet10).
epochsint100Número total de épocas de entrenamiento. Cada época representa una pasada completa por todo el conjunto de datos. Ajustar este valor puede afectar a la duración del entrenamiento y al rendimiento del modelo.
timefloatNoneDuración máxima del entrenamiento en horas. Si se establece, prevalece sobre el argumento epochs y permite que el entrenamiento se detenga automáticamente al cumplirse el tiempo especificado. Es útil cuando el tiempo de entrenamiento es limitado.
patienceint100Número de épocas que se espera sin mejoras en las métricas de validación antes de detener el entrenamiento de forma anticipada. Ayuda a evitar el sobreajuste deteniendo el entrenamiento cuando el rendimiento se estabiliza.
batchint o float16Tamaño del lote, con tres modos: establecer un entero (p. ej., batch=16), usar el modo automático con un 60 % de utilización de la memoria de la GPU (batch=-1) o el modo automático con una fracción de utilización especificada (batch=0.70).
imgszint640Tamaño objetivo de las imágenes para el entrenamiento. Las imágenes se redimensionan a cuadrados cuyos lados tienen el valor especificado (si rect=False); los modelos YOLO conservan la relación de aspecto, pero RT-DETR no. Afecta a la precisión del modelo y a la complejidad computacional.
saveboolTrueActiva el guardado de los puntos de control del entrenamiento y de los pesos finales del modelo. Es útil para reanudar el entrenamiento o para la implementación del modelo.
save_periodint-1Frecuencia de guardado de los puntos de control del modelo, especificada en épocas. Un valor de -1 desactiva esta función. Es útil para guardar modelos intermedios durante sesiones de entrenamiento largas.
cachebool o strFalseActiva el almacenamiento en caché de las imágenes del conjunto de datos en memoria (True/ram), en disco (disk) o lo desactiva (False). Aumenta la velocidad del entrenamiento al reducir las operaciones de E/S de disco, a costa de un mayor uso de memoria.
deviceint o str o listNoneEspecifica el dispositivo o los dispositivos de cálculo para el entrenamiento: una sola GPU (device=0), varias GPU (device=[0,1]), CPU (device=cpu), MPS para Apple silicon (device=mps), NPU Huawei Ascend (device=npu:0 o device=npu:0,1), Intel XPU (device=xpu:0), selección automática de una GPU inactiva (device=-1) o de varias GPU inactivas (device=[-1,-1]).
workersint8Número de hilos de trabajo para cargar datos (por cada RANK si se entrena con varias GPU). Influye en la velocidad del preprocesamiento de datos y de su suministro al modelo; resulta especialmente útil en configuraciones con varias GPU.
projectstrNoneNombre del directorio del proyecto donde se guardan los resultados del entrenamiento. Permite organizar el almacenamiento de distintos experimentos.
namestrNoneNombre de la ejecución de entrenamiento. Se usa para crear un subdirectorio dentro de la carpeta del proyecto donde se almacenan los registros y los resultados del entrenamiento.
exist_okboolFalseSi es True, permite sobrescribir un directorio de proyecto/nombre existente. Es útil para experimentar de forma iterativa sin tener que eliminar manualmente los resultados anteriores.
save_dirstrNoneEspecifica el directorio exacto donde se guardan los resultados de la ejecución y prevalece sobre la combinación project/name. La ruta se usa tal cual, sin incrementar automáticamente el nombre; por tanto, las ejecuciones consecutivas reutilizan el mismo directorio.
pretrainedbool o strTrueDetermina si se empieza el entrenamiento con pesos preentrenados. Puede ser un valor booleano o una ruta de cadena a los pesos que se cargarán. pretrained=False entrena con pesos inicializados aleatoriamente y mantiene la arquitectura del modelo.
cls_remapboolTrueAl ajustar el modelo con distintos conjuntos de datos, copia al nuevo modelo las filas de la cabeza de clasificación preentrenada correspondientes a las clases con nombres coincidentes. Así, las clases coincidentes conservan los sesgos aprendidos y también los pesos si el ancho de la cabeza no cambia. Se aplica tanto si el número de clases varía como si coincide pero el orden es distinto.
optimizerstr'auto'Elección del optimizador para el entrenamiento. Entre las opciones se incluyen SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp o auto, para elegir AdamW o MuSGD según el número de iteraciones de entrenamiento. Afecta a la velocidad y la estabilidad de la convergencia.
seedint0Establece la semilla aleatoria del entrenamiento para garantizar que los resultados sean reproducibles en ejecuciones con las mismas configuraciones.
deterministicboolTrueFuerza el uso de algoritmos deterministas, lo que garantiza la reproducibilidad, pero puede afectar al rendimiento y la velocidad debido a la restricción de los algoritmos no deterministas.
verboseboolTrueActiva una salida detallada durante el entrenamiento, que muestra barras de progreso, métricas por época e información adicional sobre el entrenamiento en la consola.
single_clsboolFalseTrata todas las clases de los conjuntos de datos multiclase como una sola clase durante el entrenamiento. Es útil para tareas de clasificación binaria o cuando interesa detectar la presencia de objetos en lugar de clasificarlos.
classeslist[int]NoneEspecifica una lista de ID de clase con los que entrenar. Es útil para filtrar las clases y centrarse únicamente en algunas durante el entrenamiento.
rectboolFalseActiva la estrategia de relleno mínimo: las imágenes de un lote se rellenan lo mínimo necesario para alcanzar un tamaño común, con el lado más largo igual a imgsz. Puede mejorar la eficiencia y la velocidad, pero afectar a la precisión del modelo.
multi_scalefloat0.0Varía aleatoriamente imgsz en cada lote en +/- multi_scale (p. ej., de 0.25 a 0.75x y 1.25x), redondeando a múltiplos del stride del modelo; 0.0 desactiva el entrenamiento multiescala.
cos_lrboolFalseUsa un programador cosenoidal de la tasa de aprendizaje, que la ajusta siguiendo una curva cosenoidal a lo largo de las épocas. Ayuda a gestionar la tasa de aprendizaje para lograr una mejor convergencia.
close_mosaicint10Desactiva la aumentación de datos mosaico durante las últimas N épocas para estabilizar el entrenamiento antes de que termine. Si se establece en 0, se desactiva esta función.
resumeboolFalseReanuda el entrenamiento desde el último punto de control guardado. Carga automáticamente los pesos del modelo, el estado del optimizador y el número de épocas, para continuar el entrenamiento sin interrupciones.
ampbool o strTrueEstablece la precisión del entrenamiento: True o "fp16" usa FP16, "bf16" usa BF16 en los dispositivos CUDA compatibles y False o "fp32" usa FP32.
quantizeint o strNoneEstablece 8 (o "int8") para el entrenamiento con cuantización INT8 consciente de la cuantización (QAT), que ajusta el modelo con cuantización simulada durante el proceso para que los pesos admitan la exportación a INT8. Consulta Entrenamiento con cuantización consciente.
fractionfloat, int o list1.0Subconjunto del conjunto de datos expresado como proporción, recuento o lista [train, val, test]. 1 indica que se usa toda la partición; los enteros superiores a 1 representan cantidades de imágenes, y solo la entrada de prueba opcional acepta 0/0.0 para indicar que no se usa ninguna. Las listas de dos elementos mantienen completa la partición de prueba.
profileboolFalseActiva la elaboración de perfiles de velocidad de ONNX y TensorRT durante el entrenamiento, útil para optimizar la implementación del modelo.
freezeint o listNoneCongela las primeras N capas del modelo o capas específicas por índice o nombre de módulo (23.cv2, sin el model. inicial), lo que reduce el número de parámetros entrenables. Es útil para el ajuste fino o el aprendizaje por transferencia.
lr0float0.01Tasa de aprendizaje inicial (es decir, SGD=1E-2, Adam=1E-3). Se ignora con el valor predeterminado optimizer='auto'; indica un optimizador explícitamente para usarla.
lrffloat0.01Tasa de aprendizaje final como fracción de la tasa inicial = (lr0 * lrf); se usa junto con los programadores para ajustar la tasa de aprendizaje con el tiempo.
momentumfloat0.937Factor de momentum para SGD o beta1 para los optimizadores Adam, que influye en la incorporación de gradientes anteriores a la actualización actual.
weight_decayfloat0.0005Término de regularización L2 que penaliza los pesos grandes para evitar el sobreajuste.
warmup_epochsfloat3.0Número de épocas de calentamiento de la tasa de aprendizaje. Esta aumenta gradualmente desde un valor bajo hasta la tasa de aprendizaje inicial para estabilizar el entrenamiento al principio.
warmup_momentumfloat0.8Momentum inicial para la fase de calentamiento, que se ajusta gradualmente al momentum establecido durante el periodo de calentamiento.
warmup_bias_lrfloat0.1Tasa de aprendizaje de los parámetros de sesgo durante la fase de calentamiento, que ayuda a estabilizar el entrenamiento del modelo en las primeras épocas. Se establece automáticamente en 0.0 con el valor predeterminado optimizer='auto'; indica un optimizador explícitamente para usarla.
distill_modelstrNoneRuta a un punto de control del modelo profesor (p. ej., yolo26x.pt) para la destilación de conocimiento. Al establecerla, el modelo alumno se entrena con una pérdida de destilación adicional guiada por el modelo profesor congelado.
disfloat6.0Peso de la pérdida de destilación que se añade a las pérdidas de detección estándar. Los valores más altos aumentan la influencia de la orientación basada en las características del modelo profesor.
boxfloat7.5Peso del componente de pérdida de cuadros en la función de pérdida, que determina la importancia de predecir con precisión las coordenadas del cuadro delimitador.
clsfloat0.5Peso de la pérdida de clasificación en la función de pérdida total, que determina la importancia de predecir correctamente la clase respecto a los demás componentes.
cls_pwfloat0.0Potencia para ponderar las clases y gestionar el desequilibrio entre ellas mediante la frecuencia inversa de clase. 0.0 desactiva la ponderación de clases; 1.0 aplica la ponderación completa por frecuencia inversa. Los valores entre 0 y 1 aplican una ponderación parcial.
dflfloat1.5Peso del término de regresión de la distancia de los cuadros: pérdida focal de distribución (DFL) cuando la cabeza de detección usa reg_max > 1; pérdida L1 sobre distancias de cuadros normalizadas en YOLO26 sin DFL (reg_max: 1).
posefloat12.0Peso de la pérdida de pose en los modelos entrenados para estimar poses, que determina la importancia de predecir con precisión los puntos clave de la pose.
kobjfloat1.0Peso de la pérdida de objetividad de los puntos clave en los modelos de estimación de pose, que equilibra la confianza de detección y la precisión de la pose.
rlefloat1.0Peso de la pérdida de estimación residual de log-verosimilitud en los modelos de estimación de pose, que afecta a la precisión de la localización de los puntos clave.
anglefloat1.0Peso de la pérdida del ángulo en los modelos OBB, que afecta a la precisión de las predicciones del ángulo de los cuadros delimitadores orientados.
dlogfloat1.0Peso de la pérdida logarítmica invariante a la escala (SILog) en los modelos de estimación de profundidad; es el término principal que determina la precisión de la profundidad.
dgradfloat0.5Peso de la pérdida de gradiente en los modelos de estimación de profundidad, que penaliza los errores en los bordes de profundidad y favorece límites de superficie más definidos.
dlamfloat1.0Factor de énfasis de la varianza de la pérdida SILog en los modelos de estimación de profundidad. 1.0 hace que la pérdida sea totalmente invariante a la escala, mientras que 0.0 la reduce a un RMSE logarítmico simple.
nbsint64Tamaño nominal del lote para normalizar la pérdida.
overlap_maskboolTrueDetermina si las máscaras de los objetos deben combinarse en una sola máscara para el entrenamiento o mantenerse separadas para cada objeto. Si hay solapamiento, al combinarlas se superpone la máscara más pequeña sobre la más grande.
mask_ratioint4Proporción de submuestreo de las máscaras de segmentación, que afecta a la resolución de las máscaras usadas durante el entrenamiento. No modifica la resolución de las máscaras predichas.
dropoutfloat0.0Tasa de abandono para la regularización en tareas de clasificación; evita el sobreajuste omitiendo unidades aleatoriamente durante el entrenamiento.
valboolTrueActiva la validación durante el entrenamiento para evaluar periódicamente el rendimiento del modelo con un conjunto de datos independiente.
nmsbool, opcionalNoneSelecciona la cabeza de inferencia que se usa para validar cada época, seleccionar puntos de control y detener el entrenamiento de forma anticipada. None o True usa una relación uno-a-muchos con NMS; False usa la cabeza sin NMS cuando está disponible. Ambas cabezas conservan sus pérdidas de entrenamiento.
plotsboolTrueGenera y guarda gráficos de las métricas de entrenamiento y validación, así como ejemplos de predicciones, para ofrecer una visión visual del rendimiento del modelo y de su evolución durante el aprendizaje.
compilebool o strFalseActiva la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True → "default" para activarla, False → para desactivarla o un modo de cadena como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Si no es compatible, vuelve al modo eager y muestra una advertencia.
channels_lastboolNoneUsa el formato de memoria channels_last (NHWC) para las convoluciones durante el entrenamiento. None lo activa automáticamente en CUDA con PyTorch 1.11 o versiones posteriores, excepto en Windows, donde se ha medido un rendimiento más lento. False lo desactiva y True lo solicita explícitamente. El entrenamiento en CPU o MPS siempre mantiene el formato NCHW (True se ignora y se muestra una advertencia).
max_detint300Número máximo de detecciones por imagen durante la validación del entrenamiento. En las tareas de detección, segmentación, pose y OBB, el valor predeterminado de 300 aumenta hasta el mayor recuento de objetos etiquetados de entrenamiento/validación solo si dicho recuento supera 300. Los demás valores se mantienen fijos; si se supera el límite, se muestra una advertencia.
Nota sobre los ajustes del tamaño del lote

El argumento batch se puede configurar de tres formas:

  • Tamaño del lote fijo: establece un valor entero (p. ej., batch=16) para especificar directamente el número de imágenes por lote.
  • Modo automático (60 % de la memoria de la GPU): usa batch=-1 para ajustar automáticamente el tamaño del lote y utilizar aproximadamente el 60 % de la memoria CUDA.
  • Modo automático con una fracción de utilización: establece un valor fraccionario (p. ej., batch=0.70) para ajustar el tamaño del lote en función de la fracción especificada de uso de la memoria de la GPU.
  • Reintento automático por falta de memoria (OOM): si se produce un error de falta de memoria de CUDA durante la primera época, el entrenador reduce automáticamente a la mitad el tamaño del lote y vuelve a intentarlo (hasta 3 veces). Esto solo se aplica al entrenamiento con una sola GPU; el entrenamiento con varias GPU (DDP) generará el error inmediatamente.
  • No se encuentra un tamaño adecuado: Si ningún tamaño de lote candidato genera un perfil válido, AutoBatch produce un RuntimeError claro en lugar de recurrir silenciosamente a un valor predeterminado no relacionado.

Ajustes y hiperparámetros de aumento de datos#

Las técnicas de aumento de datos son esenciales para mejorar la robustez y el rendimiento de los modelos YOLO, ya que introducen variabilidad en los datos de entrenamiento y ayudan al modelo a generalizar mejor con datos que no ha visto. La siguiente tabla describe el propósito y el efecto de cada argumento de aumento:

ArgumentoTipoPredeterminadoTareas compatiblesIntervaloDescripción
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Ajusta el tono de la imagen en una fracción de la rueda de color, lo que introduce variabilidad cromática. Ayuda al modelo a generalizar en distintas condiciones de iluminación. Para classify, solo se aplica cuando auto_augment=None.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifica la saturación de la imagen en una fracción, lo que afecta a la intensidad de los colores. Es útil para simular distintas condiciones ambientales. Para classify, solo se aplica cuando auto_augment=None.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifica el valor (brillo) de la imagen en una fracción, lo que ayuda al modelo a funcionar bien en distintas condiciones de iluminación. Para classify, solo se aplica cuando auto_augment=None.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Gira la imagen aleatoriamente dentro del intervalo de grados especificado, lo que mejora la capacidad del modelo para reconocer objetos en distintas orientaciones.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Desplaza la imagen horizontal y verticalmente en una fracción de su tamaño, lo que ayuda al modelo a aprender a detectar objetos parcialmente visibles.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 1 o una tupla (min, max) explícita (no para classify).Escala la imagen mediante un factor de ampliación, lo que simula objetos situados a distintas distancias de la cámara.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Cizalla la imagen en los grados especificados, lo que imita el efecto de observar objetos desde distintos ángulos.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Aplica una transformación de perspectiva aleatoria a la imagen, lo que mejora la capacidad del modelo para comprender los objetos en un espacio 3D.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Invierte la imagen verticalmente con la probabilidad especificada, lo que aumenta la variabilidad de los datos sin afectar a las características del objeto.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Invierte la imagen de izquierda a derecha con la probabilidad especificada; es útil para aprender a reconocer objetos simétricos y aumentar la diversidad del conjunto de datos.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Invierte los canales de la imagen de RGB a BGR con la probabilidad especificada; es útil para aumentar la robustez ante un orden incorrecto de los canales.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Combina cuatro imágenes de entrenamiento en una, lo que simula distintas composiciones de escenas e interacciones entre objetos. Es muy eficaz para comprender escenas complejas.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Mezcla dos imágenes y sus etiquetas para crear una imagen compuesta. Mejora la capacidad del modelo para generalizar al introducir ruido en las etiquetas y variabilidad visual.
cutmixfloat0detect, segment, semantic, pose, obb0.0 - 1.0Combina partes de dos imágenes para crear una mezcla parcial que mantiene regiones diferenciadas. Mejora la robustez del modelo al crear situaciones de oclusión.
copy_pastefloat0segment, semantic, obb0.0 - 1.0Fracción de objetos aptos que se pegan; flip los refleja dentro de la imagen, mientras que mixup también utiliza el valor como probabilidad de aplicación entre imágenes.
copy_paste_modestrflipsegment, semantic, obb-Especifica la estrategia de copy-paste que se va a utilizar. Las opciones incluyen 'flip' y 'mixup'.
auto_augmentstrrandaugmentclassify-Aplica una política de aumento predefinida ('randaugment', 'autoaugment' o 'augmix') para mejorar el rendimiento del modelo mediante la diversidad visual.
erasingfloat0.4classify0.0 - 1.0Borra aleatoriamente regiones de la imagen durante el entrenamiento para animar al modelo a centrarse en características menos evidentes.
augmentationslistNonedetect, segment, semantic, depth, pose, obb-Transformaciones personalizadas de Albumentations para el aumento de datos avanzado (solo API de Python). Acepta una lista de objetos de transformación para necesidades de aumento especializadas.

Puedes ajustar estos parámetros para satisfacer los requisitos específicos del conjunto de datos y la tarea en cuestión. Experimentar con distintos valores puede ayudarte a encontrar la estrategia de aumento óptima para lograr el mejor rendimiento del modelo.

Información

Para obtener más información sobre las operaciones de aumento de datos durante el entrenamiento, consulta la sección de referencia.

Registro#

Las métricas, los gráficos y los puntos de control del entrenamiento siempre se escriben en el directorio de ejecución; además, Ultralytics los envía a cualquier plataforma de seguimiento de experimentos que tengas instalada y activada: Comet, ClearML, TensorBoard, MLflow, Weights & Biases y DVCLive. Cada registrador se activa o desactiva desde la configuración de Ultralytics, por ejemplo, yolo settings tensorboard=True. A continuación se muestran las tres configuraciones más habituales.

Comet#

Comet es una plataforma que permite a científicos de datos y desarrolladores hacer seguimiento de experimentos y modelos, compararlos, explicarlos y optimizarlos. Ofrece funciones como métricas en tiempo real, diferencias de código y seguimiento de hiperparámetros.

Para usar Comet:

Ejemplo
# pip install comet_ml
import comet_ml

comet_ml.login()

Recuerda iniciar sesión en tu cuenta de Comet en su sitio web y obtener tu clave API. Tendrás que añadirla a las variables de entorno o al script para registrar tus experimentos.

ClearML#

ClearML es una plataforma de código abierto que automatiza el seguimiento de experimentos y facilita el uso compartido eficiente de recursos. Está diseñada para ayudar a los equipos a gestionar, ejecutar y reproducir su trabajo de aprendizaje automático de forma más eficiente.

Para usar ClearML:

Ejemplo
# pip install clearml
import clearml

clearml.browser_login()

Después de ejecutar este script, tendrás que iniciar sesión en tu cuenta de ClearML desde el navegador y autenticar la sesión.

TensorBoard#

TensorBoard es un conjunto de herramientas de visualización para TensorFlow. Te permite visualizar tu grafo de TensorFlow, representar métricas cuantitativas sobre la ejecución del grafo y mostrar datos adicionales, como las imágenes que lo atraviesan.

Para usar TensorBoard en Google Colab:

Ejemplo
%load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Para usar TensorBoard localmente, ejecuta el siguiente comando y consulta los resultados en localhost:6006.

Ejemplo
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Esto cargará TensorBoard y lo dirigirá al directorio donde se guardan los registros de entrenamiento.

Una vez configurado el registrador, puedes continuar con el entrenamiento del modelo. Todas las métricas de entrenamiento se registrarán automáticamente en la plataforma que hayas elegido. Puedes consultar estos registros para supervisar el rendimiento del modelo a lo largo del tiempo, comparar distintos modelos e identificar aspectos que mejorar.

Qué hacer a continuación#

Valida tu modelo entrenado con datos reservados para comprobar su precisión en condiciones reales y, después, expórtalo a ONNX, TensorRT u otro formato de implementación. ¿Vas a entrenar con tus propios datos en lugar de COCO8? Dales formato primero con la guía de conjuntos de datos.

Preguntas frecuentes#

  • Sí. El entrenamiento en la nube de Ultralytics Platform incluye créditos gratuitos para empezar. Sube tu conjunto de datos, elige un modelo y una GPU, y entrena directamente desde el navegador.

  • Para entrenar un modelo de detección de objetos con Ultralytics YOLO26, puedes usar la API de Python o la CLI. A continuación se muestra un ejemplo de cada opción:

    Ejemplo de entrenamiento con una sola GPU y con CPU
    from ultralytics import YOLO
    
    # Cargar un modelo
    model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)
    
    # Entrenar el modelo
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Para obtener más información, consulta la sección Ajustes de entrenamiento.

  • Entre las principales características del modo Train de Ultralytics YOLO26 se incluyen:

    • Descarga automática de conjuntos de datos: descarga automáticamente conjuntos de datos estándar como COCO, VOC e ImageNet.
    • Compatibilidad con varias GPU: amplía el entrenamiento a varias GPU para procesarlo más rápido.
    • Configuración de hiperparámetros: personaliza los hiperparámetros mediante archivos YAML o argumentos de la CLI.
    • Visualización y supervisión: seguimiento en tiempo real de las métricas de entrenamiento para obtener información más útil.

    Estas funciones hacen que el entrenamiento sea eficiente y se pueda adaptar a tus necesidades. Para obtener más información, consulta la sección Características principales del modo Train.

  • Para reanudar el entrenamiento desde una sesión interrumpida, establece el argumento resume en True y especifica la ruta al último punto de control guardado.

    Ejemplo de reanudación del entrenamiento
    from ultralytics import YOLO
    
    # Cargar el modelo entrenado parcialmente
    model = YOLO("path/to/last.pt")
    
    # Reanudar el entrenamiento
    results = model.train(resume=True)

    Consulta la sección sobre cómo reanudar entrenamientos interrumpidos para obtener más información.

  • Hay un desequilibrio de clases cuando algunas clases tienen muchos menos ejemplos que otras en los datos de entrenamiento. Esto puede hacer que el modelo tenga un rendimiento deficiente con las clases poco frecuentes. Ultralytics YOLO admite la ponderación de clases mediante el argumento cls_pw para abordar este problema.

    El argumento cls_pw controla el grado de ponderación de clases según la frecuencia inversa de cada clase:

    • cls_pw=0.0 (valor predeterminado): desactiva la ponderación de clases
    • cls_pw=1.0: aplica una ponderación completa según la frecuencia inversa
    • Los valores entre 0.0 y 1.0 proporcionan una ponderación parcial para desequilibrios moderados

    Los pesos de clase se calculan como (1.0 / class_counts) ^ cls_pw y se normalizan para que su media sea igual a 1.0.

    Entrenamiento con un conjunto de datos desequilibrado
    from ultralytics import YOLO
    
    # Cargar un modelo preentrenado
    model = YOLO("yolo26n.pt")
    
    # Entrenar con ponderación completa de clases para datos muy desequilibrados
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
    
    # O usar ponderación parcial (0.25) para un desequilibrio moderado
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
    Consejo

    Empieza con cls_pw=0.25 para conjuntos de datos moderadamente desequilibrados y aumenta el valor a 1.0 si las clases poco frecuentes siguen teniendo un rendimiento deficiente. Puedes consultar los pesos de clase calculados en los registros de entrenamiento para verificar la distribución de pesos.

  • Sí, Ultralytics YOLO26 admite el entrenamiento en chips Apple silicon mediante el framework Shaders de rendimiento de Metal (MPS). Especifica 'mps' como dispositivo de entrenamiento.

    Ejemplo de entrenamiento con MPS
    from ultralytics import YOLO
    
    # Cargar un modelo preentrenado
    model = YOLO("yolo26n.pt")
    
    # Entrenar el modelo en un chip Apple silicon (M1/M2/M3/M4)
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

    Para obtener más información, consulta la sección Entrenamiento con Apple Silicon y MPS.

  • Ultralytics YOLO26 te permite configurar diversos ajustes de entrenamiento mediante argumentos, como el tamaño del lote, la tasa de aprendizaje, las épocas y otros. Aquí tienes un breve resumen:

    ArgumentoPredeterminadoDescripción
    modelNoneRuta al archivo del modelo que se va a entrenar.
    dataNoneRuta al archivo YAML del conjunto de datos (p. ej., coco8.yaml) o un directorio o nombre de conjunto de datos (p. ej., imagenet10) para clasificación.
    epochs100Número total de épocas de entrenamiento.
    batch16Tamaño del lote, que se puede ajustar con un valor entero o en modo automático.
    imgsz640Tamaño objetivo de las imágenes para el entrenamiento.
    deviceNoneDispositivo o dispositivos para el entrenamiento, como cpu, 0, 0,1 o mps.
    saveTrueActiva el guardado de los puntos de control del entrenamiento y de los pesos del modelo final.

    Para obtener una guía detallada sobre los ajustes de entrenamiento, consulta la sección Ajustes de entrenamiento.

Comentarios