Você está na página 1de 29

Análise de Performance de um Algoritmo de Reconhecimento

Facial por Visão Computacional Aplicado a Sistemas


Embarcados

Performance Analysis of a Facial Recognition Algorithm


by Computer Vision Applied to Embedded Systems
Samuel M. Böhm Antônio Carlos Sobieranski

2021, Abril

Resumo

A tarefa de reconhecimento facial para biometria é considerada um processo bastante


complexo computacionalmente, pois sofrem a influência de fatores externos tais como
variação de iluminação, ruídos na imagem, alterações de expressão facial, uso de
acessórios e pose. Apesar de apresentar uma complexidade considerável, é uma excelente
forma de autenticação biométrica e reconhecimento de indivíduos, de forma que se
torna uma ferramenta essencial para as áreas de segurança e monitoramento. Embora
complexo, nos últimos anos várias abordagens foram propostas e principalmente
com o advento das tecnologias de redes neurais convolucionais, vários frameworks
computacionais foram propostos na tentativa de solução do problema. No entanto, as
abordagens existentes tendem a requerer elevados níveis de exigência computacional,
sendo moderadamente explorados e verificados no contexto de sistemas embarcados,
que justamente surgem como alternativas ao custo monetário, energético, tamanho e
customização. Este trabalho apresenta como principal foco análise de desempenho de
dois sistemas embarcados distintos e consequentemente a verificação de viabilidade de
implementação e uso dos sistemas de reconhecimento facial em plataformas de hardware
embarcados. Para este propósito, este trabalho abordou a adoção de um framework
para reconhecimento facial e a sua comparação em dois modelos de hardwares distintos.
Os resultados experimentais obtidos demonstraram a viabilidade de execução do
framework para reconhecimento facial em tempo real (considerando somente a etapa
de classificação) em plataformas embarcadas, tendo como base as recentes estratégias
de Redes Neurais Convolucionais.

Palavras-chaves: Reconhecimento Facial, Sistemas Embarcados, Redes Neurais Con-


volucionais.

1
Ficha de identificação da obra elaborada pelo autor,
através do Programa de Geração Automática da Biblioteca Universitária da UFSC.

Böhm, Samuel Matias


Análise de Performance de um Algoritmo de
Reconhecimento Facial por Visão Computacional Aplicado a
Sistemas Embarcados. / Samuel Matias Böhm ; orientador,
Antônio Carlos Sobieranski, 2021.
28 p.

Trabalho de Conclusão de Curso (graduação) -


Universidade Federal de Santa Catarina, Campus Araranguá,
Graduação em Engenharia de Computação, Araranguá, 2021.

Inclui referências.

1. Engenharia de Computação. 2. Sistemas embarcados. 3.


Reconhecimento facial. 4. Redes neurais artificiais
concolutivas. I. Sobieranski, Antônio Carlos . II.
Universidade Federal de Santa Catarina. Graduação em
Engenharia de Computação. III. Título.
Análise de Performance de um Algoritmo de Reconhecimento
Facial por Visão Computacional Aplicado a Sistemas
Embarcados

Performance Analysis of a Facial Recognition Algorithm


by Computer Vision Applied to Embedded Systems
Samuel M. Böhm Antônio Carlos Sobieranski

2021, Abril

Abstract

Facial recognition for biometrics is considered a computationally complex task, since


it is subjected to external factors, such as illumination variation, image noise, facial
expression variation, use of accessories and pose. At the same time it presents a con-
siderable complexity, it is an excellent way for biometric authentication and individual
recognition, so much so that it becomes an essential tool for security and monitoring
purposes. While complex, in recent years many computational approaches have been
proposed and with the advent of convolutional neural networks, many frameworks
have been proposed in attempt to solve this problem. However, existing approaches
have a tendency of requiring high computational effort, causing them to be moder-
ately explored and verified in the context of embedded systems, which figures as an
alternative with lower monetary, energetic, size and customization costs. This paper
presents as its main focus a performance analysis of two distinct embedded systems
and consequently the feasibility verification for implementation of facial recognition
systems in embedded hardware platforms. For this purpose, this paper proposes the
introduction of a facial recognition framework and compares it in two distinct hardware
models. The experimental results prove the feasibility of using the proposed framework
for real-time facial recognition (considering just the classification step) in embedded
systems, based on recent convolutional neural network strategies.

Key-words: Facial Recognition, Embedded systems, Artificial Neural Networks, con-


volutional neural networks.

1 Introdução
Sistemas de identificação de pessoas em tempo real são importantes quando a
questão é controle, segurança e aquisição de dados. Tal identificação pode ser feita através
de diversos meios, desde a maneira mais usual e sem a autenticação evidente do usuário

3
(chaves de acesso, cartões magnéticos e senhas), à biometria, que de fato reconhece e
autentica a identidade do usuário (impressão digital, reconhecimento facial, por voz ou
íris) (ALEX; KUMAR; THARAYIL, 2012) (ADAMOVIć et al., 2020).
Um bom exemplo do uso de técnicas modernas de reconhecimento facial em
escala vem sendo amplamente adotado na China, onde as entidades governamentais se
utilizam da autenticação de pessoas por meio de reconhecimento facial em massa a fim
de calcular pontos de cidadania que garantam direitos e privilégios à população (LOPES,
2018) (PEREIRA, 2021). Com o auxílio do sistema, o governo presta serviços públicos,
monitorando as cidades, e as pessoas que nela vivem. Já é possível que o cidadão chinês
pague suas contas, saque dinheiro e acesse demais serviços públicos apenas com suas
informações faciais biométricas. Outro fator interessante do sistema de reconhecimento
facial mencionado é a implementação de uma lista de restrição de cidadãos procurados
(que infringiram alguma lei), ou então procurados pelos órgão de segurança e fiscalização,
que são facilmente reconhecidos e localizados pelo sistema, assim de forma oculta e não
invasiva (LOPES, 2018).
No cenário nacional, abordagens similares também podem ser verificadas. Na cidade
de Florianópolis, Brasil, recentemente um sistema biométrico de reconhecimento facial foi
implantado para o procedimento de embarque no Aeroporto Internacional de Florianópolis.
O sistema começou através de um projeto-piloto com passageiros voluntários da empresa
aérea LATAM. A ideia do governo brasileiro é implementar paulatinamente o sistema em
todos os principais aeroportos do país (DIÁRIO-CATARINENSE, 2020).
No entanto, tais sistemas eram designados a supercomputadores ou clusters dada
a sua elevada exigência computacional. Com o advento de novas arquiteturas de hardware
e com o incremento do poder computacional, sistemas de reconhecimento facial podem
ser embarcados em plataformas de hardware visando escalabilidade, infra-estrutura e
custo, tanto para a captura de imagens quanto para processamento dos dados (SAJJAD
et al., 2019). Sistemas embarcados são hardwares ou um conjunto hardwares, aliados a
um software específico ou sistema operacional, dedicado a uma função. São sistemas de
baixo consumo energético e tamanho reduzido, facilitando a miniaturização e customização
dos projetos, e atualmente são dotados de considerável capacidade computacional. Por,
em geral, serem dedicados a um processo mais especializado e específico, seus tempos de
respostas tendem a ser otimizados e eficientes de acordo com a aplicação utilizada.
Ao passo que os hardwares foram evoluindo em velocidade de processamento
de dados, os softwares também tiveram uma evolução significativa em termos de novos
métodos e estratégias na área de inteligência computacional, mais especificamente para o
reconhecimento de padrões e aprendizado de máquina (SHIH, 2010). Para o problema de
reconhecimento facial, por exemplo, várias técnicas foram estudadas nos últimos anos, e com
o advento das variantes convolutivas de redes neurais, novas abordagens computacionais
foram propostas (ROLE. . . , 2021). De fato, redes neurais convolucionais (CNN) vem se
apresentando como solucionadores gerais de problemas na área de reconhecimento de
padrões, sendo aplicadas para uma série de contextos tais como a medicina (YU et al.,
2021), bioinformática (HE et al., 2021), robótica (KULIK; SHTANKO, 2020), meteorologia
(KREUZER, 2020), dentre outros.
As CNN’s para o reconhecimento facial apresentam como principal característica a
redução do número de parâmetros ajustáveis, invariância à escalas, translações e transfor-
mações dos sinais de entrada, assim, realizando reconhecimento de forma bastante eficaz
e com robustez. Adicionalmente, as CNN’s possuem na sua essência extratores genéricos

