Ultralytics YOLO27:
Get Started

Prácticas recomendadas y consejos de aprendizaje automático para entrenar modelos#

Introducción#

Uno de los pasos más importantes al trabajar en un proyecto de visión artificial es entrenar el modelo. Antes de llegar a este paso, tienes que definir tus objetivos y recopilar y anotar tus datos. Después de preprocesar los datos para asegurarte de que estén limpios y sean coherentes, puedes pasar a entrenar el modelo.

El entrenamiento de modelos es el proceso de enseñar al modelo a reconocer patrones visuales y hacer predicciones a partir de tus datos, y determina directamente la precisión de tu aplicación. En esta guía se explican las prácticas recomendadas, las técnicas de optimización y los consejos para resolver problemas, con el objetivo de ayudarte a entrenar tus modelos de visión artificial de forma eficaz.



Ver: Consejos para entrenar modelos | Cómo gestionar grandes conjuntos de datos | Tamaño del lote, uso de GPU y precisión mixta

Cómo entrenar un modelo de aprendizaje automático#

Un modelo de visión artificial se entrena ajustando sus parámetros internos para minimizar los errores. Al principio, se proporciona al modelo un conjunto amplio de imágenes etiquetadas. El modelo predice qué aparece en las imágenes y, después, se comparan las predicciones con las etiquetas o el contenido reales para calcular los errores. Estos errores indican cuánto se desvían las predicciones del modelo de los valores reales.

Durante el entrenamiento, el modelo hace predicciones de forma iterativa, calcula los errores y actualiza sus parámetros mediante un proceso denominado retropropagación. En este proceso, el modelo ajusta sus parámetros internos (pesos y sesgos) para reducir los errores. Al repetir este ciclo muchas veces, mejora gradualmente su precisión. Con el tiempo, aprende a reconocer patrones complejos como formas, colores y texturas.

What is Backpropagation?

Este proceso de aprendizaje permite que el modelo de visión artificial realice diversas tareas, como la detección de objetos, la segmentación de instancias, la segmentación semántica y la clasificación de imágenes. El objetivo final es crear un modelo capaz de generalizar lo aprendido a imágenes nuevas que no haya visto, para que pueda interpretar datos visuales con precisión en aplicaciones del mundo real.

Ahora que sabemos qué ocurre entre bastidores al entrenar un modelo, veamos qué aspectos debes tener en cuenta.

Entrenamiento con conjuntos de datos grandes#

Hay varios aspectos que debes tener en cuenta si planeas usar un conjunto de datos grande para entrenar un modelo. Por ejemplo, puedes ajustar el tamaño del lote, controlar el uso de la GPU y elegir el entrenamiento multiescala, entre otras opciones. Veamos cada una en detalle.

Tamaño del lote y uso de la GPU#

Al entrenar modelos con conjuntos de datos grandes, es fundamental aprovechar la GPU de forma eficiente. El tamaño del lote es un factor importante: es el número de muestras de datos que procesa un modelo de aprendizaje automático en una sola iteración de entrenamiento. Si usas el tamaño máximo de lote que admite tu GPU, puedes aprovechar al máximo sus capacidades y reducir el tiempo de entrenamiento del modelo. Sin embargo, debes evitar quedarte sin memoria de la GPU. Si se producen errores de memoria, reduce el tamaño del lote poco a poco hasta que el modelo se entrene sin problemas.



Ver: Cómo usar la inferencia por lotes con Ultralytics YOLO26 | Acelera la detección de objetos en Python 🎉

Para YOLO26, puedes ajustar el parámetro batch de los argumentos del modo Train a la capacidad de tu GPU. En un único acelerador, batch=-1 analiza el modelo y elige un tamaño de lote que apunta a un uso de memoria de aproximadamente el 60 %; una fracción como batch=0.70 permite apuntar a otra proporción. Las ejecuciones con varias GPU requieren un tamaño de lote global explícito que sea múltiplo del número de dispositivos. En CPU y Apple silicon, AutoBatch muestra una advertencia y usa batch=16 como alternativa.

Entrenamiento con subconjuntos#

El entrenamiento con subconjuntos es una estrategia eficaz que consiste en entrenar el modelo con un conjunto de datos más pequeño que represente al conjunto completo. Puede ahorrar tiempo y recursos, sobre todo durante el desarrollo inicial y las pruebas del modelo. Si tienes poco tiempo o estás probando distintas configuraciones del modelo, el entrenamiento con subconjuntos es una buena opción.

