Saltar ao contido

Transformador de visión

Na Galipedia, a Wikipedia en galego.

Un transformador de visión (en inglés: Vision Transformer, abreviado habitualmente como ViT), é un tipo de transformador de redes neurais, modelo baseado en aprendizaxe profunda. Este modelo emprégase especificamente en tarefas de procesamento visual, tales como o recoñecemento de imaxes, a detección de obxectos, a segmentación de obxectos ou o seguimento visual.

A idea dos transformadores de visión bebe directamente dos primeiros transformadores que habitualmente eran empregados en tarefas como o procesamento da linguaxe natural, cunha serie de adaptacións que levaron a traballar con eles no campo da visión por computador.

Dos transformadores aos transformadores de visión

[editar | editar a fonte]

A primeira proposta de transformadores data do ano 2017, cando no famoso artigo (con máis de 100000 citas[1]) titulado "Attention is All You Need" [2], se presentou a base xeral da súa arquitectura. O enfoque co que se propuxo levou a estes a seren adoptados no campo do Procesamento da Linguaxe Natural (NLP), adquirindo unha gran popularidade cos resultados que ofrecían en diferentes tarefas.

A súa fama levou a que se impulsase o uso desta arquitectura noutros ámbitos, e así é como se chegou á visión por computador. En primeiro lugar, en 2019, un estudo de Cordonnier e outros levou a propoñer a arquitectura do ViT para o procesamento de imaxes sen necesidade de empregar redes neurais convolucionais (que eran de uso habitual ata entón neste campo)[3]. Posteriormente, a mencionada arquitectura foi avaliada noutro coñecido artigo baixo o título de "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale" [4] (con máis de 40000 citas[1]) .

Se pensamos nun transformador convencional para procesamento da linguaxe, existe unha compoñente, denominada mecanismo de atención, a cal é empregada en grandes trazos para relacionar palabras no texto analizado, coa fin de, mediante esas relacións, realizar predicións para dito texto. No caso dos transformadores de visión, esas "palabras" convértense en porcións dunha imaxe (de aí o título do mencionado artigo, que fala de palabras de tamaño 16x16 píxeles). A tarefa convértese en relacionar esas porcións entre elas, para a partir desa información predicir as saídas desexadas segundo o problema a resolver[4].

Os resultados desta arquitectura foron dende o comezo moi prometedores. Por exemplo, no ano 2021, logrouse que un modelo de transformadores puro rendese mellor a nivel de calidade e eficiencia que as redes convolucionais nun problema de clasificación de imaxes.[5] Máis tarde nese mesmo ano, outro estudo incorporou un transformador a un modelo ResNet, un tipo de rede neural convolucional empregado habitualmente no procesamento de imaxes. Os resultados amosaron como os transformadores de visión eran máis lixeiros computacionalmente ao mesmo tempo que máis precisos.[6][7][8]

Arquitectura dun transformador de visión

[editar | editar a fonte]
Imaxe coa arquitectura do transformador de visión, semellante á do artigo orixinal.
Arquitectura dun transformador de visión, aplicada a un problema de clasificación de imaxes. Imaxe inspirada na proposta do artigo orixinal.

Os transformadores de visión xorden como alternativa ás redes neurais convolucionais (en inglés: Convolutional Neural Networks, abreviado como CNN habitualmente), tradicionalmente empregadas ata entón para o procesamento de imaxes.

En xeral, os transformadores traballan con pares de tokens de entrada, que poden ser palabras coma no caso de cadeas de texto; estas relacións levan o nome de atención. Cando falamos de imaxes, a unidade na que podemos pensar son os píxeles. Porén, tratar de atopar as relacións entre cada par de píxeles nunha imaxe de grande tamaño (por exemplo, unha de alta definición con 1920x1080 píxeles), convértese nunha tarefa complexa en termos de memoria e cálculo computacional debido ao custo que supón. Como alternativa, propúxose empregar porcións das imaxes, de tamaño 16x16, e calcular as relacións entre elas, reducindo deste xeito o custo computacional dun xeito considerable.[4]

