Entrenamiento de modelos con Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

Introducción

Entrenar un modelo de deep learning implica introducirle datos y ajustar sus parámetros para que pueda realizar predicciones precisas. El modo de entrenamiento (Train) en Ultralytics YOLO26 está diseñado para lograr un entrenamiento efectivo y eficiente de modelos de detección de objetos, aprovechando al máximo las capacidades del hardware moderno. Esta guía tiene como objetivo cubrir todos los detalles que necesitas para comenzar a entrenar tus propios modelos utilizando el robusto conjunto de funciones de YOLO26.



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: Aprovecha al máximo tu hardware, tanto si estás en una configuración de una sola GPU como si escalas en múltiples GPU.
  • Versatilidad: Entrena con conjuntos de datos personalizados además de los disponibles como COCO, VOC e ImageNet.
  • Fácil de usar: Interfaces CLI y Python sencillas pero potentes para una experiencia de entrenamiento directa.
  • Flexibilidad en hiperparámetros: Una amplia gama de hiperparámetros personalizables para ajustar el rendimiento del modelo. Para un control más profundo, puedes personalizar el entrenador tú 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 (checkpoints).

Características clave del modo de entrenamiento (Train)

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

  • Descarga automática de conjuntos de datos: Los conjuntos de datos estándar como COCO, VOC e ImageNet se descargan automáticamente la primera vez que se usan.
  • Soporte Multi-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 los hiperparámetros a través de archivos de configuración YAML o argumentos de CLI.
  • Visualización y monitoreo: Seguimiento en tiempo real de las métricas de entrenamiento y visualización del proceso de aprendizaje para obtener mejores resultados.
Consejo
  • Los conjuntos de datos de YOLO26 como COCO, VOC, ImageNet y muchos otros se descargan automáticamente en el primer uso, p. ej., yolo train data=coco.yaml

Ejemplos de uso

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

Error de procesamiento múltiple en Windows

En Windows, es posible que recibas un RuntimeError al iniciar el entrenamiento como 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 Multi-GPU

El entrenamiento Multi-GPU permite un uso más eficiente de los recursos de hardware disponibles al distribuir la carga de trabajo de entrenamiento entre varias GPU. Esta función está disponible tanto a través de la API de Python como de la interfaz de línea de comandos. Para habilitar el entrenamiento Multi-GPU, especifica los ID de los dispositivos GPU que deseas utilizar.

Ejemplo de entrenamiento Multi-GPU

Para entrenar con 2 GPU, los dispositivos CUDA 0 y 1, utiliza los siguientes comandos. Expande a más GPU 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])
Entrenamiento Multi-GPU con 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 por debajo. 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 personalizado, validador, conjunto de datos o pipeline de aumento), estos objetos no pueden ser serializados y transferidos 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

Entrenamiento con GPU inactiva

El entrenamiento con GPU inactiva permite la selección automática de las GPU menos utilizadas en sistemas Multi-GPU, optimizando el uso de recursos sin selección manual de GPU. Esta función identifica las GPU disponibles según las métricas de utilización y la disponibilidad de VRAM.

Ejemplo de entrenamiento con GPU inactiva

Para seleccionar y utilizar automáticamente la(s) GPU(s) más inactiva(s) 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. Menores porcentajes de utilización actual
  2. Mayor memoria disponible (VRAM libre)
  3. Menor temperatura y consumo de energía

Esta función es especialmente valiosa en entornos de computación compartida o cuando se ejecutan múltiples tareas de entrenamiento en diferentes modelos. Se adapta automáticamente a las condiciones cambiantes del sistema, garantizando una asignación de recursos óptima sin intervención manual.

Entrenamiento con Apple Silicon MPS

Con el soporte para los chips de Apple silicon integrado en los modelos de Ultralytics YOLO, ahora es posible entrenar tus modelos en dispositivos que utilizan el potente framework 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 de Apple silicon, debes especificar 'mps' como tu dispositivo al iniciar el proceso de entrenamiento. A continuación, tienes un ejemplo de cómo podrías hacer esto en Python y a través de la línea de comandos:

Ejemplo de entrenamiento 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 computacional de los chips de 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 avanzadas, consulta la documentación de PyTorch MPS.

Reanudación de entrenamientos interrumpidos

Reanudar el entrenamiento desde un estado guardado previamente es una función crucial cuando se trabaja con modelos de deep learning. Esto puede ser ú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 (epochs).

Cuando se reanuda el entrenamiento, Ultralytics YOLO carga los pesos del último modelo guardado y también restaura el estado del optimizador, el planificador de learning rate y el número de época. Esto te permite continuar el proceso de entrenamiento sin problemas desde donde se quedó.

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, tienes un ejemplo de cómo reanudar un entrenamiento interrumpido usando Python y a través de la línea de comandos:

Ejemplo de reanudación de 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 quedó, 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 comenzará una nueva sesión de entrenamiento.

Recuerda que los puntos de control (checkpoints) se guardan al final de cada época de forma predeterminada, o en 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

Los ajustes de entrenamiento para 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 del lote (batch size), la tasa de aprendizaje, el momento y la caída de peso (weight decay). 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. Un ajuste y experimentación cuidadosos con estos parámetros 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 de Muon ortogonalizadas pueden ayudar a estabilizar la optimización.

Solo los parámetros con param.ndim >= 2 (como los pesos convolucionales) reciben la actualización al estilo Muon junto con SGD, mientras que los parámetros de menor dimensión, como las capas de normalización por lotes (batch normalization) y los términos de sesgo, permanecen con el SGD estándar.