4
de características, dispensando a etapa de design anteriormente requerida por métodos
clássicos (NANNI L. GHIDONI, 2017). No que tange sistemas de segurança por biometria,
que utilizam alguma estratégia de CNN podem ainda ser integrados em plataformas de-
dicadas de hardware embarcados, como uma alternativa ao problema de escalabilidade e
processamentos realizados localmente (ou pré-processamento antes de envio a um servidor
central). Na literatura, trabalhos utilizando sistemas embarcados aliados a CNN podem
ser verificados para propósito bastante específicos. Em geral, tais sistemas buscam um
reconhecimento de padrões específicos para cada finalidade, não somente utilizados para
reconhecimento facial. A exemplo, (MISHRA; SACHAN; RAJPAL, 2020) foi implementado
um sistema de reconhecimento de padrões, utilizando redes neurais convolucionais, em um
sistema embarcado, para encontrar possíveis doenças e/ou problemas em geral (fungos,
insetos, entre outros), em plantações de milho na Índia. Outro trabalho abordou CNN’s
em um sistema de reconhecimento de nódulos possivelmente cancerígenos especificamente
nos pulmões, onde é fornecido um exame de imagem do paciente e o sistema encontra
nódulos malignos, assim auxiliando em um tratamento/prevenção de linfomas pulmonares
(KRARUP et al., 2021). CNN e sistemas embarcados podem ser encontrados também den-
tro do meio acadêmico em FPGA, (ZHAO, 2021), utilizando redes neurais convolucionais,
proporcionando músicas adequadas para a otimização de aprendizado para estudantes nos
seus momentos de estudo. No entanto a implementação de modelos de reconhecimento
facial em conjunção com plataformas embarcadas de hardware são descritos de forma
superficial na literatura, conforme demonstrado na seção de trabalhos correlatos.
O presente trabalho é focado em sistemas de reconhecimento facial utilizando as
recentes estratégias de Redes Neurais Convolucionais, com enfoque em analisar a sua
viabilidade de uso em sistemas embarcados. Estudado amplamente nos últimos 5 anos,
reconhecimento facial utilizando redes convolucionais, na sua origem, é uma tecnologia
que quase se restringe a ambientes que envolvem alta segurança. Mediante o avanço de
novas tecnologias com maior poder de processamento e algoritmos mais eficientes, este
recurso se torna mais atrativo a indústria e suas possíveis aplicações, sendo também bem
utilizado em áreas afins. O presente trabalho tem como principal objetivo apresentar os
sistemas e algoritmos baseados em CNN empregados para autenticação por processos
de reconhecimento em dois sistemas embarcados com o intuito de fazer uma análise
comparativa de desempenho. As plataformas de hardware embarcados que foram utilizados
no ambiente experimental são: Raspberry Pi zero w, que apresenta características mais
modestas em comparação ao Raspberry Pi 4 B, outro hardware a ser analisado.
O restante deste trabalho está organizado da seguinte forma. Na Seção 2, será
apresentado o levantamento dos trabalhos correlatos, que apresentam similaridade com o
trabalho aqui explorado. Na Seção 3 será apresentada a fundamentação teórica, com uma
breve teorização de autenticação de usuário, reconhecimento facial e sistemas embarcados.
Ainda nesta Seção serão descritos os conceitos de redes neurais artificiais e métodos
de reconhecimento facial utilizando redes neurais artificiais como ferramenta. A Seção
4 abordará a metodologia do trabalho, apresentará algumas soluções, junto de uma
análise de desempenho dos dois sistemas embarcados distintos utilizando sistemas de
reconhecimento facial. Na Seção 5 serão apresentados os resultados experimentais obtidos
com o presente trabalho. Finalmente, na Seção 6, conclusões, discussões e trabalhos futuros
serão apresentados.

5
2 Trabalhos Correlatos
Nesse capítulo serão apresentados os trabalhos relacionados ao tema aqui abordado,
descrevendo as principais tecnologias de hardware utilizadas, assim como os algoritmos e
estratégias computacionais para o reconhecimento de padrões biométricos faciais.

• Em (NIKISINS et al., 2015) foi proposto um sistema de reconhecimento facial


embarcado utilizando como hardware um Raspberry Pi. O trabalho descreve a
utilização de um método clássico como classificador, sendo o algoritmo de Haar
feature baseado em cascade classifier e Local Binary Pattern (LBP). Neste trabalho,
foi utilizado como input para o treinamento uma base de dados FERRET, com
fotografias de rostos de 992 pessoas com duas imagens por pessoa, totalizando em
1984 imagens. A margem de acertos do sistema foi de 99,33% com um tempo total
consumido, para uma só foto, de 110ms. Em se tratando de um hardware limitado
a assertividade do sistema se demonstrou bem satisfatória. Este artigo serviu de
inspiração para uma tentativa de sistema de reconhecimento facial embarcado em
um Raspberry Pi zero, que é considerado um dos hardwares mais enxutos da linha
Raspberry Pi.

• Já em (ZÚNIGA-LÓPEZ et al., 2018), o trabalho em questão apresenta um sistema


de reconhecimento facial usando um Raspberry Pi modelo 2 B combinado com o
algoritmo com o Openface, embora o autor não dê detalhes de como foi realizada a
configuração da API no sistema embarcado. O intuito dos colaboradores do trabalho,
foi elaborar um sistema de reconhecimento facial móvel, embarcado, de baixo custo
e com uma segurança mais próxima de 100% possível. Desta forma foi utilizado
o algoritmo Openface, que apresenta na sua base, redes neurais convolucionais, e
também pelo fato de se tratar de um código aberto ao público. A base de dados
utilizadas pelos autores, foi uma base de dados própria, pois o hardware apresentava
uma câmera acoplada. O sistema se mostrou robusto e confiável de acordo com os
autores, com alta acurácia, embora seja um sistema de custo reduzido.

• (NADAFA et al., 2020) utilizou um Raspberry Pi 2B como hardware embarcado e


técnicas de opencv para desenvolver um sistema de segurança com reconhecimento
facial para detectar possíveis intrusos em residências. Para identificação de faces e
comparação de padrões, foi utilizado a técnica Haar cascade classifier do opencv
alcançando uma acurácia de aproximadamente 96%. O maior desafio relatado pelo
autor foi justamente o sistema embarcado, se tratando de um Raspberry Pi de
1GB de memória RAM, se temia que alguma interferência na precisão, tempo de
processamento e funcionamento de forma integral, acontecesse de maneira inesperada,
dificultando o uso ou então deixando o sistema ineficiente. Para isso, algumas soluções
foram criadas preventivamente. Para o problema de baixo potencial de armazenamento
de memoria ROM, foi utilizado o PythonAnywhere cloud service fazendo um upload
das fotos capturadas pelo sistema em um servidor na nuvem. O funcionamento do
sistema em questão se faz primeiramente detectando um ser humano, através da
técnica Yolo (You look once), desenvolvida para detecção de objetos, que é treinada
usando o conjunto de dados COCO para detecção humana. Após detectar um ser
humano, a imagem da face é separada para análise. Com uma imagem frontal da face
do possível intruso separada do resto da imagem, entra em ação o opencv fazendo
uma comparação com as faces de pessoas autorizadas salvas no banco de dados,
identificando a pessoa como intruso ou autorizada.

