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

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.

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

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.

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

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.

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.

Cómpre mencionar que existen diferentes variantes a partir destes transformadores de visión orixinais, tales como os autocodificadores enmascarados, 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. 

 Adestramento: uso de aprendizaxe autosupervisado 
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.

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.

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.

 Aplicacións 
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:

 Clasificación de imaxes
 Detección de obxectos
 Seguimento ou tracking visual
 Detección de deepfakes en vídeo
 Segmentación de imaxes
 Detección de anomalías
 Síntese de imaxes
 Agrupamento (clustering)
 Condución autónoma

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 
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, 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)

Categoría:Procesamento de imaxe
Categoría:Redes neuronais artificiais
Categoría:Vision por computadora