Ultralytics YOLO27:

Entrenamiento de modelos con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introducción#

Entrenar un modelo de aprendizaje profundo implica introducirle datos y ajustar sus parámetros para que pueda hacer predicciones precisas. El modo de entrenamiento en Ultralytics YOLO26 está diseñado para un entrenamiento eficaz y eficiente de modelos de detección de objetos, utilizando plenamente las capacidades del hardware moderno. Esta guía tiene como objetivo cubrir todos los detalles que necesitas para empezar a entrenar tus propios modelos utilizando el conjunto robusto de características de YOLO26. Si aún no has instalado Ultralytics, empieza con la guía de inicio rápido.

Consulta la vista previa inédita de YOLO27 para ver ejemplos de entrenamiento planificados.



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

¿Por qué elegir Ultralytics YOLO para el entrenamiento?#

Aquí tienes algunas razones convincentes para optar por el modo de entrenamiento de YOLO26:

  • Eficiencia: Saca el máximo partido a tu hardware, ya sea que estés en una configuración de una sola GPU o escalando a través de múltiples GPU.
  • Versatilidad: Entrena en conjuntos de datos personalizados además de los disponibles fácilmente como COCO, VOC e ImageNet.
  • Fácil de usar: Interfaces CLI y Python sencillas pero potentes para una experiencia de entrenamiento directa.
  • Flexibilidad de hiperparámetros: Una amplia gama de hiperparámetros personalizables para afinar el rendimiento del modelo. Para un control más profundo, puedes personalizar el entrenador mismo.
  • 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 puntos de control.

Características clave del modo de entrenamiento#

Las siguientes son algunas características notables del modo de entrenamiento de YOLO26:

  • Descarga automática de conjuntos de datos: Las configuraciones de conjuntos de datos con una fuente de descarga se descargan automáticamente en el primer uso, p. ej., yolo train data=coco8.yaml. Consulta la descripción general de conjuntos de datos para ver los formatos y conjuntos de datos compatibles.
  • Soporte multiprocesamiento de GPU: Escala tus esfuerzos de entrenamiento sin problemas a través de múltiples GPU para acelerar el proceso.
  • Configuración de hiperparámetros: La opción de modificar hiperparámetros a través de 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 mejores conocimientos.

Ejemplos de uso#

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

Error de multiprocesamiento en Windows

En Windows, es posible que recibas un error RuntimeError al iniciar el entrenamiento como un script. Añade un bloque if __name__ == "__main__": antes de tu código de entrenamiento para resolverlo.

Ejemplo de entrenamiento con una sola GPU y CPU

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

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Entrenamiento con múltiples GPU#

El entrenamiento con múltiples GPU permite un uso más eficiente de los recursos de hardware disponibles al distribuir la carga de entrenamiento en múltiples GPU. Esta característica está disponible tanto a través de la API de Python como de la interfaz de línea de comandos. Para habilitar el entrenamiento con múltiples GPU, especifica los ID de los dispositivos GPU que deseas utilizar.

Ejemplo de entrenamiento con múltiples GPU

Para entrenar con 2 GPU, dispositivos CUDA 0 y 1, utiliza los siguientes comandos. Amplía a GPU adicionales según sea necesario.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Soporte multiprocesamiento de GPU en Windows

El entrenamiento con múltiples GPU no funciona en Windows con los binarios oficiales de PyTorch para torch>=2.4. Ultralytics inicia DDP a través de torch.distributed.run, cuyo paso de cita construye un TCPStore que ha tenido por defecto el backend libuv desde PyTorch 2.4, y los binarios oficiales de Windows se compilan sin libuv. El entrenamiento se sale inmediatamente con:

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

Configurar USE_LIBUV=0 no resuelve esto, porque la cita construye el TCPStore directamente y esa ruta de código nunca lee la variable. Entrena en Linux o WSL2 para usar múltiples GPU, o entrena en una sola GPU con device=0 en Windows.

Entrenamiento con múltiples GPU con código personalizado

Cuando especificas múltiples dispositivos (p. ej., device=[0, 1]), Ultralytics genera internamente una nueva instancia de entrenador y ejecuta torch.distributed.run bajo el capó. Esto funciona sin problemas para el uso estándar de CLI y scripts de Python sin modificar.

