Prácticas recomendadas de aprendizaje automático y consejos para el entrenamiento de modelos
Introducció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, debe definir sus objetivos y recopilar y anotar sus datos. Después de preprocesar los datos para asegurarse de que estén limpios y sean consistentes, puede pasar a entrenar su modelo.
Ver: Consejos para el entrenamiento de modelos | Cómo manejar grandes conjuntos de datos | Tamaño del lote, utilización de la GPU y Precisión mixta
Entonces, ¿qué es el entrenamiento de modelos? El entrenamiento de modelos es el proceso de enseñar a su modelo a reconocer patrones visuales y hacer predicciones basadas en sus datos. Impacta directamente en el rendimiento y la precisión de su aplicación. En esta guía, cubriremos las mejores prácticas, las técnicas de optimización y los consejos para la resolución de problemas para ayudarlo a entrenar sus modelos de visión artificial de manera efectiva.
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. Inicialmente, el modelo se alimenta con un gran conjunto de imágenes etiquetadas. Hace predicciones sobre lo que hay en estas imágenes, y las predicciones se comparan con las etiquetas o el contenido real para calcular los errores. Estos errores muestran cuán lejos están las predicciones del modelo de los valores verdaderos.
Durante el entrenamiento, el modelo realiza predicciones iterativamente, calcula errores y actualiza sus parámetros a través de un proceso llamado 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, 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 varias tareas, incluyendo la detección de objetos, la segmentación de instancias y la clasificación de imágenes. El objetivo final es crear un modelo que pueda generalizar su aprendizaje a imágenes nuevas y no vistas, de modo que pueda comprender con precisión los datos visuales en aplicaciones del mundo real.
Ahora que sabemos lo que está sucediendo detrás de escena cuando entrenamos un modelo, veamos los puntos a considerar al entrenar un modelo.
Entrenamiento en conjuntos de datos grandes
Hay algunos aspectos diferentes a tener en cuenta cuando planea utilizar un conjunto de datos grande para entrenar un modelo. Por ejemplo, puede ajustar el tamaño del lote, controlar la utilización de la GPU, optar por utilizar el entrenamiento multiescala, etc. Repasemos cada una de estas opciones en detalle.
Tamaño del lote y utilización de la GPU
Al entrenar modelos en grandes conjuntos de datos, utilizar eficientemente su GPU es clave. El tamaño del lote 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. Al utilizar el tamaño de lote máximo admitido por su GPU, puede aprovechar al máximo sus capacidades y reducir el tiempo que lleva el entrenamiento del modelo. Sin embargo, debe evitar quedarse sin memoria de la GPU. Si encuentra errores de memoria, reduzca el tamaño del lote de forma incremental hasta que el modelo se entrene sin problemas.
Ver: Cómo usar la inferencia por lotes con Ultralytics YOLO26 | Acelere la detección de objetos en Python 🎉
Con respecto a YOLO26, puede configurar el batch_size parámetro en la configuración de entrenamiento para que coincida con la capacidad de su GPU. Además, configurar batch=-1 en su script de entrenamiento determinará automáticamente el tamaño de lote que se puede procesar de manera eficiente según las capacidades de tu dispositivo. Al ajustar el tamaño del lote, puedes aprovechar al máximo los recursos de tu GPU y mejorar el proceso de entrenamiento en general.
Entrenamiento de 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 el conjunto de datos más grande. Puede ahorrar tiempo y recursos, especialmente durante el desarrollo y las pruebas iniciales del modelo. Si tienes poco tiempo o estás experimentando con diferentes configuraciones de modelo, el entrenamiento con subconjuntos es una buena opción.
En cuanto a YOLO26, puede implementar fácilmente el entrenamiento de subconjuntos utilizando el fraction parámetro. 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 con el 10% de los datos. Puedes utilizar esta técnica para realizar iteraciones rápidas y ajustar tu modelo antes de comprometerte a entrenar un modelo utilizando un conjunto de datos completo. El entrenamiento con subconjuntos te ayuda a avanzar rápidamente e identificar posibles problemas de forma temprana.
Entrenamiento multiescala
El entrenamiento multiescala es una técnica que mejora la capacidad de generalización de su modelo entrenándolo con imágenes de diferentes tamaños. Su modelo puede aprender a detectar objetos a diferentes escalas y distancias y volverse más robusto.
Por ejemplo, cuando entrena YOLO26, puede habilitar el entrenamiento multiescala configurando el scale parámetro. Este parámetro ajusta el tamaño de las imágenes de entrenamiento por un factor especificado, simulando objetos a diferentes distancias. Por ejemplo, establecer scale=0.5 Amplía aleatoriamente las imágenes de entrenamiento en un factor entre 0.5 y 1.5 durante el entrenamiento. La configuración de este parámetro permite que su modelo experimente una variedad de escalas de imagen y mejore sus capacidades de detección en diferentes tamaños y escenarios de objetos.
Ultralytics admite el entrenamiento multiescala del tamaño de las imágenes a través del multi_scale parámetro. A diferencia de scale, que amplía las imágenes y luego las rellena/recorta de nuevo a imgsz, multi_scale cambios imgsz 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 400 (por ejemplo, 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 almacenar las imágenes preprocesadas en la memoria, el almacenamiento en caché reduce el tiempo que la GPU pasa esperando 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.
El almacenamiento en caché se puede controlar al entrenar YOLO26 utilizando el cache parámetro:
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 la 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é, confiando completamente en la E/S del disco, que es la opción más lenta.
Entrenamiento de precisión mixta
El entrenamiento de precisión mixta utiliza tipos de punto flotante de 16 bits (FP16) y 32 bits (FP32). Los puntos fuertes de FP16 y FP32 se aprovechan utilizando FP16 para una computación más rápida 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 una computación más rápida y un menor uso de la memoria. Sin embargo, se conserva una copia maestra de los pesos del modelo en FP32 para garantizar la precisión durante los pasos de actualización de los 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, deberá modificar sus scripts de entrenamiento y asegurarse de que su hardware (como las GPU) lo admita. Muchos marcos modernos de aprendizaje profundo, como PyTorch y TensorFlow, ofrecen soporte integrado para la precisión mixta.
El entrenamiento de precisión mixta es sencillo cuando se trabaja con YOLO26. Puede utilizar el amp flag en tu configuración de entrenamiento. Establecer amp=True habilita el entrenamiento de Precisión Mixta Automática (AMP). El entrenamiento de precisión mixta es una forma sencilla pero eficaz de optimizar el proceso de entrenamiento de tu modelo.
Pesos Preentrenados
Utilizar pesos preentrenados es una forma inteligente de acelerar el proceso de entrenamiento de su modelo. Los pesos preentrenados provienen de modelos ya entrenados en grandes conjuntos de datos, lo que le da a su modelo una ventaja inicial. El aprendizaje por transferencia adapta modelos preentrenados a tareas nuevas y relacionadas. El ajuste fino de un modelo preentrenado implica comenzar con estos pesos y luego continuar el entrenamiento en su 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 sólida comprensión de las características básicas.
El pretrained parámetro facilita el aprendizaje por transferencia con YOLO26. Configurar pretrained=True utilizará los pesos preentrenados por defecto, o puede especificar una ruta a un modelo preentrenado personalizado. El uso de pesos preentrenados y el aprendizaje por transferencia aumentan eficazmente las capacidades de su modelo y reducen los costes de entrenamiento.
Otras técnicas a considerar al manejar un conjunto de datos grande
Hay un par de técnicas más 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
lrfEste parámetro ayuda 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 en múltiples GPUs o máquinas. Este enfoque es particularmente valioso para proyectos a escala empresarial con importantes recursos computacionales.
El 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 del conjunto de entrenamiento una vez y actualiza sus parámetros basándose en el algoritmo de aprendizaje. Normalmente se necesitan varias é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 se sobreajusta al principio, puedes reducir el número de épocas. Si no se produce 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 su conjunto de datos y los objetivos del proyecto. Los conjuntos de datos más grandes pueden requerir más épocas para que el modelo aprenda eficazmente, mientras que los conjuntos de datos más pequeños pueden necesitar menos épocas para evitar el sobreajuste. Con respecto a YOLO26, puede configurar el epochs parámetro en tu script de entrenamiento.
Parada temprana
La parada anticipada es una técnica valiosa para optimizar el entrenamiento del modelo. Al supervisar 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 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 la pérdida de tiempo y recursos.

Para YOLO26, puede habilitar la parada temprana configurando el parámetro `patience` en su 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. El uso de este método asegura que el proceso de entrenamiento siga siendo eficiente y logre un rendimiento óptimo sin un cálculo excesivo.
Elegir 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 proporcionan acceso bajo demanda a GPUs y TPUs 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 ser caro, especialmente durante largos periodos, y la transferencia de datos puede aumentar los costes y la latencia.
El entrenamiento local proporciona un mayor control y personalización, lo que te permite adaptar tu entorno a necesidades específicas y evitar los costes continuos de 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 conducir a tiempos de entrenamiento más largos para 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 ajustando sus parámetros para reducir los errores. La elección del optimizador adecuado afecta directamente a 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. El ajuste de la tasa de aprendizaje establece el tamaño de los pasos al actualizar los parámetros. Para la estabilidad, puedes empezar con una tasa de aprendizaje moderada y disminuirla gradualmente con el tiempo para mejorar el aprendizaje a largo plazo. Además, el establecimiento del momento determina cuánta influencia tienen las actualizaciones pasadas en las actualizaciones actuales. Un valor común para el momento es alrededor de 0,9. Generalmente proporciona un buen equilibrio.
Optimizadores comunes
Los diferentes optimizadores tienen varios puntos fuertes y débiles. Echemos un vistazo a algunos optimizadores comunes.
SGD (Descenso de Gradiente Estocástico):
- Actualiza los parámetros del modelo utilizando 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 atascado en mínimos locales.
Adam (Estimación Adaptativa de Momentos):
- Combina los beneficios tanto de SGD con momentum como de RMSProp.
- Ajusta la tasa de aprendizaje para cada parámetro basándose en las estimaciones de los momentos primero y segundo de los gradientes.
- Adecuado para datos ruidosos y gradientes dispersos.
- Eficiente y generalmente requiere menos ajuste, lo que lo convierte en un optimizador recomendado para YOLO26.
RMSProp (Propagación de la Raíz del Error Cuadrático Medio):
- 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 de la desaparición del gradiente y es eficaz para redes neuronales recurrentes.
Para YOLO26, el optimizer parameter te permite elegir entre varios optimizadores, incluyendo SGD, Adam, AdamW, NAdam, RAdam y RMSProp, o puedes establecerlo en auto para la selección automática basada en la configuración del modelo.
Conectando 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í tienes algunas formas de conectarte, obtener ayuda y compartir ideas.
Recursos de la comunidad
- Problemas de GitHub: Visite el repositorio de GitHub de YOLO26 y utilice la pestaña de Problemas para hacer preguntas, informar de errores y sugerir nuevas características. La comunidad y los mantenedores están muy activos y 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.
Documentación oficial
- Documentación de Ultralytics YOLO26: Consulte la documentación oficial de YOLO26 para guías detalladas y consejos útiles sobre diversos proyectos de visión por computadora.
El uso de estos recursos te ayudará a resolver desafíos y a mantenerte al día con las últimas tendencias y prácticas en la comunidad de visión artificial.
Puntos clave
El entrenamiento de modelos de visión por computadora implica seguir buenas prácticas, optimizar sus estrategias y resolver problemas a medida que surgen. Técnicas como ajustar los tamaños de lote, el entrenamiento de precisión mixta y comenzar con pesos preentrenados pueden hacer que sus modelos funcionen mejor y se entrenen más rápido. Métodos como el entrenamiento de subconjuntos y la parada temprana le ayudan a ahorrar tiempo y recursos. Mantenerse conectado con la comunidad y al día con las nuevas tendencias le ayudará a seguir mejorando sus habilidades de entrenamiento de modelos.
Preguntas frecuentes
¿Cómo puedo mejorar la utilización de la GPU al entrenar un conjunto de datos grande con Ultralytics YOLO?
Para mejorar la utilización de la GPU, establece el parámetro batch_size parámetro en su configuración de entrenamiento al tamaño máximo soportado por su GPU. Esto asegura que aproveche al máximo las capacidades de la GPU, reduciendo el tiempo de entrenamiento. Si encuentra errores de memoria, reduzca incrementalmente el tamaño del lote hasta que el entrenamiento se ejecute sin problemas. Para YOLO26, configurar batch=-1 en tu script de entrenamiento determinará automáticamente el tamaño de lote óptimo para un procesamiento eficiente. Para más información, consulta la configuración de entrenamiento.
¿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. Para habilitar el entrenamiento de precisión mixta en YOLO26, configure el amp a True en tu configuración de entrenamiento. Esto activa el entrenamiento de Precisión Mixta Automática (AMP). Para obtener más detalles sobre esta técnica de optimización, consulta la configuración de entrenamiento.
¿Cómo mejora el entrenamiento multiescala el rendimiento del modelo YOLO26?
El entrenamiento multiescala mejora el rendimiento del modelo al entrenar con imágenes de tamaños variables, permitiendo que el modelo generalice mejor en diferentes escalas y distancias. En YOLO26, puede habilitar el entrenamiento multiescala configurando el scale en la configuración de entrenamiento. Por ejemplo, scale=0.5 muestrea un factor de zoom entre 0,5 y 1,5, y luego rellena/recorta de nuevo a imgsz. Esta técnica simula objetos a diferentes distancias, lo que hace que el modelo sea más robusto en diversos escenarios. Para ver la configuración y obtener más detalles, consulte el configuración de entrenamiento.
¿Cómo puedo usar pesos preentrenados para acelerar el entrenamiento en YOLO26?
El uso de pesos preentrenados puede acelerar significativamente el entrenamiento y mejorar la precisión del modelo al aprovechar un modelo ya familiarizado con características visuales fundamentales. En YOLO26, simplemente configure el pretrained a True o proporcionar una ruta a sus 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 su aplicación específica. Obtenga más información sobre cómo usar los pesos preentrenados y sus beneficios en el guía de configuración de entrenamiento.
¿Cuál es el número de épocas recomendado para entrenar un modelo y cómo lo configuro en YOLO26?
El número de épocas se refiere a las pasadas completas a través del conjunto de datos de entrenamiento durante el proceso de capacitación del modelo. Un punto de partida típico es de 300 épocas. Si su modelo sobreajusta prematuramente, puede reducir este número. Alternativamente, si no se observa sobreajuste, podría extender el entrenamiento a 600, 1200 o más épocas. Para configurar esto en YOLO26, utilice el epochs parámetro en tu script de entrenamiento. Para obtener consejos adicionales sobre cómo determinar el número ideal de épocas, consulta esta sección sobre número de épocas.