6
• Outro trabalho de destaque é a de (LV; SU; WANG, 2021). Neste trabalho foi proposto
uma análise de dois algoritmos de reconhecimento facial, para posteriormente serem
introduzido a um sistema embarcado. Primeiramente foi testado um algoritmo que
utiliza redes neurais convolucionais em cascata multi-tarefa (Multi-task Cascaded
Convolutional Network) otimizado (OMTCNN). Posteriormente foi adotado para
testes um algoritmo que também é baseado em redes CNN, porém menos complexo que
o primeiro chamado de lightweight face recognition CNN. Os sistemas embarcados
utilizado pelos autores foram o Neural Compute Stick da Intel, Jetson TX2 da
fabricante Nvidia e um Raspberry Pi. Os resultados demonstram que o OMTCNN
mostra um bom desempenho na determinação da identidade facial e sua precisão
pode chegar a 98,13% de acordo com o parâmetro LFW. Quando submetido aos
sistemas embarcados, as métricas para análise foram o tempo de processamento que
cada embarcado consumiu para gerar os resultados. A Figura 1 abaixo apresenta
os resultados de cada sistema embarcado trabalhando com o algoritmo OMTCNN.
Podemos notar que o Raspberry Pi tem uma performance muito abaixo dos outros
dois sistemas. Esta baixa na performance por ser explicada pelo fato de o NCS e
TX2 serem sistemas focados em inteligência artificial.

Figura 1 – Análise de desempenho dos sistemas embarcados NCS, TX2 e Raspberry Pi


executando o algoritmo Optmized Multi-task Cascaded Convolutional Network

Figura 2 – Tabela comparativa dos resultados obtidos pelos autores dos trabalhos correlatos
apresentados com foco nos parâmetros precisão dos sistemas e tempo consumido.

7
Analisando os resultados dos trabalhos correlatos mencionados nos itens acima,
os parâmetros utilizados para análise combinados se assemelham entre si, respeitando
as características de cada sistema. Percebe-se que para sistemas mais robustos tem-se
uma precisão de reconhecimento facial maior do que em sistemas mais leves. Já quando
o parâmetro é tempo de consumo computacional, sistemas menos complexos tem uma
resposta mais rápida. Isto pode ser notado na comparação dos trabalhos de (LV; SU;
WANG, 2021) e (NIKISINS et al., 2015). O primeiro apresenta uma rede complexa multi-
tarefa enquanto o outro utiliza de uma rede CNN mais simplificada. Independente do
sistema todos os trabalhos apresentam números satisfatórios de acurácia e tempo. No
entanto, os trabalhos verificados na literatura carecem de testes exaustivos em plataformas
tais como Raspberry e, principalmente, em Raspberry Pi Zero, plataformas estas de baixo
custo e amplamente disponíveis para o consumidor final como embarcados de propósito
geral.

3 Fundamentação Teórica
3.1 Autenticação de Usuário e Reconhecimento Facial.
Situações cotidianas para assegurar nossa identidade são muito frequentes, tais
como, acesso a contas bancárias, identificação de acesso a condomínios, empresas, embarques
a portos e aeroportos, são exemplos os quais é necessário se comprovar a autenticidade.
Chaves de acesso, uso de cartões magnéticos ou chips são meios popularmente conhecidos
que permitem o acesso do usuário a determinados ambientes/finalidades. Porém estes
métodos não comprovam a autenticidade da identidade destes usuários (LI, 2009). Uma
alternativa utilizada para este tipo de problema é a utilização de senhas, o que também
apresenta os mesmos problemas das soluções recém mencionadas, ou seja, não comprovam
a autenticidade do usuário. Para solucionar este tipo de problema podem ser utilizados
sistemas biométricos (RESTRITOS; SILVA; OSÓRIO, 2012). Por meio de características
biológicas é possível implementar um processo de identificação e autentificação de usuário,
como por exemplo, utilizando impressões digitais, realizando reconhecimento de retina
ou íris, analisando geometria da palma da mão, realizando reconhecimento por voz ou
reconhecimento de face.
O reconhecimento facial vem sendo estudado ativamente desde a década de 70.
De maneira geral é possível especificar os sistemas de reconhecimento facial da seguinte
maneira: Dado uma imagem de entrada com uma ou múltiplas faces, primeiramente o
sistema faz a detecção de faces, de forma que isola os rostos detectados do resto da imagem.
Cada rosto é pré processado e, em seguida, é obtida uma representação da imagem com
dimensões baixas. Tal representação é importante para fazer uma classificação eficiente
com o intuito de comparar com os dados inseridos no banco de dados do sistema.
Para os humanos reconhecer ou não uma face, é uma tarefa trivial. Porém, no
âmbito computacional, é um desafio pelo fato de que faces não são objetos rígidos e as
imagens podem ser adquiridas em panoramas diversos. As representações faciais devem ser
resilientes à imagem intrapessoal, por exemplo, a medida que a pessoa envelhece, esta não
pode deixar de ser identificada.
Atualmente as técnicas de reconhecimento facial mais utilizadas e de melhor
performance são as técnicas baseadas em redes neurais convolucionais. Os sistemas Facebook
DeepFace, Google FaceNet, são exemplos de sistemas deste tipo e que possuem alta precisão
para a tarefa de reconhecimento de faces.

8
3.2 Sistemas Embarcados
Sistemas embarcados são hardwares combinados a um software ou sistema opera-
cional, microprocessado, no qual o computador possui uma função dedicada, geralmente
operando dentro de um outro sistema (WILSON; FERREIRA, 2016). Diferente de computa-
dores de propósito geral, um sistema embarcado realiza um conjunto de tarefas predefinidas,
geralmente com requisitos específicos. Estes hardwares tem como características baixo
consumo de energia, tamanho reduzido, baixo custo por unidade, operação especializada,
resposta em curto espaço de tempo, operação em tempo real, confiabilidade e segurança.
Encontram-e em diversos tipos de sistemas, com o objetivo de controlar sistemas e equipa-
mentos. Devido ao seu tamanho compacto, baixo custo e aspectos de design simplificado,
os sistemas embarcados são muito populares e extremamente utilizados, tendo-se tornado
indispensáveis para a vida moderna. Dos modelos de hardwares embarcados de propósito
geral foram utilizados dois tipos de sistemas embarcados: Raspberry Pi Zero W e Raspberry
Pi 4 B.
A Raspberry Pi Zero W é uma placa de baixo custo com um tamanho reduzido (6,5
x 3cm). A placa conta com WiFi e Bluetooth integrados, eliminando assim, a necessidade
de usar adaptadores na porta USB. O seu processador é o Broadcom BCM2835 single-core
de 1GHz que, aliado à memória de 512MB, permite a criação de aplicações controlando a
GPIO de 40 pinos. Apresenta slot para cartão micro SD, conector de vídeo mini HDMI,
2 portas USB (1 para dados e outra para alimentação 5V) e roda diversas distribuições
Linux como o Raspbian e Ubuntu.

Figura 3 – Raspberry Pi Zero W (imagem da esquerda) e Raspberry Pi 4B (imagem da


direita), respectivamente.

O Raspberry Pi 4 possui um processador Broadcom de 64-bit, quad-core Cortex-


A72, com uma velocidade de 1.5GHz de clock, memoria RAM de 4GB, portas USB 3.0,
chip Ethernet Gigabit de banda dupla. O hardware é funcional em frequência de 2.4GHz e
5 GHz wireless. Este também apresenta compatibilidade PoE através do HAT PoE e ainda
duas portas micro HDMI. As dimensões do Raspberry Pi 4 são 85mm de comprimento,
por 56mm de largura e 17mm de altura.