Sin embargo, si tu script contiene componentes personalizados —como un entrenador, validador, conjunto de datos o canalización de aumento personalizados—, estos objetos no se pueden serializar ni transferir automáticamente a los subprocesos de DDP. En este caso, debes iniciar tu 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 ROCm con la sintaxis estándar device=0 o device=cuda:0. Consulta la guía de integración de AMD para ver la instalación y el estado actual de compatibilidad con MIGraphX, DirectML y Ryzen AI NPU.

El entrenamiento con GPU Intel utiliza device=xpu:0, o múltiples ID de XPU con una compilación de PyTorch que proporcione XCCL.

Entrenamiento con NPU Huawei Ascend#

Ultralytics admite el entrenamiento y la validación en NPU Huawei Ascend a través de torch_npu. Instala versiones mutuamente compatibles de CANN, PyTorch y torch_npu siguiendo la guía de instalación de Ascend Extension for PyTorch, y luego carga el entorno de CANN antes de iniciar Ultralytics:

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

model = YOLO("yolo26n.pt")

# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Las características de entrenamiento estándar, que incluyen AMP, validación, puntos de control y reanudación, utilizan la NPU activa. AutoBatch está disponible para el entrenamiento en una sola NPU, mientras que múltiples ID de NPU inician el entrenamiento distribuido a través de HCCL. Consulta la guía de integración de Huawei Ascend para la exportación y el despliegue del modelo después del entrenamiento.

Entrenamiento con GPU inactiva#

El entrenamiento con GPU inactiva permite la selección automática de las GPU menos utilizadas en sistemas con múltiples GPU, optimizando el uso de recursos sin selección manual de GPU. Esta característica identifica las GPU disponibles basándose en las métricas de utilización y la disponibilidad de VRAM.

Ejemplo de entrenamiento con GPU inactiva

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

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

El algoritmo de selección automática prioriza las GPU con:

  1. Porcentajes de utilización actual más bajos
  2. Mayor memoria disponible (VRAM libre)
  3. Menor temperatura y consumo de energía

Esta característica es especialmente valiosa en entornos de computación compartida o al ejecutar múltiples trabajos de entrenamiento en diferentes modelos. Se adapta automáticamente a las condiciones cambiantes del sistema, garantizando una asignación óptima de recursos sin intervención manual.

Entrenamiento con MPS de Apple Silicon#

Con el soporte para los chips Apple Silicon integrado en los modelos de Ultralytics YOLO, ahora es posible entrenar tus modelos en dispositivos que utilicen el potente marco de trabajo Metal Performance Shaders (MPS). MPS ofrece una forma de alto rendimiento de ejecutar tareas de computación y procesamiento de imágenes en el silicio personalizado de Apple.

Para habilitar el entrenamiento en chips Apple Silicon, debes especificar 'mps' como tu dispositivo al iniciar el proceso de entrenamiento. A continuación se muestra un ejemplo de cómo podrías hacer esto en Python y a través de la línea de comandos:

Ejemplo de entrenamiento con MPS
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 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, esto permite un procesamiento más eficiente de las tareas de entrenamiento. Para obtener una guía más detallada y opciones de configuración avanzada, consulta la documentación de PyTorch MPS.

Reanudación de entrenamientos interrumpidos#

Reanudar el entrenamiento desde un estado guardado previamente es una característica crucial al trabajar con modelos de aprendizaje profundo. Esto puede resultar útil en varios escenarios, como cuando el proceso de entrenamiento se ha interrumpido inesperadamente, o cuando deseas continuar entrenando un modelo con nuevos datos o durante más épocas.

Cuando se reanuda el entrenamiento, Ultralytics YOLO carga los pesos desde el último modelo guardado y también restaura el estado del optimizador, el programador de learning rate, el número de época y el conjunto de datos. Esto te permite continuar el proceso de entrenamiento sin problemas desde donde se quedó. Pasa un data= explícito junto con resume para continuar con un conjunto de datos diferente en lugar del del punto de control.

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

A continuación se muestra un ejemplo de cómo reanudar un entrenamiento interrumpido utilizando Python y a través de la línea de comandos:

Ejemplo de reanudación del entrenamiento
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

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

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

Ajustes de entrenamiento#

Los ajustes de entrenamiento para los modelos YOLO abarcan varios hiperparámetros y configuraciones utilizados durante el proceso de entrenamiento. Estos ajustes influyen en el rendimiento, la velocidad y la precisión del modelo. Los ajustes de entrenamiento clave incluyen el tamaño de lote, la tasa de aprendizaje, el impulso y la caída de peso. 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 de entrenamiento. El ajuste cuidadoso y la experimentación con estos ajustes son cruciales para optimizar el rendimiento.

