Ir al contenido

Mejores pr谩cticas de aprendizaje autom谩tico y consejos para el entrenamiento de modelos

Introducci贸n

Uno de los pasos m谩s importantes cuando se trabaja en un proyecto de visi贸n por ordenador es el entrenamiento del modelo. Antes de llegar a este paso, es necesario definir los objetivos y recoger y anotar los datos. Despu茅s de preprocesar los datos para asegurarte de que est谩n limpios y son coherentes, puedes pasar a entrenar tu modelo.



Observa: Consejos para el entrenamiento de modelos | C贸mo manejar grandes conjuntos de datos | Tama帽o del lote, GPU Utilizaci贸n y Precisi贸n mixta

驴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. Tiene un impacto directo en el rendimiento y la precisi贸n de su aplicaci贸n. En esta gu铆a, cubriremos las mejores pr谩cticas, t茅cnicas de optimizaci贸n y consejos para la resoluci贸n de problemas que te ayudar谩n a entrenar tus modelos de visi贸n por ordenador de forma efectiva.

C贸mo entrenar un modelo de aprendizaje autom谩tico

Un modelo de visi贸n por ordenador se entrena ajustando sus par谩metros internos para minimizar los errores. Inicialmente, el modelo se alimenta de un gran conjunto de im谩genes etiquetadas. Realiza predicciones sobre lo que hay en esas im谩genes, y las predicciones se comparan con las etiquetas o contenidos reales para calcular los errores. Estos errores muestran la distancia entre las predicciones del modelo y los valores reales.

Durante el entrenamiento, el modelo realiza 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 (weights and biases) 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.

驴Qu茅 es la retropropagaci贸n?

Este proceso de aprendizaje permite al modelo de visi贸n por ordenador realizar diversas tareas, como la detecci贸n de objetos, la segmentaci贸n de instancias y la clasificaci贸n de im谩genes. El objetivo final es crear un modelo capaz de generalizar su aprendizaje a nuevas im谩genes no vistas, de modo que pueda comprender con precisi贸n los datos visuales en aplicaciones del mundo real.

Ahora que sabemos lo que ocurre entre bastidores cuando entrenamos un modelo, veamos los puntos que hay que tener en cuenta al entrenar un modelo.

Entrenamiento en grandes conjuntos de datos

Hay varios aspectos en los que pensar cuando se planea utilizar un gran conjunto de datos para entrenar un modelo. Por ejemplo, puede ajustar el tama帽o del lote, controlar la utilizaci贸n de GPU , elegir utilizar el entrenamiento multiescala, etc. Veamos cada una de estas opciones en detalle.

Tama帽o del lote y utilizaci贸n de GPU

Cuando se entrenan modelos en grandes conjuntos de datos, es fundamental utilizar eficazmente su GPU . 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. Utilizando el tama帽o m谩ximo de lote que admite su GPU, puede aprovechar al m谩ximo sus capacidades y reducir el tiempo que tarda el entrenamiento del modelo. Sin embargo, debe evitar quedarse sin memoria en GPU . Si encuentra errores de memoria, reduzca el tama帽o del lote gradualmente hasta que el modelo se entrene sin problemas.

Con respecto a YOLO11, puede establecer el batch_size en el par谩metro configuraci贸n de la formaci贸n para que coincida con su capacidad GPU . Adem谩s, el ajuste batch=-1 en su script de entrenamiento determinar谩 autom谩ticamente el tama帽o del lote que pueden procesarse eficazmente en funci贸n de las capacidades de su dispositivo. Ajustando el tama帽o del lote, puedes aprovechar al m谩ximo los recursos de GPU y mejorar el proceso de formaci贸n en general.

Formaci贸n de subconjuntos

El entrenamiento de subconjuntos es una estrategia inteligente que consiste en entrenar el 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 dispone de poco tiempo o est谩 experimentando con distintas configuraciones del modelo, el entrenamiento de subconjuntos es una buena opci贸n.

Cuando se trata de YOLO11, puede implementar f谩cilmente la formaci贸n de subconjuntos utilizando la funci贸n fraction par谩metro. Este par谩metro permite especificar qu茅 fracci贸n del conjunto de datos se utilizar谩 para el entrenamiento. Por ejemplo, si establece fraction=0.1 entrenar谩 su modelo en el 10% de los datos. Puede utilizar esta t茅cnica para realizar iteraciones r谩pidas y ajustar su modelo antes de comprometerse a entrenar un modelo utilizando un conjunto de datos completo. El entrenamiento de subconjuntos le ayuda a progresar r谩pidamente y a identificar posibles problemas desde el principio.

Formaci贸n multiescala

El entrenamiento multiescala es una t茅cnica que mejora la capacidad de generalizaci贸n del modelo entren谩ndolo con im谩genes de distintos tama帽os. Su modelo puede aprender a detectar objetos a diferentes escalas y distancias y hacerse m谩s robusto.

