Última actualización el 4 de octubre de 2022
Con la arquitectura Transformer revolucionando la implementación de la atención y logrando resultados muy prometedores en el dominio del procesamiento del lenguaje natural, era solo cuestión de tiempo antes de que pudiéramos ver su aplicación también en el dominio de la visión artificial. Esto finalmente se logró con la implementación de Vision Transformer (ViT).
En este tutorial, descubrirá la arquitectura del modelo Vision Transformer y su aplicación a la tarea de clasificación de imágenes.
Después de completar este tutorial, sabrás:
- Cómo funciona el ViT en el contexto de la clasificación de imágenes.
- En qué consiste el proceso de formación del ViT.
- Cómo se compara ViT con las redes neuronales convolucionales en términos de sesgo inductivo.
- Cómo le va a ViT frente a ResNets en diferentes conjuntos de datos.
- Cómo se procesan internamente los datos para que ViT logre su rendimiento.
Empecemos.
El modelo de transformador de visión
Foto de Paul Skorupskas, algunos derechos reservados.
Descripción general del tutorial
Este tutorial se divide en seis partes; están:
- Introducción al transformador de visión (ViT)
- La Arquitectura ViT
- Entrenando el ViT
- Sesgo inductivo en comparación con las redes neuronales convolucionales
- Rendimiento comparativo de las variantes de ViT con ResNets
- Representación interna de datos
requisitos previos
Para este tutorial, asumimos que ya está familiarizado con:
- El concepto de atención.
- El mecanismo de atención del transformador.
- El modelo del transformador
Introducción al transformador de visión (ViT)
Habíamos visto cómo el surgimiento de la arquitectura Transformer de Vaswani et al. (2017) ha revolucionado el uso de la atención, sin depender de la recurrencia y las circunvoluciones como lo habían hecho los modelos de atención anteriores. En su trabajo, Vaswani et al. habían aplicado su modelo al problema específico del procesamiento del lenguaje natural (PNL).
Sin embargo, en la visión artificial, las arquitecturas convolucionales siguen siendo dominantes…
– Una imagen vale 16 × 16 palabras: transformadores para el reconocimiento de imágenes a escala, 2021.
Inspirados por su éxito en PNL, Dosovitskiy et al. (2021) buscaba aplicar la arquitectura estándar de Transformer a las imágenes, como veremos en breve. Su aplicación objetivo en ese momento era la clasificación de imágenes.
La Arquitectura ViT
Recuerde que el modelo estándar de Transformer recibió una secuencia unidimensional de incrustaciones de palabras como entrada, ya que originalmente estaba destinado a PNL. Por el contrario, cuando se aplica a la tarea de clasificación de imágenes en visión artificial, los datos de entrada al modelo de Transformador se proporcionan en forma de imágenes bidimensionales.
Con el propósito de estructurar los datos de la imagen de entrada de una manera que se asemeje a cómo se estructura la entrada en el dominio NLP (en el sentido de tener una secuencia de palabras individuales), la imagen de entrada, de alto $H$, ancho $W$ , y $C$ número de canales, es cortar en parches bidimensionales más pequeños. Esto da como resultado $N = tfrac{HW}{P^2}$ número de parches, donde cada parche tiene una resolución de ($P, P$) píxeles.
Antes de introducir los datos en el Transformador, se aplican las siguientes operaciones:
- Cada parche de imagen se aplana en un vector, $mathbf{x}_p^n$, de longitud $P^2 times C$, donde $n = 1, dots N$.
- Se genera una secuencia de parches de imagen incrustados asignando los parches aplanados a las dimensiones $D$, con una proyección lineal entrenable, $mathbf{E}$.
- Una incrustación de clase aprendible, $mathbf{x}_{text{class}}$, se antepone a la secuencia de parches de imagen incrustados. El valor de $mathbf{x}_{text{class}}$ representa el resultado de la clasificación, $mathbf{y}$.
- Las incrustaciones de parche finalmente se aumentan con incrustaciones posicionales unidimensionales, $mathbf{E}_{text{pos}}$, por lo tanto, se introduce información posicional en la entrada, que también se aprende durante el entrenamiento.
La secuencia de vectores de incrustación que resulta de las operaciones anteriores es la siguiente:
$$mathbf{z}_0 = [ mathbf{x}_{text{class}}; ; mathbf{x}_p^1 mathbf{E}; ; dots ; ; mathbf{x}_p^N mathbf{E}] + mathbf{E}_{text{pos}}$$
Dosovitsky et al. hacer uso de la parte del codificador de la arquitectura Transformer de Vaswani et al.
Para realizar la clasificación, alimentan $mathbf{z}_0$ en la entrada del codificador Transformer, que consta de una pila de $L$ capas idénticas. Luego, proceden a tomar el valor de $mathbf{x}_{text{class}}$ en la capa $L^{text{th}}$ de la salida del codificador y lo introducen en un cabezal de clasificación. .
El cabezal de clasificación está implementado por un MLP con una capa oculta en el tiempo de preentrenamiento y por una sola capa lineal en el tiempo de ajuste fino.
– Una imagen vale 16 × 16 palabras: transformadores para el reconocimiento de imágenes a escala, 2021.
El perceptrón multicapa (MLP) que forma el cabezal de clasificación implementa la no linealidad de la unidad lineal de error gaussiano (GELU).
En resumen, por lo tanto, el ViT emplea la parte del codificador de la arquitectura original del Transformador. La entrada al codificador es una secuencia de parches de imagen incrustados (incluido un incrustación de clase antepuesta a la secuencia), que también se aumenta con información posicional. Un cabezal de clasificación adjunto a la salida del codificador recibe el valor de la incrustación de la clase aprendible, para generar una salida de clasificación basada en su estado. Todo esto se ilustra en la siguiente figura:
La Arquitectura del Transformador de Visión (ViT)
Tomado de “Una imagen vale 16×16 palabras: transformadores para el reconocimiento de imágenes a escala”
Una nota adicional de que Dosovitskiy et al. hacer, es que la imagen original puede, alternativamente, alimentarse a una red neuronal convolucional (CNN) antes de pasar al codificador del Transformador. La secuencia de parches de imágenes se obtendría luego de los mapas de características de la CNN, mientras que el proceso subsiguiente de incrustar los parches de mapas de características, anteponer un token de clase y aumentar con información posicional sigue siendo el mismo.
Entrenando el ViT
El ViT se entrena previamente en conjuntos de datos más grandes (como ImageNet, ImageNet-21k y JFT-300M) y se ajusta a un número menor de clases.
Durante el entrenamiento previo, el cabezal de clasificación en uso que está adjunto a la salida del codificador, se implementa mediante un MLP con una capa oculta y no linealidad GELU, como se ha descrito anteriormente.
Durante el ajuste fino, el MLP se reemplaza por una única capa de retroalimentación (inicializada en cero) de tamaño, $D times K$, donde $K$ indica el número de clases correspondientes a la tarea en cuestión.
El ajuste fino se lleva a cabo en imágenes que tienen una resolución más alta que las utilizadas durante el entrenamiento previo, pero el tamaño del parche en el que se cortan las imágenes de entrada se mantiene igual en todas las etapas del entrenamiento. Esto da como resultado una secuencia de entrada de mayor longitud en la etapa de ajuste fino, en comparación con la utilizada durante el preentrenamiento.
La implicación de tener una secuencia de entrada más larga es que el ajuste fino requiere más incrustaciones de posición que entrenamiento previo. Para sortear este problema, Dosovitskiy et al. interpolar, en dos dimensiones, las incrustaciones de posición previas al entrenamiento según su ubicación en la imagen original, para obtener una secuencia más larga que coincida con el número de parches de imagen en uso durante el ajuste fino.
Sesgo inductivo en comparación con las redes neuronales convolucionales
El sesgo inductivo se refiere a cualquier suposición que hace un modelo para generalizar los datos de entrenamiento y aprender la función objetivo.
En las CNN, la localidad, la estructura de vecindad bidimensional y la equivalencia de traducción se integran en cada capa a lo largo de todo el modelo.
– Una imagen vale 16 × 16 palabras: transformadores para el reconocimiento de imágenes a escala, 2021.
En las redes neuronales convolucionales (CNN), cada neurona solo está conectada a otras neuronas en su vecindad. Además, dado que las neuronas que residen en la misma capa comparten los mismos valores de peso y sesgo, cualquiera de estas neuronas se activará cuando una característica de interés caiga dentro de su campo receptivo. Esto da como resultado un mapa de características que es equivalente a la traducción de características, lo que significa que si la imagen de entrada se traduce, entonces el mapa de características también se traduce de manera equivalente.
Dosovitsky et al. argumentan que en ViT, solo las capas MLP se caracterizan por localidad y equivalencia de traducción. Las capas de autoatención, por otro lado, se describen como globales, porque los cálculos que se realizan en estas capas no están restringidos a una vecindad bidimensional local.
Explican que solo se utiliza el sesgo sobre la estructura de vecindad bidimensional de las imágenes:
- En la entrada del modelo, donde cada imagen se corta en parches, por lo que se conserva de forma inherente la relación espacial entre los píxeles de cada parche.
- En el ajuste fino, donde las incrustaciones de posición previas al entrenamiento se interpolan en dos dimensiones según su ubicación en la imagen original, para producir una secuencia más larga que coincida con el número de parches de imagen en uso durante el ajuste fino.
Rendimiento comparativo de las variantes de ViT con ResNets
Dosovitsky et al. enfrentó tres modelos ViT de tamaño creciente, contra dos ResNet modificados de diferentes tamaños. Sus experimentos arrojan varios hallazgos interesantes:
- Experimento 1 – Puesta a punto y pruebas en ImageNet:
- Cuando se entrenaron previamente en el conjunto de datos más pequeño (ImageNet), los dos modelos ViT más grandes tuvieron un rendimiento inferior en comparación con su contraparte más pequeña. El rendimiento de todos los modelos de ViT se mantiene, en general, por debajo del de los ResNet.
- Cuando se entrenaron previamente en un conjunto de datos más grande (ImageNet-21k), los tres modelos de ViT se desempeñaron de manera similar entre sí, así como con ResNets.
- Cuando se entrena previamente en el conjunto de datos más grande (JFT-300M), el rendimiento de los modelos ViT más grandes supera el rendimiento del ViT más pequeño y ResNets.
- Experimento 2 – Capacitación en subconjuntos aleatorios de diferentes tamaños del conjunto de datos JFT-300M y pruebas en ImageNet, para investigar más a fondo el efecto del tamaño del conjunto de datos:
- En subconjuntos más pequeños del conjunto de datos, los modelos ViT se ajustan más que los modelos ResNet y tienen un rendimiento considerablemente inferior.
- En el subconjunto más grande del conjunto de datos, el rendimiento del modelo ViT más grande supera el rendimiento de ResNets.
Este resultado refuerza la intuición de que el sesgo inductivo convolucional es útil para conjuntos de datos más pequeños, pero para los más grandes, aprender los patrones relevantes directamente de los datos es suficiente, incluso beneficioso.
– Una imagen vale 16 × 16 palabras: transformadores para el reconocimiento de imágenes a escala, 2021.
Representación interna de datos
Al analizar la representación interna de los datos de imagen en ViT, Dosovitskiy et al. encuentra el siguiente:
- Los filtros incorporados aprendidos que se aplican inicialmente a los parches de imagen en la primera capa de ViT, se asemejan a las funciones básicas que pueden extraer las características de bajo nivel dentro de cada parche:
Filtros de incrustación aprendidos
Tomado de “Una imagen vale 16×16 palabras: transformadores para el reconocimiento de imágenes a escala”
- Los parches de imagen que están espacialmente cerca uno del otro en la imagen original, se caracterizan por incrustaciones posicionales aprendidas que son similares:
Incorporaciones posicionales aprendidas
Tomado de “Una imagen vale 16×16 palabras: transformadores para el reconocimiento de imágenes a escala”
- Varios cabezales de autoatención en las capas más bajas del modelo ya prestan atención a la mayor parte de la información de la imagen (en función de sus pesos de atención), lo que demuestra la capacidad del mecanismo de autoatención para integrar la información en toda la imagen:
Tamaño del área de la imagen atendida por diferentes cabezales de autoatención
Tomado de “Una imagen vale 16×16 palabras: transformadores para el reconocimiento de imágenes a escala”
Otras lecturas
Esta sección proporciona más recursos sobre el tema si desea profundizar más.
Documentos
- Una imagen vale 16 × 16 palabras: transformadores para el reconocimiento de imágenes a escala, 2021.
- La atención es todo lo que necesitas, 2017.
Resumen
En este tutorial, descubrió la arquitectura del modelo Vision Transformer y su aplicación a la tarea de clasificación de imágenes.
Específicamente, aprendiste:
- Cómo funciona el ViT en el contexto de la clasificación de imágenes.
- En qué consiste el proceso de formación del ViT.
- Cómo se compara ViT con las redes neuronales convolucionales en términos de sesgo inductivo.
- Cómo le va a ViT frente a ResNets en diferentes conjuntos de datos.
- Cómo se procesan internamente los datos para que ViT logre su rendimiento.
¿Tiene usted alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responder.
La publicación The Vision Transformer Model apareció primero en Machine Learning Mastery.