← Inicio

De la Frustración al Éxito en el reconocimiento de imágenes: el descubrimiento de 'Transfer Learning'

Mientras trabajaba en el reconocimiento de imágenes de LearningML descubrí la “transferencia de aprendizaje” (transfer learning), una de las técnicas que me han parecido más útiles y potentes del Machine Learning.

Empieza la investigación y aparecen los baches

Lo primero que probé fue reducir el tamaño de las imágenes, transformarla en escala de grises y representarlas como vectores de dimensión ancho x alto. Esos vectores los presentaba a una red neuronal que tenía como entrada una capa de la misma dimensión que los vectores, varias capas ocultas y una capa de salida con un número de neuronas igual al de clases a reconocer. ¡El resultado fue desastroso! La clasificación era pobre y la mayor parte de las veces errónea. Fue uno de los muchos momentos de frustración que he tenido durante el desarrollo de LearningML.

¿Redes neuronales convolucionales?!?!?!

Seguí investigando y aprendí que para tratar con imágenes la arquitectura Feed Foward no era la más adecuada. Las redes que más éxito estaban teniendo en el manejo de imágenes eran las llamadas convolucionales. Pero incluso con este tipo de redes la clasificación, aunque mejoraba, seguía siendo muy pobre. La razón estaba clara, los conjuntos de datos de entrenamiento no eran lo suficientemente extensos como para entrenar con éxito a ningún tipo de red neuronal.

Parecía que mi problema no tenía solución. Los conjuntos de datos que los estudiantes podrían confeccionar cuando usaran LearningML no pasarían de tener unas decenas de imágenes.
Sin embargo, sabía que The Teachable Machine era capaz de realizar clasificaciones muy precisas incluso con pocas imágenes.

¿Cómo lo hacía?

Investigando!!!

Y por fin la solución llegó: se llamaba Transfer Learning” o Tranferencia de Aprendizaje. ¿Y en qué consiste? En reutilizar un modelo pre-entrenado en una tarea específica para aplicarlo a una nueva tarea, ahorrando tiempo y recursos. En el caso de la clasificación de imágenes, utilicé MobileNet, un modelo open source pre-entrenado en una gran cantidad de categorías, como base para reconocer nuevos objetos con pocos datos.

Clasificar imágenes con MobileNet:

Y así es como resolví el reconocimiento de imágenes en LearningML y por eso este tipo de modelos funciona tan bien, porque vamos montados a hombros de gigantes.