Tendo en conta a unidade de entrada, estas porcións son colocadas en secuencia, acompañadas cada unha delas dun encaixe ou embedding posicional, isto é, un identificador da posición que ocupa cada porción dentro da imaxe orixinal, para que non se perda en ningún momento a percepción de a que rexión da imaxe se está referindo cada porción. Os identificadores empregados son vectores que se poden aprender.[4]

Cada unha das mencionadas porcións da imaxe proxéctase nunha secuencia linear e multiplícase por unha matriz de encaixe. Este resultado, combinado co encaixe posicional, é inserido no transformador para ser procesado.[4] Referirémonos a eles tamén como tokens.

A diferenza dos transformadores convencionais, pódese apreciar que os transformadores de visión só contan cun codificador (en inglés: Encoder) e non cun descodificador (en inglés: Decoder). Isto é o máis habitual, con todo, non é posíbel deixar pasar que existen aplicacións máis concretas nas que se propón o uso da parte descodificadora do transformador.[4]

Unha vez que se procesan as porcións da imaxe a través do codificador do transformador, unha última cabeceira MLP, chamada así polas siglas do inglés Multi-Layer Perceptron, en galego Perceptrón Multicapa, encárgase de realizar a predición desexada. Trátase dunha rede neural artificial formada por múltiples capas.[4]

En todo o procesamento do transformador inclúese un token adicional. Este xoga un papel importante, pois é aprendible, e deste xeito, é influenciado por todos os demais tokens no modelo de cara á tarefa a resolver, servindo tamén de entrada ao último perceptrón multicapa.[4]

Cómpre mencionar que existen diferentes variantes a partir destes transformadores de visión orixinais, tales como os autocodificadores enmascarados[9], DINO[10], Swin Transformer[11], TimeSformer[12] ou ViT-VQGAN[13].

Comparativa coas redes neurais convolucionais

[editar | editar a fonte]

É inevitable pensar nos modelos empregados antes dos transformadores de visión, isto é, nas CNN. As diferenzas entre as redes neurais convolucionais e os transformadores de visión son numerosas e atópanse principalmente nas súas arquitecturas. Esencialmente, nunha CNN realízase unha tradución do nivel básico de píxeles a un mapa de características, que pode ser levado posteriormente a un MLP que nos proporcione a predición desexada.

Realmente, cabe sinalar que as CNN acadan resultados destacados ata con conxuntos de datos de adestramento baseados en volumes de datos que non son tan grandes coma os requiridos polos transformadores de visión. Este comportamento diferente parece ser resultado dos sesgos inductivos que posúen. En particular, a arquitectura orientada a filtros das CNN permite que estas redes capturen con maior facilidade as características específicas das imaxes analizadas. Porén, esta mesma arquitectura pode limitar a súa capacidade para capturar relacións globais de xeito máis complexo. [14][15]

Por outra banda, os transformadores de visión teñen un nesgo diferente cara a exploración de relacións topolóxicas entre porcións da imaxe, o que lles permite capturar relacións globais e de maior alcance, inda que requiren un adestramento máis intensivo en termos de datos. Ademais, estes transformadores demostraron seren máis sólidos fronte a distorsións da imaxe de entrada, como porcións antagónicas ou permutas.[16]

Así e todo, non é óptimo irnos cara os extremos e escoller sempre unha arquitectura sobre a outra. Téñense obtido resultados interesantes en varias tarefas de visión por computador empregando arquitecturas híbridas que combinan capas convolucionais con transformadores de visión. [17][18][19] En particular, a CNN pode empregarse para levar a imaxe de partida a un mapa intermedio de características, a partir do cal se crea a secuencia de tokens introducidas no transformador. Este, a súa vez, pode aplicar o mecanismo de atención para xerar unha secuencia de tokens de saída, que se poderían combinar co mapa de características orixinal. Grazas a esta conexión, poderíamos reducir a cantidade de tokens a seren analizados, implicando un menor custo computacional para o transformador, á parte de beneficiar a análise dos detalles potencialmente significativos a nivel de píxel. Búscase así tratar de manter os beneficios de usar ambos tipos de modelos. [6]

Adestramento: uso de aprendizaxe autosupervisado

[editar | editar a fonte]