En YOLO26, puedes implementar fácilmente el entrenamiento con subconjuntos mediante el parámetro fraction. Usa una proporción como fraction=0.1 para el 10 % de los datos de entrenamiento, un número entero como fraction=300 para seleccionar exactamente 300 imágenes de entrenamiento, o una lista [train, val, test] como fraction=[300, 100, 0] para limitar cada partición y omitir las imágenes de prueba. Las listas de dos elementos como [300, 100] mantienen completa la partición de prueba. Los conjuntos de datos NDJSON seleccionan registros espaciados uniformemente antes de descargarlos, por lo que las ejecuciones posteriores reutilizan exactamente el mismo subconjunto. Esta técnica permite iterar y ajustar el modelo rápidamente antes de usar el conjunto de datos completo.

Entrenamiento multiescala#

El entrenamiento multiescala es una técnica que mejora la capacidad de generalización del modelo al entrenarlo con imágenes de distintos tamaños. El modelo puede aprender a detectar objetos a diferentes escalas y distancias, y volverse más robusto.

Por ejemplo, al entrenar YOLO26, puedes activar la aumentación de escala estableciendo el parámetro scale. Este parámetro ajusta el tamaño de las imágenes de entrenamiento según un factor especificado, simulando objetos a distintas distancias. Por ejemplo, al establecer scale=0.5, las imágenes de entrenamiento se amplían o reducen aleatoriamente con un factor de entre 0,5 y 1,5 durante el entrenamiento. Configurar este parámetro permite que el modelo trabaje con una variedad de escalas de imagen y mejore su capacidad de detección con distintos tamaños de objeto y en distintas situaciones.

Ultralytics también admite el entrenamiento multiescala por tamaño de imagen mediante el parámetro multi_scale. A diferencia de scale, que amplía o reduce las imágenes y luego las rellena o recorta para volver a imgsz, multi_scale cambia imgsz en cada lote (redondeado al stride del modelo). Por ejemplo, con imgsz=640 y multi_scale=0.25, el tamaño de entrenamiento se elige entre 480 y 800 en pasos de stride (p. ej., 480, 512, 544, ..., 800), mientras que multi_scale=0.0 mantiene un tamaño fijo.

Almacenamiento en caché#

El almacenamiento en caché es una técnica importante para mejorar la eficiencia del entrenamiento de modelos de aprendizaje automático. Al guardar las imágenes preprocesadas en memoria, la caché reduce el tiempo que la GPU pasa esperando a que se carguen los datos desde el disco. El modelo puede recibir datos continuamente, sin retrasos causados por las operaciones de E/S del disco.

Puedes controlar el almacenamiento en caché al entrenar YOLO26 mediante el parámetro cache:

  • cache=True: Almacena las imágenes del conjunto de datos en RAM, lo que ofrece la mayor velocidad de acceso, pero aumenta el uso de memoria.
  • cache='disk': Almacena las imágenes en el disco; es más lento que la RAM, pero más rápido que volver a cargar los datos cada vez.
  • cache=False: Desactiva el almacenamiento en caché y depende por completo de la E/S del disco, la opción más lenta.

Entrenamiento con precisión mixta#

El entrenamiento con precisión mixta utiliza tipos de coma flotante de 16 bits (FP16) y 32 bits (FP32). Aprovecha las ventajas de ambos: usa FP16 para acelerar los cálculos y FP32 para mantener la precisión cuando sea necesario. La mayoría de las operaciones de la red neuronal se realizan en FP16 para beneficiarse de cálculos más rápidos y un menor uso de memoria. Sin embargo, se conserva una copia maestra de los pesos del modelo en FP32 para garantizar la precisión al actualizar los pesos. Así puedes trabajar con modelos más grandes o tamaños de lote mayores dentro de las mismas limitaciones de hardware.

Mixed precision FP16 training benefits

Para implementar el entrenamiento con precisión mixta, tendrás que modificar los scripts de entrenamiento y asegurarte de que tu hardware (como las GPU) lo admita. Muchos frameworks modernos de aprendizaje profundo, como PyTorch y TensorFlow, ofrecen compatibilidad integrada con la precisión mixta.