9
3.3 Redes Neurais Artificiais e Convolutivas
No presente as tecnologias tanto analógicas quanto digitais, são de magnitude
muito inferiores quando comparadas ao potencial de um sistema nervoso completo de
qualquer animal. No entanto, o problema não é a máxima compreensão destes sistemas
mas sim, a melhor forma de incorporá-los.
Inspirados na natureza das estruturas neurais de organismos inteligentes, redes
neurais artificiais apresentam uma simulação computacional de um neurônio biológico. Para
entender a origem específica das RNA’s, é necessário compreender melhor como funciona o
sistema nervoso biológico. O sistema nervoso é formado por um conjunto extremamente
complexo de células, denominadas neurônios. Tais células se comunicam através de sinapses,
impulsos nervosos, que transmitem um sinal codificado através de um estímulo aplicado a
membrana do neurônio. Processos elétricos e químicos são encontrados nesses impulsos.
A partir do seu ponto de aplicação, é passado informações de uma célula para a outra
formando uma cadeia de informações dentro de uma rede de neurônios, caracterizando
uma rede neural natural ou biológica. Os eventos elétricos propagam o sinal dentro de um
neurônio, enquanto os eventos químicos transmitem o sinal de um neurônio à outro.
O primeiro neurônio artificial inspirado no neurônio biológico foi apresentado por
Warren McCullch e Walter Pitts na década de 40, possui apenas uma saída e as entradas
eram formadas por um vetor (RAUBER, 2005). As sinapses foram representadas por pesos
numéricos (pesos sinápticos), e a soma ponderada das entradas era submetida a uma função
de transferência, chamada de função de ativação. Assim, como nos neurônios biológicos,
as redes neurais artificiais simulam computacionalmente habilidades humanas tais como:
Aprendizado, generalização e associação, abstração (JUNIOR, 2011).
Um exemplo de neurônio artificial é demonstrado na Figura 4, onde os sinais de
entrada são representados pelas letras "x", combinadas com seu respectivo peso sináptico
representado nas letras "w". As entradas combinadas com seus pesos sinápticos são somadas
formam o que conhecemos como Net ou rede, que posteriormente através da função de
ativação, transfora a saída do neurônio em um limite de valores de ativação. A saída de
um neurônio se torna a entrada de outro.

Figura 4 – Modelo de um neurônio artificial por McCulloch e Pitts, detalhando entradas,


camadas intermediárias e saída do sistema.

As RNA’s são constituídas por dois elementos; arquitetura da rede e algoritmo de


treinamento (aprendizagem). O algoritmo de treinamento generaliza dados e memoriza

10
o conhecimento dentro de parâmetros adaptáveis da rede, os pesos. O construtor de um
sistema baseado em redes neurais artificiais têm dois graus de liberdade, a definição sobre
o tipo de rede para resolver o problema em questão e o algoritmo para treinar a rede e
adaptar os pesos sinápticos. Normalmente, o tipo de processamento de um único neurônio
é a combinação linear das entradas com os pesos, seguida pela passagem da combinação
linear por uma função de ativação. A natureza do problema a ser resolvido geralmente
define as restrições em relação aos tipos de redes e algoritmos de aprendizagem possíveis
(RAUBER, 2005).
Redes neurais são muito utilizadas para reconhecer padrões, o que faz desses
sistemas uma ferramenta poderosa para o reconhecimento facial. Com o auxílio de sistemas
utilizando redes neurais, o problema de reconhecimento facial pode ser resolvido com uma
solução não linear. Para tal, o uso de RNA’s como ferramenta para reconhecimento facial,
não adquire uma imagem direta como entrada, esta imagem deve ser tratada e processada
em dados por técnicas de redução de dimensionalidade anteriormente, para então ocorrer o
treinamento da rede em si, do contrário, a tornaria muito complexa e difícil de treinar. A
Figura 5 ilustra através de diagramas a lógica de um sistema utilizando redes neurais para
detecção e reconhecimento de faces (ABATE et al., 2007).

Figura 5 – Lógica de reconhecimento facial utilizando Redes Neurais Artificiais, exemplifi-


cando as etapas de entrada de dados (imagem), processamento, treinamento da
rede e classificação. Como saída a face detectada.

Cotrell e Fleming abordaram este tema em meados da década de 90 utilizando


duas redes perceptron back-propagation, onde a primeira rede tratava os dados de entrada,
enquanto a segunda realizava a classificação. Outras redes com o passar dos anos foram
implementadas, por exemplo, a rede neural SOM de Lawrence et al. (2002), redes multi-
layer perceptron realizadas por Rizk e Taha (2002). No universo do reconhecimento facial
utilizando redes neurais mais atuais do que as citadas anteriormente, destacam-se as redes

11
neurais convolucionais (CNN). Estas redes se caracterizam por possuírem uma arquitetura
Deep Learning que por sua vez extrai características de cada conjunto através de uma
subdivisão de dados. As redes convolucionais levam este nome por causa do princípio de
convolução que mede a soma do produto de duas funções ao longo da região subentendida
pela superposição delas em função do deslocamento existente entre elas. (LATHI; GREEN,
2005)
As redes neurais convolucionais reduzem o número de parâmetros ajustáveis pela
rede, agilizando e melhorando o processo de treinamento. Uma característica interessante
das CNN’s é a invariância à escalas, translações e transformações dos sinais de entrada do
sistema, realizando reconhecimento de padrões de forma automática e com mais robustez.
O corpo das redes neurais convolucionais é constituído por três camadas, sendo
a camada de convolução que tem a função de extrair atributos dos volumes de entrada,
camada de Pooling que é responsável pela redução da dimensão do resultante da camada
anterior e, por último, mas não menos importantes, as camada Full conected que são
encarregadas da propagação do sinal por meio de multiplicações peer to peer e uso de uma
função de ativação. A saída da rede retorna uma probabilidade de a imagem de entrada
do sistema, pertencer a alguma das classes para qual a rede foi treinada (ARAÚJO et al.,
2019).
Como mencionado anteriormente, redes neurais convolucionais apresentam em
sua estrutura algoritmos de aprendizagem profunda Deep Learning, de forma que estes
algoritmos oriundos da inteligência artificial, mais especificamente das redes neurais, usam
camadas camadas de neurônios artificiais para processar dados. Os dados fluem através
destas camadas de forma que a saída de uma camada é o conjunto de dados de entrada da
próxima camada e assim sucessivamente, sendo a primeira camada chamada de camada
de entrada (Input Layer). As camadas intermediárias são denominadas camadas ocultas
(Hidden Layer) e a última camada é a camada de saída (Output Layer). Cada camada se
caracteriza por ser um algoritmo relativamente simples e uniforme contendo uma função de
ativação. Na Figura 6 é exemplificada a principal diferença entre uma RNA convencional e
o modelo baseado em múltiplas camadas.

Figura 6 – Comparação entre RNA simples e RNA com aprendizagem profunda Deep
Learning, ilustrado que uma das características diferencias destas redes se dá
no número de camadas intermediarias.

As primeiras redes neurais convolutivas foram usadas por Kunihiko Fukushima.

12
Fukushima concebeu redes neurais com múltiplas camadas de agrupamento e convoluções.
(KELLEHER, 2019).

Figura 7 – Modelo descritivo de uma rede neural convolutiva onde em a) a camada convo-
lucional é responsável por extrair as chamadas das imagens de entrada, essa
extração se dá através de filtros convolucionais. Estes filtros percorrem os
dados de entrada em largura, altura e profundidade realizando a operação
de convolução sobre os dados. Os filtros vão sendo ajustados de tal modo a
disparar quando a entrada contiver uma determinada característica comum aos
lotes de entrada. Em b) a camada de pooling atua basicamente reduzindo o
tamanho dos dados da entrada, assim, diminuindo a quantidade de dados para
a camada seguinte, melhorando a regularização da rede, baixando o custo de
memória e processamento. Em c) a camada de flattering basicamente opera
uma transformação na matriz da imagem, alterando seu formato para uma
lista. Em d) Na camada Dense ou camada de rede totalmente conectada (fully
connected), é onde sua entrada é a saída da camada anterior e sua saída são N
neurônios, com N sendo a quantidade de classes do seu modelo para finalizar a
classificação.

3.4 Frameworks para Reconhecimento Facial


3.4.1 OpenCV
OpenCV, como o próprio nome já diz (Open Source Computer Vision), é uma
biblioteca de programação para computação visual com código aberto. Inicialmente foi
desenvolvida pela Intel para fomentar o desenvolvimento para programação em computação
visual. A biblioteca está dividida em cinco grupos de funções: Processamento de imagens;
Análise estrutural; Análise de movimento e rastreamento de objetos; Reconhecimento de
padrões e Calibração de câmera e reconstrução 3D. A biblioteca pode ser utilizada em
diversas linguagens de programação, de C++ a Python, Ruby, Java entre outras, apre-
sentando aproximadamente quinhentas diversas funções.(MARENGONI; STRINGHINI,
2009)

3.4.2 Biblioteca Dlib


Dlib é uma biblioteca moderna, desenvolvida em C++, que posteriormente foi
criada uma API (Application Programming Interface) para a linguagem Python. Apre-
senta algoritmos de aprendizado de máquina (Machine Learning) tendo sua principal

