YOLO Vision 2026:

Entrenamiento de modelos con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introducción#

Entrenar un modelo de deep learning implica suministrarle datos y ajustar sus parámetros para que pueda realizar 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, aprovechando al máximo 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 sólido conjunto de características de YOLO26. Si aún no has instalado Ultralytics, empieza con la Guía de inicio rápido.



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 elegir 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 entre varias 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 de 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 GPUs 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#

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 su primer uso, por ejemplo, yolo train data=coco8.yaml. Consulta la Descripción general de conjuntos de datos para conocer los formatos y conjuntos de datos compatibles.
  • Soporte Multi-GPU: Escala tus esfuerzos de entrenamiento sin problemas a través de varias 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 resultados.

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 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 Multi-GPU#

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

Ejemplo de entrenamiento Multi-GPU

Para entrenar con 2 GPU, los dispositivos CUDA 0 y 1 utilizan 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])
Entrenamiento Multi-GPU con código personalizado

Cuando especificas varios dispositivos (por ejemplo, device=[0, 1]), Ultralytics genera internamente una nueva instancia de entrenador y ejecuta torch.distributed.run en segundo plano. Esto funciona sin problemas para el uso estándar de la 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 ejecutar tu script directamente con torch.distributed.run:

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

El entrenamiento con 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 conocer 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 varios IDs de XPU con una compilación de PyTorch que proporcione XCCL.

Entrenamiento con Huawei Ascend NPU#

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

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Ejemplo de entrenamiento con Ascend NPU
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, incluyendo AMP, validación, puntos de control y reanudación, utilizan la NPU activa. AutoBatch está disponible para el entrenamiento con una sola NPU, mientras que múltiples IDs 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 inactivas#

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

Ejemplo de entrenamiento con GPU inactivas

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 informáticos compartidos o servidores con varios 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. Menor porcentaje 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 informáticos compartidos o cuando se ejecutan 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 Apple Silicon MPS#

Con el soporte para chips de Apple silicon integrado en los modelos Ultralytics YOLO, ahora es posible entrenar tus modelos en dispositivos que utilizan el potente marco Metal Performance Shaders (MPS). El 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 hacerlo 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 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 deep learning. Esto puede ser útil en varias situaciones, como cuando el proceso de entrenamiento se ha interrumpido inesperadamente, o cuando deseas continuar entrenando un modelo con nuevos datos o durante más 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 tasa de aprendizaje 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 se muestra 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 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.

Configuración 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 clave de entrenamiento incluyen el tamaño de lote, la tasa de aprendizaje, el impulso (momentum) 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 de entrenamiento. Un ajuste cuidadoso y la experimentación 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 ortogonalizadas de Muon pueden ayudar a estabilizar la optimización.