Para adestrar un transformador de visión non é estraño precisar unha cantidade considerable de datos durante a fase de adestramento. Isto leva a buscar métodos alternativos para adestrar este tipo de modelos, por exemplo, os métodos autosupervisados.[20]

Estes enfoques fan posíbel o adestramento dunha rede neural case dun xeito autónomo, podendo inferir as características específicas dun problema sen precisar de construír un gran conxunto de datos ou ofrecer un etiquetado preciso destes. A capacidade de adestrar un transformador de visión sen requirir un conxunto de datos masivo pode ser a clave para a adopción xeneralizada desta arquitectura.

Un exemplo de estratexia autosupervisada de adestramento son os autocodificadores enmascarados (do inglés: Masked Autoencoders, abreviado MAE). Estes foron propostos en 2021, no artigo "Masked Autoencoders Are Scalable Vision Learners", e permítennos adestrar as compoñentes dun transformador dun xeito sinxelo: dada unha imaxe, enmascáranse aleatoriamente porcións da mesma, e reconstrúense os píxeles que faltan.[9]

Para iso, emprégase un codificador que traballa soamente nas porcións da imaxe que quedaron visibles, para logo pasar a un decodificador lixeiro que reconstrúe a imaxe orixinal a partir das representacións intermedias das porcións visibles (obtidas do codificador) e as porcións enmascaradas. Grazas a esta aproximación, este modelo pódese xeneralizar a diferentes tarefas (realizando un axuste fino sobre o adestramento autosupervisado), adiantando outras aproximacións baseadas puramente na aprendizaxe supervisada.[9]

Aplicacións

[editar | editar a fonte]

Os transformadores de visión son amplamente empregados en diferentes tarefas de visión por computador, mesmo atopándose con resultados xa no estado do arte para algunhas delas. Lístanse exemplos a continuación:

Os ViT foron usados para a tarefa de xeración de imaxes, concretamente, como base para redes xerativas adversarias (en inglés: Generative Adversarial Networks, abreviado como GAN) e para modelos de difusión.

Implementación

[editar | editar a fonte]