Por ejemplo, al entrenar YOLO11, puede activar el entrenamiento multiescala configurando la funci贸n 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, si se ajusta scale=0.5 reducir谩 el tama帽o de la imagen a la mitad, mientras que scale=2.0 lo duplicar谩. La configuraci贸n de este par谩metro permite a su modelo experimentar una variedad de escalas de imagen y mejorar sus capacidades de detecci贸n a trav茅s de diferentes tama帽os de objetos y escenarios.

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 im谩genes preprocesadas en la memoria, el almacenamiento en cach茅 reduce el tiempo que GPU pasa esperando a que los datos se carguen desde el disco. El modelo puede recibir datos continuamente sin retrasos causados por las operaciones de E/S del disco.

El almacenamiento en cach茅 puede controlarse cuando se entrena YOLO11 utilizando la funci贸n cache par谩metro:

  • cache=True: Almacena las im谩genes de los conjuntos de datos en RAM, lo que proporciona la mayor velocidad de acceso 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茅, confiando totalmente en la E/S de disco, que es la opci贸n m谩s lenta.

Entrenamiento de precisi贸n mixto

El entrenamiento de precisi贸n mixta utiliza tipos de coma flotante de 16 bits (FP16) y 32 bits (FP32). Los puntos fuertes de FP16 y FP32 se aprovechan utilizando FP16 para un c谩lculo m谩s r谩pido 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 un c谩lculo m谩s r谩pido y un menor uso de memoria. Sin embargo, una copia maestra de los pesos del modelo se mantiene en FP32 para asegurar la precisi贸n durante los pasos de actualizaci贸n de pesos. Puede manejar modelos m谩s grandes o tama帽os de lote m谩s grandes dentro de las mismas restricciones de hardware.

Entrenamiento de precisi贸n mixto

Para implementar el entrenamiento de precisi贸n mixta, tendr谩s que modificar tus scripts de entrenamiento y asegurarte de que tu hardware (como las GPU) lo admite. Muchos marcos de aprendizaje profundo modernos, como Tensorflowofrecen soporte integrado para la precisi贸n mixta.

El entrenamiento de precisi贸n mixta es sencillo cuando se trabaja con YOLO11. Puede utilizar la funci贸n amp en la configuraci贸n del entrenamiento. Configuraci贸n de amp=True permite el entrenamiento autom谩tico de precisi贸n mixta (AMP). El entrenamiento de precisi贸n mixta es una forma sencilla pero eficaz de optimizar el proceso de entrenamiento de modelos.

Pesas preentrenadas

Utilizar ponderaciones preentrenadas es una forma inteligente de acelerar el proceso de entrenamiento de su modelo. Los pesos preentrenados proceden de modelos ya entrenados en grandes conjuntos de datos, lo que proporciona a su modelo una ventaja. El aprendizaje por transferencia adapta los modelos preentrenados a nuevas tareas relacionadas. El ajuste de un modelo preentrenado consiste en empezar con estas ponderaciones y continuar el entrenamiento en su conjunto de datos espec铆fico. Este m茅todo de entrenamiento acelera los tiempos de entrenamiento y, a menudo, mejora el rendimiento, ya que el modelo comienza con una s贸lida comprensi贸n de las caracter铆sticas b谩sicas.

En pretrained facilita el aprendizaje por transferencia con YOLO11. Configuraci贸n de 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 potencian eficazmente las capacidades de su modelo y reducen los costes de formaci贸n.

Otras t茅cnicas a tener en cuenta cuando se maneja un gran conjunto de datos

Hay un par de t茅cnicas m谩s a tener en cuenta cuando se maneja un gran conjunto de datos:

  • Programadores del ritmo de aprendizaje: La aplicaci贸n de programadores de la 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. Cuando se entrena YOLO11, el lrf 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.
  • Formaci贸n distribuida: Para manejar grandes conjuntos de datos, el entrenamiento distribuido puede cambiar las reglas del juego. Puedes reducir el tiempo de entrenamiento repartiendo la carga de trabajo entre varias GPU o m谩quinas.

El n煤mero de 茅pocas para entrenar

Cuando se entrena 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 que el modelo aprenda y perfeccione sus par谩metros con el tiempo.

Una pregunta frecuente 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 adapta demasiado pronto, puede reducir el n煤mero de 茅pocas. Si no se produce sobreajuste despu茅s de 300 茅pocas, puede ampliar el entrenamiento a 600, 1200 o m谩s 茅pocas.

Sin embargo, el n煤mero ideal de 茅pocas puede variar en funci贸n del tama帽o del conjunto de datos y de los objetivos del proyecto. Los conjuntos de datos m谩s grandes pueden necesitar m谩s 茅pocas para que el modelo aprenda de forma eficaz, mientras que los conjuntos de datos m谩s peque帽os pueden necesitar menos 茅pocas para evitar el sobreajuste. Con respecto a YOLO11, puede establecer el valor epochs en el script de entrenamiento.

