Transformador de visión

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 
A primeira proposta de transformadores data do ano 2017, cando no famoso artigo (con máis de 100000 citas) titulado "*Attention is All You Need"* , 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). 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*"  (con máis de 40000 citas 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.

## Arquitectura dun transformador de visión 
alt=Imaxe coa arquitectura do transformador de visión, semellante á do artigo orixinal.|miniatura|586x586px|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., DINO, Swin Transformer, TimeSformer ou ViT-VQGAN.

## Comparativa coas redes neurais convolucionais 
É 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. 

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.

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.  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. 

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., que é na que se atopan as principais versións desta arquitectura; e TensorFlow, na que tamén se teñen diferentes implementacións accesibles.

## Notas 
## Véxase tamén 
### Outros artigos 
* GPT-3
* Aprendizaxe profunda
* Atención (aprendizaxe automática)
* PyTorch
* TensorFlow
* Transformador (modelo de aprendizaxe automática)