MobileNet

programador

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.

GoogLeNet (Inception)

programador

A GoogLeNet venceu o desafio ImageNet 2014 com uma arquitetura inovadora. Diferentemente de redes profundas como a VGG, ela foca na largura. Primeiramente, a GoogLeNet introduziu o módulo Inception como bloco fundamental. Este módulo aplica múltiplos filtros de diferentes tamanhos em paralelo. Por exemplo, convulsões 1×1, 3×3 e 5×5 ocorrem simultaneamente. Além disso, um pooling 3×3 também atua no mesmo estágio. Os resultados de todos os ramos se concatenam em uma única saída. Consequentemente, a rede captura características em diferentes escalas. Portanto, a GoogLeNet demonstra maior eficiência em parâmetros do que a VGG.

módulo inception e redução de dimensionalidade

O módulo Inception inclui um truque inteligente de redução de dimensionalidade. Primeiramente, camadas convolucionais 1×1 precedem as convoluções 3×3 e 5×5. Estas camadas 1×1 reduzem o número de canais de entrada drasticamente. Por exemplo, elas diminuem de 256 canais para apenas 64 canais. Este processo reduz significativamente o custo computacional. Além disso, a camada 1×1 adiciona não-linearidade à rede. A combinação de múltiplos ramos se concatena no final do módulo. Diferentes versões do Inception evoluíram ao longo do tempo. O Inception-v3, por exemplo, fatorou as convoluções 5×5 em duas convoluções 3×3. Isto tornou a rede ainda mais eficiente.

classificadores auxiliares e regularização

A GoogLeNet utiliza classificadores auxiliares durante o treinamento. Estes classificadores se conectam a camadas intermediárias da rede. Primeiramente, eles ajudam a combater o problema do gradiente vanishing. Redes muito profundas sofrem com gradientes que desaparecem nas camadas iniciais. Os classificadores auxiliares fornecem sinais de erro adicionais nestas camadas. Além disso, eles atuam como um mecanismo de regularização. Eles incentivam as camadas intermediárias a aprender características discriminativas. Durante o teste, descartamos estes classificadores auxiliares. Apenas o classificador final da saída atua na predição. Portanto, os auxiliares melhoram o treinamento sem afetar a inferência.

quando utilizar a googlenet

Utilize a GoogLeNet quando precisar de alta acurácia com eficiência computacional. Ela se mostra ideal para dispositivos com memória limitada. Por exemplo, sistemas embarcados e aplicações móveis. A GoogLeNet também representa uma excelente escolha para transfer learning. Você pode remover as camadas finais e treinar novamente para uma nova tarefa. Outra aplicação ocorre quando os objetos apresentam escalas muito variadas. O módulo Inception captura características em diferentes resoluções simultaneamente. Contudo, a arquitetura apresenta maior complexidade de implementação do que a AlexNet. Para projetos simples ou iniciantes, comece com arquiteturas mais básicas. Em resumo, escolha a GoogLeNet quando o equilíbrio entre acurácia, tamanho do modelo e velocidade se tornar crítico.

LinkedIn
Share
Instagram