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.

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.

Contenido exclusivo suscriptores

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:

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.

Contenido exclusivo suscriptores

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.

Ver todas las lecciones de este curso