• Nenhum resultado encontrado

Sistema de Controlo de Acessos a Zonas Restritas

No documento Miguel Ângelo Oliveira Alves Neto (páginas 124-132)

Implementação da Solução

7.6 Sistema de Controlo de Acessos a Zonas Restritas

O sistema de controlo de acessos tem como função permitir ou recusar o acesso a uma zona onde só determinadas pessoas têm acesso. A Figura 7.6 representa o princípio de funcionamento deste sistema.

Figura 7.30: Princípio de funcionamento do sistema de controlo de acessos a zonas restritas. Este sistema é constituído por um controlador, uma câmara e um circuito elétrico de atuação, que permite atuar uma fechadura elétrica usando umas das saídas digitais do controlador. A câmara tem a função de adquirir imagens e enviá-las ao controlador, que por sua vez tem a função de as analisar e, através de um algoritmo de reconhecimento facial, detetar se se encontra um utilizador autorizado ou não autorizado perante a câmara.

Para que o utilizador consiga ter acesso à zona restrita, terá de se posicionar em frente à câmara, olhando diretamente para esta, de modo a que a sua face fique na zona captada pela câmara.

Se o utilizador for dado como um utilizador autorizado, o controlador irá atuar a fechadura elétrica através de uma das suas saídas digitais. Caso contrário, a fechadura não será atuada.

7.6.1 Algoritmos Desenvolvidos

Foi necessário desenvolver dois algoritmos: um algoritmo de treino de faces para posterior reconhecimento facial e um algoritmo para realizar o reconhecimento facial.

Algoritmo de treino

O algoritmo de treino de faces integra uma programa desenvolvido em ambiente Linux, em linguagem de programação C e em ambiente de desenvolvimento cmake. Para efetuar o treino de uma face, o programa permite a recolha de fotos de uma face e criar um ficheiro xml com o resultado do treino para posterior uso num algoritmo de reconhecimento facial. Este programa contém uma interface gráfica, representada na Figura 7.31, que permite a interação e execução de todas as funções necessárias ao treino de uma face.

Figura 7.31: Interface gráfica do programa de treino de faces para reconhecimento facial. Esta interface é composta por uma zona onde são apresentadas as imagens adquiridas pela câmara e uma zona lateral de controlo da imagem, que permite realizar operações às imagens que estão a ser adquiridas, nomeadamente equalização do histograma e alteração da luminosidade da imagem, através da técnica de correção gama. Na parte superior da interface encontra-se um botão que abrirá uma nova janela, representada na Figura 7.32, que por sua vez permitirá recolher sets de imagens, tantos quantos forem necessários, usando o botão Save Images. Para guardar um novo set de imagens, o botão New Direction terá de ser premido e de seguida premir o botão Save Images novamente. Após todos os sets de imagens terem sido recolhidos, o botão Create Biometric Filepermite o treino da face em causa através da criação de um ficheiro xml, denominado ficheiro cascade, que contém o resultado do treino.

Este programa foi desenvolvido com base na biblioteca de visão OpenCV, que permite de-senvolver funções relacionadas com visão computacional, desde a simples interface de comu-nicação com câmaras, até algoritmos baseados em Machine Learning para deteção de objetos. Em particular, todo o processo de treino de uma face foi baseado em duas funções pertencentes a esta biblioteca, nomeadamente as funções opencvcreatesamples e opencvtraincascade. A fun-ção opencvcreatesamples permite todo o processo de preparafun-ção de imagens, para que a funfun-ção opencvtraincascadeconsiga treinar a face. A taxa de sucesso do algoritmo depende da situação em que a face a ser reconhecida irá ser detetada. Quanto mais controlado for o ambiente de de-teção, mais fácil e rápido é o processo de treino. No entanto, se estivermos perante um ambiente em que existam variáveis que não consigam ser controladas, nomeadamente a luminosidade, ângulo de captura, profundidade, expressões e acessórios faciais, entre outras, a tarefa de treino

de uma face torna-se numa tarefa difícil e computacionalmente exigente. A taxa de sucesso do treino efetuado dependerá, portanto, do set de imagens positivas fornecidas.

Figura 7.32: Interface gráfica do programa de treino de faces para reconhecimento facial - Janela de Recolha e Treino.

Uma vez que se está perante uma situação de reconhecimento facial em tempo real, onde o trabalhador aparecerá em frente à câmara, para a validação da face, com o objetivo de entrar na zona restrita, as condições de captura não sofrerão muitas variações. A única variação que poderá ocorrer será ao nível da luminosidade. Para além disso, tudo o que se considere adereços faciais e expressões faciais não foram tidas em conta no processo de treino. Desta forma, cada vez que o processo de reconhecimento facial seja efetuado, terá de ser realizado sem adereços faciais e com uma postura facial neutra.

O set de imagens de treino terá de contemplar o máximo de variações que possam existir no ambiente de deteção acima descrito, nomeadamente variações de luminosidade.

