Si estás leyendo este blog, probablemente, te interese crear un modelo personalizado de aprendizaje automático (ML). Recientemente, pasé por el proceso yo mismo, ya que creé un detector de perros personalizado para acompañar un codelab, Crear una app web de detección de objetos personalizada con MediaPipe. Como cualquier nueva tarea de codificación, el proceso implicó un poco de prueba y error, porque tuve que averiguar qué es lo que estaba haciendo. Para minimizar la parte de los errores de la experiencia de “prueba y error”, me complace compartir cinco conclusiones de mi experiencia de entrenamiento de modelos.
Preparar los datos para el entrenamiento será una tarea diferente según el tipo de modelo que personalices. En general, hay un paso para obtener datos y un paso para anotarlos.
Encontrar suficientes puntos de datos que representen mejor tu caso de uso puede ser un desafío. Por un lado, debes asegurarte de contar con los derechos para usar cualquier imagen o texto que incluyas en tus datos. Verifica la licencia de tus datos antes del entrenamiento. Una forma de resolverlo es brindar tus propios datos. Tengo cientos de fotos de mis perros, por lo que elegirlas para mi detector de objetos fue muy simple. También puedes buscar conjuntos de datos existentes en Kaggle. Hay muchas opciones allí que cubren una amplia variedad de casos de uso. Si tienes suerte, encontrarás un conjunto de datos que satisfaga tus necesidades e, incluso, es posible que ya tenga anotaciones.
MediaPipe Model Maker acepta datos donde cada entrada tiene un archivo XML correspondiente que enumera sus anotaciones. Por ejemplo:
Hay varios programas de software que pueden ayudarte con la anotación. Esto es especialmente útil cuando es necesario resaltar determinadas áreas en imágenes. Algunos programas de software están diseñados para permitir la colaboración: una IU intuitiva e instrucciones dirigidas a los anotadores permiten que se pueda solicitar la ayuda de otros. Una opción común de código abierto es Label Studio, que es lo que usé para anotar mis imágenes.
Es esperable que este paso tome mucho tiempo, pero ten en cuenta que, en realidad, tomará más tiempo de lo que se espera.
Si eres como yo, tendrás una idea increíble planeada para tu primer modelo personalizado. Mi perro Ben fue la inspiración de mi primer modelo. Lo rescaté de un refugio local de golden retrievers, pero, cuando le hice una prueba de ADN, ¡resultó que no tiene nada de golden retriever! Mi primera idea fue crear un detector de golden retriever, una solución que pueda decirte si un perro es “golden retriever” o “no golden retriever”. Pensé que podría ser divertido ver cómo el modelo consideraba a Ben, pero rápidamente me di cuenta de que debería contar con muchas más imágenes de perros de las que tenía para poder aplicar el modelo también en otros perros. Y tendría que asegurarme de que pudiera identificar con precisión a los golden retrievers de todos los tonos. Después de invertir horas en este proyecto, me di cuenta de que necesitaba simplificar el proceso. Fue entonces cuando decidí intentar crear una solución solo para mis tres perros. Tenía muchas fotos para elegir, así que seleccioné las que mejor mostraban los detalles de los perros. En este caso, la solución fue mucho más exitosa y una gran prueba de concepto para mi modelo dedicado a los golden retrievers, porque me niego a abandonar esta idea.
Estas son algunas formas de simplificar tu primer modelo personalizado:
Entonces, cuando se trata de tu primera experiencia entrenamiento de aprendizaje automático, recuerda que la clave es simplificar, simplificar, simplificar.
Simplificar.
Simplificar.
Por mucho que me gustaría decirte con confianza que tu modelo generará los resultados correctos la primera vez que lo entrenes, probablemente no suceda. Si te tomas tu tiempo para elegir muestras de datos y anotaciones, definitivamente mejorará tu tasa de éxito, aunque hay muchos factores que pueden cambiar la forma en que se comporta el modelo. Es posible que debas comenzar con una arquitectura de modelo diferente para alcanzar la precisión deseada. O bien, puedes probar una división diferente de los datos de entrenamiento y validación. Tal vez debas agregar más muestras a tu conjunto de datos. Por suerte, el aprendizaje de transferencia con MediaPipe Model Maker suele tomar varios minutos, por lo que puedes cambiar las nuevas iteraciones con bastante rapidez.
Cuando termines de entrenar un modelo, es probable que sientas mucha emoción y ansiedad por agregarlo a tu app. Sin embargo, te recomiendo que primero pruebes tu modelo en MediaPipe Studio por las siguientes razones:
Con MediaPipe Studio, pude probar rápidamente diferentes umbrales de puntuación en varias imágenes para determinar qué umbral debía usar en mi aplicación. También eliminé mi propia app web como factor en este rendimiento.
Después de obtener datos de calidad, simplificar tu caso de uso, entrenar el modelo y crear prototipos, es posible que debas repetir el ciclo para obtener el resultado correcto. Cuando eso suceda, elige solo una parte del proceso que desees cambiar y haz un pequeño cambio. En mi caso, había muchas fotos de mis perros que se tomaron en el mismo sofá azul. Si el modelo comenzó a incorporar este sofá, ya que suele estar comprendido dentro del cuadro delimitador, podría afectar la forma en que categorizó las imágenes en las que los perros no están en el sofá. En vez de descartar todas las fotos en las que se ve el sofá, eliminé solo un par y agregué aproximadamente 10 más de cada perro donde no están en el sofá. De esta manera, mejoraron mucho mis resultados. Si intentas hacer un gran cambio de inmediato, es posible que termines generando nuevos problemas, en lugar de resolverlos.
Con estos consejos en mente, ¡es hora de que personalices tu propia solución de aprendizaje automático! Puedes personalizar tu modelo de clasificación de imágenes, reconocimiento de gestos, clasificación de texto o detección de objetos para usarlo en las tareas de MediaPipe.
Si deseas compartir algo de lo que aprendiste durante el entrenamiento de tu primer modelo, publica los detalles en LinkedIn junto con un enlace a esta publicación del blog y, luego, etiquétame. ¡Tengo muchas ganas de ver lo que aprendes y creas!