Um vision transformer (ViT) é um tipo de Transformer (architecture) projetado para visão computacional. Diferentemente das redes neurais convolucionais (CNNs), que processam pixels por meio de filtros convolucionais, um ViT decompõe uma imagem de entrada em uma série de patches quadrados, serializa cada patch em um vetor e o mapeia para uma incorporação de menor dimensão usando uma única multiplicação de matrizes. Essas incorporações de patches são então processadas por um codificador transformer, que aplica mecanismos de atenção multi-cabeça para capturar relações entre patches. Os ViTs foram introduzidos como alternativas às CNNs, oferecendo diferentes vieses indutivos, estabilidade de treinamento e eficiência de dados. Eles são geralmente menos eficientes em termos de dados do que as CNNs, mas têm maior capacidade, e alguns dos maiores modelos modernos de visão computacional, como um com 22 bilhões de parâmetros, são ViTs.
A arquitetura ViT foi proposta pela primeira vez em 2020 e rapidamente alcançou resultados de última geração em classificação de imagens, superando o domínio anterior das CNNs. Pesquisas subsequentes produziram muitas variantes, incluindo arquiteturas híbridas que combinam características de ViTs e CNNs. Os ViTs encontraram aplicações em reconhecimento de imagens, segmentação de imagens, previsão do tempo e direção autônoma.
História
Os transformers foram introduzidos no artigo de 2017 "Attention Is All You Need" e se tornaram amplamente utilizados em processamento de linguagem natural. Em 2019, um artigo aplicou ideias de transformers à visão computacional começando com uma ResNet, uma CNN padrão, e substituindo todos os kernels convolucionais pelo mecanismo de autoatenção. Essa abordagem produziu desempenho superior, mas não era um verdadeiro vision transformer.
Em 2020, um transformer somente codificador foi adaptado para visão computacional, resultando no ViT, que alcançou o estado da arte em classificação de imagens. O autoencoder mascarado (2022) estendeu o ViT para funcionar com treinamento não supervisionado. Esses desenvolvimentos também estimularam novos avanços em redes neurais convolucionais, levando a uma fertilização cruzada entre as duas abordagens.
Em 2021, várias variantes importantes do ViT foram propostas para melhorar eficiência, precisão ou adequação ao domínio. Dois estudos melhoraram a eficiência e a robustez adicionando uma CNN como pré-processador. O Swin Transformer alcançou resultados de última geração em conjuntos de dados de detecção de objetos, como o COCO, usando janelas deslizantes de atenção semelhantes a convoluções e uma estrutura piramidal.
Visão geral
A arquitetura básica do ViT original de 2020 é um transformer somente codificador semelhante ao BERT. A imagem de entrada é representada como um tensor de forma H × W × C, onde H, W e C são altura, largura e número de canais (tipicamente RGB). A imagem é dividida em patches quadrados de tamanho P × P × C. Cada patch é achatado e passado por uma camada linear para obter uma incorporação de patch. Uma codificação posicional, que codifica a posição do patch na imagem, é adicionada à incorporação. O artigo original comparou nenhuma codificação, codificações 1D, 2D e relativas, e adotou a 1D.
A sequência de incorporações de patches é então processada por várias camadas de codificador transformer. O mecanismo de atenção em um ViT transforma repetidamente vetores de representação de patches de imagem, incorporando relações semânticas entre patches, de maneira análoga a como transformers em PLN capturam relações entre palavras.
Para usar a saída em tarefas downstream, uma cabeça adicional é treinada. Para classificação, um MLP raso (linear-GeLU-linear-softmax) é adicionado no topo, que produz uma distribuição de probabilidade sobre as classes.
Variantes
ViT original
O ViT original era um transformer somente codificador treinado com supervisão para prever rótulos de imagens a partir de patches. Ele usava um token especial [CLS] na entrada, e o vetor de saída correspondente servia como entrada para a cabeça MLP final. Esse truque arquitetônico permitia que o modelo comprimisse todas as informações relevantes ao rótulo em um único vetor.
Os transformers inicialmente encontraram sucesso em PLN, como visto em modelos como BERT e GPT-3. Em contraste, o processamento típico de imagens usava CNNs, com exemplos bem conhecidos incluindo Xception, ResNet, EfficientNet, DenseNet e Inception. Os transformers medem relações entre pares de tokens de entrada, com custo quadrático no número de tokens. Para imagens, calcular relações para cada par de pixels é proibitivo, então o ViT calcula relações entre pixels em pequenas seções (por exemplo, 16×16 pixels), reduzindo drasticamente o custo. Cada seção é achatada, multiplicada por uma matriz de incorporação e adicionada a uma incorporação posicional antes de ser alimentada ao transformer.
Pooling
Após o processamento, o ViT produz vetores de incorporação que devem ser convertidos em uma única previsão de classe. O ViT original e o autoencoder mascarado usavam um token dummy [CLS], seguindo o BERT. A saída em [CLS] é processada por um módulo LayerNorm-feedforward-softmax.
A pooling por média global (GAP), em vez disso, calcula a média de todos os tokens de saída como o token de classificação, e foi mencionada no artigo original como igualmente boa. A pooling por atenção multi-cabeça (MAP) aplica um bloco de atenção multi-cabeça para agrupar os vetores, recebendo uma lista de vetores como entrada e produzindo uma combinação ponderada.
Aplicações e impacto
Os ViTs foram aplicados a uma ampla gama de tarefas de visão computacional além da classificação, incluindo detecção de objetos, segmentação e compreensão de vídeo. Eles também são usados em imagens médicas e sensoriamento remoto. A arquitetura influenciou o desenvolvimento de modelos de visão em larga escala e foi integrada a sistemas multimodais que combinam visão e linguagem.
Apesar de suas vantagens, os ViTs exigem mais dados para treinar efetivamente do que as CNNs, o que levou ao desenvolvimento de modelos híbridos e técnicas como destilação de conhecimento e pré-treinamento autossupervisionado. A abordagem do autoencoder mascarado permitiu aprendizado não supervisionado, reduzindo a necessidade de dados rotulados.
Os ViTs também estimularam inovação em otimização de hardware e software, pois seus mecanismos de atenção são computacionalmente intensivos. A pesquisa continua em melhorar eficiência, interpretabilidade e robustez.
Ver também
- transformer
- rede neural convolucional (não na lista, mas como conceito)
- autoencoder mascarado (não na lista, mas como conceito)
- classificação de imagens (não na lista, mas como conceito)