Redes Neurais em Sistemas Embarcados: Aplicações com Snapdragon410 e Caffe2

Redes Neurais em Sistemas Embarcados

Neste artigo, apresentarei um framework de Deep Learning chamado Caffe2 que pode ser utilizado para construção de redes neurais. O objetivo é demonstrar a criação de modelos que podem ser importados em sistemas dedicados. Para tal, será demonstrado o uso de modelo de redes neurais embarcados na DragonBoard 410C.

Cabe ressaltar que atualmente o Caffe2 tem suporte para o Qualcomm Snapdragon NPE. No entanto, tal recurso está disponível para as plataformas Qualcomm® Snapdragon™845, 820, 835, 632, 625, 626, 650, 652, 653, 660, 630, 636, 450, 439, e 429. Considerando a popularidade da plataforma DragonBoard 410C, esse artigo apresenta os procedimentos necessários para embarcar o Caffe2 nessa placa.

DragonBoard 410

Apresentada em 2015 pela Arrow, a placa DragonBorad 410C foi desenvolvida para popularizar o uso do processador Snapdragon 410.

Arrow Development Tools DRAGONBOARD 410C Embedded System Development Boards and Kits

O principal componente da placa é o chip (integrated single-chip) que é composto pelos seguintes módulos: Quad-core ARM Cortex A53 (ARM v8-A), GPU Qualcomm Adreno 306, Wi-Fi 802.11 b/g/n 2.4GHz, Bluetooth 4.1, GPS, entre outros. Além disso, a placa possui memória RAM de 1GB LPDDR3 533MHz, e Memória Flash de 8GB eMMC 4.5 / SD 3.0 (UHS-I).

screenshot-from-2016-10-29-15-56-17

Para conhecer mais sobre a placa, acesse os tutoriais disponibilizados aqui no Embarcados e da Qualcomm.

Caffe2 Deep Learning Framework

O Caffe2 é uma estrutura simples e flexível para construção de redes neurais de aprendizagem profunda. Foi desenvolvido a partir do projeto Caffe, sendo projetado com propósito de tornar as aplicações modulares e com processamento rápido. Para tal, o Caffe2 tem suporte para APIs nativas de Python e C++. Para saber mais, acesse o site do Caffe2.

Modelos e Base de Dados

De modo geral, aplicações de aprendizado de máquina envolvem a utilização de uma base de dados (dataset) para treinamento de um modelo (models). Tais modelos tem como função generalizar a solução de um determinado problema a partir de instâncias do problema a ser resolvido. Por exemplo, considere um conjunto de imagens de flores, tendo acesso aos exemplos, torna-se possível criar um agente classificador capaz de classificar novas informações que não foram fornecidas no processo de aprendizagem.

classifier example

No repositório do Caffe2 foram disponibilizados uma série de modelos e base de dados. Com isso, torna-se possível reaproveitar modelos e adequá-los para aplicações específicas. Do ponto de vista da aplicação final, apenas dois arquivos são necessários para embarcar a solução: init_net.pb e predict_net.pb. Um contém a definição da estrutura do modelo e o outro a configuração dos parâmetros do modelo.

Isso significa que é possível criar e treinar modelos na máquina de desenvolvimento, e utilizar esses descritores para embarcar o modelo de rede neural.

Redes Neurais na DragonBoard 410

O procedimento de instalação do framework na máquina de desenvolvimento e na DragonBoard é um processo trabalhoso. Assim, indico os seguintes tutoriais para esclarecer os procedimentos executado em todas as etapas: Instalação do Caffe2 na DragonBoard e Criando um CNN para DragonBoard;

Reconhecimento de Objetos

Instalando o Caffe2 somente na placa pode-se utilizar os modelos pré-treinados. Para demonstrar a aplicação de reconhecimento de objetos será demonstrado o uso do Squeezenet, uma rede para reconhecimento de imagens com 1000 objetos classificados. Para mais informações consulte este tutorial. Já a lista de objetos é disponibilizada neste link.

Usando a API em Python o procedimento de reconhecimento pode ser dividido em três etapas:

Primeiro, é necessário carregar os arquivos init_net.pb e predict_net.pb ambiente de execução.

  • Em seguida, o agente classificador é configurado com os arquivos indicados.
  • Por fim, basta adicionar uma entrada no classificador para obter uma resposta. Nesse caso, a entrada é uma imagem que deve estar nos padrões que o modelo foi treinado:

Um dos objetos reconhecidos por essa rede é a flor Daisy. Como resultado, a rede apresentará o ID do objeto e o grau de confiança: 985 e 0.9790583 de confiança. Isto é, 97% de certeza. A descrição da manipulação da imagem e outros objetos são apresentados neste artigo.

Fonte: Código em Python para essa aplicação.

Link para Imagem original.

Reconhecimento de Dígitos

Outra aplicação é o reconhecimento de dígitos. O MNIST é uma base de dígitos escritos à mão disponível para treinamento de sistema de classificação. Neste artigo é demonstrado o procedimento para treinar um modelo de reconhecimento na máquina de desenvolvimento. A aplicação final é semelhante a demonstrada anteriormente. Os modelos são configurados pelos arquivos init_net e predict_net.

Vale conferir esta ferramenta para visualização de uma Rede Convolucional.

Reconhecimento Facial

Por fim, cabe destacar aplicações de reconhecimento facial. Neste artigo é demonstrado uma solução simples para realizar o reconhecimento facial utilizando diretamente características de contorno da face. Usando a dlib e OpenCV é possível detectar faces em uma imagem e extrair o contorno. Esses procedimento são ilustrados na imagem abaixo.

Caffe2

Essas informações podem ser armazenadas em uma base de dados para treinar um modelo de reconhecimento. Nesse caso, optou-se pela utilização de uma rede neural para demonstrar o uso do framework. A imagem abaixo demonstra a aplicação final: cada face detectada tem um rótulo associado e um grau de confiança.

Caffe2

Conclusão

Neste artigo foram apresentadas algumas aplicações que podem ser realizadas com o framework Caffe2. Além disso, apresentou-se o procedimento para carregar modelos utilizando a linguagem Python. Com isso, modelos podem ser treinados e posteriormente embarcados. Essas aplicações foram executadas na plataforma DragonBoard410c que utiliza a linha Snapdragon da Qualcomm. Para mais informações, acesse os links do Qualcomm IoT Reference Center da Facens e as referências indicadas.

Referências

Crédito para imagem em destaque:

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Redes Neurais em Sistemas Embarcados: Aplicações com Snapdragon410 e Caffe2
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries

Menu

WEBINAR
 
Debugging
em Linux embarcado

 

Data: 30/09 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link