Galindo (2019) apresenta o desenvolvimento de um método de automação de controle de acesso utilizando algoritmos de machine learning, através de redes neurais convolucionais, em linguagem Python junto com a biblioteca “face_recognition” que oferece reconhecimento facial. Na rede neural utilizada para o reconhecimento facial, foi usado um limiar de 0,6 para que o reconhecimento seja feito com precisão, eliminando falsos positivos e descartando o mínimo de falsos negativos. Vale destacar que a autora desenvolveu toda a parte de programação em um computador com sistema operacional Linux, e em seguida implementou o software em um raspeberry pi 3.
Moriggi (2018) apresenta um sistema de controle de acesso por reconhecimento facial e controle de ambientes. Os procedimentos para o desenvolvimento do software foram divididos em 2 etapas: detectar faces através de um modelo em cascata conhecido como técnica de Viola Jones. E extrair um conjunto de dados contidos nas faces através da câmera RGB do Kinect, treiná-los e classificá-los de forma que seja gerada uma saída de um vetor de características, que quando comparado à outras faces é obtido um valor de confiabilidade, podendo definir se a face pertence ou não à pessoa de interesse. As técnicas utilizadas pelo autor para o desenvolvimento do software aparentam ser de uma maior complexidade. O projeto também apresenta uma parte web de controle de ambientes, onde é possível o usuário visualizar dados de temperatura, umidade e acesso.
Arquitetura da Proposta
(GALINDO,2019)
Reconhecimento facial em tempo real
(MORIGGI,2018)
A Central de Controle de Acesso por Reconhecimento Facial é um projeto desenvolvido com o objetivo principal de criar um sistema de segurança que utilize tecnologia de reconhecimento facial para controlar o acesso a determinados locais de forma eficiente e precisa.
Cadastro de Usuários:
O sistema permite o registro de usuários autorizados, que serão armazenados em um banco de dados seguro. A etapa de registro de usuários é realizada por meio de uma página web acessível dentro da intranet, à qual o Raspberry Pi está conectado. Essa página web oferece um formulário de cadastro onde os usuários autorizados podem inserir seu nome, juntamente com o upload de uma foto facial para registro.
A página web de registro é desenvolvida utilizando tecnologias web, como HTML, CSS e PHP, proporcionando uma interface intuitiva e amigável aos usuários. Ao acessar a página, eles são apresentados com campos para preencher seu nome e selecionar um arquivo de imagem em seus dispositivos e enviá-lo para o banco de dados por meio da página web. Essa foto será utilizada posteriormente para comparação durante o processo de verificação de identidade.
Captura e Verificação Facial:
O sistema é capaz de capturar imagens faciais de indivíduos que desejam acessar um determinado local controlado. Essas imagens são então comparadas com as fotos faciais registradas para verificar a identidade do usuário. A captura da imagem facial para verificação é realizada em tempo real por meio de uma webcam conectada à porta USB do Raspberry Pi. Ao conectar a webcam ao Raspberry Pi, é estabelecida uma conexão que permite a transmissão dos dados de vídeo da webcam para o dispositivo.
O software implementado no Raspberry Pi é responsável por acessar a webcam conectada e capturar as imagens faciais dos indivíduos que desejam ter acesso ao local controlado. Esse processo é desencadeado quando um usuário se aproxima da câmera de acesso que identifica automaticamente se existe ou não um rosto na imagem que esta sendo capturada.
A webcam, por sua vez, captura uma sequência de quadros ou frames em tempo real, convertendo-os em dados de imagem digital. Esses dados são então processados pelo software para extrair a imagem facial relevante. Uma vez que a imagem facial é capturada, ela é armazenada temporariamente na memória do hardware para posteriormente ser comparada com as imagens faciais registradas no banco de dados do sistema.
Banco de Dados:
O sistema mantém um banco de dados que contém imagens faciais registradas, nomes e caracteristicas dos usuários cadastrados, que são utilizadas para comparação durante o processo de verificação. O banco de dados é atualizado quando novos usuários são cadastrados. O banco de dados utilizado foi o PhpMyAdmin que é uma interface web que facilita a administração e gerenciamento de bancos de dados MySQL.
A conexão com o banco de dados é estabelecida de duas formas distintas: uma entre a página web de registro e o banco de dados por meio de scripts em PHP, e outra entre o software de reconhecimento facial e o banco de dados utilizando a linguagem de programação Python.
Na interação entre a página web de registro e o banco de dados, são utilizados scripts em PHP para processar os dados inseridos pelos usuários e realizar as operações de inserção e atualização no banco de dados PhpMyAdmin. Esses scripts em PHP recebem os dados fornecidos pelo usuário, como nome e foto, e realizam as consultas e manipulações necessárias no banco de dados para registrar o novo usuário.
Por outro lado, o software de reconhecimento facial desenvolvido em Python estabelece uma conexão com o banco de dados PhpMyAdmin utilizando a biblioteca apropriada para interagir com o MySQL. Esse software é responsável por realizar a comparação das imagens faciais capturadas em tempo real com as imagens armazenadas no banco de dados para verificar a identidade do usuário.
Ao receber uma imagem facial capturada pela webcam, o software em Python realiza a extração das características faciais relevantes e, em seguida, estabelece a conexão com o banco de dados PhpMyAdmin. Utilizando consultas em SQL, o software busca as características relacionadas ao usuário, que são necessárias para a comparação, que determina se o usuário é autorizado ou não a ter acesso ao local controlado.
Algoritmos de Reconhecimento Facial:
O sistema utiliza algoritmos de reconhecimento facial para comparar as características faciais capturadas durante o processo de verificação com as imagens faciais armazenadas no banco de dados. Esses algoritmos foram desenvolvidos em Python, fazendo uso da biblioteca face recognition. Essa biblioteca é amplamente reconhecida por suas capacidades avançadas de reconhecimento facial e é amplamente utilizada em projetos relacionados.
Ao receber as imagens faciais capturadas pela câmera conectada ao Raspberry Pi, o algoritmo utiliza técnicas de aprendizado de máquina para extrair e comparar características faciais. A biblioteca face recognition possui um conjunto de modelos treinados com base em redes neurais convolucionais, que são capazes de mapear características faciais específicas para representações numéricas chamadas "embeddings".
Esses embeddings representam uma codificação única para cada pessoa registrada no banco de dados. Durante o processo de reconhecimento facial, o algoritmo calcula os embeddings para as imagens capturadas no momento e os compara com os embeddings armazenados previamente no banco de dados de usuários.
A comparação é realizada utilizando métricas de distância, como a distância euclidiana, para medir a similaridade entre os embeddings. Caso a distância entre os embeddings esteja abaixo de um determinado limite de tolerância definido, o sistema identifica o usuário como uma correspondência positiva e concede o acesso à área ou recurso solicitado. Por outro lado, se a distância exceder o limite estabelecido, o sistema considera a correspondência como negativa e nega o acesso.
Hardware:
O hardware escolhido para ser utilizado no projeto foi o Raspberry Pi, por já ter sido utilizado em projetos semelhantes e devido a suas características e vantagens significativas. Sua forma compacta e baixo consumo de energia tornam possível integrá-lo facilmente em dispositivos menores, sem comprometer o desempenho.
Apesar de não ser tão poderoso quanto um computador convencional, o Raspberry Pi possui capacidade de processamento adequada para executar tarefas de reconhecimento facial, especialmente em projetos menores. Ele é suportado por diversas bibliotecas e frameworks populares, como o OpenCV e a biblioteca face recognition em Python, simplificando a integração do software. A flexibilidade e personalização do Raspberry Pi também são pontos fortes. É possível conectar periféricos, como câmeras e sensores, permitindo uma configuração personalizada para o sistema de controle de acesso.
Essas características fazem do Raspberry Pi a escolha ideal para executar o software de reconhecimento facial do projeto, garantindo eficiência, personalização e viabilidade física.
Diagram de Blocos
Fonte: Youtube
A Central de Controle de Acesso por Reconhecimento Facial foi desenvolvida utilizando as seguintes tecnologias:
- Linguagem de Programação: Python, PHP
-Microcontrolador: Raspberry Pi
- Biblioteca de Visão Computacional: OpenCV
- Biblioteca de Reconhecimento Facial: Face Recognition
- Banco de Dados: MySQL
- Câmeras de Captura: Dispositivos compatíveis com USB