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

Neste artigo será apresentado o Caffe2, framework de Deep Learning, e demonstrado o uso de modelo de redes neurais embarcados na placa DragonBoard 410C.
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.

flower

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.

numbers2

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:

Fascinado por computação, especialmente na interface entre hardware e software, me engajei na área de sistemas embarcados. Atuo com desenvolvimento de sistemas embarcados e sou docente da Faculdade de Engenharia de Sorocaba.

Para mais informações: https://about.me/fdelunogarcia

Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments

WEBINAR

Imagens de Ultrassom: Princípios e Aplicações

DATA: 26/10 ÀS 19:30 H