Desenvolvendo CNNs que economizam memória para dispositivos de baixo custo
Este artigo fala sobre como criar CNNs que funcionam em dispositivos com pouca memória.
Jaewook Lee, Yoel Park, Seulki Lee
― 8 min ler
Índice
Nos últimos anos, muitos aplicativos de visão computacional começaram a rodar em dispositivos de baixo custo, como smartphones e câmeras pequenas. Essa mudança tornou essencial criar modelos que precisem de menos memória, mas que ainda funcionem bem. Uma abordagem eficaz é usar um tipo de rede conhecida como rede neural convolucional (CNN).
As CNNs são projetadas para analisar dados visuais e são comumente usadas em tarefas como classificação de imagens e detecção de objetos. No entanto, as CNNs tradicionais podem consumir muita memória, o que se torna um problema ao tentar implementá-las em dispositivos com recursos limitados. Este artigo explica como desenvolver uma CNN que consome pouca memória e que pode funcionar em dispositivos com memória muito baixa, especificamente abaixo de 256 KB.
Contexto sobre CNNs
As Redes Neurais Convolucionais são ferramentas poderosas no campo da inteligência artificial, especialmente para tarefas visuais. Elas funcionam processando imagens de uma forma que simula como o cérebro humano trabalha. Uma CNN típica usa uma série de camadas para aprender características das imagens, começando com padrões simples e avançando para formas e objetos mais complexos.
O MobileNet tem sido amplamente utilizado em muitas aplicações devido ao seu design de rede eficiente. Ele usa o que chamamos de bloco de estrangulamento, que ajuda a manter o número de recursos baixo. Apesar disso, a exigência de memória típica para o MobileNet é em torno de 5,6 MB ao lidar com grandes imagens, como as do conjunto de dados ImageNet. Isso ainda é muito alto para muitos dispositivos de baixo custo, que geralmente têm apenas algumas centenas de KB de memória disponível.
A Necessidade de Modelos Eficientes em Memória
À medida que mais dispositivos incorporam câmeras e outras tecnologias visuais, há uma demanda urgente para realizar análises avançadas de imagens diretamente nesses dispositivos. Para atender a essa demanda, métodos precisam ser desenvolvidos para reduzir significativamente a memória exigida pelas CNNs.
Uma estratégia eficaz envolve três princípios de design:
- Segmentação de Entrada: Esse método divide grandes imagens em pedaços menores ou patches, reduzindo a memória necessária para processar a imagem inteira.
- Túnel de Patches: Essa abordagem permite que cada patch de imagem seja processado separadamente em seu próprio caminho leve pela rede.
- Reordenação de Estrangulamento: Essa técnica muda a ordem em que as operações são realizadas no bloco de estrangulamento, mantendo o uso de memória constante, independentemente do tamanho da saída.
Usando esses três princípios, podemos construir uma CNN que usa apenas 63 KB de memória para tarefas de classificação de imagens, enquanto ainda atinge uma precisão competitiva.
Segmentação de Entrada
O primeiro passo para otimizar a memória é segmentar as imagens de entrada. Em vez de alimentar uma imagem grande inteira na CNN, a imagem é dividida em patches menores. Por exemplo, uma imagem pode ser dividida em quatro patches sobrepostos. Isso reduz a quantidade de dados que a CNN precisa processar de uma vez, o que diminui a necessidade de memória.
Para garantir que características importantes da imagem não sejam perdidas devido a essa divisão, patches sobrepostos são criados. Isso permite que a rede retenha informações críticas das áreas centrais da imagem, onde os objetos provavelmente estão situados.
Túnel de Patches
Após segmentar a imagem, cada patch é processado através de seu próprio caminho na rede, que chamamos de túnel de patch. Em vez de usar uma rede grande para analisar a imagem inteira, redes menores separadas processam cada patch independentemente. Cada patch tem várias camadas convolucionais leves, garantindo que o uso de memória fique dentro dos limites para dispositivos de baixo custo.
Esse método permite que a rede aprenda características específicas para cada patch sem consumir muita memória. Finalmente, as características individuais aprendidas de cada patch são combinadas no final para fazer uma previsão final sobre a imagem inteira.
Reordenação de Estrangulamento
A memória utilizada em um bloco de estrangulamento de uma CNN pode aumentar significativamente com base em como as operações são executadas. Normalmente, todos os canais de saída são calculados de uma vez, exigindo grandes quantidades de memória para armazenar os resultados intermediários.
A reordenação de estrangulamento muda esse processo ao executar um canal de saída de cada vez, em vez de todos de uma vez. Isso significa que a memória exigida permanece constante durante o cálculo, independentemente de quantos canais de saída são produzidos. A técnica mantém alto desempenho enquanto mantém o uso de memória baixo.
Implementação e Resultados
A CNN eficiente em memória proposta foi implementada em um dispositivo STM32H7 de baixo custo. Foram realizados testes em várias tarefas visuais, como classificação de imagens com o conjunto de dados ImageNet e detecção de objetos usando os conjuntos de dados PASCAL-VOC e MS-COCO.
Os resultados mostraram que a CNN pode classificar imagens do ImageNet usando apenas 63 KB de memória, alcançando uma precisão top-1 de 61,58%. Em comparação, o MobileNet usa 5,6 MB de memória, e outra rede eficiente (MCUNet) requer 196 KB. Isso demonstra que a CNN eficiente em memória pode usar os recursos de forma muito mais eficaz, enquanto ainda desempenha adequadamente.
Para detecção de objetos, a CNN conseguiu operar com apenas 65 KB de memória enquanto alcançou uma precisão média de 50,7%. Esse desempenho é competitivo com soluções existentes que usam significativamente mais memória.
Contribuições da Pesquisa
Esta pesquisa introduziu uma CNN altamente eficiente em memória que pode ser implementada em dispositivos de baixo custo, como os do setor de Internet das Coisas (IoT). As seguintes contribuições foram feitas:
- Desenvolvimento de uma CNN que opera sob restrições extremas de memória de 63 KB para tarefas de classificação de imagens.
- Proposta de três princípios de design-segmentação de entrada, túnel de patch e reordenação de estrangulamento-que ajudam a gerenciar o uso de memória de forma eficaz.
- Implementação bem-sucedida da rede em um sistema embarcado real, validando a abordagem.
Trabalhos Relacionados
Vários métodos foram desenvolvidos para tornar as redes neurais mais eficientes. Por exemplo, a quantização reduz a precisão usada em cálculos, o que pode ajudar a diminuir as necessidades de memória e computação. No entanto, a quantização muitas vezes leva a uma queda de desempenho.
Outro método, conhecido como poda, remove pesos não importantes da rede, aumentando a eficiência. No entanto, isso pode alterar a estrutura da rede e levar a comportamentos inesperados.
A Busca de Arquitetura Neural (NAS) é usada para encontrar designs de rede ideais, impondo restrições específicas ao uso de memória. No entanto, esse método costuma exigir muitos recursos e tempo para alcançar resultados viáveis.
Em contraste com esses métodos, os três princípios introduzidos nesta pesquisa oferecem uma maneira mais simples e eficaz de construir CNNs eficientes em memória sem impactar significativamente o desempenho.
Aplicações e Direções Futuras
A CNN eficiente em memória desenvolvida usando os princípios propostos pode ter muitas aplicações práticas. À medida que a necessidade de dispositivos capazes de análise de imagens em tempo real continua a crescer, essa abordagem pode ser aplicada em várias áreas, incluindo vigilância, dispositivos inteligentes para casa e gadgets pessoais.
Explorações futuras poderiam envolver testar esses princípios em diferentes tarefas, como segmentação de imagens ou super-resolução. A escalabilidade do modelo também deve ser avaliada para imagens maiores e conjuntos de dados mais complexos.
Além disso, ajustar o número de patches e suas regiões sobrepostas pode levar a um aprendizado de características melhor enquanto mantém o uso de memória baixo. Essas explorações podem ajudar a melhorar o desempenho do modelo e ampliar sua aplicabilidade.
Conclusão
O desenvolvimento de uma CNN eficiente em memória é crucial para permitir tarefas de visão avançadas em dispositivos de baixo custo. Ao empregar estratégias como segmentação de entrada, túnel de patch e reordenação de estrangulamento, é possível projetar CNNs que se encaixem em restrições de memória apertadas enquanto ainda alcançam um desempenho satisfatório. Esta pesquisa estabelece as bases para futuros avanços em visão computacional, abrindo oportunidades para aplicações inovadoras na tecnologia do dia a dia.
Título: Designing Extremely Memory-Efficient CNNs for On-device Vision Tasks
Resumo: In this paper, we introduce a memory-efficient CNN (convolutional neural network), which enables resource-constrained low-end embedded and IoT devices to perform on-device vision tasks, such as image classification and object detection, using extremely low memory, i.e., only 63 KB on ImageNet classification. Based on the bottleneck block of MobileNet, we propose three design principles that significantly curtail the peak memory usage of a CNN so that it can fit the limited KB memory of the low-end device. First, 'input segmentation' divides an input image into a set of patches, including the central patch overlapped with the others, reducing the size (and memory requirement) of a large input image. Second, 'patch tunneling' builds independent tunnel-like paths consisting of multiple bottleneck blocks per patch, penetrating through the entire model from an input patch to the last layer of the network, maintaining lightweight memory usage throughout the whole network. Lastly, 'bottleneck reordering' rearranges the execution order of convolution operations inside the bottleneck block such that the memory usage remains constant regardless of the size of the convolution output channels. The experiment result shows that the proposed network classifies ImageNet with extremely low memory (i.e., 63 KB) while achieving competitive top-1 accuracy (i.e., 61.58\%). To the best of our knowledge, the memory usage of the proposed network is far smaller than state-of-the-art memory-efficient networks, i.e., up to 89x and 3.1x smaller than MobileNet (i.e., 5.6 MB) and MCUNet (i.e., 196 KB), respectively.
Autores: Jaewook Lee, Yoel Park, Seulki Lee
Última atualização: 2024-08-07 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2408.03663
Fonte PDF: https://arxiv.org/pdf/2408.03663
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.