Cuando se utiliza optimizer=auto, Ultralytics selecciona automáticamente MuSGD para ejecuciones de entrenamiento más largas (normalmente cuando las iteraciones > 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. Es esencial para definir la estructura del modelo o inicializar los pesos.
datastrNoneRuta al archivo de configuración del conjunto de datos (por ejemplo, coco8.yaml). Este archivo contiene parámetros específicos del conjunto de datos, incluyendo rutas a los datos de entrenamiento y validación, nombres de clases y número de clases.
epochsint100Número total de épocas de entrenamiento. Cada época representa un paso completo sobre 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, permitiendo que el entrenamiento se detenga automáticamente después de la duración especificada. Es útil para escenarios de entrenamiento con limitaciones de tiempo.
patienceint100Número de épocas a esperar sin mejoras en las métricas de validación antes de detener el entrenamiento de forma temprana. Ayuda a prevenir el sobreajuste deteniendo el entrenamiento cuando el rendimiento se estanca.
batchint o float16Tamaño del lote, con tres modos: establecer como entero (por ejemplo, batch=16), modo automático para una utilización del 60 % de la memoria de la GPU (batch=-1), o modo automático con una fracción de utilización especificada (batch=0.70).
imgszint640Tamaño de imagen objetivo para el entrenamiento. Las imágenes se redimensionan a cuadrados con lados iguales al valor especificado (si rect=False), preservando la relación de aspecto para los modelos YOLO pero no para RT-DETR. Afecta a la precisión y a la complejidad computacional del modelo.
saveboolTrueHabilita el guardado de puntos de control de entrenamiento y pesos finales del modelo. Es útil para reanudar el entrenamiento o para la implementación del modelo.
save_periodint-1Frecuencia de guardado de puntos de control del modelo, especificada en épocas. Un valor de -1 deshabilita esta característica. Es útil para guardar modelos provisionales durante sesiones de entrenamiento largas.
cacheboolFalseHabilita el almacenamiento en caché de imágenes del conjunto de datos en memoria (True/ram), en disco (disk), o lo deshabilita (False). Mejora la velocidad de 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 dispositivos computacionales para el entrenamiento: una sola GPU (device=0), múltiples GPUs (device=[0,1]), CPU (device=cpu), MPS para Apple silicon (device=mps), Huawei Ascend NPU (device=npu o device=npu:0), o selección automática de la GPU más inactiva (device=-1) o múltiples GPUs inactivas (device=[-1,-1])
workersint8Número de hilos de trabajo para la carga de datos (por RANK si el entrenamiento es Multi-GPU). Influye en la velocidad del preprocesamiento de datos y en la alimentación al modelo, especialmente útil en configuraciones multi-GPU.
projectstrNoneNombre del directorio del proyecto donde se guardan los resultados del entrenamiento. Permite el almacenamiento organizado de diferentes 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. Es útil para la experimentación iterativa sin necesidad de borrar manualmente los resultados anteriores.
pretrainedbool o strTrueDetermina si se debe comenzar el entrenamiento a partir de pesos preentrenados. Puede ser un valor booleano o una ruta de cadena a los pesos a cargar. pretrained=False entrena a partir de pesos inicializados aleatoriamente manteniendo la arquitectura del modelo.
optimizerstr'auto'Elección del optimizador para el entrenamiento. Las opciones incluyen SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp o auto para la selección automática basada en la configuración del modelo. Afecta a la velocidad de convergencia y a la estabilidad.
seedint0Establece la semilla aleatoria para el entrenamiento, garantizando la reproducibilidad de los resultados entre ejecuciones con las mismas configuraciones.
deterministicboolTrueFuerza el uso de algoritmos deterministas, asegurando la reproducibilidad, pero puede afectar al rendimiento y a la velocidad debido a la restricción sobre algoritmos no deterministas.
verboseboolTrueHabilita la salida detallada durante el entrenamiento, mostrando barras de progreso, métricas por época e información adicional de entrenamiento en la consola.
single_clsboolFalseTrata todas las clases en conjuntos de datos multiclase como una única clase durante el entrenamiento. Es útil para tareas de clasificación binaria o cuando se centra en la presencia de objetos en lugar de en la clasificación.
classeslist[int]NoneEspecifica una lista de ID de clases para entrenar. Es útil para filtrar y centrarse solo en ciertas clases durante el entrenamiento.
rectboolFalseHabilita la estrategia de relleno mínimo: las imágenes en un lote se rellenan mínimamente para alcanzar un tamaño común, con el lado más largo igual a imgsz. Puede mejorar la eficiencia y la velocidad, pero podría afectar a la precisión del modelo.
multi_scalefloat0.0Varía aleatoriamente imgsz en cada lote por +/- multi_scale (por ejemplo, 0.25 -> 0.75x a 1.25x), redondeando a múltiplos del paso del modelo; 0.0 deshabilita el entrenamiento a multiescala.
cos_lrboolFalseUtiliza un programador de tasa de aprendizaje de coseno, ajustando la tasa de aprendizaje siguiendo una curva de coseno a lo largo de las épocas. Ayuda a gestionar la tasa de aprendizaje para una mejor convergencia.
close_mosaicint10Desactiva la aumentación de datos tipo mosaico en las últimas N épocas para estabilizar el entrenamiento antes de finalizar. 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 conteo de épocas, continuando el entrenamiento sin interrupciones.
ampboolTrueActiva el entrenamiento con Precisión Mixta automática (AMP), lo que reduce el uso de memoria y posiblemente acelera el entrenamiento con un impacto mínimo en la precisión.
fractionfloat1.0Especifica la fracción del conjunto de datos a utilizar para el entrenamiento. Permite entrenar con un subconjunto del conjunto completo, útil para experimentos o cuando los recursos son limitados.
profileboolFalseActiva el perfilado de velocidades de ONNX y TensorRT durante el entrenamiento, útil para optimizar el despliegue del modelo.
freezeint o listNoneCongela las primeras N capas del modelo o las capas especificadas por índice, reduciendo el número de parámetros entrenables. Útil para el ajuste fino o aprendizaje por transferencia.
lr0float0.01Tasa de aprendizaje inicial (p. ej., SGD=1E-2, Adam=1E-3). Ajustar este valor es crucial 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 una fracción de la tasa inicial = (lr0 * lrf), utilizada junto con los planificadores para ajustar la tasa de aprendizaje a lo largo del tiempo.
momentumfloat0.937Factor de momentum para SGD o beta1 para optimizadores Adam, lo que influye en la incorporación de 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 para el calentamiento de la tasa de aprendizaje, aumentando gradualmente la tasa de aprendizaje desde un valor bajo hasta la tasa inicial para estabilizar el entrenamiento desde el principio.
warmup_momentumfloat0.8Momentum inicial para la fase de calentamiento, ajustándose gradualmente al momentum establecido durante el período de calentamiento.
warmup_bias_lrfloat0.1Tasa de aprendizaje para los parámetros de sesgo (bias) durante la fase de calentamiento, ayudando a estabilizar el entrenamiento del modelo en las épocas iniciales.
boxfloat7.5Peso del componente de pérdida de caja en la función de pérdida, lo que influye en cuánto énfasis se pone en predecir con precisión las coordenadas de la caja delimitadora.
clsfloat0.5Peso de la pérdida de clasificación en la función de pérdida total, lo que afecta la importancia de la predicción correcta de la clase en relación con otros componentes.
cls_pwfloat0.0Potencia para la ponderación de clases para manejar el desequilibrio de clases utilizando la frecuencia inversa de clase. 0.0 desactiva la ponderación de clases, 1.0 aplica una ponderación completa por frecuencia inversa. Los valores entre 0 y 1 proporcionan una ponderación parcial.
dflfloat1.5Peso de la pérdida focal de distribución (DFL), utilizada en ciertas versiones de YOLO para la clasificación de grano fino.
posefloat12.0Peso de la pérdida de pose en modelos entrenados para estimación de pose, influyendo en el énfasis sobre la predicción precisa de los puntos clave de pose.
kobjfloat1.0Peso de la pérdida de objetividad de puntos clave en modelos de estimación de pose, equilibrando la confianza de detección con la precisión de la pose.
rlefloat1.0Peso de la pérdida de estimación de log-verosimilitud residual en modelos de estimación de pose, afectando la precisión de la localización de los puntos clave.
anglefloat1.0Peso de la pérdida de ángulo en modelos OBB, afectando la precisión de las predicciones de ángulo de las cajas delimitadoras orientadas.
nbsint64Tamaño de lote nominal para la normalización de la pérdida.
overlap_maskboolTrueDetermina si las máscaras de objetos deben fusionarse en una sola máscara para el entrenamiento o mantenerse separadas para cada objeto. En caso de superposición, la máscara más pequeña se superpone a la más grande durante la fusión.
mask_ratioint4Relación de submuestreo para máscaras de segmentación, que afecta la resolución de las máscaras utilizadas durante el entrenamiento.
dropoutfloat0.0Tasa de dropout para regularización en tareas de clasificación, evitando el sobreajuste al omitir aleatoriamente unidades durante el entrenamiento.
valboolTrueActiva la validación durante el entrenamiento, permitiendo la evaluación periódica del rendimiento del modelo en un conjunto de datos separado.
plotsboolTrueGenera y guarda gráficos de las métricas de entrenamiento y validación, así como ejemplos de predicción, proporcionando información visual sobre el rendimiento del modelo y el progreso del aprendizaje.
compilebool o strFalseActiva la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True"default", False → desactiva, o un modo de cadena como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Vuelve a la ejecución ansiosa (eager) con una advertencia si no es compatible.
max_detint300Especifica el número máximo de objetos conservados durante la fase de validación del entrenamiento.
Nota sobre la configuración del tamaño de lote (batch-size)

El argumento batch se puede configurar de tres formas:

  • Batch Size fijo: Establece un valor entero (por ejemplo, batch=16), especificando directamente el número de imágenes por lote.
  • Modo Auto (60% de memoria GPU): Usa batch=-1 para ajustar automáticamente el tamaño del lote para una utilización de memoria CUDA de aproximadamente el 60%.
  • Modo Auto con fracción de utilización: Establece un valor fraccionario (por ejemplo, batch=0.70) para ajustar el tamaño del lote en función de la fracción especificada de uso de memoria de la GPU.
  • Reintento automático por OOM (Out of Memory): Si se produce un error de memoria insuficiente (out-of-memory) 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 Multi-GPU (DDP) generará el error inmediatamente.

Configuraciones e hiperparámetros de aumento (Augmentation)

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

ArgumentoTipoPredeterminadoTareas admitidasRangoDescripción
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0Ajusta el tono (hue) de la imagen mediante una fracción de la rueda de colores, introduciendo variabilidad cromática. Ayuda al modelo a generalizar en diferentes condiciones de iluminación.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Altera la saturación de la imagen mediante una fracción, afectando a la intensidad de los colores. Útil para simular diferentes condiciones ambientales.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Modifica el valor (brillo) de la imagen mediante una fracción, ayudando al modelo a funcionar bien bajo diversas condiciones de iluminación.
degreesfloat0detect, segment, pose, obb0.0 - 180Rota la imagen aleatoriamente dentro del rango de grados especificado, mejorando la capacidad del modelo para reconocer objetos en diversas orientaciones.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Traslada la imagen horizontal y verticalmente mediante una fracción del tamaño de la imagen, ayudando a aprender a detectar objetos parcialmente visibles.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Escala la imagen mediante un factor de ganancia, simulando objetos a diferentes distancias de la cámara.
shearfloat0detect, segment, pose, obb-180 - +180Inclina (shear) la imagen en un grado especificado, imitando el efecto de objetos vistos desde diferentes ángulos.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001Aplica una transformación de perspectiva aleatoria a la imagen, mejorando la capacidad del modelo para comprender objetos en el espacio 3D.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Invierte la imagen verticalmente (arriba/abajo) con la probabilidad especificada, aumentando la variabilidad de los datos sin afectar a las características del objeto.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Invierte la imagen horizontalmente (izquierda/derecha) con la probabilidad especificada, útil para aprender objetos simétricos y aumentar la diversidad del conjunto de datos.
bgrfloat0detect, segment, pose, obb0.0 - 1.0Invierte los canales de la imagen de RGB a BGR con la probabilidad especificada, útil para aumentar la robustez ante un orden incorrecto de los canales.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0Combina cuatro imágenes de entrenamiento en una, simulando diferentes composiciones de escena e interacciones de objetos. Altamente eficaz para comprender escenas complejas.
mixupfloat0detect, segment, pose, obb0.0 - 1.0Fusiona dos imágenes y sus etiquetas, creando una imagen compuesta. Mejora la capacidad del modelo para generalizar al introducir ruido en las etiquetas y variabilidad visual.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Combina partes de dos imágenes, creando una mezcla parcial mientras mantiene regiones distintas. Mejora la robustez del modelo al crear escenarios de oclusión.
copy_pastefloat0segment0.0 - 1.0Copia y pega objetos en imágenes para aumentar las instancias de objetos.
copy_paste_modestrflipsegment-Specifies the copy-paste strategy to use. Options include 'flip' and 'mixup'.
auto_augmentstrrandaugmentclassify-Applies a predefined augmentation policy ('randaugment', 'autoaugment', or 'augmix') to enhance model performance through visual diversity.
erasingfloat0.4classify0.0 - 1.0Borra aleatoriamente regiones de la imagen durante el entrenamiento para animar al modelo a centrarse en características menos obvias.
augmentationslist``detect, segment, 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 ajustar 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 aumentación óptima que conduzca al mejor rendimiento del modelo.

Info

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

Registro (Logging)

Al entrenar un modelo YOLO26, puede resultarte valioso realizar un seguimiento del rendimiento del modelo a lo largo del tiempo. Aquí es donde entra en juego el registro. Ultralytics YOLO ofrece soporte para tres tipos de registradores: Comet, ClearML y TensorBoard.

Para usar un registrador, selecciónalo en el menú desplegable del fragmento de código anterior y ejecútalo. El registrador elegido se instalará e inicializará.

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. Proporciona funcionalidades 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.init()

Recuerda iniciar sesión en tu cuenta de Comet en su sitio web y obtener tu clave API. Deberá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 forma eficiente. Está diseñada para ayudar a los equipos a gestionar, ejecutar y reproducir su trabajo de ML de manera más eficiente.

Para usar 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 las imágenes que pasan por él.

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 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 la plataforma elegida, y podrás acceder a estos registros para controlar el rendimiento de tu modelo a lo largo del tiempo, comparar diferentes modelos e identificar áreas de mejora.

Preguntas frecuentes

¿Puedo entrenar sin una GPU local?

Sí. Ultralytics Platform admite el entrenamiento en la nube con créditos gratuitos para empezar. Sube tu conjunto de datos, selecciona un modelo y una GPU, y entrena directamente desde el navegador. Consulta la guía de entrenamiento en la nube para obtener más detalles.

¿Cómo entreno un modelo de detección de objetos utilizando Ultralytics YOLO26?

Para entrenar un modelo de detección de objetos utilizando Ultralytics YOLO26, puedes usar la API de Python o la CLI. A continuación, tienes un ejemplo para ambas:

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 más detalles, consulta la sección de Configuración de entrenamiento.

¿Cuáles son las características clave del modo de entrenamiento de Ultralytics YOLO26?

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 Multi-GPU: Escala el entrenamiento a través de múltiples GPUs para un procesamiento más rápido.
  • Configuración de hiperparámetros: Personaliza los hiperparámetros mediante archivos YAML o argumentos de la CLI.
  • Visualización y monitoreo: Seguimiento en tiempo real de las métricas de entrenamiento para obtener mejores perspectivas.

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

¿Cómo reanudo el entrenamiento desde una sesión interrumpida en Ultralytics YOLO26?

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 de 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 Reanudar entrenamientos interrumpidos para obtener más información.

¿Cómo entreno un modelo con un conjunto de datos desequilibrado?

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 bajo rendimiento en las clases raras. Ultralytics YOLO admite la ponderación de clases a través del argumento cls_pw para abordar este problema.

El argumento cls_pw controla el poder de ponderación de clase basado en la frecuencia inversa de clase:

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

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

Entrenamiento en un conjunto de datos desequilibrado
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 teniendo un bajo rendimiento. Puedes comprobar los pesos de clase calculados en los registros de entrenamiento para verificar la distribución de peso.

¿Puedo entrenar modelos YOLO26 en chips de silicio de Apple?

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

Ejemplo de entrenamiento 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 más detalles, consulta la sección de Entrenamiento MPS de Apple Silicon.

¿Cuáles son los ajustes de entrenamiento comunes y cómo los configuro?

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

ArgumentoPredeterminadoDescripción
modelNoneRuta al archivo del modelo para el entrenamiento.
dataNoneRuta al archivo de configuración del conjunto de datos (por ejemplo, coco8.yaml).
epochs100Número total de épocas de entrenamiento.
batch16Tamaño de lote, ajustable como entero o modo automático.
imgsz640Tamaño de imagen objetivo para el entrenamiento.
deviceNoneDispositivo(s) computacional(es) para el entrenamiento como cpu, 0, 0,1 o mps.
saveTrueHabilita el guardado de puntos de control de entrenamiento y los pesos finales del modelo.

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

Comentarios