Parada anticipada

La detenci贸n temprana es una t茅cnica valiosa para optimizar el entrenamiento de modelos. Controlando el rendimiento de la validaci贸n, puede detener el entrenamiento cuando el modelo deje de mejorar. Puede ahorrar recursos inform谩ticos y evitar el sobreajuste.

El proceso consiste en establecer un par谩metro de paciencia que determina cu谩ntas 茅pocas hay que esperar para obtener una mejora en las m茅tricas de validaci贸n antes de detener el entrenamiento. Si el rendimiento del modelo no mejora en esas 茅pocas, se detiene el entrenamiento para evitar p茅rdidas de tiempo y recursos.

Parada anticipada

Para YOLO11, puede activar la parada anticipada estableciendo el par谩metro patience en su configuraci贸n de entrenamiento. Por ejemplo, patience=5 significa que el entrenamiento se detendr谩 si no hay ninguna mejora en las m茅tricas de validaci贸n durante 5 茅pocas consecutivas. El uso de este m茅todo garantiza que el proceso de entrenamiento siga siendo eficiente y logre un rendimiento 贸ptimo sin un c谩lculo excesivo.

Elegir entre formaci贸n en la nube y formaci贸n local

Hay dos opciones para entrenar tu modelo: entrenamiento en la nube y entrenamiento local.

El entrenamiento en la nube ofrece escalabilidad y un 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 GPU y TPU de alto rendimiento, lo que acelera los tiempos de entrenamiento y permite realizar experimentos 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 a帽adir costes y latencia.

La formaci贸n local proporciona un mayor control y personalizaci贸n, lo que le permite adaptar su entorno a necesidades espec铆ficas y evitar los costes continuos de la nube. Puede resultar m谩s econ贸mico para proyectos a largo plazo y, como los 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 alargar el tiempo de formaci贸n de los modelos grandes.

Selecci贸n de un optimizador

Un optimizador es un algoritmo que ajusta los pesos de la 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. Elegir el optimizador adecuado afecta directamente a la rapidez y precisi贸n con la que aprende el modelo.

Tambi茅n puede ajustar los par谩metros del optimizador para mejorar el rendimiento del modelo. El ajuste de la tasa de aprendizaje determina el tama帽o de los pasos al actualizar los par谩metros. En aras de la estabilidad, puede empezar con una tasa de aprendizaje moderada y reducirla gradualmente con el tiempo para mejorar el aprendizaje a largo plazo. Adem谩s, el ajuste del impulso determina el grado de influencia de las actualizaciones anteriores sobre las actuales. Un valor com煤n para el impulso es alrededor de 0,9. Generalmente proporciona un buen equilibrio. Suele proporcionar un buen equilibrio.

Optimizadores comunes