El entrenamiento con precisión mixta es sencillo con YOLO26: AMP ya está activado de forma predeterminada (amp=True). En una GPU CUDA, YOLO realiza una comprobación de compatibilidad única al inicio del entrenamiento y, si falla, vuelve a FP32 completo; en CPU y Apple silicon, AMP se omite por completo. Establece amp=False para forzar FP32.

Pesos preentrenados#

Usar pesos preentrenados es una forma eficaz de acelerar el proceso de entrenamiento del modelo. Los pesos preentrenados proceden de modelos que ya se han entrenado con conjuntos de datos grandes y dan ventaja inicial a tu modelo. El aprendizaje por transferencia adapta los modelos preentrenados a tareas nuevas y relacionadas. Para ajustar un modelo preentrenado, se empieza con estos pesos y se continúa el entrenamiento con un conjunto de datos específico. Este método reduce el tiempo de entrenamiento y suele ofrecer un mejor rendimiento, porque el modelo parte de una comprensión sólida de las características básicas.

Los pesos preentrenados se obtienen del argumento model, por lo que model=yolo26n.pt ya empieza con pesos de COCO. El parámetro pretrained controla si se conservan esos pesos (True, opción predeterminada), se descartan (False) o se sustituyen por otro punto de control (pretrained=path/to/best.pt). Establecer pretrained=True en un modelo *.yaml no descarga pesos por sí solo. Consulta Cómo ajustar YOLO con un conjunto de datos personalizado para ver el flujo completo de aprendizaje por transferencia.

Otras técnicas que debes tener en cuenta al gestionar un conjunto de datos grande#

Hay otras técnicas que conviene tener en cuenta al gestionar un conjunto de datos grande:

  • Programadores de la tasa de aprendizaje: implementar programadores de la tasa de aprendizaje permite ajustarla dinámicamente durante el entrenamiento. Una tasa de aprendizaje bien ajustada puede evitar que el modelo sobrepase los mínimos y mejorar la estabilidad. Al entrenar YOLO26, el parámetro lrf ayuda a gestionar la programación de la tasa de aprendizaje estableciendo la tasa de aprendizaje final como una fracción de la inicial. Para controlar comportamientos que no se exponen mediante argumentos, como las tasas de aprendizaje por capa o el recorte del gradiente, crea una subclase del entrenador.
  • Entrenamiento distribuido: para gestionar conjuntos de datos grandes, el entrenamiento distribuido puede marcar la diferencia. Puedes reducir el tiempo de entrenamiento repartiendo la carga de trabajo entre varias GPU o máquinas. Este enfoque resulta especialmente valioso para proyectos empresariales con recursos computacionales considerables.
  • Formato de memoria channels-last: el entrenamiento CUDA usa automáticamente el diseño de memoria NHWC, más rápido, en PyTorch 1.11 y versiones posteriores, excepto en Windows, donde se midió un rendimiento más lento. Establece channels_last=True para forzarlo o channels_last=False para mantener NCHW; en PyTorch 1.10 y versiones anteriores, CPU y MPS, NCHW sigue siendo el formato predeterminado.

Número de épocas de entrenamiento#

Al entrenar un modelo, una época corresponde a un recorrido completo por todo el conjunto de datos de entrenamiento. Durante una época, el modelo procesa una vez cada ejemplo del conjunto de entrenamiento y actualiza sus parámetros según el algoritmo de aprendizaje. Normalmente se necesitan varias épocas para que el modelo aprenda y refine sus parámetros con el tiempo.

Una pregunta habitual es cómo determinar el número de épocas de entrenamiento. Un buen punto de partida son 300 épocas. Si el modelo empieza a sobreajustarse pronto, puedes reducir el número de épocas. Si no se produce sobreajuste después de 300 épocas, puedes prolongar el entrenamiento a 600, 1200 o más épocas.

Sin embargo, el número ideal de épocas puede variar según el tamaño del conjunto de datos y los objetivos del proyecto. Los conjuntos de datos grandes pueden requerir más épocas para que el modelo aprenda de forma eficaz, mientras que los más pequeños pueden necesitar menos para evitar el sobreajuste. Para YOLO26, puedes establecer el parámetro epochs en tu script de entrenamiento.

Parada temprana#

