Vision Transformer (ViT)

programador
1.1.2.4 – Redes Neurais – Visao Computacional
1.1.2.4.4 – Arquiteturas CNN Profundas (Deep CNNs)
1.1.2.4.4.1 – LeNet-5
1.1.2.4.4.2 – AlexNet
1.1.2.4.4.3 – VGGNet
1.1.2.4.4.4 – ResNet
1.1.2.4.4.5 – GoogLeNet (Inception)
1.1.2.4.4.6 – MobileNet
1.1.2.4.4.7 – Vision Transformer (ViT)
1.1.2.4.4.8 – Tecnicas de Treinamento
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

O Vision Transformer (ViT) adapta a arquitetura Transformer para visão computacional. Originalmente, os Transformers revolucionaram o processamento de linguagem natural. Primeiramente, o ViT divide a imagem em pequenos patches (quadrados). Cada patch é achatado e projetado linearmente em um vetor. Estes vetores tornam-se análogos às palavras em uma frase. Além disso, adiciona-se uma posição de embedding para manter informação espacial. O Transformer processa esta sequência de vetores através de camadas de atenção. Consequentemente, o modelo captura relações globais entre patches distantes. Portanto, o ViT oferece uma alternativa poderosa às CNNs tradicionais.

arquitetura e mecanismo de atenção

O mecanismo de atenção é o coração do Vision Transformer. Primeiramente, ele permite que cada patch se relacione com todos os outros patches. Diferentemente das CNNs, não há limitação de campo receptivo local. A atenção global calcula pesos que indicam a importância relativa entre patches. Por exemplo, um patch da borda de um objeto pode se relacionar fortemente com outro patch da borda oposta. O Transformer emprega múltiplas cabeças de atenção (multi-head attention). Cada cabeça aprende diferentes tipos de relações espaciais. Os resultados das várias cabeças são concatenados e transformados linearmente. Camadas de normalização e redes feedforward completam o bloco Transformer. Portanto, a arquitetura é uniforme e não utiliza convoluções.

treinamento e requisitos de dados

O Vision Transformer tem requisitos de dados significativamente maiores que as CNNs. Primeiramente, ele não possui a indutividade de prioridade espacial das CNNs. As CNNs assumem que pixels próximos são mais relevantes (localidade). O ViT, por outro lado, precisa aprender estas relações a partir dos dados. Consequentemente, ele requer conjuntos de dados massivos para generalizar bem. Por exemplo, o ImageNet-21k (14 milhões de imagens) é um pré-requisito comum. A técnica de pré-treinamento em dados gigantescos é fundamental. Após o pré-treinamento, o ViT pode ser fine-tunado para conjuntos menores. Contudo, em dados pequenos (ex: CIFAR-10), CNNs ainda superam o ViT. Portanto, o ViT é ideal quando há abundância de dados disponíveis.

quando utilizar o vision transformer

Utilize o Vision Transformer quando você tiver um conjunto de dados muito grande. Por exemplo, milhões de imagens rotuladas disponíveis. Outro cenário adequado é quando as relações globais são cruciais para a tarefa. O ViT captura dependências de longo alcance que CNNs podem perder. Aplicações como classificação de cenas ou reconhecimento de objetos complexos se beneficiam. Além disso, o ViT é útil como backbone para tarefas multimodais (visão + texto). Contudo, evite o ViT quando os dados forem limitados (menos de 100 mil imagens). CNNs como ResNet ou EfficientNet generalizam melhor com poucos dados. Além disso, o ViT é mais caro computacionalmente que CNNs otimizadas. Portanto, considere também os recursos de hardware disponíveis. Em resumo, escolha o ViT quando tiver dados massivos e precisar de modelagem de contexto global.

MobileNet

programador
1.1.2.4 – Redes Neurais – Visao Computacional
1.1.2.4.4 – Arquiteturas CNN Profundas (Deep CNNs)
1.1.2.4.4.1 – LeNet-5
1.1.2.4.4.2 – AlexNet
1.1.2.4.4.3 – VGGNet
1.1.2.4.4.4 – ResNet
1.1.2.4.4.5 – GoogLeNet (Inception)
1.1.2.4.4.6 – MobileNet
1.1.2.4.4.7 – Vision Transformer (ViT)
1.1.2.4.4.8 – Tecnicas de Treinamento
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

A MobileNet é uma arquitetura CNN otimizada para dispositivos com recursos limitados. O Google a desenvolveu para rodar eficientemente em smartphones. Primeiramente, ela introduz a convolução depthwise separável como bloco fundamental. Esta técnica reduz drasticamente o número de parâmetros e operações. Por exemplo, uma convolução padrão 3×3 é fatorada em duas etapas. A primeira etapa aplica filtros 3×3 em cada canal individualmente. A segunda etapa combina os canais com convoluções 1×1. Consequentemente, o custo computacional cai de 8 para 10 vezes. Portanto, a MobileNet alcança latência muito baixa em dispositivos móveis.

convolução depthwise separável

A convolução depthwise separável é o coração da arquitetura MobileNet. Primeiramente, a convolução depthwise aplica um filtro por canal de entrada. Por exemplo, para uma imagem RGB, três filtros 3×3 atuam independentemente. Esta etapa filtra a informação espacial sem cruzar canais. Em seguida, a convolução pointwise (1×1) combina os canais de saída. Esta etapa cria novas combinações lineares dos canais filtrados. A separação reduz drasticamente o número de multiplicações necessárias. Por exemplo, para uma camada com 64 canais de saída, a economia é enorme. Diferentemente da convolução padrão, a depthwise separável fatora a operação em duas partes mais simples. Portanto, ela mantém a precisão enquanto reduz o custo computacional.

hiperparâmetros: width multiplier e resolution multiplier

A MobileNet oferece dois hiperparâmetros para ajustar o trade-off entre precisão e velocidade. Primeiramente, o width multiplier reduz o número de canais em cada camada. Por exemplo, um width multiplier de 0.5 reduz todos os canais pela metade. Isto diminui o custo computacional quadraticamente. Além disso, o resolution multiplier reduz a resolução das imagens de entrada. Por exemplo, de 224×224 para 128×128 pixels. Este parâmetro afeta linearmente o custo computacional. Consequentemente, os desenvolvedores podem adaptar a rede para diferentes dispositivos. Um smartphone topo de linha pode usar width multiplier 1.0. Um dispositivo mais simples, por outro lado, pode usar 0.25. Portanto, a MobileNet é extremamente flexível para diferentes cenários de implantação.

quando utilizar a mobilenet

Utilize a MobileNet quando o alvo for dispositivos com recursos limitados. Por exemplo, smartphones, tablets ou sistemas embarcados. Aplicações de realidade aumentada também se beneficiam da sua eficiência. Outro caso de uso é em drones e robôs autônomos pequenos. A MobileNet também é excelente para sistemas de visão em tempo real. Por exemplo, detecção de objetos em vídeos de vigilância. Além disso, você pode usá-la como extrator de características para transfer learning. Contudo, evite a MobileNet quando a maior precisão possível for necessária. Redes maiores como ResNet ou DenseNet oferecem melhor acurácia. Para servidores na nuvem sem restrições de recursos, prefira arquiteturas mais pesadas. Em resumo, escolha a MobileNet quando a eficiência e a baixa latência forem prioridades máximas.