Cómpre coñecer que hai varias implementacións para os transformadores de visión e as súas variantes na web, completamente gratuítas ao seren de código aberto. En particular, tendo en conta a linguaxe Python, habitualmente empregada para resolver problemas de aprendizaxe automática, cabe sinalar dúas bibliotecas amplamente usadas como PyTorch[21], que é na que se atopan as principais versións desta arquitectura; e TensorFlow[22], na que tamén se teñen diferentes implementacións accesibles.

  1. 1,0 1,1 "Google Académico". scholar.google.es. Consultado o 2024-08-28. 
  2. Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gómez, Aidan N; Kaiser, Ł ukasz; Polosukhin, Illia (2017). "Attention is All you Need". Advances in Neural Information Processing Systems (Curran Associates, Inc.) 30. 
  3. Cordonnier, Jean-Baptiste; Loukas, Andreas; Jaggi, Martin (2019-09-25). "On the Relationship between Self-Attention and Convolutional Layers" (en inglés). 
  4. 4,0 4,1 4,2 4,3 4,4 4,5 4,6 4,7 Alexey, Dosovitskiy (2020). "An image is worth 16x16 words: Transformers for image recognition at scale". arXiv preprint arXiv:2010.11929. 
  5. Sarkar, Arjun (2021-05-20). "Are Transformers better than CNN’s at Image Recognition?". Medium (en inglés). Consultado o 2024-08-28. 
  6. 6,0 6,1 Synced (2020-06-12). "Facebook and UC Berkeley Boost CV Performance and Lower Compute Cost With Visual Transformers | Synced". syncedreview.com (en inglés). Consultado o 2024-08-28. 
  7. Wu, Bichen; Xu, Chenfeng; Dai, Xiaoliang; Wan, Alvin; Zhang, Peizhao; Tomizuka, M.; Keutzer, K.; Vajda, Péter (2020-06-05). "Visual Transformers: Token-based Image Representation and Processing for Computer Vision". ArXiv. 
  8. Xiao, Tete; Singh, Mannat; Mintun, Eric; Darrell, Trevor; Dollár, Piotr; Girshick, Ross (2024-06-10). "Early convolutions help transformers see better". Proceedings of the 35th International Conference on Neural Information Processing Systems. NIPS '21 (Red Hook, NY, USA: Curran Associates Inc.): 30392–30400. ISBN 978-1-7138-4539-3. doi:10.5555/3540261.3542586. 
  9. 9,0 9,1 9,2 He, Kaiming; Chen, Xinlei; Xie, Saining; Li, Yanghao; Dollar, Piotr; Girshick, Ross (2022-06). "Masked Autoencoders Are Scalable Vision Learners". 2022 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR): 15979–15988. doi:10.1109/CVPR52688.2022.01553. 
  10. Caron, Mathilde; Touvron, Hugo; Misra, Ishan; Jegou, Hervé; Mairal, Julien; Bojanowski, Piotr; Joulin, Armand (2021-10). "Emerging Properties in Self-Supervised Vision Transformers". ICCV 2021 - International Conference on Computer Vision (Virtual, France: IEEE): 1–21. doi:10.1109/ICCV48922.2021.00951. 
  11. Liu, Ze; Lin, Yutong; Cao, Yue; Hu, Han; Wei, Yixuan; Zhang, Zheng; Lin, Stephen; Guo, Baining (2021-10). "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 2021 IEEE/CVF International Conference on Computer Vision (ICCV): 9992–10002. doi:10.1109/ICCV48922.2021.00986. 
  12. Bertasius, Gedas; Wang, Heng; Torresani, L. (2021-02-09). "Is Space-Time Attention All You Need for Video Understanding?". ArXiv. 
  13. Yu, Jiahui; Li, Xin; Koh, Jing Yu; Zhang, Han; Pang, Ruoming; Qin, James; Ku, Alexander; Xu, Yuanzhong; Baldridge, Jason (2021-10-06). "Vector-quantized Image Modeling with Improved VQGAN" (en inglés). 
  14. Raghu, Maithra; Unterthiner, Thomas; Kornblith, Simon; Zhang, Chiyuan; Dosovitskiy, Alexey (2024-06-10). "Do vision transformers see like convolutional neural networks?". Proceedings of the 35th International Conference on Neural Information Processing Systems. NIPS '21 (Red Hook, NY, USA: Curran Associates Inc.): 12116–12128. ISBN 978-1-7138-4539-3. doi:10.5555/3540261.3541188. 
  15. Coccomini, Davide (2021-07-24). "Vision Transformers or Convolutional Neural Networks? Both!". Medium (en inglés). Consultado o 2024-08-29. 
  16. Naseer, Muzammal; Ranasinghe, Kanchana; Khan, Salman Hameed; Hayat, Munawar; Khan, F.; Yang, Ming-Hsuan (2021-05-21). "Intriguing Properties of Vision Transformers". 
  17. Dai, Zihang; Liu, Hanxiao; Le, Quoc V.; Tan, Mingxing (2021-06-09). "CoAtNet: Marrying Convolution and Attention for All Data Sizes". ArXiv. 
  18. Wu, Haiping (28 de febreiro de 2022). "CvT: Introducing Convolutions to Vision Transformers". 2021 IEEE/CVF International Conference on Computer Vision (ICCV). ISSN 2380-7504. doi:10.1109/ICCV48922.2021.00009. 
  19. Coccomini, Davide Alessandro; Messina, Nicola; Gennaro, Claudio; Falchi, Fabrizio (2022). Sclaroff, Stan; Distante, Cosimo; Leo, Marco; Farinella, Giovanni M., eds. "Combining EfficientNet and Vision Transformers for Video Deepfake Detection". Image Analysis and Processing – ICIAP 2022 (en inglés) (Cham: Springer International Publishing): 219–229. ISBN 978-3-031-06433-3. doi:10.1007/978-3-031-06433-3_19. 
  20. Coccomini, Davide (2022-08-22). "Self-Supervised Learning in Vision Transformers". Medium (en inglés). Consultado o 2024-08-29. 
  21. Wang, Phil (2024-08-29). "lucidrains/vit-pytorch". Consultado o 2024-08-29. 
  22. Salama, Khalid. "Keras documentation: Image classification with Vision Transformer". keras.io (en inglés). Consultado o 2024-08-29. 

Véxase tamén

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]