Optimizador MuSGD#

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

Se recomienda para ejecuciones de entrenamiento de YOLO26 más largas 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 (remodelados a 2D) reciben la actualización de estilo Muon junto con SGD, mientras que todos los demás parámetros, como los pesos de normalización de lotes y los términos de sesgo, permanecen en SGD estándar.

Cuando se utiliza optimizer=auto, Ultralytics selecciona automáticamente MuSGD para ejecuciones de entrenamiento más largas (típicamente cuando las iteraciones son > 10000). Para ejecuciones más cortas, el entrenador vuelve a AdamW.

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 una ruta a un modelo preentrenado .pt o a un archivo de configuración .yaml. Esencial para definir la estructura del modelo o inicializar los pesos.
datastrNoneRuta al YAML del conjunto de datos (por ejemplo, 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. La clasificación requiere un directorio del conjunto de datos o el nombre de un conjunto de datos integrado (por ejemplo, imagenet10).
epochsint100Número total de épocas de entrenamiento. Cada época representa un recorrido completo por todo el conjunto de datos. Ajustar este valor puede afectar a la duración del entrenamiento y al rendimiento del modelo.
timefloatNoneTiempo máximo de entrenamiento en horas. Si se establece, anula el argumento epochs y permite que el entrenamiento se detenga automáticamente una vez transcurrida la duración especificada. Resulta útil en escenarios de entrenamiento con limitaciones de tiempo.
patienceint100Número de épocas que se deben esperar sin mejoras en las métricas de validación antes de detener prematuramente el entrenamiento. Ayuda a evitar el sobreajuste al detener el entrenamiento cuando el rendimiento se estabiliza.
batchint o float16Tamaño del lote, con tres modos: establecerlo como un entero (por ejemplo, batch=16), modo automático para utilizar el 60 % de la memoria de la GPU (batch=-1) o modo automático con una fracción de uso especificada (batch=0.70).
imgszint640Tamaño objetivo de la imagen para el entrenamiento. Las imágenes se redimensionan a cuadrados cuyos lados tienen el valor especificado (si rect=False), conservando la relación de aspecto para los modelos YOLO, pero no para RT-DETR. 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. Resulta ú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. Resulta útil para guardar modelos intermedios durante sesiones de entrenamiento prolongadas.
cacheboolFalseActiva la caché de las imágenes del conjunto de datos en memoria (True/ram), en disco (disk) o la desactiva (False). Mejora la velocidad del entrenamiento al reducir la E/S de disco, a costa de aumentar el uso de memoria.
deviceint o str o listNoneEspecifica el dispositivo o dispositivos de cálculo para el entrenamiento: una única 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), o 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 la carga de datos (por RANK en el entrenamiento con varias GPU). Influye en la velocidad del preprocesamiento de datos y de su suministro al modelo, especialmente en configuraciones con varias GPU.
projectstrNoneNombre del directorio del proyecto donde se guardan los resultados del entrenamiento. Permite almacenar de forma organizada distintos experimentos.
namestrNoneNombre de la ejecución de entrenamiento. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los registros y resultados del entrenamiento.
exist_okboolFalseSi es True, permite sobrescribir un directorio de proyecto/nombre existente. Resulta útil para realizar experimentos iterativos sin tener que borrar manualmente los resultados anteriores.
save_dirstrNoneEspecifica el directorio exacto donde se guardan los resultados de la ejecución, anulando la combinación project/name. La ruta se utiliza tal cual, sin incrementos automáticos, por lo que las ejecuciones consecutivas reutilizan el mismo directorio.
pretrainedbool o strTrueDetermina si el entrenamiento comienza a partir de pesos preentrenados. Puede ser un valor booleano o una ruta de cadena a los pesos que se cargarán. pretrained=False entrena a partir de pesos inicializados aleatoriamente, manteniendo la arquitectura del modelo.
cls_remapboolTrueAl ajustar el modelo entre distintos conjuntos de datos, copia las filas de la cabeza de clasificación preentrenada al nuevo modelo cuando coinciden los nombres de las clases, de modo que las clases coincidentes conserven el sesgo aprendido y sus pesos cuando el ancho de la cabeza no cambie. Se aplica tanto si el número de clases difiere como si coincide pero cambia el orden de las clases.
optimizerstr'auto'Elección del optimizador para el entrenamiento. Las opciones 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 estabilidad de la convergencia.
seedint0Establece la semilla aleatoria del entrenamiento para garantizar la reproducibilidad de los resultados entre ejecuciones con las mismas configuraciones.
deterministicboolTrueFuerza el uso de algoritmos deterministas, lo que garantiza la reproducibilidad, pero puede afectar al rendimiento y a la velocidad debido a la restricción de los algoritmos no deterministas.
verboseboolTrueActiva una salida detallada durante el entrenamiento, mostrando barras de progreso, métricas por época e información adicional del entrenamiento en la consola.
single_clsboolFalseTrata todas las clases de los conjuntos de datos multiclase como una sola clase durante el entrenamiento. Resulta útil para tareas de clasificación binaria o cuando el objetivo es centrarse en la presencia de objetos en lugar de en su clasificación.
classeslist[int]NoneEspecifica una lista de ID de clase con los que se entrenará. Resulta útil para filtrar clases y centrarse únicamente en algunas durante el entrenamiento.
rectboolFalseActiva la estrategia de relleno mínimo: las imágenes de un lote reciben el relleno 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 (por ejemplo, 0.25 -> 0.75x a 1.25x), redondeando a múltiplos del stride del modelo; 0.0 desactiva el entrenamiento multiescala.
cos_lrboolFalseUtiliza un planificador de la tasa de aprendizaje cosenoidal, ajustando la tasa de aprendizaje 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 de mosaico durante las últimas N épocas para estabilizar el entrenamiento antes de completarlo. Establecerlo en 0 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 época, y continúa el entrenamiento sin interrupciones.
ampbool o strTrueEstablece la precisión del entrenamiento: True o "fp16" utilizan FP16, "bf16" utiliza BF16 en dispositivos CUDA compatibles, y False o "fp32" utilizan FP32.
quantizeint o strNoneConfigúralo en 8 (o "int8") para el entrenamiento consciente de la cuantización (QAT) con INT8, que ajusta los pesos con cuasi-cuantización en el bucle para que los pesos toleren la exportación a INT8. Consulta la página sobre entrenamiento consciente de la cuantización.
fractionfloat, int o list1.0Subconjunto del conjunto de datos como proporción/recuento o lista [train, val, test]. 1 significa la división completa, los enteros superiores a 1 son recuentos de imágenes, y solo la entrada de prueba opcional acepta 0/0.0 para indicar ninguno. Las listas de dos elementos mantienen la prueba completa.
profileboolFalseActiva la creación de perfiles de velocidad de ONNX y TensorRT durante el entrenamiento, lo que resulta ú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), reduciendo el número de parámetros entrenables. Resulta útil para el ajuste fino o el aprendizaje por transferencia.
lr0float0.01Tasa de aprendizaje inicial (es decir, SGD=1E-2, Adam=1E-3). Ajustar este valor es fundamental para el proceso de optimización, ya que influye en la rapidez con la que se actualizan los pesos del modelo.
lrffloat0.01Tasa de aprendizaje final como fracción de la tasa inicial = (lr0 * lrf), utilizada junto con los planificadores 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 los gradientes anteriores en 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, durante las cuales esta aumenta gradualmente desde un valor bajo hasta la tasa de aprendizaje inicial para estabilizar el entrenamiento al principio.
warmup_momentumfloat0.8Momentum inicial de 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, lo que ayuda a estabilizar el entrenamiento del modelo en las primeras épocas. Se establece automáticamente en 0.0 con el optimizer='auto' predeterminado, por lo que debes indicar explícitamente un optimizador para utilizarla.
distill_modelstrNoneRuta a un punto de control del modelo profesor (por ejemplo, yolo26x.pt) para la destilación de conocimiento. Cuando se establece, el modelo alumno se entrena con una pérdida de destilación adicional guiada por el profesor congelado.
disfloat6.0Peso de la pérdida de destilación añadida a las pérdidas de detección estándar. Los valores más altos aumentan la influencia de la guía de características del profesor.
boxfloat7.5Peso del componente de pérdida de las cajas en la función de pérdida, que influye en la importancia otorgada a la predicción precisa de las coordenadas de la caja delimitadora.
clsfloat0.5Peso de la pérdida de clasificación en la función de pérdida total, que afecta a la importancia de predecir correctamente la clase con respecto a otros componentes.
cls_pwfloat0.0Potencia de la ponderación de clases para gestionar el desequilibrio entre clases mediante la frecuencia inversa de las clases. 0.0 desactiva la ponderación de clases, mientras que 1.0 aplica la ponderación de frecuencia inversa completa. Los valores entre 0 y 1 proporcionan una ponderación parcial.
dflfloat1.5Peso del término de regresión de distancia de las cajas: pérdida focal de distribución (DFL) cuando la cabeza de detección utiliza reg_max > 1; una pérdida L1 sobre las distancias normalizadas de las cajas en YOLO26 sin DFL (reg_max: 1).
posefloat12.0Peso de la pérdida de pose en los modelos entrenados para la estimación de pose, que influye en la importancia otorgada a la predicción precisa de 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 de log-verosimilitud residual 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 angular en los modelos obb, que afecta a la precisión de las predicciones de los ángulos de las cajas delimitadoras orientadas.
dlogfloat1.0Peso de la pérdida logarítmica invariante a la escala (SILog) en los modelos de estimación de profundidad, 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 fomenta límites de superficie más nítidos.
dlamfloat1.0Factor de enfoque de la varianza de la pérdida SILog en los modelos de estimación de profundidad. 1.0 hace que la pérdida sea completamente invariante a la escala, mientras que 0.0 la reduce a un RMSE logarítmico simple.
nbsint64Tamaño de lote nominal para la normalización de la pérdida.
overlap_maskboolTrueDetermina si las máscaras de objetos deben combinarse en una única máscara para el entrenamiento o mantenerse separadas para cada objeto. En caso de solapamiento, la máscara más pequeña se superpone a la más grande durante la combinación.
mask_ratioint4Proporción de submuestreo de las máscaras de segmentación, que afecta a la resolución de las máscaras utilizadas durante el entrenamiento.
dropoutfloat0.0Tasa de dropout para la regularización en tareas de clasificación, que evita el sobreajuste al omitir unidades aleatoriamente durante el entrenamiento.
valboolTrueActiva la validación durante el entrenamiento, lo que permite evaluar periódicamente el rendimiento del modelo en un conjunto de datos independiente.
nmsbool, opcionalNoneSelecciona la cabeza de inferencia utilizada para la validación de épocas, la selección de puntos de control y la parada temprana. None o True utiliza uno a muchos con NMS; False utiliza 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, proporcionando una visión visual del rendimiento del modelo y de la evolución del aprendizaje.
compilebool o strFalseHabilita la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True"default", False → deshabilita la función, 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 habilita automáticamente en CUDA con PyTorch 1.11 o posterior, excepto en Windows, donde se midió que es más lento. False lo deshabilita y True lo solicita explícitamente. PyTorch 1.10 y anterior, CPU y MPS siguen usando NCHW de forma predeterminada.
max_detint300Detecciones máximas por imagen durante la validación del entrenamiento. Para detect, segment, pose y OBB, el valor predeterminado de 300 aumenta hasta alcanzar el recuento de objetos etiquetados de entrenamiento o validación más alto solo cuando ese recuento supera 300; otros valores se mantienen fijos y superar el límite genera una advertencia.
Nota sobre los ajustes del tamaño del lote

