Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Vision Transformer (ViT)

Um Vision Transformer (ViT) divide uma imagem em patches e relaciona-os com autoatenção. Abrange a sua arquitetura, variantes e vantagens e desvantagens em comparação com CNNs.

Um Vision Transformer (ViT) é uma rede neural que aplica a arquitetura de transformer, usada em modelagem de linguagem, a imagens. Ele divide uma imagem em recortes de tamanho fixo, transforma cada recorte em um embedding de token e processa a sequência com autoatenção, permitindo que cada recorte use informações de todos os outros desde a primeira camada. Pesquisadores do Google apresentaram a arquitetura em “Uma imagem vale 16×16 palavras”, demonstrando que um transformer puro, sem camadas de convolução, iguala o desempenho de ponta das redes neurais convolucionais (CNNs) em classificação de imagens quando pré-treinado com dados suficientes. Hoje, os ViTs são usados como codificadores de imagem em modelos de visão e linguagem, modelos fundamentais de segmentação e backbones autossupervisionados.

Como funcionam os Vision Transformers#

Um ViT converte uma imagem em uma sequência e depois a processa como texto. As etapas abaixo usam o ViT-Base/16 em uma imagem de 224×224:

  1. Embedding de recortes: A imagem é dividida em recortes de 16×16 pixels, formando uma grade de 14×14 com 196 recortes. Cada recorte é achatado e multiplicado por uma matriz aprendida para se tornar um embedding de 768 dimensões, geralmente implementado como uma convolução de 16×16 com stride 16.
  2. Token de classe e embeddings posicionais: Um token de classe aprendível é acrescentado ao início da sequência, e embeddings posicionais aprendíveis são adicionados a cada token. A atenção, por si só, ignora a ordem, então esses embeddings são a única fonte de informação sobre a origem de cada recorte.
  3. Codificador transformer: Uma pilha de blocos idênticos — 12 no ViT-Base — alterna entre autoatenção multi-head, que combina informações entre todos os tokens, e uma MLP de duas camadas com ativações GELU, que transforma cada token individualmente. A normalização de camada vem antes de cada subcamada, que é envolvida por uma conexão residual.
  4. Cabeça: A saída final do token de classe alimenta um classificador linear. Tarefas densas, como segmentação, usam os tokens dos recortes, reorganizados em uma grade de 14×14.

O código em PyTorch abaixo cria a sequência de tokens de uma imagem e a passa por um único bloco de codificador.

import torch
from torch import nn

# Configurações do ViT-Base/16: recortes de 16x16, tokens de 768 dimensões, 12 cabeças de atenção
image = torch.randn(1, 3, 224, 224)
patch_embed = nn.Conv2d(3, 768, kernel_size=16, stride=16)  # uma projeção linear por recorte

# Divida a imagem em uma grade de recortes 14x14 e achate-a em 196 tokens
tokens = patch_embed(image).flatten(2).transpose(1, 2)

# Acrescente um token de classe aprendível e adicione embeddings posicionais aprendíveis
cls_token = nn.Parameter(torch.zeros(1, 1, 768))
pos_embed = nn.Parameter(torch.zeros(1, 197, 768))
tokens = torch.cat([cls_token, tokens], dim=1) + pos_embed

# Um bloco de codificador pré-normalizado no qual cada token presta atenção a todos os outros
block = nn.TransformerEncoderLayer(
    d_model=768, nhead=12, dim_feedforward=3072, activation="gelu", batch_first=True, norm_first=True
)
print(block(tokens).shape)

Ele imprime torch.Size([1, 197, 768]): os 196 tokens dos recortes mais o token de classe, cada um ainda com 768 dimensões, prontos para o próximo dos 12 blocos do ViT-Base.

Tamanhos e variantes de modelos#

Os nomes ViT indicam o tamanho do modelo e dos recortes: ViT-B/16 é o modelo Base de 86 milhões de parâmetros com recortes de 16×16, enquanto os modelos Large e Huge têm 307 milhões e 632 milhões de parâmetros. Recortes menores produzem mais tokens, aumentando os detalhes a um custo computacional maior. Várias variantes mudaram o treinamento ou a estrutura dos ViTs:

  • DeiT: Uma receita de treinamento com ampliação intensa e um token de destilação, que treina ViTs competitivos apenas com ImageNet-1k, sem dados adicionais de pré-treinamento.
  • Swin Transformer: Calcula a atenção em janelas locais deslocadas e combina recortes entre etapas, produzindo uma hierarquia semelhante à de uma CNN, adequada para detecção e segmentação.
  • Autoencoders mascarados (MAE) e DINOv2: Métodos autossupervisionados que pré-treinam ViTs com imagens sem rótulos: o MAE reconstrói recortes mascarados, e o DINOv2 corresponde às saídas de uma rede professora.
  • CLIP e SigLIP: Codificadores de imagem ViT treinados para associar imagens a suas legendas, amplamente reutilizados como torre visual de modelos multimodais.

Aplicações#

Vision Transformers e CNNs#

As CNNs incorporam duas suposições em cada camada: localidade, porque cada filtro enxerga uma pequena vizinhança, e equivariância à translação, porque o mesmo filtro é aplicado em todas as posições. Além da grade de recortes, um ViT precisa aprender a estrutura espacial a partir dos dados. No artigo original, os ViTs treinados apenas com o ImageNet (1,3 milhão de imagens) ficaram alguns pontos percentuais abaixo de ResNets de tamanho comparável; o pré-treinamento no conjunto de dados JFT-300M, com 300 milhões de imagens, elevou a precisão top-1 do ViT-H/14 no ImageNet a 88,55%. O custo é a outra diferença. A autoatenção compara cada token com todos os outros, então dobrar o comprimento de cada lado da imagem quadruplica a quantidade de tokens e multiplica o custo da atenção por 16. A atenção Flash reduz o tráfego de memória desse cálculo, e a atenção em janelas limita as próprias comparações. A Ultralytics executa o Segment Anything Model da Meta, cujo checkpoint sam_b.pt codifica cada imagem de 1024×1024 com um backbone ViT-B: os recortes de 16×16 formam uma grade de 64×64, com 4.096 tokens, então 8 de seus 12 blocos prestam atenção apenas em janelas de 14×14 e 4 usam atenção global.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina