Link to this sectionMejores prácticas y consejos de aprendizaje automático para el entrenamiento de modelos#
Link to this sectionIntroducción#
Uno de los pasos más importantes al trabajar en un proyecto de visión artificial es el entrenamiento del modelo. Antes de llegar a este paso, necesitas 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 al entrenamiento de tu modelo.
Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision
Entonces, ¿qué es el entrenamiento de modelos? El entrenamiento de modelos es el proceso de enseñar a tu modelo a reconocer patrones visuales y hacer predicciones basadas en tus datos. Impacta directamente en el rendimiento y la precisión de tu aplicación. En esta guía, cubriremos mejores prácticas, técnicas de optimización y consejos de solución de problemas para ayudarte a entrenar tus modelos de visión artificial de manera eficaz.
Link to this sectionCómo entrenar un modelo de aprendizaje automático#
Un modelo de visión artificial se entrena ajustando sus parámetros internos para minimizar errores. Inicialmente, el modelo recibe un gran conjunto de imágenes etiquetadas. Realiza predicciones sobre lo que hay en estas imágenes y las predicciones se comparan con las etiquetas o contenidos reales para calcular errores. Estos errores muestran qué tan lejos están las predicciones del modelo de los valores reales.
Durante el entrenamiento, el modelo hace predicciones de forma iterativa, calcula errores y actualiza sus parámetros mediante un proceso llamado backpropagation. En este proceso, el modelo ajusta sus parámetros internos (pesos y sesgos) para reducir los errores. Al repetir este ciclo muchas veces, el modelo mejora gradualmente su precisión. Con el tiempo, aprende a reconocer patrones complejos como formas, colores y texturas.
Este proceso de aprendizaje hace posible que el modelo de visión artificial realice diversas tareas, incluyendo detección de objetos, segmentación de instancias, segmentación semántica y clasificación de imágenes. El objetivo final es crear un modelo que pueda generalizar su aprendizaje a imágenes nuevas e inéditas para que pueda entender datos visuales con precisión en aplicaciones del mundo real.
Ahora que sabemos qué sucede detrás de escena cuando entrenamos un modelo, veamos puntos a considerar al entrenar uno.
Link to this sectionEntrenamiento en grandes conjuntos de datos#
Hay algunos aspectos diferentes a considerar cuando planeas usar un gran conjunto de datos para entrenar un modelo. Por ejemplo, puedes ajustar el tamaño del lote, controlar la utilización de la GPU, elegir usar entrenamiento multiescala, etc. Repasemos cada una de estas opciones en detalle.
Link to this sectionTamaño del lote y utilización de la GPU#
Al entrenar modelos en conjuntos de datos grandes, utilizar tu GPU de manera eficiente es clave. El tamaño del lote (batch size) es un factor importante. Es el número de muestras de datos que un modelo de aprendizaje automático procesa en una sola iteración de entrenamiento. Usando el tamaño de lote máximo admitido por tu GPU, puedes aprovechar al máximo sus capacidades y reducir el tiempo que toma el entrenamiento del modelo. Sin embargo, querrás evitar quedarte sin memoria de la GPU. Si encuentras errores de memoria, reduce el tamaño del lote de forma incremental hasta que el modelo se entrene sin problemas.
Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉
Con respecto a YOLO26, puedes establecer el parámetro batch en la configuración de entrenamiento para que coincida con la capacidad de tu GPU. Además, establecer batch=-1 en tu script de entrenamiento determinará automáticamente el tamaño de lote que se puede procesar eficientemente según las capacidades de tu dispositivo. Al ajustar el tamaño del lote, puedes aprovechar al máximo tus recursos de GPU y mejorar el proceso de entrenamiento general.
Link to this sectionEntrenamiento con subconjuntos#
El entrenamiento con subconjuntos es una estrategia inteligente que implica entrenar tu modelo en un conjunto de datos más pequeño que representa al conjunto de datos más grande. Puede ahorrar tiempo y recursos, especialmente durante el desarrollo inicial y las pruebas del modelo. Si te falta tiempo o estás experimentando con diferentes configuraciones de modelo, el entrenamiento con subconjuntos es una buena opción.
Cuando se trata de YOLO26, puedes implementar fácilmente el entrenamiento con subconjuntos usando el parámetro fraction. Este parámetro te permite especificar qué fracción de tu conjunto de datos usar para el entrenamiento. Por ejemplo, establecer fraction=0.1 entrenará tu modelo en el 10% de los datos. Puedes usar esta técnica para iteraciones rápidas y ajustar tu modelo antes de comprometerte a entrenarlo usando un conjunto de datos completo. El entrenamiento con subconjuntos te ayuda a progresar rápidamente e identificar posibles problemas desde el principio.
Link to this sectionEntrenamiento multiescala#
El entrenamiento multiescala es una técnica que mejora la capacidad de generalización de tu modelo al entrenarlo en imágenes de diferentes tamaños. Tu modelo puede aprender a detectar objetos a diferentes escalas y distancias y volverse más robusto.
Por ejemplo, cuando entrenas YOLO26, puedes habilitar el entrenamiento multiescala configurando el parámetro scale. Este parámetro ajusta el tamaño de las imágenes de entrenamiento mediante un factor especificado, simulando objetos a diferentes distancias. Por ejemplo, establecer scale=0.5 amplía aleatoriamente las imágenes de entrenamiento por un factor entre 0.5 y 1.5 durante el entrenamiento. Configurar este parámetro permite que tu modelo experimente una variedad de escalas de imagen y mejore sus capacidades de detección en diferentes tamaños de objetos y escenarios.
Ultralytics también admite el entrenamiento multiescala de tamaño de imagen a través del parámetro multi_scale. A diferencia de scale, que amplía las imágenes y luego rellena/recorta de nuevo a imgsz, multi_scale cambia el propio imgsz en cada lote (redondeado al paso del modelo). Por ejemplo, con imgsz=640 y multi_scale=0.25, el tamaño de entrenamiento se muestrea desde 480 hasta 800 en pasos de paso (p. ej., 480, 512, 544, ..., 800), mientras que multi_scale=0.0 mantiene un tamaño fijo.
Link to this sectionAlmacenamiento en caché#
El almacenamiento en caché es una técnica importante para mejorar la eficiencia del entrenamiento de modelos de aprendizaje automático. Al almacenar imágenes preprocesadas en memoria, el almacenamiento en caché reduce el tiempo que la GPU pasa esperando a que los datos se carguen desde el disco. El modelo puede recibir datos continuamente sin retrasos causados por operaciones de E/S de disco.
El almacenamiento en caché se puede controlar al entrenar YOLO26 usando el parámetro cache:
cache=True: Almacena las imágenes del conjunto de datos en la RAM, proporcionando la velocidad de acceso más rápida pero a costa de un mayor uso de memoria.cache='disk': Almacena las imágenes en el disco, más lento que la RAM pero más rápido que cargar datos nuevos cada vez.cache=False: Desactiva el almacenamiento en caché, dependiendo totalmente de la E/S del disco, que es la opción más lenta.
Link to this sectionEntrenamiento de precisión mixta#
El entrenamiento de precisión mixta utiliza tipos de punto flotante de 16 bits (FP16) y 32 bits (FP32). Las fortalezas tanto de FP16 como de FP32 se aprovechan utilizando FP16 para un cálculo más rápido y FP32 para mantener la precisión donde sea necesario. La mayoría de las operaciones de la red neuronal se realizan en FP16 para beneficiarse de un cálculo más rápido y un menor uso de memoria. Sin embargo, se mantiene una copia maestra de los pesos del modelo en FP32 para garantizar la precisión durante los pasos de actualización de pesos. Puedes manejar modelos más grandes o tamaños de lote más grandes dentro de las mismas limitaciones de hardware.
Para implementar el entrenamiento de precisión mixta, necesitarás modificar tus scripts de entrenamiento y asegurarte de que tu hardware (como las GPU) lo admita. Muchos marcos modernos de aprendizaje profundo, como PyTorch y TensorFlow, ofrecen soporte integrado para precisión mixta.
El entrenamiento de precisión mixta es sencillo cuando trabajas con YOLO26. Puedes usar la bandera amp en tu configuración de entrenamiento. Establecer amp=True habilita el entrenamiento con Precisión Mixta Automática (AMP). El entrenamiento de precisión mixta es una forma sencilla pero efectiva de optimizar tu proceso de entrenamiento de modelos.
Link to this sectionPesos preentrenados#
Usar pesos preentrenados es una forma inteligente de acelerar el proceso de entrenamiento de tu modelo. Los pesos preentrenados provienen de modelos ya entrenados en grandes conjuntos de datos, dándole a tu modelo una ventaja inicial. El aprendizaje por transferencia adapta modelos preentrenados a tareas nuevas y relacionadas. El ajuste fino (fine-tuning) de un modelo preentrenado implica comenzar con estos pesos y luego continuar el entrenamiento en tu conjunto de datos específico. Este método de entrenamiento resulta en tiempos de entrenamiento más rápidos y, a menudo, un mejor rendimiento porque el modelo comienza con una base sólida de características básicas.
El parámetro pretrained facilita el aprendizaje por transferencia con YOLO26. Establecer pretrained=True usará los pesos preentrenados predeterminados, o puedes especificar una ruta a un modelo preentrenado personalizado. Usar pesos preentrenados y aprendizaje por transferencia potencia eficazmente las capacidades de tu modelo y reduce los costos de entrenamiento.
Link to this sectionOtras técnicas a considerar al manejar un conjunto de datos grande#
Hay un par de otras técnicas a considerar al manejar un conjunto de datos grande:
- Programadores de tasa de aprendizaje: La implementación de programadores de tasa de aprendizaje ajusta dinámicamente la tasa de aprendizaje 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
lrfayuda a gestionar la programación de la tasa de aprendizaje estableciendo la tasa de aprendizaje final como una fracción de la tasa inicial. - Entrenamiento distribuido: Para manejar grandes conjuntos de datos, el entrenamiento distribuido puede cambiar las reglas del juego. Puedes reducir el tiempo de entrenamiento distribuyendo la carga de trabajo de entrenamiento entre varias GPU o máquinas. Este enfoque es particularmente valioso para proyectos a escala empresarial con recursos computacionales considerables.
Link to this sectionEl número de épocas para entrenar#
Al entrenar un modelo, una época se refiere a una pasada completa por todo el conjunto de datos de entrenamiento. Durante una época, el modelo procesa cada ejemplo en el conjunto de entrenamiento una vez y actualiza sus parámetros basados en el algoritmo de aprendizaje. Por lo general, se necesitan múltiples épocas para permitir que el modelo aprenda y refine sus parámetros con el tiempo.
Una pregunta común que surge es cómo determinar el número de épocas para entrenar el modelo. Un buen punto de partida son 300 épocas. Si el modelo sufre sobreajuste (overfitting) pronto, puedes reducir el número de épocas. Si no ocurre sobreajuste después de 300 épocas, puedes extender el entrenamiento a 600, 1200 o más épocas.
Sin embargo, el número ideal de épocas puede variar según el tamaño de tu conjunto de datos y los objetivos del proyecto. Los conjuntos de datos más grandes podrían requerir más épocas para que el modelo aprenda de manera efectiva, mientras que los conjuntos de datos más pequeños podrían necesitar menos épocas para evitar el sobreajuste. Con respecto a YOLO26, puedes configurar el parámetro epochs en tu script de entrenamiento.
Link to this sectionParada temprana (Early Stopping)#
La parada temprana es una técnica valiosa para optimizar el entrenamiento del modelo. Al monitorear el rendimiento de la validación, puedes detener el entrenamiento una vez que el modelo deja de mejorar. Puedes ahorrar recursos computacionales y evitar el sobreajuste.
El proceso implica establecer un parámetro de paciencia que determina cuántas épocas esperar para una mejora en las métricas de validación antes de detener el entrenamiento. Si el rendimiento del modelo no mejora dentro de estas épocas, el entrenamiento se detiene para evitar desperdiciar tiempo y recursos.
Para YOLO26, puedes habilitar la parada temprana configurando el parámetro de paciencia en tu configuración de entrenamiento. Por ejemplo, patience=5 significa que el entrenamiento se detendrá si no hay mejora en las métricas de validación durante 5 épocas consecutivas. Usar este método asegura que el proceso de entrenamiento siga siendo eficiente y logre un rendimiento óptimo sin un cómputo excesivo.
Link to this sectionElegir entre entrenamiento en la nube y local#
Hay dos opciones para entrenar tu modelo: entrenamiento en la nube y entrenamiento local.
El entrenamiento en la nube ofrece escalabilidad y hardware potente, y es ideal para manejar grandes conjuntos de datos y modelos complejos. Plataformas como Google Cloud, AWS y Azure brindan acceso bajo demanda a GPU y TPU de alto rendimiento, acelerando los tiempos de entrenamiento y permitiendo experimentos con modelos más grandes. Sin embargo, el entrenamiento en la nube puede ser costoso, especialmente durante períodos prolongados, y la transferencia de datos puede aumentar los costos y la latencia.
El entrenamiento local proporciona un mayor control y personalización, permitiéndote adaptar tu entorno a necesidades específicas y evitar costos continuos en la nube. Puede ser más económico para proyectos a largo plazo y, como tus datos permanecen en las instalaciones, es más seguro. Sin embargo, el hardware local puede tener limitaciones de recursos y requerir mantenimiento, lo que puede llevar a tiempos de entrenamiento más largos para modelos grandes.
Link to this sectionSeleccionar 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 qué tan bien está funcionando el modelo. En términos más simples, el optimizador ayuda al modelo a aprender ajustando sus parámetros para reducir errores. Elegir el optimizador correcto afecta directamente la rapidez y precisión con la que aprende el modelo.
También puedes ajustar los parámetros del optimizador para mejorar el rendimiento del modelo. Ajustar la tasa de aprendizaje establece el tamaño de los pasos al actualizar los parámetros. Para la estabilidad, podrías comenzar con una tasa de aprendizaje moderada y disminuirla gradualmente con el tiempo para mejorar el aprendizaje a largo plazo. Además, establecer el momento (momentum) determina cuánta influencia tienen las actualizaciones pasadas en las actuales. Un valor común para el momentum es alrededor de 0.9. Generalmente proporciona un buen equilibrio.
Link to this sectionOptimizadores comunes#
Diferentes optimizadores tienen varias fortalezas y debilidades. Echemos un vistazo a algunos optimizadores comunes.
-
SGD (Stochastic Gradient Descent / Descenso de Gradiente Estocástico):
- Actualiza los parámetros del modelo usando el gradiente de la función de pérdida con respecto a los parámetros.
- Simple y eficiente, pero puede ser lento para converger y podría quedarse atrapado en mínimos locales.
-
Adam (Adaptive Moment Estimation / Estimación de Momento Adaptativo):
- Combina los beneficios tanto de SGD con momentum como de RMSProp.
- Ajusta la tasa de aprendizaje para cada parámetro basándose en estimaciones de los primeros y segundos momentos de los gradientes.
- Muy adecuado para datos ruidosos y gradientes dispersos.
- Eficiente y generalmente requiere menos ajuste, lo que lo convierte en un optimizador recomendado para YOLO26.
-
RMSProp (Root Mean Square Propagation):
- Ajusta la tasa de aprendizaje para cada parámetro dividiendo el gradiente por un promedio móvil de las magnitudes de los gradientes recientes.
- Ayuda a manejar el problema del gradiente evanescente y es efectivo para redes neuronales recurrentes.
-
MuSGD (híbrido de Muon + SGD):
- Combina actualizaciones al estilo SGD con un comportamiento inspirado en Muon para mejorar la estabilidad en el entrenamiento a gran escala.
- Una buena opción cuando quieres una generalización similar a SGD pero necesitas una convergencia más suave que el SGD simple.
- Especialmente relevante para las recetas de entrenamiento de YOLO26; si no estás seguro, comienza con
optimizer=autoy compara con MuSGD en tu conjunto de datos.
Para YOLO26, el parámetro optimizer te permite elegir entre varios optimizadores, incluidos SGD, MuSGD, Adam, AdamW, NAdam, RAdam y RMSProp, o puedes configurarlo en auto para una selección automática basada en la configuración del modelo.
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDLink to this sectionConectando con la comunidad#
Ser parte de una comunidad de entusiastas de la visión artificial puede ayudarte a resolver problemas y aprender más rápido. Aquí hay algunas formas de conectarse, obtener ayuda y compartir ideas.
Link to this sectionRecursos de la comunidad#
- GitHub Issues: Visita el repositorio de GitHub de YOLO26 y utiliza la pestaña de Issues para hacer preguntas, informar errores y sugerir nuevas funciones. La comunidad y los mantenedores son muy activos y están listos para ayudar.
- Servidor de Discord de Ultralytics: Únete al servidor de Discord de Ultralytics para chatear con otros usuarios y desarrolladores, obtener soporte y compartir tus experiencias.
Link to this sectionDocumentación oficial#
- Documentación de Ultralytics YOLO26: Echa un vistazo a la documentación oficial de YOLO26 para obtener guías detalladas y consejos útiles sobre varios proyectos de visión artificial.
El uso de estos recursos te ayudará a resolver desafíos y mantenerte al día con las últimas tendencias y prácticas en la comunidad de visión artificial.
Link to this sectionPuntos clave#
El entrenamiento de modelos de visión artificial implica seguir buenas prácticas, optimizar tus estrategias y resolver problemas a medida que surgen. Técnicas como ajustar el tamaño de los lotes, el entrenamiento de precisión mixta y comenzar con pesos preentrenados pueden hacer que tus modelos funcionen mejor y se entrenen más rápido. Métodos como el entrenamiento con subconjuntos y la parada temprana te ayudan a ahorrar tiempo y recursos. Mantenerte conectado con la comunidad y seguir las nuevas tendencias te ayudará a seguir mejorando tus habilidades de entrenamiento de modelos.
Link to this sectionFAQ#
Link to this section¿Cómo puedo mejorar la utilización de la GPU al entrenar un gran conjunto de datos con Ultralytics YOLO?#
Para mejorar la utilización de la GPU, establece el parámetro batch en tu configuración de entrenamiento al tamaño máximo soportado por tu GPU. Esto asegura que aproveches al máximo las capacidades de la GPU, reduciendo el tiempo de entrenamiento. Si encuentras errores de memoria, reduce incrementalmente el tamaño del lote hasta que el entrenamiento se ejecute sin problemas. Para YOLO26, establecer batch=-1 en tu script de entrenamiento determinará automáticamente el tamaño de lote óptimo para un procesamiento eficiente. Para obtener más información, consulta la configuración de entrenamiento.
Link to this section¿Qué es el entrenamiento de precisión mixta y cómo lo habilito en YOLO26?#
El entrenamiento de precisión mixta utiliza tipos de punto flotante de 16 bits (FP16) y 32 bits (FP32) para equilibrar la velocidad computacional y la precisión. Este enfoque acelera el entrenamiento y reduce el uso de memoria sin sacrificar la precisión del modelo. Para habilitar el entrenamiento de precisión mixta en YOLO26, establece el parámetro amp en True en tu configuración de entrenamiento. Esto activa el entrenamiento con Precisión Mixta Automática (AMP). Para obtener más detalles sobre esta técnica de optimización, consulta la configuración de entrenamiento.
Link to this section¿Cómo mejora el entrenamiento multiescala el rendimiento del modelo YOLO26?#
El entrenamiento multiescala mejora el rendimiento del modelo al entrenarlo en imágenes de diferentes tamaños, permitiendo que el modelo generalice mejor a través de diferentes escalas y distancias. En YOLO26, puedes habilitar el entrenamiento multiescala configurando el parámetro scale en la configuración de entrenamiento. Por ejemplo, scale=0.5 muestrea un factor de zoom entre 0.5 y 1.5, luego rellena/recorta de nuevo a imgsz. Esta técnica simula objetos a diferentes distancias, haciendo que el modelo sea más robusto en varios escenarios. Para ver configuraciones y más detalles, consulta la configuración de entrenamiento.
Link to this section¿Cómo puedo usar pesos preentrenados para acelerar el entrenamiento en YOLO26?#
Usar pesos preentrenados puede acelerar enormemente el entrenamiento y mejorar la precisión del modelo aprovechando un modelo que ya está familiarizado con características visuales fundamentales. En YOLO26, simplemente establece el parámetro pretrained en True o proporciona una ruta a tus pesos preentrenados personalizados en la configuración de entrenamiento. Este método, llamado aprendizaje por transferencia, permite que los modelos entrenados en grandes conjuntos de datos se adapten eficazmente a tu aplicación específica. Aprende más sobre cómo usar pesos preentrenados y sus beneficios en la guía de configuración de entrenamiento.
Link to this section¿Cuál es el número recomendado de épocas para entrenar un modelo y cómo configuro esto en YOLO26?#
El número de épocas se refiere a las pasadas completas por el conjunto de datos de entrenamiento durante el entrenamiento del modelo. Un punto de partida típico son 300 épocas. Si tu modelo sufre sobreajuste pronto, puedes reducir el número. Alternativamente, si no se observa sobreajuste, podrías extender el entrenamiento a 600, 1200 o más épocas. Para configurar esto en YOLO26, usa el parámetro epochs en tu script de entrenamiento. Para obtener consejos adicionales sobre cómo determinar el número ideal de épocas, consulta esta sección sobre el número de épocas.