El argumento batch se puede configurar de tres maneras:

  • Tamaño de lote fijo: Establece un valor entero (p. ej., batch=16), especificando el número de imágenes por lote directamente.
  • Modo automático (60 % de memoria de GPU): Utiliza batch=-1 para ajustar automáticamente el tamaño de lote para una utilización de memoria CUDA de aproximadamente el 60 %.
  • Modo automático con fracción de utilización: Establece un valor de fracción (p. ej., batch=0.70) para ajustar el tamaño de lote en función de la fracción especificada de uso de memoria de GPU.
  • Reintento automático por 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 de lote y lo vuelve a intentar (hasta 3 veces). Esto solo se aplica al entrenamiento con una sola GPU; el entrenamiento con múltiples GPU (DDP) generará el error inmediatamente.
  • No se ha encontrado un ajuste válido: Si ningún tamaño de lote candidato produce un perfil utilizable, AutoBatch genera un RuntimeError claro en lugar de recurrir silenciosamente a un valor predeterminado no relacionado.

Ajustes de aumento e hiperparámetros#

Las técnicas de aumento son esenciales para mejorar la solidez y el rendimiento de los modelos YOLO al introducir variabilidad en los datos de entrenamiento, ayudando a que el modelo generalice mejor ante datos no vistos. La siguiente tabla describe el propósito y el efecto de cada argumento de aumento:

ArgumentoTipoPredeterminadoTareas compatiblesRangoDescripció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, introduciendo 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, afectando a la intensidad de los colores. Resulta ú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, ayudando al modelo a funcionar correctamente 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, mejorando la capacidad del modelo para reconocer objetos con distintas orientaciones.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Traslada la imagen horizontal y verticalmente en una fracción de su tamaño, ayudando 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 ganancia, simulando objetos situados a distintas distancias de la cámara.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Inclina la imagen en el grado especificado, imitando 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, mejorando la capacidad del modelo para comprender objetos en un espacio 3D.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Voltea la imagen al revés con la probabilidad especificada, aumentando la variabilidad de los datos sin afectar a las características del objeto.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Voltea la imagen de izquierda a derecha con la probabilidad especificada, lo que resulta útil para aprender objetos simétricos y aumentar la diversidad del conjunto de datos.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Cambia los canales de la imagen de RGB a BGR con la probabilidad especificada, lo que resulta útil para aumentar la robustez frente a un orden incorrecto de los canales.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Combina cuatro imágenes de entrenamiento en una, simulando distintas composiciones de escena e interacciones entre objetos. Es muy eficaz para comprender escenas complejas.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Combina dos imágenes y sus etiquetas para crear una imagen compuesta. Mejora la capacidad de generalización del modelo al introducir ruido en las etiquetas y variabilidad visual.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Combina partes de dos imágenes para crear una mezcla parcial manteniendo regiones diferenciadas. Mejora la robustez del modelo al crear escenarios de oclusión.
copy_pastefloat0segment, 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, obb-Especifica la estrategia copy-paste que se utilizará. Las opciones incluyen 'flip' y 'mixup'.
auto_augmentstrrandaugmentclassify-Aplica una política de aumentación predefinida ('randaugment', 'autoaugment' o 'augmix') para mejorar el rendimiento del modelo mediante 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 una aumentación de datos avanzada (solo API de Python). Acepta una lista de objetos de transformación para necesidades de aumentación especializadas.