13
característica a capacidade de identificar LandMark, sendo utilizada em diversos meios,
desde indústria, meios acadêmicos, Smartphones e embarcados em geral. Inicialmente a
detecção de faces utilizando LandMarks, na biblioteca Dlib, localizava 68 pontos específicos
encontrados nas faces, conforme demonstrado na Figura 8 [King (2018)].

Figura 8 – Identificação de faces utilizando LandMarks identificando 68 pontos utilizando


a biblioteca Dlib.

Pensando em melhoria de desempenho, diminuição de tamanho e de velocidade


de processamento, Davis King, criou uma nova versão da biblioteca (KING, 2009). Esta
nova versão captura apenas 5 pontos, sendo estes 2 pontos em cada olho e um no nariz,
exemplificado na Figura 9. A desvantagem encontrada foi principalmente a diminuição
dos pontos de identificação, dificultando uma identificação de características da face de
maneira mais detalhada.
Comparando as duas versões, a com extração de 68 pontos e a com extração de 5
pontos, conforme ilustrado na Figura 9, tem-se uma mais detalhada, logo mais precisa,
e outra de execução menos complexa, logo mais rápida, o que dependendo da aplicação
será mais ou menos eficiente. A de 68 pontos tem 6 pontos em cada olho, desta maneira
possibilita a identificação se o mesmo está ou não aberto, o que não acontece de maneira
eficiente na versão mais veloz, a qual conta com apenas 2 pontos em cada olho (KING,
2009).

3.4.3 DeepFace
Desenvolvido pelo Facebook, com o objetivo de melhorar o reconhecimento facial
em sua plataforma de rede social, esta tecnologia dispõe de um dos maiores bancos de
dados de faces e estrutura de pesquisa e desenvolvimento que só as maiores empresas do
mundo detém (TAIGMAN et al., 2014). A arquitetura de rede é baseada na suposição
de que, uma vez que o alinhamento da face esteja completo, a localização de cada região
facial é fixada no nível do pixel, sem necessidade de aplicar várias camadas de convoluções
como é feito em muitas outras redes.
Em linhas gerais, este sistema se caracteriza por meio de uma arquitetura de rede
neural Deep Learning e um efetivo sistema de alinhamento facial baseado em modelagem
3D (CHERNODUB, ). DeepFace mostra desempenho de nível humano, a equipe de pesquisa
do Facebook afirmou que o método atinge uma precisão de 97,35% ± 0,25% no conjunto de
dadosLabeled Faces in the Wild (LFW) em que os seres humanos apresentam uma precisão

14
Figura 9 – Comparação das versões da biblioteca Dlib. Primeira imagem mostrando os 68
pontos distribuídos na face, enquanto a segunda ilustra os 5 pontos da versão
simplificada.

média de 97,53%. Isso significa que o DeepFace as vezes é mais bem-sucedido do que os
próprios seres humanos, explica Yaniv Taigman, um dos criadores do software (MIT, 2014).
A Figura 10 representa as etapas do software após a detecção da face que é feita
em (a). Em (b) é separado o rosto do resto da imagem para em (c) ocorrer o alinhamento
facial. Após o alinhamento é construída uma imagem tridimensional da face, (d) e (f)
ilustram esta etapa. Após a modelagem 3D a face é redesenhada em uma imagem frontal
(f) e (g), facilitando o reconhecimento do usuário em comparação com outras imagens
do mesmo dentro do banco de dados do Facebook. A modelagem 3D facilita também o
reconhecimento facial para imagens cujo as faces se apresentam de lado ou de perfil.

Figura 10 – Construção de uma nova vista 3D a partir de uma imagem pelo sistema
DeepFace. Em (a) é feita a detecção da face. Em (b) é separado o rosto do
resto da imagem para em (c) ocorrer o alinhamento facial. Após o alinhamento
é construída uma imagem tridimensional da face, (d) e (f) ilustram esta etapa.
Após a modelagem 3D a face é redesenhada em uma imagem frontal (f) e (g)

15
3.4.4 FaceNet
Da maneira semelhante ao sistema DeepFace, o sistema FaceNet foi desenvolvido
pela Google inc (SCHROFF; KALENICHENKO; PHILBIN, 2015b). O sistema FaceNet,
aprende diretamente através de um mapeamento de imagens de rostos para um espaço
Euclidiano (espaço vetorial real de dimensão finita munido de um produto interno) com-
pacto, onde as distâncias correspondem diretamente a uma medida de similaridade de
faces, ou seja, as imagens de duas faces similares são menores que a distância entre elas.
Uma vez que este espaço for produzido, tarefas como reconhecimento de face, verificação e
clustering (técnicas de prospecção de dados) que visa fazer agrupamentos automáticos de
dados segundo o seu grau de semelhança) podem ser facilmente implementadas usando
técnicas padrão com os encaixes FaceNet como vetores de recursos. Este método usa uma
rede profunda convolucional treinada para otimizar diretamente a incorporação em si.
O FaceNet usa de uma função chamada função de perda tripla (Triplet Loss Function).
Esta função aceita a codificação facial de três imagens, uma âncora, uma positiva e uma
negativa, tal que a distância ao quadrado entre todas as linhas de faces, que são dados
retirados após o tratamento da imagem da face em dados. Independente das condições das
imagens, é pequena, enquanto a distância ao quadrado entre um par de imagens faciais de
diferentes identidades é grande. Desta maneira faz com que é assumido uma identidade a
uma pessoa, para a função. (SCHROFF; KALENICHENKO; PHILBIN, 2015a), conforme
pode ser verificado através da Figura 11.

Figura 11 – Ilustração de funcionamento da função Triple Loss. Uma entrada de linha de


base (âncora) é comparada a uma entrada positiva e uma entrada negativa. A
distância da entrada âncora à entrada positiva é minimizada e a distância da
entrada âncora à entrada negativa é maximizada.

3.4.5 OpenFace
Baseado nos sistemas de domínio privado mencionados anteriormente (DeepFace e
FaceNet), o OpenFace é um sistema de domínio público (Open source) (AMOS et al., 2016).
Foi criado por desenvolvedores da Universidade Carnegie Mellon, com o intuito de diminuir
a distância, em questão de desempenho, em relação as ferramentas de reconhecimento facial
de domínio privado. Por se tratar de domínio público, a base de dados utilizada para o
treinamento do sistema é muito menor em relação aos sistemas do Facebook e da Google, mas
de qualquer forma sua precisão é considerada alta suficiente a ser comparada aos sistemas
nos quais o OpenFace se baseou. O sistema faz uso do Triplet Loss Function do FaceNet
para o treino e extração de características das imagens. Seu treinamento utiliza a biblioteca

16
Torch (BALTRUŠAITIS; ROBINSON; MORENCY, 2016) para cálculos científicos de alto
custo computacional e um dataset de 500 mil imagens rotuladas.
A precisão do software é significativamente alta, sobrepujando os acertos de todas
as outras tentativas de se criar uma ferramenta open source de reconhecimento facial, ou
pelo menos aquelas que seus desenvolvedores têm ciência de que existem (SANTOSO;
KUSUMA, 2018). Mesmo assim, ainda há o que se melhorar na questão tanto dos acertos
quanto da velocidade de resposta do programa. Por se tratar de um sistema de domínio
público em constante estudo com colaboradores de todos os lugares do mundo, o OpenFace
é uma ferramenta excelente para problemas de reconhecimento facial (AMOS et al., 2016).
A Figura 12 apresenta uma comparação de algoritmos de reconhecimento facial
em relação ao potencial humano. Sistemas de reconhecimento que obtém em seu interior
aprendizado profundo, exemplificados no gráfico, OpenFace e DeepFace, tem praticamente
a mesma acurácia ou até maior do que a percepção humana.

Figura 12 – Gráfico de comparação de precisão de sistemas de Reconhecimento Facial


em relação ao potencial humano. Os sistemas OpenFace e DeepFace, tem
praticamente a mesma acurácia ou até maior do que a percepção humana.

As etapas de funcionamento do OpenFace, ilustrado na Figura 13, são semelhantes


