Vision Transformers: Transformers aplicados a imágenes
Los Transformers son actualmente ampliamente utilizados en el procesamiento del lenguaje natural, siendo la base de los enormes modelos LLM de lenguaje que conocemos como ChatGPT. Pero estos también tienen un uso en problemas relacionados con imágenes, con los conocidos Vision Transformers, de los que vamos a hablar hoy.
En el caso de los Vision Transformers las arquitecturas neuronales utilizadas por excelencia siempre han sido las Redes Neuronales Convolucionales (Convolutional Neural Networks, CNN), que tan famosas se han hecho por su aplicación al mundo de las DeepFakes, y en la detección de las mismas, como puedes ver en esta conferencia de Chema Alonso.
Figura 2: Humanos Sintéticos generados por GenAI
De hecho, muchos de los estudios y técnicas de detección de DeepFakes se basan en el reconocimiento de los artefactos o rastros que dejan estos algoritmos en las imágenes que generan, y que nosotros utilizamos en nuestro DeepFake Detector.
Vision Transformers
¿Cómo funcionan? ¿Mejoran los Vision Transformers a las tan famosas CNN? A diferencia de las Redes Neuronales Convolucionales, que procesan imágenes mediante la detección de características a través de filtros convolucionales, los ViT adoptan un enfoque basado en la transformación de imágenes en una serie de pequeños segmentos o "parches" de un determinado tamaño. Por ejemplo, si se tiene una imagen de 224x224 píxeles, esta se dividiría en parches de 16x16 (como se hace en el artículo originario de los ViT), teniendo 224/16 x 224/16 = 14 x 14 = 196 parches.
Cada uno de estos parches representa una porción de la imagen, siendo una matriz de tres dimensiones (los píxeles en RGB). Luego cada uno de estos se aplanan y transforman en una secuencia unidimensional de tokens, donde cada token representa entonces un parche de la imagen. Siguiendo con el ejemplo, al aplanar parches de 16x16x3 píxeles, se acabaría con un vector unidimensional de 768 valores.
Figura 4: Ejemplo parches ViT
Cada token codifica una parte de la imagen, pero al obtenerse estos tras aplanar la imagen original, se pierde información sobre la jerarquía visual de la imagen, es decir, qué porción de imagen va antes o después de otra parte. Por ello, a estos vectores se les añade información sobre el orden en el que se presentaban en la imagen, el llamado embedding posicional.
Estos vectores se introducen entonces a la famosa arquitectura Transformer, concretamente al codificador de ésta, donde se realiza la self-attention o auto-atención tan característica de estos, igual que como si se estuviese tratando de un problema de lenguaje natural.
En esta fase, gracias a la auto-atención, no se analiza cada parche de la imagen por separado de forma aislada, sino que el propio modelo evalúa la importancia relativa de cada parche en relación con los demás, lo que permite que los ViT capten relaciones a largo alcance entre diferentes partes de la imagen.
Aplicaciones ViT
Como se ha comentado, un Vision Transformer es aplicable para problemas relacionados con imágenes. Por ejemplo, una tarea de clasificación, como en nuestro DeepFakeDetector (DFD) , donde entrenamos un ViT para detectar Deepfakes, mostrando un gran rendimiento sobre el conjunto de datos utilizado para entrenar, mejorando a la Red Convolucional que previamente se había entrenado.
Hoy en día, se encuentran también en los llamados Enormes Modelos Multimodales (LMMs , Large Multimodal Models), como GPT-4 , que son capaces de ver y entender imágenes, entre otros.
Diferencias entre los ViT y las CNN
Los autores del artículo Comparing Vision Transformers and Convolutional Neural Networks for Image Classification, publicado este mismo año, afirman que los Vision Transformers son más robustos frente a ruido en las imágenes y son capaces de capturar mejor la información global de la imagen completa gracias a la auto-atención, con la que el modelo aprende a centrarse en los detalles más importantes de las imágenes y capturar relaciones de largo alcance entre las diferentes partes de la imagen, como se ha comentado.
Diferencias entre los ViT y las CNN
Los autores del artículo Comparing Vision Transformers and Convolutional Neural Networks for Image Classification, publicado este mismo año, afirman que los Vision Transformers son más robustos frente a ruido en las imágenes y son capaces de capturar mejor la información global de la imagen completa gracias a la auto-atención, con la que el modelo aprende a centrarse en los detalles más importantes de las imágenes y capturar relaciones de largo alcance entre las diferentes partes de la imagen, como se ha comentado.
Por otra parte, se menciona que los ViT pueden sufrir en términos de generalización y rendimiento cuando se entrenan con conjuntos de datos pequeños, mientras que los CNN son menos susceptibles a este problema. Por ello es normal utilizar algún ViT ya pre-entrenado sobre grandes conjuntos de datos, y luego simplemente fine-tunearlo con los datos del problema a abordar.
Conclusiones
Los Transformers no son solo aplicables a problemas con texto, donde encontramos los modelos de lenguaje como GPT-3.5, sino que también se pueden utilizar para otras áreas como tareas con imágenes, como se hace en los denominados modelos multimodales como GPT-4. Los Vision Transformers suponen una alta rivalidad a las tan usadas Redes Neuronales Convolucionales, que han sido el estado del arte en problemas con imágenes durante mucho tiempo.
Un saludo,
Autor: Javier del Pino, intership en Ideas Locas
No hay comentarios:
Publicar un comentario