Solo los pesos lineales 2D y los filtros convolucionales 4D (redimensionados 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 por 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 (normalmente cuando las iteraciones son > 10000). Para ejecuciones más cortas, el entrenador recurre 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 la ruta a un modelo preentrenado de .pt o a un archivo de configuración de .yaml. Es esencial para definir la estructura del modelo o inicializar los pesos.
datastrNoneRuta al YAML del dataset (p. ej., coco8.yaml), que contiene las rutas a los datos de entrenamiento y datos de validación, los nombres de las clases y el número de clases. La clasificación, en su lugar, toma un directorio de dataset o un nombre de dataset integrado (p. ej., imagenet10).
epochsint100Número total de épocas de entrenamiento. Cada epoch 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.
timefloatNoneTiempo máximo de entrenamiento en horas. Si se establece, esto anula el argumento epochs, lo que permite que el entrenamiento se detenga automáticamente después de la duración especificada. Es útil para escenarios de entrenamiento con restricciones de tiempo.
patienceint100Número de épocas que se debe esperar sin mejoras en las métricas de validación antes de detener anticipadamente el entrenamiento. Ayuda a evitar el overfitting deteniendo el entrenamiento cuando el rendimiento se estanca.
batchint o float16Batch size, con tres modos: establecido como un número entero (por ejemplo, batch=16), modo automático para un 60% de utilización 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 es rect=False), preservando la relación de aspecto para los modelos YOLO pero no para RT-DETR. Afecta a la accuracy del modelo y a la complejidad computacional.
saveboolTruePermite guardar puntos de control de entrenamiento y pesos finales del modelo. Es útil para reanudar el entrenamiento o para el model deployment.
save_periodint-1Frecuencia de guardado de puntos de control del modelo, especificada en epochs. Un valor de -1 deshabilita esta función. Útil para guardar modelos intermedios durante sesiones de entrenamiento largas.
cacheboolFalsePermite almacenar en caché las imágenes del conjunto de datos en la memoria (True/ram), en el disco (disk) o lo desactiva (False). Mejora la velocidad de entrenamiento al reducir las E/S de disco a cambio de un mayor uso de memoria.
deviceint o str o listNoneEspecifica el dispositivo o dispositivos computacionales para el entrenamiento: una sola GPU (device=0), varias GPUs (device=[0,1]), CPU (device=cpu), MPS para silicio de Apple (device=mps), NPU Ascend de Huawei (device=npu:0 o device=npu:0,1), o la selección automática de una GPU inactiva (device=-1) o varias GPUs inactivas (device=[-1,-1]).
workersint8Número de hilos de trabajo para la carga de datos (por RANK en caso de entrenamiento con múltiples GPUs). Influye en la velocidad del preprocesamiento de datos y en su suministro al modelo, lo cual es especialmente útil en configuraciones con múltiples GPUs.
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 los resultados del entrenamiento.
exist_okboolFalseSi es True, permite sobrescribir un directorio de proyecto/nombre existente. Útil para la experimentación iterativa sin necesidad de borrar manualmente los resultados anteriores.
save_dirstrNoneEspecifica el directorio exacto donde se guardan los resultados de la ejecución, anulando la combinación de project/name. La ruta se utiliza tal cual sin incremento automático, por lo que las ejecuciones consecutivas reutilizan el mismo directorio.
pretrainedbool o strTrueDetermina si se debe iniciar el entrenamiento a partir de pesos preentrenados. Puede ser un valor booleano o una ruta de cadena de texto a los pesos que se van a cargar. pretrained=False entrena a partir de pesos inicializados aleatoriamente mientras se mantiene la arquitectura del modelo.
cls_remapboolTrueAl ajustar un modelo entre conjuntos de datos, copia las filas de la cabeza de clasificación preentrenada en el nuevo modelo siempre que los nombres de las clases coincidan, de modo que las clases superpuestas conserven su sesgo aprendido, además de sus pesos cuando el ancho de la cabeza no cambia. Se aplica tanto si los recuentos de clases difieren como si coinciden con un orden de clases diferente.
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, asegurando la reproducibilidad de los resultados entre ejecuciones con las mismas configuraciones.
deterministicboolTrueFuerza el uso de algoritmos deterministas, asegurando la reproducibilidad pero pudiendo afectar al rendimiento y la velocidad debido a la restricción de 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 sola clase durante el entrenamiento. Útil para tareas de clasificación binaria o cuando te enfocas en la presencia de objetos en lugar de en su clasificación.
classeslist[int]NoneEspecifica una lista de IDs de clase para entrenar. Útil para filtrar y enfocarte solo en ciertas clases durante el entrenamiento.
rectboolFalseHabilita la estrategia de relleno mínimo: las imágenes de 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 puede 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 paso del modelo; 0.0 deshabilita el entrenamiento a multiescala.
cos_lrboolFalseUtiliza un programador de learning rate 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 lograr una mejor convergencia.
close_mosaicint10Desactiva la data augmentation de mosaico en las últimas N épocas para estabilizar el entrenamiento antes de finalizar. Establecerlo en 0 deshabilita esta característica.
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 problemas.
ampboolTrueHabilita el entrenamiento con Mixed Precision 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 usar para el entrenamiento. Permite entrenar con un subconjunto del conjunto de datos completo, útil para experimentos o cuando los recursos son limitados.
profileboolFalseHabilita la creación de perfiles 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. Es útil para el ajuste fino o el transfer learning.
lr0float0.01Tasa de aprendizaje inicial (es decir, 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 fracción de la tasa inicial = (lr0 * lrf), utilizada junto con los programadores para ajustar la tasa de aprendizaje a lo largo del tiempo.
momentumfloat0.937Factor de momento para SGD o beta1 para Adam optimizers, que influye en la incorporación de gradientes pasados en la actualización actual.
weight_decayfloat0.0005Término de regularization 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.8Momento inicial para la fase de calentamiento, ajustándose gradualmente al momento establecido durante el periodo de calentamiento.
warmup_bias_lrfloat0.1Tasa de aprendizaje para los parámetros de sesgo durante la fase de calentamiento, ayudando a estabilizar el entrenamiento del modelo en las épocas iniciales.
distill_modelstrNoneRuta a un punto de control del modelo profesor (por ejemplo, yolo26x.pt) para la destilación de conocimientos. 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. Valores más altos aumentan la influencia de la guía de características del profesor.
boxfloat7.5Peso del componente de pérdida de caja en la loss function, que influye en el énfasis que se pone en predecir con precisión las coordenadas del bounding box.
clsfloat0.5Peso de la pérdida de clasificación en la función de pérdida total, afectando la importancia de una predicción de clase correcta 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 las clases. 0.0 deshabilita la ponderación de clases, 1.0 aplica una ponderación de frecuencia inversa completa. Los valores entre 0 y 1 proporcionan una ponderación parcial.
dflfloat1.5Peso de la distribución focal loss (DFL), un término de localización de bounding box que realiza la regresión de las distancias de los bordes de la caja.
posefloat12.0Peso de la pérdida de pose en modelos entrenados para la estimación de pose, influyendo en el énfasis en 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, que afecta la precisión de la localización de los puntos clave.
anglefloat1.0Peso de la pérdida de ángulo en modelos obb, que afecta la precisión de las predicciones de ángulo de la caja delimitadora orientada.
dlogfloat1.0Peso de la pérdida logarítmica invariante a la escala (SILog) en modelos de estimación de profundidad, el término principal que impulsa la precisión de la profundidad.
dgradfloat0.5Peso de la pérdida de gradiente en modelos de estimación de profundidad, penalizando los errores en los bordes de profundidad y fomentando 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 totalmente invariante a la escala, mientras que 0.0 la reduce a un log-RMSE simple.
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áscara más grande durante la fusión.
mask_ratioint4Tasa 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.
valboolTrueHabilita 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 métricas de entrenamiento y validación, así como ejemplos de predicción, proporcionando información visual sobre el rendimiento del modelo y la progresió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, o un modo de cadena de texto como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Vuelve al modo diligente (eager) con una advertencia si no es compatible.
channels_lastboolFalseUsa el formato de memoria channels_last (NHWC) para las convoluciones durante el entrenamiento, lo que acelera las GPU CUDA Tensor Core sin cambios en los resultados. Se ignora automáticamente en CPU y MPS, donde no ofrece ningún beneficio.
max_detint300Especifica el número máximo de objetos retenidos durante la fase de validación del entrenamiento.
Nota sobre la configuración del tamaño de lote

El argumento batch se puede configurar de tres maneras:

  • Tamaño de lote fijo: Establece un valor entero (por ejemplo, batch=16), especificando directamente el número de imágenes por lote.
  • 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 la memoria CUDA de aproximadamente el 60%.
  • Modo automático con fracción de utilización: Establece un valor de fracción (por ejemplo, batch=0.70) para ajustar el tamaño de lote según la fracción especificada de uso de la memoria de la GPU.
  • Reintento automático por OOM: si ocurre un error de falta de memoria CUDA durante la primera época, el entrenador reduce automáticamente a la mitad el tamaño del lote y vuelve a intentar (hasta 3 veces). Esto solo se aplica al entrenamiento con una sola GPU; el entrenamiento multi-GPU (DDP) generará el error inmediatamente.

Configuración de aumentación 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, lo que ayuda a que el modelo generalice mejor con 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 mediante una fracción de la rueda de colores, introduciendo variabilidad de color. Ayuda al modelo a generalizar bajo diferentes condiciones de iluminación.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Altera la saturación de la imagen mediante una fracción, afectando la intensidad de los colores. Útil para simular diferentes condiciones ambientales.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.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, semantic, depth, pose, obb0.0 - 180Rota la imagen aleatoriamente dentro del rango de grados especificado, lo que mejora la capacidad del modelo para reconocer objetos en diversas orientaciones.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Traslada la imagen horizontal y verticalmente en una fracción del tamaño de la imagen, lo que ayuda a aprender a detectar objetos parcialmente visibles.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1Escala la imagen mediante un factor de ganancia, simulando objetos a diferentes distancias de la cámara.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Inclina (cizalla) la imagen en un grado especificado, imitando el efecto de ver objetos desde diferentes á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 entender objetos en el espacio 3D.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Voltea 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, semantic, depth, classify, pose, obb0.0 - 1.0Voltea 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, semantic, depth, pose, obb0.0 - 1.0Intercambia los canales de la imagen de RGB a BGR con la probabilidad especificada, útil para aumentar la robustez ante un orden de canales incorrecto.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Combina cuatro imágenes de entrenamiento en una, simulando diferentes composiciones de escenas e interacciones entre objetos. Es altamente eficaz para la comprensión de escenas complejas.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Fusiona dos imágenes y sus etiquetas, creando una imagen compuesta. Mejora la capacidad de generalización del modelo introduciendo ruido en las etiquetas y variabilidad visual.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Combina porciones de dos imágenes, creando una fusión parcial mientras mantiene regiones distintas. Aumenta la robustez del modelo al crear escenarios de oclusión.
copy_pastefloat0segment0.0 - 1.0Copia y pega objetos entre imágenes para aumentar el número de instancias de objetos.
copy_paste_modestrflipsegment-Especifica la estrategia copy-paste que se va a usar. Las opciones incluyen 'flip' y 'mixup'.
auto_augmentstrrandaugmentclassify-Aplica una directiva de aumento predefinida ('randaugment', 'autoaugment' o 'augmix') para mejorar el rendimiento del modelo mediante la diversidad visual.
erasingfloat0.4classify0.0 - 1.0Elimina regiones de la imagen aleatoriamente durante el entrenamiento para animar al modelo a centrarse en características menos obvias.
augmentationslistNonedetect, segment, semantic, depth, pose, obb-Transformaciones personalizadas de Albumentations para un aumento de datos avanzado (solo para la API de Python). Acepta una lista de objetos de transformación para necesidades de aumento especializadas.

Estos ajustes pueden modificarse para satisfacer los requisitos específicos del conjunto de datos y la tarea en cuestión. Experimentar con diferentes valores puede ayudarte 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 (Logging)#

Al entrenar un modelo YOLO26, es posible que te resulte útil realizar un seguimiento del rendimiento del modelo a lo largo del tiempo. Aquí es donde entran en juego los registradores (loggers). Ultralytics YOLO ofrece compatibilidad con 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 manera eficiente. Está diseñada para ayudar a los equipos a gestionar, ejecutar y reproducir su trabajo de aprendizaje automático (ML) de forma 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 conjunto de herramientas de visualización para TensorFlow. Te permite visualizar tu gráfico de TensorFlow, trazar métricas cuantitativas sobre la ejecución de tu gráfico y mostrar datos adicionales como las 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.

Una vez configurado tu registrador, podrás 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.

Qué sigue#

Valida tu modelo entrenado con datos de reserva para comprobar su precisión en el mundo real y, a continuación, expórtalo a ONNX, TensorRT u otro formato de despliegue. ¿Estás entrenando con tus propios datos en lugar de COCO8? Formatea tus datos primero con la guía de conjuntos de datos.

FAQ#

  • 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 usando 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 Ajustes de entrenamiento.

  • Las características clave del modo 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 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 obtener más detalles, consulta la sección Características clave del modo de entrenamiento.

  • Para reanudar el entrenamiento desde una sesión interrumpida, configura 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 Reanudación de entrenamientos interrumpidos para obtener más información.

  • El desequilibrio de clases se produce cuando algunas clases tienen muchos menos ejemplos que otras en tus datos de entrenamiento. Esto puede hacer que el rendimiento del modelo sea 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 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 completa por frecuencia inversa
    • 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 con 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 con un desequilibrio moderado y aumenta a 1.0 si las clases raras siguen sin rendir bien. Puedes comprobar los pesos de las clases calculados en los registros de entrenamiento para verificar la distribución de los pesos.

  • Sí, Ultralytics YOLO26 admite el entrenamiento en chips de silicio de Apple utilizando el marco de trabajo 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 obtener más detalles, consulta la sección Entrenamiento con Apple Silicon MPS.

  • 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, 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 (por ejemplo, coco8.yaml), o un directorio o nombre de conjunto de datos (por ejemplo, imagenet10) para clasificación.
    epochs100Número total de épocas de entrenamiento.
    batch16Tamaño de lote, ajustable como número entero o modo automático.
    imgsz640Tamaño de imagen objetivo para el entrenamiento.
    deviceNoneDispositivo(s) de computación 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 Ajustes de entrenamiento.

Comentarios