Estos ajustes se pueden modificar para cumplir con los requisitos específicos del conjunto de datos y la tarea en cuestión. Experimentar con diferentes valores puede ayudar a encontrar la estrategia de aumento óptima que conduzca al mejor rendimiento del modelo.

Información

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

Registro#

Las métricas de entrenamiento, los gráficos y los puntos de control se escriben siempre en el directorio de ejecución, y Ultralytics también los transmite a cualquier rastreador de experimentos que tengas instalado y habilitado: Comet, ClearML, TensorBoard, MLflow, Weights & Biases y DVCLive. Cada registrador se activa o desactiva a través de la configuración de Ultralytics, por ejemplo yolo settings tensorboard=True. Las tres configuraciones más comunes se muestran a continuación.

Comet#

Comet es una plataforma que permite a los científicos de datos y desarrolladores realizar un seguimiento, comparar, explicar y optimizar experimentos y modelos. Ofrece funcionalidades como métricas en tiempo real, diferencias de código y seguimiento de hiperparámetros.

Para utilizar Comet:

Ejemplo
# pip install comet_ml
import comet_ml

comet_ml.init()

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

ClearML#

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

Para utilizar ClearML:

Ejemplo
# pip install clearml
import clearml

clearml.browser_login()

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

TensorBoard#

TensorBoard es un kit de herramientas de visualización para TensorFlow. Te permite visualizar tu grafo de TensorFlow, trazar métricas cuantitativas sobre la ejecución de tu grafo y mostrar datos adicionales como imágenes que pasan a través de él.

Para utilizar TensorBoard en Google Colab:

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

Para utilizar TensorBoard localmente, ejecuta el siguiente comando y visualiza 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 tus registros de entrenamiento.

Después de configurar tu registrador, puedes proceder con el entrenamiento de tu modelo. Todas las métricas de entrenamiento se registrarán automáticamente en tu plataforma elegida, y puedes acceder a estos registros para supervisar el rendimiento de tu modelo a lo largo del tiempo, comparar diferentes modelos e identificar áreas de mejora.