A ferramenta de treino utilizada (opencvtraincascade), permite a utilização de diferentes métodos de reconhecimento facial. Como referido no capítulo 5, existem diversos métodos de reconhecimento facial, nomeadamente métodos baseados nas características geométricas da face, métodos holísticos e métodos de características locais. Dentro dos métodos de característi-cas locais destacam-se o método de Local Binary Patterns Histograms e o método de Haar-like features. Estes métodos tentam encontrar uma representação de pequenas dimensões do objeto de interesse através da análise de características locais desse objeto. A ferramenta de treino uti-lizada permite o uso de dois métodos distintos, nomeadamente, o método Haar-like features e o método Local Binary Patterns Histograms. A principal diferença entre os dois métodos é a maneira como criam uma representação do objeto de interesse. Enquanto o método Haar-like featuresanalisa de forma contínua o valor dos pixeis de modo a encontrar as características lo-cais do objeto, o método Local Binary Patterns Histograms analisa os pixeis vizinhos ao pixel em análise e binariza esses pixeis de acordo com um determinado threshold, procurando, já de forma binarizada, as características locais do objeto. Esta diferença faz com que as combinações dos valores dos pixeis numa determinada vizinhança, em modo binarizado, seja extremamente

inferior ao número de combinações da mesma vizinhança em modo contínuo, permitindo ao mé-todo Local Binary Patterns Histograms ser significativamente mais rápido no processo de treino de um objeto, comparando com o método Haar-like features. No entanto, está comprovado que o método Haar-like features tem uma taxa de sucesso ligeiramente superior ao método Local Binary Patterns Histograms.

A função de treino tem dois inputs que fornecem toda a informação necessária ao treino, nomeadamente as imagens positivas, que contém a face que se deseja treinar, e as imagens negativas, que contém cenários aleatórios e que não contém faces humanas. Para além destes inputsexiste um conjunto de inputs que parametrizam a função de treino. Um desses parâmetros indica o método de treino a ser utilizado. Usou-se o método Haar-like features, uma vez que a versão da API utilizada da biblioteca OpenCV apenas permitia o uso deste método.

Quanto mais imagens, tanto positivas como negativas, forem usadas, melhor será o resultado de treino. No entanto, quantos mais imagens se usarem, mais tempo o algoritmo demorará a treinar. Uma vez que se usou o método Haar-like features, foi necessário diminuir drasticamente o número de imagens negativas, de modo ao algoritmo de treino não ser muito demorado.

Em relação ao programa de treino, este é composto por dois processos distintos e indepen-dentes: o processo gráfico e o processo background, que partilham uma memória e comunicam por sinais. O processo gráfico é responsável pela interface gráfica e todas as respostas às intera-ções que hajam com a mesma. O processo background é responsável pela aquisição de imagens por parte da câmara e pela execução de todas as funções necessárias ao processo de treino. A memória partilhada é usada para que o processo background consiga passar a imagem adquirida pela câmara ao processo gráfico, que por sua vez irá ser mostrada na interface gráfica.

Para além de treinar faces para reconhecimento facial, o programa executa um algoritmo de reconhecimento facial dos utilizadores, cujos ficheiros de treino ainda estejam em diretório do programa. É importante referir que este algoritmo de reconhecimento não é um algoritmo especialmente desenvolvido para reconhecimento de faces. Este é um algoritmo de Machine Learningque permite detetar qualquer tipo de objeto que se queira detetar. Para isso é apenas neccessário que esse objeto seja treinado e um ficheiro cascade seja criado. É com base nestes ficheiros que o algoritmo de deteção de objetos trabalha.

Os fluxogramas referentes ao processo gráfico e background deste programa são apresentado nas Figuras 7.6.1 e 7.6.1, respetivamente.

Figura 7.33: Fluxograma do processo gráfico do programa de treino de faces para reconheci-mento facial.

Figura 7.34: Fluxograma do processo background do programa de treino de faces para reconhe-cimento facial.

Algoritmo de reconhecimento facial

O algoritmo de reconhecimento facial foi desenvolvido em python, usando como base a biblioteca de visão OpenCV. A função do algoritmo é adquirir todos os ficheiros cascade de treino que se encontrem no diretório e, para cada imagem adquirida pela câmara, executar o algoritmo de deteção de objetos usando os ficheiros de treino criados. O fluxograma deste algoritmo é apresentado na Figura 7.6.1.

Figura 7.35: Fluxograma do algoritmo de controlo de acessos a zona restrita.

O circuito de atuação é representado na Figura 7.36. A fechadura elétrica é atuada através de uma saída digital de 3.3 V utilizou-se um transístor PNP TIP29C que é utilizado como

in-terruptor, usando para o efeito os seus regimes de trabalho de corte e de saturação. Ao serem aplicados 0 V na base do transístor, este entra em zona de corte e não permite a passagem de corrente no coletor, onde se encontra conectada a fechadura elétrica, não sendo esta atuada. Se forem aplicados 3.3 V na base do transístor, este entra em zona de saturação, devido à resistên-cia, devidamente dimensionada, ligada em série com a saída digital do controlador, permitindo a passagem de corrente pelo coletor e atuando a fechadura elétrica.

Figura 7.36: Esquema elétrico de atuação da fechadura elétrica.

A Figura 7.37 representa o hardware utilizado para o controlo de acessos a zonas restritas.

Figura 7.37: Hardware utilizado para o controlo de acessos a zonas restritas. Legenda: 1 - Fonte de Tensão; 2 - Fechadura elétrica; 3 - Raspberry Pi 3B; 4 - Circuito de atuação da fechadura elétrica; 5 - Câmara.

No documento Miguel Ângelo Oliveira Alves Neto (páginas 124-132)