das etapas do DeepFace. Dada uma imagem de entrada, a face é detectada e separada do
resto da imagem para definição dos pontos. Após ter os pontos coletados, entra as redes
neurais Deep Learning tendo como saída detecção de similaridade e classificação.

3.4.6 Python Face Recognition


Face Recognition é uma API (Application Programming Interface) de reconheci-
mento facial, baseada no estado da arte da biblioteca Dlib. Desenvolvida por Adam Geitgey,
utilizando a linguagem de programação Python e disponibilizada gratuitamente no GitHub
do próprio autor. A API apresenta algorítimos de aprendizado profundo (deep learning),
de forma que o modelo pode obter uma acurácia de 99,38% de acordo com o benchmark
LFW (GEITGEY, 2019).
Exemplo de reconhecimento facial utilizando a API Face Recognition é mostrado
na Figura 14. Podemos observar que na imagem são detectadas duas faces e separadas do

17
Figura 13 – Ilustração do funcionamento do sistema OpenFace, detalhando as fases de
entrada, detecção de face, separar a face do resto da imagem, treinamento da
rede, representação e classificação.

resto da imagem. A figura em si não mostra o resultado, mas o sistema identifica as duas
faces mostrando de quem elas pertencem com facilidade.

Figura 14 – Ilustração do funcionamento Python Face Recognition, detectando faces e


isolando do resto da imagem para reconhecimento.

4 Metodologia
A metodologia utilizada no presente trabalho é descrita conforme o fluxograma
ilustrado na Figura 15, de modo a apresentar as etapas do funcionamento do software
proposto. O sistema pode ser subdividido em dois blocos distintos: (i) o primeiro contendo a
fase de treinamento da rede após a separação das imagens dos rostos a serem reconhecidos,
para (ii) posteriormente iniciar a fase de classificação das imagens introduzidas no dataset.

4.1 Ambiente Experimental


4.1.1 Dataset
Para configuração do ambiente experimental foi necessário a aquisição de um
Dataset e para este trabalho o Dataset escolhido foi disponibilizado pelos membros do

18
Figura 15 – Fluxograma do funcionamento do sistema.

projeto MIGMA. Outras imagens de pessoas públicas foram adicionadas ao Dataset,


algumas destas contendo mais de um rosto na imagem. O Dataset possui 100 imagens
com um ou até 6 rostos, mas para o experimento ser fidedigno em ambos os Hardwares
o Dataset foi alterado para um valor absoluto de 50 imagens. As imagens utilizadas no
sistema são majoritariamente imagens de alta resolução, mais precisamente 70% do Dataset
são de imagens de tamanho de 1,5MB e resolução de 1920 x 1080.

19
4.1.2 Preparação dos Sistemas de Hardware
Com o intuito de manter uma análise criteriosa focada na performance dos hardwares
em relação ao algoritmo de reconhecimento facial desejado, os dois sistemas embarcados
tiveram o mesmo processo de Setup.
Ambos os Raspberrys tiveram acoplados em si um cartão de memória ROM de
32GB, classe 10, da fabricante ScanDisk. Primeiro passo foi escolher o sistema operacional
do aparelho, sendo instalado o sistema operacional Respibian, pelo fato de ser desenvolvido
pelo próprio fabricante e por apresentar melhor sincronia com tudo o que o Hardware pode
oferecer. O sistema operacional é facilmente encontrado no site da Raspberry, foi realizado
o download da última release e gravado no cartão de memória antes de adicioná-lo ao
Hardware.

4.1.3 Preparação dos Sistemas de Software


Foi proposto no trabalho que o algoritmo de reconhecimento facial seria proveniente
da API Python Face Recognition. Para instalar tal API, algumas bibliotecas anteriores a
esta devem ser instaladas no hardware. Para o funcionamento integral do algoritmo em
questão, a instalação das bibliotecas Opencv e Dlib devem ser instaladas no hardware,
começando pelo Opencv. A versão 3.0 do Python deve ser instalada também na máquina.
Após instalação da biblioteca Opencv pode ser instalado a biblioteca Dlib para então
instalar a API Face Recognition. Todas as orientações de setup foram obtidas no Github
dos desenvolvedores.

4.1.4 Critérios para Integração do Ambiente Experimental


Para a realização de testes de maneira congruente, os dois devices foram submetidos
ao mesmo software e ao mesmo mecanismo de treinamento, portanto como ambos os
hardwares funcionam através do mesmo sistema operacional, o mesmo cartão de memória
SD foi utilizado nos dois testes. O treinamento do modelo foi realizado através de rostos
considerados conhecidos dividido em pastas separadas e identificadas com os nomes de
cada individuo a ser identificado. Após a fase de treinamento, se inicia a fase de detecção e
reconhecimento facial das imagens contidas no Dataset. Cada imagem é verificada uma
vez, os rostos são detectados e reconhecidos de acordo com as imagens das pessoas que o
software treinou para serem reconhecidas. Caso nenhum dos rostos identificados condizem
com os das pessoas conhecidas pelo software, estas são denominadas como Unknown, do
contrário o nome da pessoa identificada é explicitado.

4.2 Implementação do Algoritmo de Reconhecimento Facial


4.2.1 Arquitetura dos Sistemas de Reconhecimento
Dentro da arquitetura do sistema é utilizado na primeira fase a biblioteca Dlib com
a função de detectar faces nas imagens através de traços conhecidos como (landmark’s),
ou seja, traços que denominam um rosto de uma pessoa como: estrutura do queixo, boca,
olhos, nariz e sobrancelhas. O pre-treinamento do detector de traços já introduzido na
biblioteca Dlib, é usado para estimar a localização de 68 coordenadas (x,y) que mapeiam a
estrutura da face, exemplificado na Figura 8.
Após a fase de detecção facial na imagem, cada face tem suas características
extraídas e através dos (landmark’s) são rotacionadas de uma maneira em que ela fique em

20
uma posição mais próxima possível de uma posição frontal. No passo seguinte, entra em
ação a API Face Recognition o sistema utiliza 128 medidas da face da pessoa como medidas
biométricas. Para isto é chamado uma função própria do Face Recognition denominada
face encoder que é pré-treinada em uma CNN utilizando 29 camadas convolutivas.
No treinamento do modelo, mais precisamente no que tange a rede neural convoluci-
onal, a imagem de entrada é lida em forma de uma matriz de dados, os quais são reduzidos
na camada convolutiva mediante a operações de convolução, reduzindo os ruídos visuais.
Aplicado os filtros na camada de convolução, uma função de ativação, chamada de Pooling,
é executada com o objetivo de retirar a linearidade dos resultados obtidos anteriormente,
trazendo uma maior capacidade interpretativa a rede neural, ou seja, ela consegue fazer
pequenas alterações nos fatores de decisão da rede gerando melhores resultados. Após as
etapas de convolução e Pooling, a matriz de dados é reduzida a um vetor de dados. As
etapas de convolução e associação fazem parte da seção de extração de características e
ambas podem ocorrer duas ou mais vezes antes de passar para a seção de classificação. Após
a extração de características, na fase denominada como Dense ou “Totalmente conectada”,
se encontra a rede neural perceptron, responsável pela aquisição de todos os dados que
foram processados até o momento e passá-los por uma série de camadas que levarão até o
resultado final.
Tendo a estrutura montada com detecção facial orientada pela biblioteca D-lib
e a rede pre-treinada para reconhecimento de padrões orientada pela biblioteca Face
Recognition o algoritmo do sistema em si, foi implementado utilizando como base de
dados para comparação, uma pasta contendo sub-pastas com imagens de pessoas a serem
reconhecidas pelo sistema. Cada sub-pasta designada com os nomes dos indivíduos, contém
imagens de rostos, esses rostos tem suas características extraídas e treinadas pela rede,
primeiro através da função face_recognition.face_locations e posteriormente pela função
face_recognition.face_encodings e salvo em um arquivo chamado model_save_path.

Figura 16 – Código-fonte para treinamento dos modelos. Este trecho do código é da função
de treinamento detectando a face do indivíduo e extraindo suas características.
Obs: A imagem foi modificada para melhor formatação da imagem.

Após a rede treinada e os dados de saída do sistema salvos no modelo, o algoritmo