Los distintos optimizadores tienen diversos puntos fuertes y d茅biles. Veamos algunos de los optimizadores m谩s comunes.

  • SGD (Descenso 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.
    • Sencillo y eficaz, pero puede tardar en converger y quedarse atascado en m铆nimos locales.
  • Adam (Estimaci贸n Adaptativa de Momentos):

    • Combina las ventajas de SGD con impulso y RMSProp.
    • Ajusta la tasa de aprendizaje para cada par谩metro bas谩ndose en las estimaciones del primer y segundo momento de los gradientes.
    • Adecuado para datos ruidosos y gradientes dispersos.
    • Es eficaz y, por lo general, requiere menos ajustes, lo que lo convierte en un optimizador recomendado para YOLO11.
  • RMSProp (propagaci贸n de la ra铆z cuadrada 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 resolver el problema del gradiente evanescente y es eficaz para las redes neuronales recurrentes.

Para YOLO11, el optimizer le permite elegir entre varios optimizadores, incluidos SGD, Adam, AdamW, NAdam, RAdam y RMSProp, o puede establecerlo en auto para la selecci贸n autom谩tica en funci贸n de la configuraci贸n del modelo.

Conectar con la Comunidad

Formar parte de una comunidad de entusiastas de la visi贸n por computador puede ayudarte a resolver problemas y aprender m谩s r谩pido. Aqu铆 tienes algunas formas de conectar, obtener ayuda y compartir ideas.

Recursos comunitarios

  • Problemas en GitHub: Visita el repositorio GitHub deYOLO11 y utiliza la pesta帽a Cuestiones para hacer preguntas, informar de errores y sugerir nuevas funciones. La comunidad y los mantenedores son muy activos y est谩n dispuestos a ayudar.
  • Ultralytics Servidor Discord: 脷nete al servidor Discord deUltralytics para chatear con otros usuarios y desarrolladores, obtener ayuda y compartir tus experiencias.

Documentaci贸n oficial

  • Ultralytics YOLO11 Documentaci贸n: Consulte la documentaci贸n oficial de YOLO11 para obtener gu铆as detalladas y consejos 煤tiles sobre diversos proyectos de visi贸n por ordenador.

El uso de estos recursos le ayudar谩 a resolver retos y a mantenerse al d铆a de las 煤ltimas tendencias y pr谩cticas en la comunidad de visi贸n por ordenador.

Principales conclusiones

El entrenamiento de modelos de visi贸n por ordenador implica seguir buenas pr谩cticas, optimizar las estrategias y resolver los problemas a medida que surgen. T茅cnicas como el ajuste del tama帽o de los lotes, el entrenamiento de precisi贸n mixta y el inicio 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 detenci贸n temprana ayudan a ahorrar tiempo y recursos. Permanecer conectado con la comunidad y mantenerse al d铆a de las nuevas tendencias le ayudar谩 a seguir mejorando sus habilidades de entrenamiento de modelos.

PREGUNTAS FRECUENTES

驴C贸mo puedo mejorar la utilizaci贸n de GPU al entrenar un gran conjunto de datos con Ultralytics YOLO ?

Para mejorar la utilizaci贸n de GPU , configure batch_size en tu configuraci贸n de entrenamiento al tama帽o m谩ximo admitido por tu GPU. De este modo, te aseguras de que aprovechas al m谩ximo las capacidades de GPU, reduciendo el tiempo de entrenamiento. Si se producen errores de memoria, reduzca gradualmente el tama帽o del lote hasta que el entrenamiento se realice sin problemas. Para YOLO11, ajuste batch=-1 en su script de entrenamiento determinar谩 autom谩ticamente el tama帽o de lote 贸ptimo para un procesamiento eficiente. Para m谩s informaci贸n, consulte la p谩gina configuraci贸n de la formaci贸n.

驴Qu茅 es el entrenamiento de precisi贸n mixta y c贸mo se activa en YOLO11?

El entrenamiento de precisi贸n mixta utiliza tipos de coma flotante de 16 bits (FP16) y 32 bits (FP32) para equilibrar la velocidad de c谩lculo y la precisi贸n. Este enfoque acelera el entrenamiento y reduce el uso de memoria sin sacrificar el modelo. precisi贸n. Para habilitar el entrenamiento de precisi贸n mixta en YOLO11, configure la opci贸n amp a True en su configuraci贸n de entrenamiento. Esto activa el entrenamiento de Precisi贸n Mixta Autom谩tica (AMP). Para obtener m谩s informaci贸n sobre esta t茅cnica de optimizaci贸n, consulte la p谩gina configuraci贸n de la formaci贸n.

驴C贸mo mejora el entrenamiento multiescala el rendimiento del modelo YOLO11 ?

El entrenamiento multiescala mejora el rendimiento del modelo mediante el entrenamiento en im谩genes de diferentes tama帽os, lo que permite al modelo generalizar mejor a trav茅s de diferentes escalas y distancias. En YOLO11, puede activar el entrenamiento multiescala configurando el par谩metro scale en la configuraci贸n de entrenamiento. Por ejemplo, scale=0.5 reduce el tama帽o de la imagen a la mitad, mientras que scale=2.0 lo duplica. Esta t茅cnica simula objetos a diferentes distancias, lo que hace que el modelo sea m谩s robusto en diversos escenarios. Para m谩s informaci贸n, consulta la p谩gina configuraci贸n de la formaci贸n.

驴C贸mo puedo utilizar pesos preentrenados para acelerar el entrenamiento en YOLO11?

El uso de pesos preentrenados puede reducir significativamente el tiempo de entrenamiento y mejorar el rendimiento del modelo al partir de un modelo que ya comprende las caracter铆sticas b谩sicas. En YOLO11, puede establecer los pretrained a True o especifique una ruta a pesos preentrenados personalizados en su configuraci贸n de entrenamiento. Este enfoque, conocido como aprendizaje por transferencia, aprovecha el conocimiento de grandes conjuntos de datos para adaptarse a su tarea espec铆fica. M谩s informaci贸n sobre los pesos preentrenados y sus ventajas aqu铆.

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 el modelo se ajusta demasiado pronto, puede reducir el n煤mero. Alternativamente, si no se observa sobreajuste, puede ampliar el entrenamiento a 600, 1200 o m谩s 茅pocas. Para establecer esto en YOLO11, utilice la opci贸n epochs en el script de entrenamiento. Para obtener m谩s consejos sobre c贸mo determinar el n煤mero ideal de 茅pocas, consulte esta secci贸n sobre n煤mero de 茅pocas.

Creado hace 5 meses 鉁忥笍 Actualizado hace 1 mes

Comentarios