thumb|A arquitetura do transformer de visão (vision transformer). Uma imagem de entrada é dividida em retalhos (patches), cada um dos quais é mapeado linearmente através de uma camada de embedding de patch, antes de entrar num codificador Transformer padrão. Um transformer de visão (ViT, do inglês vision transformer) é um transformer projetado para visão computacional. Um ViT decompõe uma imagem de entrada numa série de retalhos, ou patches (em vez de texto em tokens), serializa cada retalho num vetor e mapeia-o para uma dimensão menor com uma única multiplicação de matrizes. Estes embeddings vetoriais são então processados por um codificador transformer como se fossem embeddings de tokens.

Os ViTs foram projetados como alternativas às redes neurais convolucionais (CNNs) em aplicações de visão computacional. Eles possuem diferentes vieses indutivos (inductive biases), estabilidade de treinamento e eficiência de dados. Comparados às CNNs, os ViTs são menos eficientes em termos de dados, mas possuem maior capacidade. Alguns dos maiores modelos modernos de visão computacional são ViTs, como um com 22 bilhões de parâmetros.

Após a sua publicação, muitas variantes foram propostas, com arquiteturas híbridas com características tanto de ViTs quanto de CNNs. Os ViTs encontraram aplicação no reconhecimento de imagem, segmentação de imagem, previsão meteorológica e condução autônoma.

História Os transformers foram introduzidos em Attention Is All You Need (2017), e têm encontrado uso generalizado no processamento de linguagem natural. Um artigo de 2019 aplicou ideias do Transformer à visão computacional. Especificamente, começaram com uma ResNet, uma rede neural convolucional padrão usada para visão computacional, e substituíram todos os núcleos convolucionais (convolutional kernels) pelo mecanismo de autoatenção (self-attention) encontrado num Transformer. Isto resultou num desempenho superior. No entanto, não é um Transformer de Visão.

Em 2020, um Transformer somente codificador (encoder-only Transformer) foi adaptado para a visão computacional, gerando o ViT, que alcançou o estado da arte na classificação de imagens, superando o domínio anterior das CNNs. O autocodificador mascarado (masked autoencoder) (2022) estendeu o ViT para trabalhar com treinamento não supervisionado. O transformer de visão e o autocodificador mascarado, por sua vez, estimularam novos desenvolvimentos nas redes neurais convolucionais.

Posteriormente, houve uma fertilização cruzada entre a abordagem anterior das CNNs e a abordagem ViT.

Em 2021, algumas variantes importantes dos Transformers de Visão foram propostas. Estas variantes destinam-se principalmente a serem mais eficientes, mais precisas ou mais adequadas a um domínio específico. Dois estudos melhoraram a eficiência e robustez do ViT adicionando uma CNN como pré-processador. O Swin Transformer alcançou resultados no estado da arte em alguns conjuntos de dados de detecção de objetos, como o COCO, usando janelas deslizantes tipo convolução do mecanismo de atenção e o processo de pirâmide na visão computacional clássica.

Visão geral thumb|Arquitetura do Transformer de Visão, mostrando os blocos Transformer somente codificador no interior A arquitetura básica, usada pelo artigo original de 2020, é a seguinte. Em resumo, é um Transformer somente codificador tipo BERT.

A imagem de entrada é do tipo , onde são altura, largura, canal (RGB). É então dividida em retalhos (patches) de forma quadrada do tipo .

Para cada retalho, o retalho é passado através de um operador linear, para obter um vetor ("embedding de retalho"). A posição do retalho também é transformada num vetor por "codificação de posição". Os dois vetores são somados e depois passados através de vários codificadores Transformer.

O mecanismo de atenção num ViT transforma repetidamente vetores de representação de retalhos de imagem, incorporando cada vez mais relações semânticas entre retalhos de imagem numa imagem. Isso é análogo a como no processamento de linguagem natural, à medida que os vetores de representação fluem através de um transformer, eles incorporam cada vez mais relações semânticas entre as palavras, da sintaxe à semântica.

A arquitetura acima transforma uma imagem numa sequência de representações vetoriais. Para usá-las em aplicações posteriores (downstream), uma cabeça adicional precisa ser treinada para interpretá-las.

Por exemplo, para usá-lo para classificação, pode-se adicionar um MLP raso por cima dele que emita uma distribuição de probabilidade sobre as classes. O artigo original usa uma rede linear-GeLU-linear-softmax.

Variantes ViT Original O ViT original era um Transformer somente codificador, supervisionado para prever o rótulo (label) da imagem a partir dos retalhos da imagem. Tal como no caso do BERT, ele usa um token especial <CLS> no lado da entrada, e o vetor de saída correspondente é usado como a única entrada da cabeça MLP de saída final. O token especial é um truque arquitetônico para permitir que o modelo comprima todas as informações relevantes para prever o rótulo da imagem num único vetor.thumb|450x450px|Animação do ViT. O token 0 é o <CLS> especial. Os outros 9 retalhos são projetados por uma camada linear antes de serem alimentados no codificador Transformer como tokens de entrada 1 a 9. Os transformers encontraram as suas aplicações iniciais em tarefas de processamento de linguagem natural, conforme demonstrado por modelos de linguagem como BERT e GPT-3. Em contrapartida, o sistema típico de processamento de imagem usa uma rede neural convolucional (CNN). Projetos bem conhecidos incluem Xception, ResNet, EfficientNet, DenseNet e Inception.

