5.17 - Proyecto final: Clasificación de imágenes con Redes Transformer
Lección 17 de la sección “Redes Transformer” del curso Fundamentos de Deep Learning con Python.
Tabla de contenido
Introducción
En la lección anterior vimos cómo usar GPT-2 para la generación automática de texto, una tarea propia del Procesamiento del Lenguaje Natural.
En este proyecto final veremos el potencial que tienen las Redes Transformer para resolver problemas en otros ámbitos, y en particular veremos cómo usar la arquitectura vision transformer para realizar la clasificación de imágenes, una tarea propia del campo de la visión artificial.
Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
¿Qué es y cómo funciona el vision transformer
¿Qué es?
El vision Transformer es una arquitectura desarrollada en 2020 y que promete poner en aprietos a las Redes Convolucionales, usadas convencionalmente para el procesamiento de imágenes.
Esta arquitectura fue propuesta por investigadores de Google Research, Brain Team y los detalles se encuentran en el artículo An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale publicado (octubre, 2020).
Se trata del primer intento de usar las Redes Transformer para el procesamiento de imágenes, y aunque posteriormente ha evolucionado en otras arquitecturas, el Vision Transformer ha sido precisamente el precursor de todas ellas.
La filosofía detrás de esta arquitectura es simple. Lo que buscaron los autores fue “aplicar la Red Transformer estándar al procesamiento de imágenes, con la menor cantidad posible de modificaciones”.
¿Cómo funciona?
Y estas son sus principales características y su principio de funcionamiento:
- Fue desarrollado para tareas de clasificación de imágenes
- El elemento central es la etapa de codificación de la Red Transformer, preservando la estructura básica pero simplemente cambiando el número de bloques atencionales y de bloques codificadores
- Y acá está el cambio importante, que se da en el pre-procesamiento de la entrada: “la imagen es subdividida en regiones de 16x16 pixeles y luego codificada por un embedding de entrada. Estas regiones de 16x16 son el equivalente a las palabras en una aplicación convencional de procesamiento del lenguaje natural”.
Ahora sí, veamos en detalle la implementación
Pre-procesamiento de la imagen
Tal como lo hicimos en las prácticas anteriores, y dado el gigantesco tamaño de estos modelos, haremos uso de Hugging Face para acceder a modelos pre-entrenados.
Para el pre-procesamiento haremos uso del módulo ViTFeatureExtractor
, que permite pre-procesar las imágenes, logrando: (1) ajustarlas al tamaño de 224x224 (usado por el Vision Transformer) y (2) escalar los valores de cada pixel en la imagen.
Clasificación de imágenes
Usaremos un modelo pre-entrenado tomado de Hugging Face. Para ello importaremos la librería ViTForImageClassification
que permite importar el modelo listo para usar en tareas de clasificación de imágenes.
Para poner a prueba el modelo usaremos imágenes que nunca antes ha visto. Tomaremos algunas imágenes del dataset COCO (Common Objects in Context).
¡Con esto logramos ver que el modelo lo hace bastante bien! y que incluso es bastante descriptivo en algunas de las categorías. En otros casos (como por ejemplo cuando la escena contiene múltiples objetos), el modelo es capaz de generar clasificaciones con múltiples términos asociados a estos objetos y que describen correctamente la escena.
Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Acabamos de ver el potencial que tienen las Redes Transformer en el área de la visión artificial.
En particular, con este vision transformer vimos cómo se pueden explotar las características de la arquitectura original para procesar las imágenes como si fuesen secuencias y lograr llevar a cabo una clasificación bastante precisa.
Y con esto hemos terminado la parte práctica del curso. Tan sólo nos resta la última lección, en donde resumiremos las principales ventajas y limitaciones de estas Redes Transformer.