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.