Os transformers medem os relacionamentos entre pares de tokens de entrada (palavras, no caso de sequências de texto), denominados atenção. O custo é quadrático em relação ao número de tokens. Para imagens, a unidade básica de análise é o pixel. No entanto, computar relacionamentos para cada par de pixels numa imagem típica é proibitivo em termos de memória e computação. Em vez disso, o ViT calcula os relacionamentos entre os pixels em várias pequenas seções da imagem (por ex., 16x16 pixels), a um custo drasticamente reduzido. As seções (com embeddings posicionais) são colocadas numa sequência. Os embeddings são vetores aprendíveis. Cada seção é organizada numa sequência linear e multiplicada pela matriz de embedding. O resultado, com o embedding de posição, é alimentado no transformer.

Melhorias arquitetônicas

Pooling

Após o ViT processar uma imagem, ele produz alguns vetores de embedding. Estes devem ser convertidos para uma única previsão de probabilidade de classe por algum tipo de rede. No ViT original e no Autocodificador Mascarado (Masked Autoencoder), eles usaram um token fictício (dummy) [CLS], emulação do modelo de linguagem BERT. A saída em [CLS] é o token de classificação, que é então processado por um módulo LayerNorm-feedforward-softmax para uma distribuição de probabilidade.

O Pooling de média global (GAP) não usa o token fictício, mas simplesmente usa a média de todos os tokens de saída como o token de classificação. Foi mencionado no ViT original como sendo igualmente bom.

O Pooling de atenção multicabeça (MAP) aplica um bloco de atenção multicabeça ao pooling. Especificamente, ele recebe como entrada uma lista de vetores , que podem ser pensados como os vetores de saída de uma camada de um ViT. A saída do MAP é , onde é um vetor de consulta treinável e é a matriz cujas linhas são . Isto foi primeiramente proposto na arquitetura Set Transformer.

Artigos posteriores demonstraram que o GAP e o MAP apresentam ambos um melhor desempenho do que o pooling do tipo BERT. Uma variante de MAP foi proposta como atenção de classe, a qual aplica o MAP, em seguida a alimentação para a frente (feedforward) e, novamente, o MAP.

A Re-atenção foi proposta para permitir o treinamento de um ViT profundo. Ela muda o módulo de atenção multicabeça.

Autocodificador Mascarado (Masked Autoencoder) thumb|241x241px|Arquitetura do Autocodificador Mascarado

O Autocodificador Mascarado baseou-se em autocodificadores de remoção de ruído e em codificadores de contexto. Ele dispõe de dois ViTs colocados ponta a ponta. O primeiro ("codificador") recebe os retalhos de imagem com codificação posicional e emite vetores que representam cada retalho. O segundo (chamado "decodificador", mesmo sendo um Transformer apenas codificador) recebe os vetores com codificação posicional e emite novamente os retalhos de imagem.

Treinamento Durante o treinamento, as imagens de entrada (224 px x 224 px na implementação original) são divididas ao longo de um número designado de linhas em cada eixo, produzindo retalhos de imagem. Seleciona-se uma certa percentagem de retalhos para serem mascarados por tokens de máscara, enquanto todos os outros são retidos na imagem. A rede é incumbida de reconstruir a imagem a partir dos restantes retalhos não mascarados. Os tokens de máscara na implementação original são grandezas vetoriais apreensíveis. É então aplicada uma projeção linear com embeddings posicionais ao vetor de retalhos não mascarados. Experiências que variam a razão da máscara em redes treinadas no conjunto de dados ImageNet-1K descobriram que razões de máscara de 75% alcançaram alto desempenho tanto no ajuste fino como na prova linear (linear-probing) do espaço latente do codificador. O MAE processa unicamente os retalhos não mascarados durante o treinamento, o que aumenta a eficiência do processamento de dados no codificador e reduz o uso de memória do transformer.

Na implementação original do MAE, um ViT de menor intensidade computacional é usado para o decodificador. Os retalhos mascarados são adicionados de volta à saída do bloco codificador como tokens de máscara e ambos são introduzidos no decodificador. É computada uma perda de reconstrução para os retalhos mascarados de modo a avaliar o desempenho da rede.

Previsão Na previsão, a arquitetura do decodificador é descartada integralmente. A imagem de entrada é dividida em retalhos pelo mesmo algoritmo do treinamento, no entanto nenhum retalho é mascarado. É aplicada uma projeção linear com um embedding posicional a cada retalho, e as correspondentes representações do vetor de embedding de cada retalho são fornecidas ao codificador.

Usos e Derivados Vários derivados do MAE original têm sido explorados. O MAE foi aplicado para pré-treinamento autossupervisionado em contextos médicos, incluindo para a interpretação de radiografias torácicas. Os derivados do MAE têm sido aplicados neste contexto para servirem melhor como pré-treinamento em áreas da medicina.

MAE Médicamente Supervisionado O MAE Medicamente Supervisionado procura abordar a aplicação das altas razões de máscara do MAE quando aplicado a conjuntos de dados de lesões médicas e usa um conjunto de treinamento supervisionado para criar mapas de atenção locais para imagens médicas de forma a restringir quais retalhos são mascarados. O MAE Medicamente Supervisionado alcançou um desempenho no estado da arte a partir de janeiro de 2025 na classificação de lesões médicas nos conjuntos de dados Messidor-2, BTMD, HAM10000, DeepLesion e ChestXRay2017.

MAE de Matriz de Coocorrência de Nível de Cinza (GLCM-MAE): O GCLM-MAE usa o GCLM para extrair informações de textura das imagens para preservar essas mesmas informações. Ele resolve um problema em que um MAE clássico suaviza as imagens em demasia, causando uma perda de detalhes granulares que podem ser vitais em âmbitos médicos. O GLCM-MAE atinge um desempenho no estado da arte na identificação do cancro da vesícula biliar, cancro da mama diagnosticado por ecografia, pneumonia diagnosticada por raios-X e COVID-19 diagnosticado por tomografia computorizada, a partir de julho de 2025.