La parada temprana es una técnica útil para optimizar el entrenamiento del modelo. Si supervisas el rendimiento en validación, puedes detener el entrenamiento cuando el modelo deje de mejorar. Así ahorras recursos computacionales y evitas el sobreajuste.

El proceso consiste en establecer un parámetro de paciencia que determina cuántas épocas hay que esperar a que mejoren las métricas de validación antes de detener el entrenamiento. Si el rendimiento del modelo no mejora durante ese número de épocas, el entrenamiento se detiene para evitar malgastar tiempo y recursos.

Early stopping to prevent model overfitting

En YOLO26, puedes activar la parada temprana estableciendo el parámetro de paciencia en la configuración de entrenamiento. Por ejemplo, patience=5 significa que el entrenamiento se detendrá si las métricas de validación no mejoran durante 5 épocas consecutivas. Este método garantiza que el entrenamiento sea eficiente y alcance un rendimiento óptimo sin cálculos excesivos.

Elegir entre el entrenamiento en la nube y el local#

Hay dos opciones para entrenar tu modelo: en la nube o de forma local.

El entrenamiento en la nube ofrece escalabilidad y hardware potente, y es ideal para gestionar grandes conjuntos de datos y modelos complejos. Plataformas como Google Cloud, AWS y Azure proporcionan acceso bajo demanda a GPU y TPU de alto rendimiento, lo que acelera los tiempos de entrenamiento y permite experimentar con modelos más grandes. Sin embargo, el entrenamiento en la nube puede resultar caro, sobre todo durante periodos prolongados, y la transferencia de datos puede aumentar los costes y la latencia.

El entrenamiento local ofrece más control y opciones de personalización, lo que te permite adaptar el entorno a tus necesidades específicas y evitar los costes recurrentes de la nube. Puede resultar más económico en proyectos a largo plazo y, como los datos permanecen en tus instalaciones, es más seguro. Sin embargo, el hardware local puede tener recursos limitados y requerir mantenimiento, lo que puede alargar los tiempos de entrenamiento de los modelos grandes.

Selección de un optimizador#

Un optimizador es un algoritmo que ajusta los pesos de tu red neuronal para minimizar la función de pérdida, que mide el rendimiento del modelo. En términos más sencillos, el optimizador ayuda al modelo a aprender modificando sus parámetros para reducir los errores. Elegir el optimizador adecuado afecta directamente a la rapidez y la precisión con las que aprende el modelo.

También puedes ajustar los parámetros del optimizador para mejorar el rendimiento del modelo. Al ajustar la tasa de aprendizaje, determinas el tamaño de los pasos al actualizar los parámetros. Para lograr estabilidad, puedes empezar con una tasa de aprendizaje moderada y reducirla gradualmente con el tiempo para mejorar el aprendizaje a largo plazo. Además, al definir el momento, determinas cuánto influyen las actualizaciones anteriores en las actuales. Un valor habitual para el momento es aproximadamente 0,9. Por lo general, ofrece un buen equilibrio.

Optimizadores habituales#

Cada optimizador tiene sus puntos fuertes y débiles. Echemos un vistazo a algunos optimizadores habituales.

  • SGD (descenso de gradiente estocástico):

    • Actualiza los parámetros del modelo mediante el gradiente de la función de pérdida con respecto a los parámetros.
    • Es sencillo y eficiente, pero puede tardar en converger y quedarse atascado en mínimos locales.
  • Adam (estimación adaptativa del momento):

    • Combina las ventajas de SGD con momento y RMSProp.
    • Ajusta la tasa de aprendizaje de cada parámetro basándose en estimaciones del primer y segundo momento de los gradientes.
    • Es adecuado para datos ruidosos y gradientes dispersos.
    • Es eficiente y, por lo general, requiere menos ajustes. Para entrenamientos más cortos, optimizer=auto de YOLO26 selecciona AdamW, estrechamente relacionado, en lugar de Adam.
  • RMSProp (propagación de la raíz cuadrática media):

    • Ajusta la tasa de aprendizaje de cada parámetro dividiendo el gradiente por una media móvil de las magnitudes de los gradientes recientes.
    • Ayuda a abordar el problema de la desaparición del gradiente y es eficaz para las redes neuronales recurrentes.
  • MuSGD (híbrido de Muon y SGD):

    • Combina actualizaciones al estilo SGD con un comportamiento inspirado en Muon para mejorar la estabilidad durante el entrenamiento a gran escala.
    • Es una buena opción si buscas la capacidad de generalización de SGD, pero necesitas una convergencia más fluida que con SGD estándar.
    • Es especialmente relevante para las configuraciones de entrenamiento de YOLO26; si no tienes claro cuál elegir, empieza con optimizer=auto y compara MuSGD con tus datos.

