Manual

do

Maker

.

com

Reconhecimento facial com Raspberry

Reconhecimento facial com Raspberry

Está acompanhando a série sobre inteligência artificial? Está perdendo um bom material, se não estiver. Nesse, veremos como fazer reconhecimento facial com Raspberry e inteligência artificial, baseado no mesmo projeto desse outro artigo.

A grande sacada é que o treinamento não é feito no Raspberry, apenas um model treinado em um computador potente é incluído ao projeto.

Preparar o sistema para reconhecimento facial com Raspberry

Primeiramente, o sistema deve ser o Raspian Jessie Light mais atual. Anteriores não funcionarão. Será que você vai ter que formatar o seu?

Configurações iniciais

Instale o sistema no cartão, faça o login normalmente e então configure o WiFi. Rode o configurador:

sudo su
raspi-config

Faça as configurações de sistema necessárias, habilite a câmera do Raspberry. Configure a memória da GPU para pelo menos 16. A minha está 64 (menu Advanced). Se não tiver o programa instalado, instale-o:

apt-get install raspi-config

Nesse outro artigo mostrei como colocar o sistema de arquivos em somente-leitura para proteger o sistema de arquivos e aumentar a vida útil do cartão. É altamente recomendada a leitura. Se já está utilizando dessa forma, antes de instalar qualquer coisa é necessário por o sistema de arquivos em read-write:

mount -o remount,rw /

Salve as configurações feitas com raspi-config e então faça a primeira reinicialização do sistema:

shutdown -r now

Instalação de pacotes

Agora é hora de instalar as dependências. Mais uma vez, coloque o sistema em modo de escrita se tiver executado o tutorial de proteção do cartão SD, então instale os pacotes:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential \
    cmake \
    gfortran \
    git \
    wget \
    curl \
    graphicsmagick \
    libgraphicsmagick1-dev \
    libatlas-dev \
    libavcodec-dev \
    libavformat-dev \
    libboost-all-dev \
    libgtk2.0-dev \
    libjpeg-dev \
    liblapack-dev \
    libswscale-dev \
    pkg-config \
    python3-dev \
    python3-numpy \
    python3-pip \
    zip
sudo apt-get clean

Se estiver utilizando uma câmera ( certamente quererá fazê-lo), instale uns extras necessários:

sudo apt-get install python3-picamera
sudo pip3 install --upgrade picamera[array]

Compilação nativa

Temos duas opções em relação à dlib. Uma, a compilação nativa e a outra, cross-compiling. Ah, tem também a opção de compilação nativa em ambiente virtualizado. Ou compilação em docker (que é paralelização de processos. Etc.

O primeiro exemplo é para compilação nativa, caso você ainda seja um usuário de Windows. Primeiro, habilite uma área de troca para auxiliar a memória RAM. Isso é temporário.

sudo nano /etc/dphys-swapfile

< change CONF_SWAPSIZE=100 to CONF_SWAPSIZE=1024 and save / exit nano >

sudo /etc/init.d/dphys-swapfile restart

Feito isso, reinicie. Instale a dlib versão 19.6:

mkdir -p dlib
git clone -b 'v19.6' --single-branch https://github.com/davisking/dlib.git dlib/
cd ./dlib
sudo python3 setup.py install --compiler-flags "-mfpu=neon"
#Ou se der erro:
sudo python3 setup.py install --compiler-flags "mfpu=neon"

Instale o face_recognition para fazer o reconhecimento facial com Raspberry:

sudo pip3 install face_recognition

Reverta a swap:

sudo nano /etc/dphys-swapfile

< change CONF_SWAPSIZE=1024 to CONF_SWAPSIZE=100 and save / exit nano >

sudo /etc/init.d/dphys-swapfile restart

Baixe os exemplos:

git clone --single-branch https://github.com/ageitgey/face_recognition.git
cd ./face_recognition/examples
python3 facerec_on_raspberry_pi.py

Se você quiser uma interface gráfica no seu Raspberry (recomendo que não utilize para não desperdiçar memória), faça o seguinte:

sudo apt-get install --no-install-recommends xserver-xorg xinit raspberrypi-ui-mods

Compilação cruzada

É um bocado trabalhoso, mas em compensação você não sofrerá aguardando que o pobre processador ARM termine a longa e demorada compilação. Se desejar utilizar seu computador como máquina de compilação para o Raspberry usando cross-compiling, o procedimento está descrito nesse artigo.

Compilação em plataforma virtualizada

Nesse outro artigo descrevo o processo para compilação nativa em ambiente virtualizado utilizando o QEmu para emular ARM. É uma boa opção também, desde que seu computador nativo tenha memória RAM para fornecer ao virtualizador.

Tentando na sorte

Se quiser, experimente fazer reconhecimento facial com Raspberry  com a dlib fornecida através do pip3:

pip3 install dlib

Eventualmente pode funcionar.

Documentação da API

A documentação da API pode ser encontrada nesse link. Os exemplos que você deve ter baixado seguindo esse tutorial lhe serão bastante úteis e a documentação cobrirá quaisquer dúvidas.

Farei alguns projetos bem interessantes com esses recursos, mas precisarei de outro Raspberry Pi 3 para isso. Verei com os parceiros do site assim que possível e teremos muita diversão pela frente. Afinal, qual o objetivo de apenas reconhecer, exceto impressionar os amigo, certo?

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.