19e2b2n7nmx Kid5a7hfvfq.png

Una guía sencilla sobre cómo las tareas de PNL se generalizan a la visión por computadora

Casi todas las tareas de procesamiento del lenguaje natural, que van desde el modelado del lenguaje y la predicción de palabras enmascaradas hasta la traducción y la respuesta a preguntas, se revolucionaron cuando la arquitectura de los transformadores hizo su debut en 2017. No pasaron más de dos o tres años para que los transformadores también se destacaran en las tareas de visión artificial. En esta historia, exploramos dos arquitecturas fundamentales que permitieron a los transformadores irrumpir en el mundo de la visión artificial.

Tabla de contenido

· El transformador de la visión
Idea clave
Operación
Arquitectura híbrida
Pérdida de estructura
Resultados
Aprendizaje autosupervisado mediante enmascaramiento
· Transformador de visión con codificador automático enmascarado
Idea clave
Arquitectura
Observación final y ejemplo

Imagen del artículo: “Una imagen vale 16 x 16 palabras: transformadores para el reconocimiento de imágenes a escala”

Idea clave

El transformador de visión está destinado simplemente a generalizar la transformador estándar Arquitectura para procesar y aprender de la entrada de imágenes. Hay una idea clave sobre la arquitectura que los autores fueron lo suficientemente transparentes para destacar:

«Inspirándonos en los éxitos de escalado de Transformer en PNL, experimentamos aplicando un Transformer estándar directamente a las imágenes, con la menor cantidad de modificaciones posibles».

Operación

Es válido tomar “mínimas modificaciones posibles” Literalmente, porque prácticamente no hacen ninguna modificación. Lo que modifican es la estructura de entrada:

  • En PNL, el codificador del transformador toma una secuencia de vectores one-hot (o índices simbólicos equivalentes) que representar la oración/párrafo de entrada y devuelve una secuencia de vectores de incrustación contextual que podrían usarse para otras tareas (por ejemplo, clasificación)
  • Para generalizar el CV, el transformador de visión toma una secuencia de vectores de parche que representan el imagen de entrada y devuelve una secuencia de vectores de incrustación contextual que podrían usarse para otras tareas (por ejemplo, clasificación)

En particular, supongamos que las imágenes de entrada tienen dimensiones (n,n,3) para pasar esto como entrada al transformador, lo que hace el transformador de visión es:

  • Lo divide en parches k² para algún k (por ejemplo, k = 3) como en la figura anterior.
  • Ahora cada parche será (n/k,n/k,3) el siguiente paso es aplanar cada parche en un vector

El vector de parche tendrá una dimensionalidad 3*(n/k)*(n/k). Por ejemplo, si la imagen es (900,900,3) y usamos k=3, entonces un vector de parche tendrá una dimensión de 300*300*3 que representa los valores de píxeles en el parche aplanado. En el artículo, los autores utilizan k=16. De ahí el nombre del artículo “Una imagen vale 16×16 palabras: transformadores para el reconocimiento de imágenes a escala” en lugar de alimentar un vector único que representa la palabra, representan píxeles vectoriales que representan un fragmento de la imagen.

El resto de operaciones permanece como en el codificador de transformador original:

  • Estos vectores de parche pasan por una capa de incrustación entrenable
  • Se agregan incrustaciones posicionales a cada vector para mantener una sensación de información espacial en la imagen.
  • La salida es num_parches representaciones del codificador (una para cada parche) que podrían usarse para la clasificación a nivel de parche o imagen
  • Más a menudo (y como en el artículo), a un token CLS se le antepone la representación correspondiente que se utiliza para hacer una predicción sobre toda la imagen (similar a BERT).

¿Qué tal el decodificador del transformador?

Bueno, recuerda que es igual que el codificador del transformador; la diferencia es que utiliza autoatención enmascarada en lugar de autoatención (pero se mantiene la misma firma de entrada). En cualquier caso, debes esperar que rara vez uses una arquitectura de transformador que solo incluya decodificador porque simplemente predecir el próximo parche puede no ser una tarea de gran interés.

Arquitectura híbrida

Los autores también mencionan que es posible comenzar con un mapa de características de CNN en lugar de la imagen en sí para formar una arquitectura híbrida (CNN que envía la salida al transformador de visión). En este caso, pensamos en la entrada como un mapa de características genérico (n,n,p) y un vector de parches tendrá dimensiones (n/k)*(n/k)*p.

Pérdida de estructura

Puede que se te ocurra pensar que esta arquitectura no debería ser tan buena porque trataba la imagen como una estructura lineal cuando no lo es. El autor intenta mostrar que esto es intencional mencionando

“La estructura de vecindad bidimensional se utiliza con mucha moderación… las incrustaciones de posición en el momento de la inicialización no contienen información sobre las posiciones 2D de los parches y todas las relaciones espaciales entre los parches deben aprenderse desde cero”

Veremos que el transformador es capaz de aprender esto como lo demuestra su buen desempeño en sus experimentos y, más importante, la arquitectura en el próximo artículo.

Resultados

El veredicto principal de los resultados es que los transformadores de visión tienden a no superar a los modelos basados ​​en CNN para conjuntos de datos pequeños, pero se acercan o superan a los modelos basados ​​en CNN para conjuntos de datos más grandes y, de cualquier manera, requieren significativamente menos computación:

Tabla del artículo: “Una imagen vale más que 16×16 palabras: transformadores para el reconocimiento de imágenes a escala”.