abre a base de dados que contém imagens de pessoas primordialmente desconhecidas pelo
sistema. Cada imagem é trabalhada uma à uma mediante a uma estrutura de repetição. O
programa detecta todas as faces desta imagem, separa cada face e por meio da função predict,

21
como é exemplificado na Figura 17, são comparados os dados das imagens capturadas
com os dados do modelo treinado. Feito isto, o algoritmo chama a função show_predict,
exemplificado na Figura 18, que abre a imagem na tela identificando a área da face e o
nome da pessoa reconhecida, caso esta seja reconhecida como uma das pessoas treinadas
pelo sistema, caso contrário é denominada como uma face não conhecida Unknown.

Figura 17 – Código-fonte de utilização do modelo. Este trecho do código usa do modelo


treinado para encontrar as faces e as melhores combinações. Tal trecho foi
retirado da função de predição.

Figura 18 – Código-fonte para Drawing e marcação nas imagens e detecção. Neste trecho
do código, após a face ser detectada e reconhecida (ou não), desenha um
quadrado identificando a área da face detectada e o nome do indivíduo se
reconhecido pelo sistema ou Unknown caso não seja reconhecido pelo sistema.

4.2.2 Treinamento
A primeira fase do experimento é a fase de treinamento, onde um Dataset, contendo
imagens de pessoas a serem reconhecidas, são separadas em pastas com os respectivos
nomes. No sistema em questão sete pastas contendo imagens das faces de sete pessoas
diferentes foram utilizadas.
O número de imagens de cada pessoa conhecida variou de 1 à 4 imagens. Uma
estrutura de repetição é feita para cada diretório de imagens, dentro desta estrutura contém
outro Loop para o algoritmo de treinamento passar por cada imagem. As imagens tem suas

22
Figura 19 – Código-fonte da tomada de decisão do algoritmo. Saída do algoritmo mostrando
o andamento e os resultados tanto no console quanto na imagem de saída para
cada imagem no dataset.

Figura 20 – Estrutura lógica da etapa de treinamento, no que tange a etapa de extração de


características de cada indivíduo treinado pelo sistema. Train_dir é o diretório
que contém sub-diretórios para cada pessoa com seu nome como nome da
pasta.

características extraídas, para então ser criado e treinado um modelo de classificação. Feito
isto, o modelo de classificação treinado é salvo em um arquivo chamado model_save_path.

4.2.3 Classificação
Após a fase de treinamento, todas as imagens que estão na pasta de Dataset são
analisadas uma por uma. Primeiramente o software detecta os rostos para então definir
se a pessoa é conhecida e com quem esta pessoa se parece para então classificá-la como
conhecida e de quem pertence este rosto, do contrário é considerada pessoa desconhecida.

23
"Unknown".

Figura 21 – Imagem do autor tendo o rosto e detectado e reconhecido pelo sistema.

5 Resultados Experimentais
5.1 Validação
Para os testes terem uma validação fidedigna, o software foi executado com o mesmo
cartão de memória SD. Esta configuração é válida, pois ambos os Hardwares operam com
o mesmo sistema operacional Raspbian. Se tratando de uma análise de performance de
sistemas embarcados, outro fator de possível influência foram as fontes de alimentação.
No presente trabalho os aparelhos tiveram um cuidado para que as fontes utilizadas para
a alimentação dos sistemas fossem de características ideais, orientadas pelo fabricante.
Ambos os sistemas foram executados de maneira local, não havendo necessidade de uma
conexão com dados externos.
Os parâmetros de comparação dos sistemas para validação dos testes, foram tempo
e acurácia. Dois tipos de testes foram realizados. O primeiro com um número de imagens
sequenciais, abrindo imagem à imagem, assim medindo o tempo de cada uma, e ao
final o tempo geral de execução do sistema e o percentual de acurácia de acertos para
reconhecimento facial. O segundo teste proposto, foi o tempo que cada sistema necessitava
para analisar uma só imagem, com tamanhos e resoluções variadas. As resoluções do
segundo teste foram de 1920x1080, 1080x720, 960x640, 720x480 e 320x240. Diferente do
primeiro teste, este segundo, em todas as imagens era apresentado apenas uma pessoa,
ou seja, apenas um rosto a ser detectado e reconhecido. A fase de treinamento teve seus
tempos resgatados também para análise de performance.

24
5.2 Resultados
Após uma série de testes realizados em cada Hardware, foram obtido tempos bem
distintos para cada sistema embarcado. O Raspberry Pi 4B teve um tempo de treinamento
de 59s, enquanto o tempo de treinamento da rede no Raspberry Zero W foi de 13 minutos
e 56 segundos. Após o treinamento a execução da classificação das imagens do Dataset
foi feita imagem por imagem, abrindo uma imagem por vez. Os tempos de execução da
classificação das 50 imagens no Raspberry PI 4B foi de "00:08:34", já no Raspberry Zero
foi de "2:21:32". Embora os tempos de execução total do software em ambos os hardwares
apresentam uma discrepância, a precisão do sistema para detecção e reconhecimento não
teve alteração, ambos os aparelhos tiverem a mesma precisão. 100% dos rostos foram
detectados, 26 faces foram reconhecidas, sendo 21 acertos, 5 erros e 1 rosto de uma pessoa
conhecida não foi reconhecido pelo sistema, designada como "Unknown". Os testes com
imagens de diferentes resoluções foram realizados e o tempo de verificação de cada imagem
está na tabela da Figura 22. A Figura 23 compara os tempos de treinamento e execução
integral do sistema.
Um detalhe importante a ser registrado, os testes iniciais foram feitos com um
Dataset de 100 imagens, mantendo majoritariamente imagens de alta resolução. Desta
forma o Raspberry Pi 4B teve a execução do sistema finalizada em 16 minutos e 36
segundos, mantendo a mesma acurácia. O mesmo teste foi realizado no Raspberry Pi Zero
W e o mesmo não conseguiu completar o teste. A tentativa mais longeva foi de 82 imagens
em mais de quatro horas de teste, no momento em que o Hardware travou e teve que
ser reiniciado. Outras tentativas de alcançar o teste integral com o Dataset contendo 100
imagens foram realizadas, mas todas sem sucesso.

Figura 22 – Dados dos resultados fotos em diferentes resoluções em tempo.

Figura 23 – Dados dos resultados do sistema em tempo.

6 Conclusões e Trabalhos Futuros


Este trabalho teve como objetivo comparar as performances de dois sistemas
embarcados dotados de um software de reconhecimento facial que utiliza redes neurais

25
artificias convolucionais como ferramenta. A ferramenta utilizada foi a API Face Recognition
proveniente da linguagem de programação Python. As bibliotecas foram testadas sem
alterações na suas fontes. Os experimentos foram bem sucedidos após a execução de uma
bateria de testes, dentre estes, alguns testes falhos principalmente os relacionados ao
Raspberry Zero W.
Analisando os dados resultantes dos testes experimentais, ficou explícito uma
discrepância de desempenho e performance considerável entre os sistemas. Nos testes que
envolveu tempos de execução, foi obtido uma grande diferença no quesito performance de
um Hardware para outro. Já era esperado que o sistema embarcado mais simples teria
uma performance menor comparado ao mais robusto, mas tal discrepância de performance
entre ambos foi além do que se era previsto. Se previa uma performance melhor do Device
Raspberry Pi Zero W, mesmo com o ambiente experimental focado para a execução dos
testes e com alimentação adequada, o mesmo teve dificuldades para processar todos os
testes.
Em relação a acurácia em detectar e reconhecer faces em imagens, ambos os
sistemas apresentaram a mesma precisão, o que, de certa forma, já era esperado. Testes
com rostos muito semelhantes foram realizados e para duas pessoas diferentes, o sistema
foi relativamente falho, porém, em outros algoritmos de reconhecimento, por exemplo, o
sistema utilizado pelo Facebook e pela Google apresentou o mesmo erro de identificação.
Estes testes foram realizados diretamente nas plataformas Facebook e Google fotos, sendo
assim uma falha não crítica.
Como trabalhos futuros, uma comparação utilizando uma câmera acoplada ao
barramento do sistema embarcado, para a realização do reconhecimento facial em tempo
real relevaria resultados interessante. Lembrando que para o mesmo algoritmo utilizado
neste trabalho, a performance em relação ao treinamento da rede iria se manter. Outro
trabalho que poderia ser realizado seria a aquisição de imagens para treinamento do modelo
em tempo real, para então analisar a performance dos sistemas através dos tempos de
classificação e acurácia.