En YOLO26, el parámetro optimizer te permite elegir entre varios optimizadores, como SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam y RMSProp, o puedes asignarle auto para que la selección se haga automáticamente según el número de iteraciones de entrenamiento.

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

Conecta con la comunidad#

Formar parte de una comunidad de entusiastas de la visión artificial puede ayudarte a resolver problemas y aprender más rápido. Aquí tienes algunas formas de conectar, pedir ayuda y compartir ideas.

Recursos de la comunidad#

  • Incidencias de GitHub: Visita el repositorio de YOLO26 en GitHub y usa la pestaña Issues para hacer preguntas, informar de errores y proponer funciones nuevas. La comunidad y las personas responsables del mantenimiento son muy activas y están dispuestas a ayudar.
  • Servidor de Discord de Ultralytics: Únete al servidor de Discord de Ultralytics para charlar con otros usuarios y desarrolladores, recibir ayuda y compartir tus experiencias.

Documentación oficial#

  • Documentación de Ultralytics YOLO26: Consulta la documentación oficial de YOLO26 para encontrar guías detalladas y consejos útiles sobre distintos proyectos de visión artificial.

El uso de estos recursos te ayudará a resolver problemas y a estar al día de las últimas tendencias y prácticas de la comunidad de visión artificial.

Conclusiones clave#

El entrenamiento de modelos de visión artificial implica seguir buenas prácticas, optimizar las estrategias y resolver los problemas a medida que surgen. Técnicas como ajustar el tamaño del lote, entrenar con precisión mixta y empezar con pesos preentrenados pueden mejorar el rendimiento de tus modelos y acelerar el entrenamiento. Métodos como el entrenamiento con subconjuntos y la detención temprana te ayudan a ahorrar tiempo y recursos. Mantenerte en contacto con la comunidad y estar al día de las nuevas tendencias te ayudará a seguir mejorando tus habilidades de entrenamiento de modelos.

Preguntas frecuentes#

  • Para mejorar el uso de la GPU, establece el parámetro batch en el tamaño máximo que admita tu GPU. En un único acelerador, batch=-1 perfila el modelo y apunta a un uso de memoria de aproximadamente el 60 %. En CPU y Apple silicon, recurre a batch=16, mientras que las ejecuciones con varias GPU requieren un tamaño de lote global explícito que sea múltiplo del número de dispositivos. Para obtener más información, consulta los argumentos del modo de entrenamiento.

  • El entrenamiento con precisión mixta utiliza tipos de punto flotante de 16 bits (FP16) y 32 bits (FP32) para equilibrar la velocidad de cálculo y la precisión. En YOLO26 está activado de forma predeterminada mediante amp=True; establece amp=False para forzar FP32. AMP se omite en CPU y Apple silicon. Para obtener más información, consulta los argumentos del modo de entrenamiento.

  • El entrenamiento multiescala mejora el rendimiento del modelo al entrenarlo con imágenes de distintos tamaños, lo que le permite generalizar mejor a diferentes escalas y distancias. YOLO26 ofrece dos parámetros independientes para ello. scale=0.5 muestrea un factor de zoom entre 0,5 y 1,5 y después añade relleno o recorta la imagen para volver a un imgsz fijo, mientras que multi_scale=0.25 varía el propio imgsz en cada lote, en pasos de stride. Para consultar los ajustes y obtener más información, visita la documentación del modo de entrenamiento.

  • El uso de pesos preentrenados puede acelerar considerablemente el entrenamiento y mejorar la precisión del modelo al aprovechar uno que ya conoce características visuales básicas. Cárgalos mediante el argumento model, como en model=yolo26n.pt; a continuación, pretrained decide si se conservan esos pesos (True, valor predeterminado), se descartan (False) o se sustituyen por otro punto de control (pretrained=path/to/best.pt, la forma de transferir pesos a una compilación model=*.yaml). Encontrarás más información en la documentación del modo de entrenamiento.

Comentarios