¿Son los transformadores mejores que las CNN para el reconocimiento de imágenes?

Enlace al artículo:  https://arxiv.org/pdf/2010.11929.pdf

1. Descripción

        Hoy en día, en las tareas de procesamiento de lenguaje natural (NLP), los transformadores se han convertido en arquitecturas goto (por ejemplo, BERT, GPT-3, etc.). Por otro lado, el uso de transformadores en tareas de visión artificial es aún muy limitado. La mayoría de los investigadores usan capas convolucionales directamente o agregan ciertos bloques de atención junto con bloques convolucionales en aplicaciones de visión por computadora (como Xception, ResNet, EfficientNet, DenseNet, Inception, etc.). El documento sobre Vision Transformer (ViT) implementa un modelo de transformador puro en secuencias de imágenes sin bloques convolucionales para clasificar imágenes. Este documento muestra cómo ViT logra mejores resultados que la mayoría de las redes CNN de última generación en varios conjuntos de datos de reconocimiento de imágenes, mientras utiliza menos recursos computacionales.

2. Transformador visual (ViT)

        Los transformadores son redes que operan en secuencias de datos, como un conjunto de palabras. Estos conjuntos de palabras primero se tokenizan y luego se alimentan al transformador. El transformador agrega Atención (operación cuadrática: calcula el producto interno por pares entre cada par de palabras tokenizadas. A medida que aumenta la cantidad de palabras, también aumenta la cantidad de operaciones).

        Por lo tanto, las imágenes son más difíciles de entrenar en Transformers. Las imágenes están formadas por píxeles y cada imagen puede contener de miles a millones de píxeles. Entonces, en el convertidor, cada píxel se emparejará con todos los demás píxeles de la imagen. En una imagen de tamaño 500*500 píxeles, eso es 500^2, por lo que el mecanismo de atención tomará (500^2)^2 operaciones. Esta es una tarea difícil, incluso con varias GPU. Por lo tanto, para las imágenes, los investigadores utilizan principalmente alguna forma de atención local (agrupación de píxeles) en lugar de atención global.

        Los autores de ViT abordan este problema utilizando la atención global, pero no en la imagen completa, sino en múltiples parches de imagen. Por lo tanto, primero divida la imagen grande en varios bloques pequeños (por ejemplo, 16*16 píxeles). Como se muestra en la Figura 1.

Figura 1. Imagen dividida en parches (fuente: imagen del artículo original)

        Estos parches de imagen luego se expanden en una serie de imágenes, como se muestra en la Figura 2. Estas secuencias de imágenes tienen incrustaciones posicionales.

Figura 2. Parches de imagen desenrollados en una secuencia de imágenes (fuente: imágenes del artículo original)

Inicialmente, el transformador no sabe qué parche debe ir a dónde. Por lo tanto, las incrustaciones posicionales ayudan al Transformador a comprender dónde debe encajar cada parche. En el artículo, los autores usaron números simples 1, 2, 3...n para especificar la ubicación de los parches, como se muestra en la Figura 3. Estos no son solo números, sino vectores que se pueden aprender. Es decir, el número 1 no se usa directamente, sino que existe una tabla de búsqueda que contiene un vector para cada número que representa la posición del parche. Entonces, para el primer parche, tome el primer vector de la tabla y colóquelo en el transformador junto con el parche. Del mismo modo, para el segundo parche, tome el segundo vector de la tabla y colóquelo en el transformador con el segundo parche, y así sucesivamente. como se muestra en la imagen 2.

Figura 3. Parches con incrustaciones posicionales (fuente: imagen del artículo original)

Figura 4. Embebidos posicionales como representaciones vectoriales (Fuente: Imagen creada por el autor)

Los parches de imagen son imágenes pequeñas (16*16 píxeles). Esto de alguna manera necesita ser alimentado de una manera que el transformador lo entienda. Una forma es expandir la imagen en un vector dimensional de 16*16 = 256. Sin embargo, los autores del artículo utilizaron una proyección lineal. Esto significa que hay una matriz, denominada "E" (incrustación). Primero se toma un solo parche y se desenvuelve en un vector lineal. A continuación, este vector se multiplica por la matriz de inclusión E. Luego, el resultado final se alimenta al transformador junto con las incrustaciones posicionales.

Todos los parches (proyecciones lineales) y sus incrustaciones de posición individuales se alimentan luego al codificador de transformador. El transformador es una arquitectura de transformador estándar (solo debe prestar atención: papel).

Hay una incrustación aprendible adicional, etiquetada como posición cero, como se muestra en la Figura 5. El resultado de esta incrustación se utiliza para clasificar finalmente la imagen completa.

Figura 5. Toda la arquitectura de ViT con incrustaciones de aprendizaje adicionales: marcadas en rojo, incrustaciones más a la izquierda (fuente: imagen del artículo original)

3. Resultados

        La Tabla 1 muestra la comparación de resultados de ViT con arquitecturas CNN de última generación en varios conjuntos de datos. ViT está previamente entrenado en el conjunto de datos JFT-300. Los resultados a continuación muestran que ViT supera a las arquitecturas basadas en ResNet y las arquitecturas EfficentNet-L2 (entrenadas previamente en pesos de estudiantes ruidosos) en todos los conjuntos de datos. Ambos modelos son arquitecturas CNN actuales de última generación. En la Tabla 1, ViT-H se refiere a ViT-Huge (32 capas) y ViT-L se refiere a ViT-Large (24 capas). Los números 14 y 16 después de ViT-H/L indican el tamaño del parche (14*14 o 16*16) creado a partir de cada imagen.

La tabla también muestra que ViT requiere muchos menos recursos computacionales en comparación con los otros 2 modelos de CNN.

Tabla 1. Comparación de los resultados de ViT con otras arquitecturas de CNN en varios conjuntos de datos de imágenes (fuente: tabla en el artículo original)

La Figura 6 muestra la atención que brinda el Transformador al clasificar varias imágenes.

Figura 6: Mecanismo de atención desde los tokens de salida hasta el espacio de entrada (fuente: imagen original en papel)

4. Conclusión

4.1 ¿Vision Transformers reemplazará a las CNN en tareas de visión por computadora?

        Las CNN han dominado las tareas de visión por computadora hasta ahora. Las imágenes se basan en la idea de que un píxel depende de sus vecinos y el siguiente píxel depende de sus vecinos (color, brillo, contraste, etc.). Las CNN trabajan en esta idea y usan filtros en parches de una imagen para extraer características y bordes importantes. Esto ayuda al modelo a aprender solo las características importantes necesarias de la imagen, en lugar de los detalles de cada píxel de la imagen.

        Sin embargo, las posibilidades de que el modelo funcione mejor son mayores si todos los datos de la imagen se introducen en el modelo, no solo las partes que el filtro puede extraer (o las partes que considera importantes). Eso es exactamente lo que sucede dentro del convertidor visual. Esta puede ser una de las razones por las que Vision Transformer funciona mejor que la mayoría de los modelos de CNN en este caso.

4.2 Pero, ¿significa esto que los Transformers reemplazarán a las CNN en tareas de visión artificial en el futuro?

        Bueno, la respuesta es, no tan rápido. Hace apenas unos días se lanzó el modelo EfficientNet V2, que funciona incluso mejor que Vision Transformers. Simplemente significa que ahora podemos esperar arquitecturas más nuevas de ambos géneros (CNN y Transformers) para introducir modelos más nuevos, mejores y más eficientes en el futuro cercano.

Supongo que te gusta

Origin blog.csdn.net/gongdiwudu/article/details/132248111
Recomendado
Clasificación