¿Y ahora qué?#

Valida tu modelo entrenado frente a datos retenidos para comprobar su precisión en el mundo real, luego expórtalo a ONNX, TensorRT u otro formato de despliegue. ¿Estás entrenando con tus propios datos en lugar de COCO8? Formatea primero los datos 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, selecciona un modelo y una GPU, y entrena directamente desde el navegador.

  • Para entrenar un modelo de detección de objetos utilizando Ultralytics YOLO26, puedes utilizar la API de Python o la CLI. A continuación se muestra un ejemplo para ambos:

    Ejemplo de entrenamiento con una sola GPU y CPU
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
    
    # Train the model
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Para obtener más detalles, consulta la sección de ajustes de entrenamiento.

  • Las características clave del modo de entrenamiento de Ultralytics YOLO26 incluyen:

    • Descarga automática de conjuntos de datos: Descarga automáticamente conjuntos de datos estándar como COCO, VOC e ImageNet.
    • Soporte multiprocesamiento de GPU: Escala el entrenamiento a través de múltiples GPU para un procesamiento más rápido.
    • Configuración de hiperparámetros: Personaliza los hiperparámetros a través de archivos YAML o argumentos de CLI.
    • Visualización y supervisión: Seguimiento en tiempo real de las métricas de entrenamiento para obtener mejores conocimientos.

    Estas características hacen que el entrenamiento sea eficiente y personalizable a tus necesidades. Para obtener más detalles, consulta la sección de características clave del modo de entrenamiento.

  • Para reanudar el entrenamiento de una sesión interrumpida, configura 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
    
    # Load the partially trained model
    model = YOLO("path/to/last.pt")
    
    # Resume training
    results = model.train(resume=True)

    Consulta la sección sobre Reanudación de entrenamientos interrumpidos para obtener más información.

  • El desequilibrio de clases ocurre cuando algunas clases tienen significativamente menos ejemplos que otras en tus datos de entrenamiento. Esto puede hacer que el modelo tenga un rendimiento deficiente en las clases raras. Ultralytics YOLO admite la ponderación de clases a través del argumento cls_pw para solucionar este problema.

    El argumento cls_pw controla la potencia de la ponderación de clases en función de la frecuencia inversa de las clases:

    • cls_pw=0.0 (predeterminado): Desactiva la ponderación de clases
    • cls_pw=1.0: Aplica una ponderación de frecuencia inversa completa
    • Valores entre 0.0 y 1.0: Proporcionan una ponderación parcial para un desequilibrio moderado

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

    Entrenamiento en conjuntos de datos desequilibrados
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n.pt")
    
    # Train with full class weighting for severely imbalanced data
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
    
    # Or use partial weighting (0.25) for moderate imbalance
    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 a 1.0 si las clases raras siguen rindiendo mal. Puedes comprobar los pesos de clase calculados en los registros de entrenamiento para verificar la distribución de los pesos.

  • Sí, Ultralytics YOLO26 admite el entrenamiento en chips Apple silicon utilizando el marco de trabajo Metal Performance Shaders (MPS). Especifica 'mps' como tu dispositivo de entrenamiento.

    Ejemplo de entrenamiento con MPS
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n.pt")
    
    # Train the model on Apple silicon chip (M1/M2/M3/M4)
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

    Para obtener más detalles, consulta la sección de Entrenamiento MPS en Apple Silicon.

  • Ultralytics YOLO26 te permite configurar una variedad de ajustes de entrenamiento como el tamaño del lote, la tasa de aprendizaje, las épocas y más a través de argumentos. Aquí tienes un breve resumen:

    ArgumentoPredeterminadoDescripción
    modelNoneRuta al archivo del modelo para el entrenamiento.
    dataNoneRuta al YAML del conjunto de datos (p. ej., coco8.yaml), o un directorio o nombre de conjunto de datos (p. ej., imagenet10) para la clasificación.
    epochs100Número total de épocas de entrenamiento.
    batch16Tamaño del lote, ajustable como número entero o en modo automático.
    imgsz640Tamaño de imagen objetivo para el entrenamiento.
    deviceNoneDispositivo(s) de cálculo para el entrenamiento como cpu, 0, 0,1 o mps.
    saveTruePermite guardar puntos de control de entrenamiento y los pesos finales del modelo.

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

Comentarios