26
Referências

ABATE, A. F. et al. 2d and 3d face recognition: A survey. Pattern recognition letters,


Elsevier, v. 28, n. 14, p. 1885–1906, 2007.

ADAMOVIć, S. et al. An efficient novel approach for iris recognition based on stylometric
features and machine learning techniques. Future Generation Computer Systems, v. 107, p.
144–157, 2020. ISSN 0167-739X.

ALEX, N. S.; KUMAR, E. K.; THARAYIL, J. J. Pose invariant hand biometry using
multiple database. Procedia Engineering, v. 38, p. 3579–3586, 2012. ISSN 1877-7058.
INTERNATIONAL CONFERENCE ON MODELLING OPTIMIZATION AND
COMPUTING.

AMOS, B. et al. Openface: A general-purpose face recognition library with mobile


applications. CMU School of Computer Science, v. 6, n. 2, 2016.

ARAÚJO, F. H. et al. Deep learning for cell image segmentation and ranking.
Computerized Medical Imaging and Graphics, Elsevier, v. 72, p. 13–21, 2019.

BALTRUŠAITIS, T.; ROBINSON, P.; MORENCY, L.-P. Openface: an open source facial
behavior analysis toolkit. In: IEEE. 2016 IEEE Winter Conference on Applications of
Computer Vision (WACV). [S.l.], 2016. p. 1–10.

CHERNODUB, A. Face recognition: from eigenfaces to deepface.

DIÁRIO-CATARINENSE, J. Depois de Florianópolis, governo quer reconhecimento facial


em todos aeroportos do país. 2020.

GEITGEY, A. Face recognition documentation. Release 1.2, v. 3, p. 3–37, 2019.

HE, X. et al. Characterizing rna pseudouridylation by convolutional neural networks.


Genomics, Proteomics and Bioinformatics, 2021. ISSN 1672-0229. Disponível em:
<https://www.sciencedirect.com/science/article/pii/S1672022921000279>.

JUNIOR, L. F. M. C. Reconhecimento facial utilizando redes neurais. 2011.

KELLEHER, J. D. Deep learning. [S.l.]: MIT press, 2019.

KING, D. Dlib.net. 2018. Disponível em: <http://dlib.net/>.

KING, D. E. Dlib-ml: A machine learning toolkit. The Journal of Machine Learning


Research, JMLR. org, v. 10, p. 1755–1758, 2009.

KRARUP, M. M. K. et al. Artificial intelligence for the characterization of pulmonary


nodules, lung tumors and mediastinal nodes on pet/ct. Seminars in Nuclear Medicine,
v. 51, n. 2, p. 143–156, 2021. ISSN 0001-2998. Artificial Intelligence in Nuclear Medicine.

KREUZER, D. Short-term temperature forecasts using a convolutional neural network


— an application to different weather stations in germany. Machine Learning with
Applications, v. 2, p. 100007, 2020. ISSN 2666-8270.

27
KULIK, S.; SHTANKO, A. Using convolutional neural networks for recognition of objects
varied in appearance in computer vision for intellectual robots. Procedia Computer Science,
v. 169, p. 164–167, 2020. ISSN 1877-0509. Postproceedings of the 10th Annual International
Conference on Biologically Inspired Cognitive Architectures, BICA 2019 (Tenth Annual
Meeting of the BICA Society), held August 15-19, 2019 in Seattle, Washington, USA.
Disponível em: <https://www.sciencedirect.com/science/article/pii/S1877050920302520>.

LATHI, B. P.; GREEN, R. A. Linear systems and signals. [S.l.]: Oxford University Press
New York, 2005. v. 2.

LI, S. Z. Encyclopedia of Biometrics: I-Z. [S.l.]: Springer Science & Business Media, 2009.
v. 2.

LOPES, J. F. M. Governo orientado por dados. 2018.

LV, X.; SU, M.; WANG, Z. Application of face recognition method under deep learning
algorithm in embedded systems. Microprocessors and Microsystems, p. 104034, 2021. ISSN
0141-9331.

MARENGONI, M.; STRINGHINI, S. Tutorial: Introdução à visão computacional usando


opencv. Revista de Informática Teórica e Aplicada, v. 16, n. 1, p. 125–160, 2009.

MISHRA, S.; SACHAN, R.; RAJPAL, D. Deep convolutional neural network based
detection system for real-time corn plant disease recognition. Procedia Computer Science,
Elsevier, v. 167, p. 2003–2010, 2020.

MIT, M. I. of T. Facebook creates software that matches faces almost as well as you do.
2014.

NADAFA, R. A. et al. Home security against human intrusion using raspberry pi. Procedia
Computer Science, v. 167, p. 1811–1820, 2020. ISSN 1877-0509. International Conference
on Computational Intelligence and Data Science.

NANNI L. GHIDONI, S. B. Handcrafted vs. non-handcrafted features for computer vision


classification. 2017.

NIKISINS, O. et al. Face recognition system on raspberry pi. 2015.

PEREIRA, D. F. M. O uso de câmeras de reconhecimento facial em contexto de pós


democracia–uma ferramenta contra o inimigo no direito penal? 2021.

RAUBER, T. W. Redes neurais artificiais. Universidade Federal do Espírito Santo, p. 29,


2005.

RESTRITOS; SILVA, L. C. de Paula e; OSÓRIO, F. S. Sistema autÔnomo e inteligente


de reconhecimento facial para autorizaÇÃo de entrada de pessoal em ambientes. In: . [S.l.:
s.n.], 2012.

ROLE of convolutional neural networks for any real time image classification, recognition
and analysis. Materials Today: Proceedings, 2021. ISSN 2214-7853.

SAJJAD, M. et al. Raspberry pi assisted facial expression recognition framework for smart
security in law-enforcement services. Information Sciences, v. 479, p. 416–431, 2019. ISSN
0020-0255.

28
SANTOSO, K.; KUSUMA, G. P. Face recognition using modified openface. Procedia
Computer Science, v. 135, p. 510–517, 2018. ISSN 1877-0509. The 3rd International
Conference on Computer Science and Computational Intelligence (ICCSCI 2018)
: Empowering Smart Technology in Digital Era for a Better Life. Disponível em:
<https://www.sciencedirect.com/science/article/pii/S1877050918314935>.

SCHROFF, F.; KALENICHENKO, D.; PHILBIN, J. Facenet. 2015.

SCHROFF, F.; KALENICHENKO, D.; PHILBIN, J. Facenet: A unified embedding for


face recognition and clustering. In: Proceedings of the IEEE conference on computer vision
and pattern recognition. [S.l.: s.n.], 2015. p. 815–823.

SHIH, F. Y. Image processing and pattern recognition: fundamentals and techniques. [S.l.]:
John Wiley & Sons, 2010.

TAIGMAN, Y. et al. Deepface: Closing the gap to human-level performance in face


verification. In: Proceedings of the IEEE conference on computer vision and pattern
recognition. [S.l.: s.n.], 2014. p. 1701–1708.

WILSON, E.; FERREIRA, T. Implementação de um sistema de reconhecimento de faces


utilizando raspberry pi. In: . [S.l.: s.n.], 2016.

YU, H. et al. Convolutional neural networks for medical image analysis: State-of-the-art,
comparisons, improvement and perspectives. Neurocomputing, 2021. ISSN 0925-2312.

ZHAO, L. Light music online system based on fpga and convolutional neural network.
Microprocessors and Microsystems, v. 80, p. 103556, 2021. ISSN 0141-9331. Disponível em:
<https://www.sciencedirect.com/science/article/pii/S0141933120307067>.

ZÚNIGA-LÓPEZ, A. et al. Reconocimiento de rostros por medio de openface en una


raspberry pi. Research in Computing Science, v. 147, p. 77–88, 2018.

29

Você também pode gostar