Aquí vemos que para el conjunto de datos JFT-300M (que tiene 300M de imágenes), los modelos ViT entrenados previamente en el conjunto de datos superan a las líneas base basadas en ResNet mientras que requieren sustancialmente menos recursos computacionales para el preentrenamiento. Como se puede ver, el transformador de visión más grande que usaron (ViT-Huge con 632M parámetros y k=16) utilizó aproximadamente el 25% del cómputo utilizado para el modelo basado en ResNet y aún así lo superó. El rendimiento ni siquiera se degrada tanto con ViT-Large utilizando solo <6.8% del cómputo.

Mientras tanto, otros también exponen resultados en los que ResNet funcionó significativamente mejor cuando se entrenó en ImageNet-1K, que tiene solo 1,3 millones de imágenes.

Aprendizaje autosupervisado mediante enmascaramiento

Los autores realizaron una exploración preliminar sobre la predicción de parches enmascarados para la autosupervisión, imitando la tarea de modelado de lenguaje enmascarado utilizada en BERT (es decir, enmascarando parches e intentando predecirlos).

“Empleamos el objetivo de predicción de parches enmascarados para experimentos preliminares de autosupervisión. Para hacerlo, corrompimos el 50% de las incrustaciones de parches reemplazando sus incrustaciones con una versión que se pueda aprender. [mask] incrustación (80%), incrustación de otro parche aleatorio (10%) o simplemente dejarlos como están (10%).”

Con un entrenamiento previo autosupervisado, su modelo más pequeño ViT-Base/16 alcanza una precisión del 79,9 % en ImageNet, una mejora significativa del 2 % con respecto al entrenamiento desde cero, pero todavía un 4 % por detrás del entrenamiento previo supervisado.

Imagen del artículo: Los autocodificadores enmascarados son aprendices visuales escalables

Idea clave

Como hemos visto en el artículo sobre el transformador de visión, las ganancias del preentrenamiento mediante el enmascaramiento de parches en las imágenes de entrada no fueron tan significativas como en el PNL ordinario, donde el preentrenamiento enmascarado puede conducir a resultados de última generación en algunas tareas de ajuste fino.

En este artículo se propone una arquitectura de transformador de visión que involucra un codificador y un decodificador que, cuando se entrena previamente con enmascaramiento, produce mejoras significativas con respecto al modelo de transformador de visión base (hasta un 6 % de mejora en comparación con el entrenamiento de un transformador de visión de tamaño base de manera supervisada).

Imagen del artículo: Los autocodificadores enmascarados son aprendices visuales escalables

Esta es una muestra (entrada, salida, etiquetas verdaderas). Es un codificador automático en el sentido de que intenta reconstruir la entrada mientras completa los parches faltantes.

Arquitectura

Su codificador Es simplemente el codificador transformador de visión ordinario que explicamos anteriormente. En el entrenamiento y la inferencia, sólo se necesitan los parches «observados».

Mientras tanto, sus descifrador También es simplemente el codificador de transformador de visión ordinario pero requiere:

  • Vectores de token enmascarados para los parches faltantes
  • Vectores de salida del codificador para los parches conocidos

Entonces para una imagen [ [ A, B, X], [C, X, X], [X, D, E]]donde X denota un parche faltante, el decodificador tomará la secuencia de vectores de parche [Enc(A), Enc(B), Vec(X), Vec(X), Vec(X), Enc(D), Enc(E)]. Enc devuelve el vector de salida del codificador dado el vector de parche y X es un vector para representar el token faltante.

El última capa En el decodificador hay una capa lineal que asigna las incrustaciones contextuales (producidas por el codificador del transformador de visión en el decodificador) a un vector de longitud igual al tamaño del parche. La función de pérdida es el error cuadrático medio que eleva al cuadrado la diferencia entre el vector del parche original y el predicho por esta capa. En la función de pérdida, solo observamos las predicciones del decodificador debidas a los tokens enmascarados e ignoramos las que corresponden a los actuales (es decir, Dec(A), Dec(B), Dec(C), etc.).

Observación final y ejemplo

Puede resultar sorprendente que los autores sugieran enmascarar alrededor del 75% de las manchas en las imágenes; BERT enmascararía sólo alrededor del 15% de las palabras. Se justifican así:

Las imágenes son señales naturales con una gran redundancia espacial; por ejemplo, un parche faltante se puede recuperar de parches vecinos con poca comprensión de alto nivel de partes, objetos y escenas. Para superar esta diferencia y fomentar el aprendizaje de funciones útiles, enmascaramos una proporción muy elevada de parches aleatorios.

¿Quieres probarlo tú mismo? Mira esto cuaderno de demostración por NielsRogge.

Esto es todo por esta historia. Hemos realizado un viaje para entender cómo los modelos de transformadores fundamentales se generalizan al mundo de la visión artificial. Espero que te haya resultado claro, esclarecedor y que valga la pena dedicarle tu tiempo.

Referencias:

[1] Dosovitskiy, A. y otros. (2021) Una imagen vale más que 16×16 palabras: Transformadores para el reconocimiento de imágenes a escala, arXiv.org. Disponible en: https://arxiv.org/abs/2010.11929 (Consulta: 28 de junio de 2024).

[2] Él, K. y otros. (2021) Los autocodificadores enmascarados son aprendices de visión escalables, arXiv.org. Disponible en: https://arxiv.org/abs/2111.06377 (Consulta: 28 de junio de 2024).