Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE PAULISTA – UNIP CLAUDIO ZURITA DE AMORIM HENRIQUE MENDONÇA DE SOUZA JOSÉ VITOR ZANONI KAIO DA FONSECA GONÇALVES DESENVOLVIMENTO DE UM SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO BIOMÉTRICA RECONHECIMENTO FACIAL SÃO PAULO 2018 CLAUDIO ZURITA DE AMORIM HENRIQUE MENDONÇA DE SOUZA JOSÉ VITOR ZANONI KAIO DA FONSECA GONÇALVES DESENVOLVIMENTO DE UM SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO BIOMÉTRICA RECONHECIMENTO FACIAL Atividade prática supervisionada e apresentada ao curso Ciência da Computação, para fins de conhecimento na área. Orientador: Rafael do Espírito Santo. SÃO PAULO 2018 RESUMO Biometria é o uso de características biológicas em mecanismos de identificação. Entre essas características tem-se a íris (parte colorida do olho), a retina (membrana interna do globo ocular), a impressão digital, a voz, o formato do rosto e a geometria da mão. O uso de características biológicas para identificação se mostra como uma idéia viável porque cada pessoa possui as características mencionadas diferentes das outras. Com a biometria, o problema de roubo de senhas ou cartões com chips é extinto ou, pelo menos, amenizado. Embora nada impeça os dispositivos de identificação biométrica de serem enganados, é muito difícil copiar uma característica física e, dependendo do que é usado na identificação, a cópia é impossível (como a íris do olho). O uso da biometria para a identificação de pessoas já é realidade e é pouco provável que outro conceito a substitua. É certo que a biometria vai ser cada vez mais parte do dia-a-dia das pessoas. Prova disso é que as tecnologias envolvidas ganham aprimoramentos constantes. Palavras-chave: biometria, identificação, reconhecimento facial, autenticação biométrica ABSTRACT Biometry is the use of biological characteristics in identification mechanisms. These features include the iris (colored part of the eye), the retina (inner membrane of the eyeball), fingerprint, voice, face shape, and hand geometry. The use of biological characteristics for identification is shown as a viable idea because each person has the mentioned characteristics different from the others. With biometrics, the problem of theft of passwords or cards with chips is extinct or at least mitigated. Although nothing prevents biometric identification devices from being cheated, it is very difficult to copy a physical feature and, depending on what is used in identification, copying is impossible (like the iris of the eye). The use of biometrics to identify people is already a reality and it is unlikely that another concept will replace it. It is certain that biometrics will be increasingly part of people's daily lives. Proof of this is that the technologies involved gain steady improvements. Keywords: biometrics, identification, facial recognition, biometric authentication. LISTA DE ILUSTRAÇÕES Imagem 01 – Como é a realizada a impressão digital. Pag 13 Imagem 02 – Execução da classe captura.py Pag 28 Imagem 03 – Fotografando a face Pag 29 Imagem 04 – Imagens capturadas. Pag 30 Imagem 05 – Execução da classe treinamento.py. Pag 31 Imagem 06 – Execução da classe reconhecedor-eigefaces.py. Pag 32 SUMÁRIO 1 INTRODUÇÃO ............................................................................................7 2 OBJETIVOS ................................................................................................9 2.1 Objetivos gerais .....................................................................................9 2.2 Objetivos específicos ............................................................................9 3 SISTEMAS BIOMETRICOS .....................................................................10 3.1 O que é Biometria ................................................................................10 3.2 Impressão Digital .................................................................................10 3.3 Geometria de mão e dedos .................................................................11 3.4 Reconhecimento da Íris ......................................................................12 3.5 Reconhecimento de retina ..................................................................13 3.6 Reconhecimento de voz ......................................................................14 3.7 Reconhecimento de termogramas .....................................................14 3.8 Reconhecimento do “caminhas do índividuo” .................................15 3.9 RECONHECIMENTO DA FORMA DE "DIGITAR" (COMPORTAMENTAL) ...........................................16 3.10 Reconhecimento da caligrafia ..............................................................17 4 Reconhecimento Facial ..........................................................................18 4.1 Definição de reconhecimento facial ...................................................18 4.2 Métodos baseados em imagens .........................................................18 4.3 Local Binary pattern ............................................................................18 4.4 Subespaços Lineares ..........................................................................19 4.4.1 Independent Component Analysis .........................................................19 4.4.2 Linear Discriminant Analysis ..................................................................20 5 DESENVOLVIMENTO ..............................................................................21 5.1 Classes do Software ..................................................................................22 5.2 Classe Capturar.py ....................................................................................22 5.3 Classe Treinamento.py............................................................................. 23 5.4 Classe Reconhecedor-eigefaces.py ..........................................................24 5.5 Bibliotecas Utilizadas................................................................................ 25 5.5.1 Opencv. .................................................................................................25 5.5.2 Numpy. ..................................................................................................25 6 RESULTADOS ..........................................................................................26 7 CONCLUSÃO............................................................................................31 REFERÊNCIA BIBLIOGRÁFICA ...................................................................33 ANEXOS ......................................................................................................... 35 8 FICHAS DE ATIVIDADES PRÁTICAS SUPERVISIONADAS .................40 7 1 INTRODUÇÃO O primeiro método de identificação biométrica aceito oficialmente foi desenvolvido por Alphonse Bertillon no final do século XVIII. Também chamada de antropometria, o sistema se baseava numa combinação de medidas físicas tiradas de acordo com elaborados procedimentos. As métricas junto com cor de cabelo, de olhos e fotos de frente e de costas eram arquivadas. Bertillon criou 243 categorias. No século II a.C., os governantes chineses já usavam as impressões digitais para lacrar documentos importantes. Foi a primeira vez na história que impressões digitais identificaram positivamente uma pessoa. Desde então, a técnica de reconhecimento de impressões digitais evoluiu e passou a ser empregada em grande escala, tornando-se o principal método para comprovar, de forma inegável, a identidade de uma pessoa. A biometria é o ramo da ciência que estuda as medidas físicas dos seres vivos, daí o termo identificação biométricapara indicar as tecnologias que permitem a identificação das pessoas através dos traços físicos característicos e únicos de cada ser humano: os traços faciais, a íris e a impressão digital. Biometrias são de grande interesse em áreas onde é realmente importante verificar a real identidade de um individuo.Inicialmente estas técnicas eram empregadas em aplicações especializadas de alta segurança, entre tanto nós estamos vendo agora sua utilização e proposta de uso em uma grande e crescente área de situações em utilizações publicas no nosso dia a dia. Elas são de grande interesse em áreas onde é realmente importante verificar a real identidade de um individuo. Inicialmente estas técnicas eram empregadas em aplicações especializadas de alta segurança, entre tanto nós estamos vendo agora sua utilização e proposta de uso em uma grande e crescente área de situações em utilizações publicas. 8 Sendo uma tecnologia bastante fácil de utilizar, ela é bastante fiável e segura pois usa uma característica inerente ao ser humano, tal como a íris, ou a sua impressão digital, sendo estas as tecnologias biométricas mais usadas. Esta tecnologia revela, ainda, uma relação preço/resultados mais eficaz que a maioria dos sistemas tradicionais de identificação e validação, sendo um sistema em que não implica a perda das credenciais (ao contrario dos cartões), ou o esquecimento das mesmas, no caso das passwords. A biometria é a sua prova de identificação mais fiável e cómoda, a sua password sem memorização, sem palavras ou imagens, o seu cartão mais pessoal. Biometria é a sua password eterna. Como qualquer mecanismo de segurança, os dispositivos biométricos estão sujeitos a falhas. Por isso, dependendo do nível de segurança desejado, especialistas recomendam o uso de pelo menos dois tipos de autenticação. Outro ponto fundamental para tirar melhor proveito das ferramentas é o treinamento/conscientização dos funcionários. Se eles estiverem desconfortáveis com a tecnologia, é provável que os erros apareçam numa taxa superior aos índices considerados normais. 9 2 OBJETIVOS Esclarecer conceitos, funções e aplicações da Biometria e sistemas biometricos. Para tanto, apresentando o desenvolvimento de uma ferramenta simples. 2.1 Objetivos gerais Contribuir para a sociedade acadêmica com explicações para o processo de biometria facial. Tendo como resultado uma ferramenta de identificação facial desenvolvida na linguagem python. 2.2 Objetivos específicos Visando atingir o objetivo principal, alguns objetivos específicos são requeridos, entre eles: Pesquisar e enteder o conceito, utilização e aplicação da biometria. Avaliar as principais técnicas usadas e selecionar uma para a elaboração da dissertação. Buscar os benefícios que a técnica selecionada proporciona. Desenvolver um software para realizar a biometria. Apresentar o funcionamento do software. 10 3 SISTEMAS BIOMETRICOS 3.1 O que é Biometria Biometria é a ciência que procura identificar indivíduos baseando-se em características únicas. Essas características podem ser de caráter físico, químico ou comportamental. Seu principal uso é controlar o acesso de pessoas a um determinado local que exige um alto nível de segurança. Como formas de segurança, a biometria é utilizada para reconhecimento, identificação criminal, controle de acesso a dados e aparelhos etc. Como cada pessoa é única e possui características singulares, tanto em aspectos físicos como comportamentais, a biometria tem se mostrado uma maneira bem sucedida para auxiliar na segurança de empresas, instituições governamentais e em outras áreas. 3.2 Impressão Digital É o tipo mais popular de sistema biométrico, baseando-se na identificação através das irregularidades das impressões digitais, retiradas de um ou mais dedos, as chamadas “minúcias”. A captura da imagem da impressão digital ocorre por meios ópticos, sendo que essa imagem é processada digitalmente pelo sistema, que identifica as características datiloscópicas, comparando com os registros de banco de dados, determinando ou não o acesso. O banco de dados é gerado obtendo-se as impressões digitais dos usuários da rede. A finalidade é obter a impressão digital de todos os dedos. Caso ocorra algum dano na impressão digital de um dos dedos, os outros poderão ser utilizados para o reconhecimento. 11 Imagem 01 – Como é a realizada a impressão digital. Fonte: PINHEIRO, José Mauricio. Biometria nos Sistemas Computacionais 2008 3.3 Geometria da mão e dos dedos Os sistemas de reconhecimento baseados na geometria da mão estão entre as mais antigas ferramentas biométricas utilizadas para a autenticação automática de uma pessoa. A biometria baseada em características da mão fundamenta-se num conjunto de medidas que podem ser extraídas recorrendo a alguns pontos característicos da mão, as cinco pontas dos dedos e os quatro vales entre eles. Um dos grandes obstáculos destes sistemas reside na detecção destes pontos e, dada a dificuldade nessa detecção, muitas das vezes são impostas restrições na fase aquisição de modo a facilitar a mesma. Estas restrições causam desconforto ao utilizador e limitam a aplicação deste tipo de sistemas. Neste trabalho foram desenvolvidas técnicas com o intuito de ultrapassar as limitações impostas pelos sistemas actuais. Um dos primeiros 12 passos passou pela criação de uma Base de Dados livre de restrições durante a aquisição. Posteriormente foi implementado um método de detecção dos pontos característicos da mão (pontas dos dedos e vales). Para as pontas dos dedos foi desenvolvida uma metodologia baseada no esqueleto da mão, enquanto para os vales foi feita uma análise da curvatura do contorno da mão. Um grande obstáculo encontrado nesta fase residiu na binarização da mão em relação ao background, que tende a falhar quando esta se encontra com os dedos juntos. Identificados os pontos, foi feita uma extracção das características necessárias à fase de identificação. Nesta fase, alguns algoritmos de classificação foram implementados sendo que, os que mostraram melhores resultados apresentaram uma taxa de reconhecimento de 76% com uma taxa de intrusão de 8%. 3.4 Reconhecimento da Iris O processo de reconhecimento começa com a aquisição de uma fotografia da íris tirada sob uma iluminação infra-vermelha. Apesar da luz visível poder ser utilizada para iluminar o olho, as íris de pigmentação escura revelam maior complexidade quando sob iluminação infra-vermelha. A fotografia resultante é analisada utilizando algoritmos que localizam a íris e extraem a informação necessária para criar uma amostra biométrica. A localização da imagem de uma íris é muito importante, por que, obviamente, se a imagem for capturada de forma errada a identificação do usuário pode falhar. De fato, existem vários fatores que devem ser considerados ao se capturar a imagem de uma íris e que podem afetar o desempenho do processo como um todo. Reflexos, movimentação do olho no momento de captura da imagem, pálpebras e cílios podem atrapalhar na aquisição da imagem de uma íris. 13 3.5 Reconhecimento de Retina O reconhecimento de retina começou a ser utilizado majoritariamente em instalações militares e governamentais, uma vez que nessas áreas a presença de um fortíssimo sistema de segurança contra ameaças externas se torna necessária. Como exemplos de órgãos que empregam esse tipo de autenticação biométrica, podem ser citados o FBI, a CIA e a NASA. Entre todas as características do corpo humano, a retina é a que possui um padrão vascular mais estável ao longo do tempo e tem maior garantia de singularidade, não havendo duas pessoas com as retinas idênticas. Além disso, a retina não deixa rastros e é impossível recriá-la, o que evitaa falsificação de identidade e delitos mais graves como gerar falsas provas para incriminar uma pessoa inocente. O modelo de assinatura de retina é bastante reduzido se comparado com outras biometrias. Isso reduz a memória necessária e o tempo de processamento na etapa de verificação. Por isso, a verificação de retina é o método de reconhecimento mais seguro entre todos os outros existentes. Uma evidência disso é que até o dia presente não houve nenhum caso de falsificação de retina registrado. A varredura de retina também tem outra característica que pode ser interpretada como uma vantagem ou uma desvantagem. A varredura depende da cooperação do usuário, que deve alinhar o olho corretamente de acordo com as orientações do sistema. Por outro lado, não é muito simples realizar uma varredura de retina. Usuários inexperientes podem ter dificuldades em usar o aparelho e efetuar o alinhamento do olho, aumentando em muito o tempo gasto para a identificação. E também é necessário que o usuário retire seus óculos para não ocorrer problema na varredura. Ademais, o olho do usuário deve permanecer praticamente estático, olhando fixamente para um ponto enquanto a luz de baixa intensidade emitida pelo leitor ótico é direcionada diretamente para a sua córnea, sendo necessário que o leitor de retina tenha que ficar muito perto do olho. Isso leva algumas pessoas a crer que podem ter a visão prejudicada de alguma forma, e a considerar essa forma de autenticação como um método intrusivo. 14 Outro fato a ser considerado é a necessidade de um hardware específico para a captação de imagens da retina. Tal fato faz com que o preço mínimo para a implementação desse sistema biométrico seja superior ao custo de outros tipos de autenticação, que podem ter taxas de erros dentro de um valor aceitável para sua utilização. 3.6 Reconhecimento de Voz A biometria de voz nada mais é que uma tecnologia que permite confirmar a identidade de uma pessoa por meio da sua voz. A biometria é interessante para a experiência do cliente porque ela simplesmente elimina a necessidade dos clientes criarem e memorizarem senhas para cada uma das empresas que se relacionam. Com apenas 3 segundos de fala os sistemas já conseguem fazer uma análise com 98% de eficácia. Como a autenticação acontece de forma muito rápida, a biometria de voz é muito interessante para as empresas, pois reduz no mínimo em 4 vezes o tempo o processo de autenticação tradicional, baseado nas perguntas para confirmação de dados. Quando isso é multiplicado pelas centenas ou milhares de autenticações que são feitas diariamente, isso significa uma redução de custo muito significativa. 3.7 Reconhecimento de termogramas A termografia é uma técnica que permite mapear um corpo ou uma região com o intento de distinguir áreas de diferentes temperaturas, sendo portanto uma técnica que permite a visualização artificial da luz dentro do espectro infravermelho. As vibrações de campos elétricos e magnéticos que se propagam no espaço a velocidade da luz de forma mutuamente sustentadas dá origem às ondas eletromagnéticas, e o conjunto de ondas eletromagnéticas de todas as frequências formam o espectro eletromagnético. O infravermelho corresponde a uma faixa freqüência eletromagnética naturalmente emitida por qualquer corpo à temperatura próxima à do ambiente (22ºC), com intensidade proporcional à quarta potência de sua temperatura. 15 Para aplicar a termografia do rosto, precisaremos medir partes do nosso corpo que não mudam ao longo do tempo, nem com fatores externos (exemplo: o rosto) Alguns anos atrás, não era viável porque as câmeras de termografia tinham baixa resolução. Hoje se faz possível realizar a biometria através de termogramas pois a tecnologia avançou e existem muitas câmeras e sensores capazes de medir. 3.8 Reconhecimento do “caminhar do índividuo” Através de tecnologias modernas de varredura e mapeamento de imagens, a pesquisa em biometria comportamental vem avançando rapidamente. Hoje, já é possível identificar um ser humano pela maneira como ele se mexe. Utilizando sistemas de CFTV (circuito fechado de televisão) comuns, um software pode fazer a varredura do vídeo em tempo real, quadro a quadro, removendo objetos do ambiente e criando um padrão de movimento para uma pessoa andando. Informações sobre altura, postura, distância entre seus passos, ritmo da passada, entre outros, são reunidos. As características ficam então armazenadas no banco de dados do sistema, que pode identificar o indivíduo posteriormente, caso ele passe novamente pela câmera de segurança. Este tipo de identificação não é livre de problemas. Por exemplo, se o programa tem apenas dados do indivíduo por um ângulo específico, para reconhecê-lo posteriormente com precisão, o ponto de captura da nova imagem precisa corresponder àquele que registrou o padrão no sistema. É por isso que pesquisadores de diferentes países estão desenvolvendo técnicas complementares para uma análise eficiente e viável do modo de andar de uma pessoa. 16 3.9 Reconhecimento da forma de “digitar” (COMPORTAMENTAL) A biometria comportamental coleta três tipos de dados: a duração do toque, que compreende quanto tempo a pessoa pressiona cada tecla; o intervalo entre uma tecla e outra - por exemplo, entre o 'o' e o 'i' na hora de digitar 'oi' -; e combinações comuns - ao digitar sequências comuns, como nome-de-usuário@email, por exemplo. É um método pouco confiável, o processo de cadastramento e leitura é demorado, porém possui baixo custo e não necessita de hardware específico, apenas de software. Algumas vantagens desse método são que o usuário não tem conhecimento de quando está sendo autenticado, a menos que tenha sido informado antes, além do fato de o seu cadastro e sua verificação não serem invasivos. 17 3.10 Reconhecimento da Caligrafia A primeira vista, usar a caligrafia para identificar pessoas pode não parecer uma boa idéia, pois qualquer um pode aprender a copiar caligrafias em pouco tempo. Seria fácil conseguir uma cópia da assinatura de alguém e falsifica-la. Mas os sistemas biométricos não prestam atenção somente ao formato que se dá a cada letra. Eles analisam o ato de escrever, a pressão, a velocidade e o ritmo com os quais escreve. Eles também registram a seqüência que se usa para formar as letras, como se adicionam pontos e traços ao escrever ou depois de escrever cada palavra. Ao contrário da forma das letras, essas características são mais difíceis de falsificar. Mesmo que alguém consiga uma cópia de sua assinatura e a reproduza, o sistema provavelmente não aceitará a falsificação. Sensores do sistema de reconhecimento de caligrafia podem incluir uma superfície sensível ao toque ou uma caneta que contenha sensores que detectam ângulo, pressão e direção. O software traduz a caligrafia para um gráfico e reconhece as pequenas mudanças na caligrafia de uma pessoa no dia-a-dia e durante determinado tempo. 18 4 Reconhecimento Facial 4.1 Definição de Reconhecimento Facial O reconhecimento facial é uma técnica de biometria baseada nos traços do rosto das pessoas. O rosto de uma pessoa é formado por diversas características, que são chamados pontos nodais. Existem cerca de 80 pontos nodais na face humana. Alguns exemplos de pontos nodais são a distância entre os olhos, o comprimento do nariz, o tamanho do queixo e a linha da mandíbula. Cada um desses pontos nodais é medido e armazenado em uma base de dados, formando a assinatura facial. A obtenção da assinatura facial completa a etapa de extração de características. 4.2 Métodos Baseados em Imagens Necessita de um banco de dados que contenham imagens para haver um reconhecimento automático . A imagem não é composta unicamente pela face, mas também por um plano defundo. Primeiramente, deve-se determinar o padrão das imagens e o procedimento necessário para a padronização das imagens de entrada como, por exemplo, resolução e escala de cores. Em seguida, deve-se definir os parâmetros a serem utilizados no reconhecimento das faces e, assim, classificar as imagens do banco de dados segundo esses parâmetros. Por último, a imagem de entrada é identificada ou verificada. Na identificação, a face é pesquisada em um banco de dados e o resultado é a identidade correspondente ao indivíduo na foto (caso o mesmo esteja no banco de dados). Enquanto isso, na verificação, o sistema deve responder se a face de entrada pertence a um determinado indivíduo ou não (ZHAO, 2003). 4.3 Local Binary Pattern O LBP (Local Binary Patterns) é um operador para texturas considerado simples e eficiente. Ele se baseia numa idéia trivial: atribui um rótulo (representado por um número binário) a cada pixel analisado. Para atribuir esse rótulo, ele verifica 19 se cada vizinho, do pixel em análise, em uma raio considerado, extrapola, ou não, um limiar (threshold) que é determinado pelo valor do pixel central, cujo rótulo está sendo determinado. Cada vizinho que extrapolar esse limiar (threshold), ou se igualar a ele, será marcado com o dígito binário 1, caso contrário, será marcado com o dígito binário 0. A junção desses digitos binários representará o pixel central, lembrando que é importante seguir uma lógica para determinar qual o dígito mais significativo, ou, em outras palavras, à partir de que vizinho o número começará a ser formado, já que a vizinhança é circular. Também é preciso observar que quando se determina o dígito mais significativo, automaticamente está sendo atribuído um peso a cada um dos digitos. A soma da multiplicação de cada dígito pelo seu respectivo peso retornará o que é referenciado como código LBP (PIETIKÄINEN et al., 2011, p. 4-5) Ainda segundo Pietikäinen et al. (2011, p. 4), possivelmente, a propriedade mais importante do operador LBP, em aplicações do mundo real, é a sua invariância, percebida quando acontecem variações monotônicas nos níveis de cinza, que podem ser causadas por variações na iluminação do ambiente, no momento da captura da imagem. Outra característica igualmente importante é a sua simplicidade computacional, que torna possível enfrentar desafios nos quais as imagens precisam ser analisadas em tempo real. 4.4 Subespaços Lineares 4.4.1 Independent Component analysis A análise de componentes independentes (ACI) é uma técnica estatística e computacional para revelar fatores ocultos subjacentes a conjuntos de variáveis, medidas ou sinais aleatórios. A ACI define um modelo generativo para os dados multivariados observados, que normalmente é dado como um grande banco de dados de amostras. No modelo, as variáveis de dados são assumidas como misturas lineares de algumas variáveis latentes desconhecidas, e o sistema de mistura também é desconhecido. As variáveis latentes são assumidas como nongaussianas e mutuamente independentes, e são chamadas de componentes independentes dos dados observados. Esses componentes independentes, também chamados de fontes ou fatores, podem ser encontrados pela ACI. ACI é superficialmente relacionado à análise de componentes principais e à análise fatorial. ACI é uma técnica muito mais poderosa, no entanto, capaz de 20 encontrar os fatores ou fontes subjacentes quando esses métodos clássicos falham completamente. Os dados analisados pela ACI podem ser originários de diversos tipos de campos de aplicação, incluindo imagens digitais, bancos de dados de documentos, indicadores econômicos e medidas psicométricas. Em muitos casos, as medidas são dadas como um conjunto de sinais paralelos ou séries temporais; O termo separação de fontes cegas é usado para caracterizar esse problema. Exemplos típicos são misturas de sinais de fala simultâneos que foram capturados por vários microfones, ondas cerebrais registradas por múltiplos sensores, sinais de interferência de rádio que chegam a um telefone celular ou séries temporais paralelas obtidas de algum processo industrial. 4.4.2 Linear Discriminant Analysis Análise de Discriminação Linear facilmente lida com o caso em que as frequências dentro da classe são desiguais e suas performances foram examinadas em dados de teste gerados aleatoriamente. Este método maximiza a proporção entre variância entre classes e variação dentro da classe em qualquer conjunto de dados específico, garantindo a separabilidade máxima. O uso da Análise Discriminante Linear para classificação de dados é aplicado ao problema de classificação no reconhecimento de fala. 21 5 DESENVOLVIMENTO O programa de reconhecimento facial foi desenvolvido na linguagem de programação orientada a objetos python, pelo IDLE Python 3.6. Utilizando também as bibliotecas OpenCV e Numpy. 22 5.1 Classes do Software 5.2 Classe capturar.py Primeiramente foi desenvolvido a classe capturar.py, ela é responsável por capturar em tempo real a imagem utilizando a webcam. A primeira parte do código determina qual o padrão será utilizado na detecção, logo em seguida é criada uma instância da webcam e dentro do laço de repetição é feito a captura da imagem utilizando a webcam. 23 5.3 Classe Treinamento.py Logo após de utilizar a primeira classe para capturar as imagens, deve ser executada a classe treinamento.py, que é responsável por fazer o treinamento das fotos. 24 5.4 Classe Reconhecedor-eigefaces.py Em seguida, execute a classe reconhecedor-eigenfaces.py, ela reconhece a face do vídeo e com base no aprendizado, classifica as rostos. 25 5.5 Bibliotecas utilizadas Nas classes contém as bibliotecas OpenCV e Numpy. 5.5.1 Opencv O opencv é uma biblioteca multiplataforma, utilizada para o desenvolvimento de aplicativos na área de visão computacional. 5.5.2 Numpy O numpy é uma biblioteca para a linguagem de programação Python , a adição de suporte para Arrays e matrizes multidimensionais grandes, juntamente com uma grande coleção de funções matemáticas de alto nível para operar nessas matrizes. 26 6 RESULTADOS Execute a classe captura.py e digite seu id Imagem 2 – Execução da classe captura.py Fonte: elaborado pelo próprio autor. 27 Após o programa capturar sua face, aperte Q para capturar a imagem Imagem 3 – Fotografando a face Fonte: elaborado pelo próprio autor. 28 Todas as imagens serão enviadas para a pasta dataset Imagem 4 – Imagens capturadas Fonte: elaborado pelo próprio autor. 29 Execute a classe treinamento.py, para fazer o treinamento das imagens Imagem 5 – Execução da classe treinamento.py Fonte: elaborado pelo próprio autor. 30 Execute a classe reconhecedor-eigenfaces.py Imagem 6 – Execução da classe reconhecedor-eigefaces.py Fonte: elaborado pelo próprio autor. Face reconhecida como id 1. 31 7 CONCLUSÃO A biometria é conhecida como um dos procedimentos mais estáveis de reconhecimento e está cada dia mais destacada na sociedade. A palavra em si tem sentido de uma medição biológica, ou seja, é a pesquisa dos traços físicos e comportamental de cada indivíduo. A origem fundamental deste mecanismo para identificação é o corpo humano, porque ele é a chave para acessar determinadas informações. O desenvolvimento do presente estudo possibilitou uma análise do reconhecimento facial, que trouxe consigo a busca de algoritmos mais eficientes e seguros, e de suas aplicações no mundo real. De modo geral, o aplicativo desenvolvido obteve razoáveis resultados de detecção e reconhecimento . Um dos problemas ao desenvolver o código, foi a dificuldade de encontrar exemplos claros. Ao desenvolver o programa,percebemos que apesar de sua dificuldade ao encontrar exemplos, sempre há possibilidade de encontrar bibliotecas e a comunidade de programadores que sempre nos dão apoio. Percebemos que para fazer uma análise sobre o programa não poderíamos apenas entender sobre o conceito de reconhecimento biométrico, mas também seríamos obrigados a entender um pouco sobre programação e as formas de reconhecer e detectar faces. O Python foi a opção mais viável , porque ele é uma linguagem de fácil compreensão, em alta no mercado científico e fácil integração com o OpenCV. Os algoritmos apresentados neste trabalho necessitam de uma certa quantidade de amostra para que o treinamento seja bem-sucedido e quanto maior a quantidade, mais demorado é o treinamento. Dada a importância do assunto, torna-se necessário o desenvolvimento de formas de aperfeiçoar os algoritmos de reconhecimento para que os próximos software possam 32 ter uma qualidade cada vez maior, com ferramentas que facilite o desenvolvimento dos próximos aplicativos de reconhecimento facial. Neste sentido, como foi demonstrado nesse trabalho, as técnicas de reconhecimento biométrico só têm a evoluir cada vez mais, mostrando os passos percorrido que esse projeto traçou para a criação desse aplicativo, que por sua vez permite o reconhecimento facial, e que um dia se espera que esse projeto ajude outras pessoas a criar seus próprios aplicativos 33 REFERÊNCIA BIBLIOGRÁFICA . Mathworks: the. MatLab official. Disponível em:<http://www.mathworks.com/products/tech_computing/>. Acesso em: 21 Nov. 2017. , Anil K. Jain. Biometric Recognition: Overview and Recent Advances.Disponível em: <https://link.springer.com/chapter/10.1007/978-3- 540-76725-1_2>. Acesso em: 21 Nov. 2017. , Dr Sayed Sayad. Disponível em: <http://chem- eng.utoronto.ca/~datamining/dmc/lda.htm>. Acesso em: 21 Nov. 2017. , Márcia Santos da Silva et al. Biometria através de Impressão Digital: Biometrics through Digital Printing. 2011. Dissertação () - , 011 , S. Balakrishnama, A. Ganapathiraju. Disponível em:<https://www.isip.piconepress.com/publications/reports/1998/isip/lda/lda_t heory.pdf>. Acesso em: 21 Nov. 2017. ALVES, Alex Paulo. Um método para classificação de imagens de madeira usando: Local Binary Patterns. Dissertação () - ARAÚJO, Rafael. Protótipo de um sistema de identificação de minúcias em impressões digitais utilizado redes neurais artificiais multicamada.. 2002. TCC (Ciência da Computação) - UNIVERSIDADE REGIONAL DE BLUMENAU BANDEIRA DUARTE , Otto Carlos Muniz . Biometria - Reconhecimento de Íris. Disponível em: <https://www.gta.ufrj.br/grad/08_1/iris/index.html>. Acesso em: 21 Nov. 2017. BROWN, Eric. Applying Neural Networks to Character Recognition.Disponível http://www.mathworks.com/products/tech_computing/ http://chem-/ http://www.isip.piconepress.com/publications/reports/1998/isip/lda/lda_t http://www.isip.piconepress.com/publications/reports/1998/isip/lda/lda_t http://www.gta.ufrj.br/grad/08_1/iris/index.html http://www.gta.ufrj.br/grad/08_1/iris/index.html 34 em: <http://www.ccs.neu.edu/home/feneric/charrecnn.html>. Acesso em: 21 Nov. 2017. CAMARA, Marcio. Biometria, v. 1, f. 48. 24 p. Dissertação () - CESENA, Marco. FVC. Fingerprint verification competition: first international competition for fingerprint verification algorithms,. 2000. Disponível em:<http://bias.csr.unibo.it/fvc2000/download.asp>. Acesso em: 21 Nov. 2017. LOPES, Eduardo Costa. Detecção de Faces e Características Faciais. Rio de janeiro. Monografia () - SHASHANK, Araokar. Visual Character Recognition using Artificial Neural Networks. Dissertação () - University of mumbai SILVA, Clevertom. A SEGURANÇA ATRAVÉS DA BIOMETRIA . TCC () - FACULDADE DOM BOSCO VERAS, Alexandre Brandão ; CALVO, Carolina. Biometria: Reconhecimento de retina. Disponível em:<https://www.gta.ufrj.br/grad/10_1/retina/vantagensedesvantagens.html>. Acesso em: 21 Nov. 2017. http://www.ccs.neu.edu/home/feneric/charrecnn.html http://bias.csr.unibo.it/fvc2000/download.asp http://www.gta.ufrj.br/grad/10_1/retina/vantagensedesvantagens.html http://www.gta.ufrj.br/grad/10_1/retina/vantagensedesvantagens.html 35 ANEXOS CÓDIGO FONTE Captura.py import cv2 import numpy as np classificador = cv2.CascadeClassifier("haarcascade-frontalface-default.xml") classificadorOlho = cv2.CascadeClassifier("haarcascade-eye.xml") camera = cv2.VideoCapture(1) amostra = 1 numeroAmostras = 25 id = input('Digite seu identificador: ') largura, altura = 220, 220 print("Capturando as faces...") while (True): conectado, imagem = camera.read() imagemCinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY) facesDetectadas = classificador.detectMultiScale(imagemCinza, scaleFactor=1.5, minSize=(150,150)) for (x, y, l, a) in facesDetectadas: cv2.rectangle(imagem, (x, y), (x + l, y + a), (0, 0, 255), 2) regiao = imagem[y:y + a, x:x + l] regiaoCinzaOlho = cv2.cvtColor(regiao, cv2.COLOR_BGR2GRAY) olhosDetectados = classificadorOlho.detectMultiScale(regiaoCinzaOlho) for(ox, oy, ol, oa) in olhosDetectados: cv2.rectangle(regiao, (ox, oy), (ox + ol, oy + oa), (0, 255, 0), 2) if cv2.waitKey(1) & 0XFF == ord('q'): if np.average(imagemCinza) > 110: 36 altura)) imagemFace) imagemFace = cv2.resize(imagemCinza[y:y + a, x:x + l], (largura, cv2.imwrite("dataset/Pichau." + str(id) + "." + str(amostra) + ".jpg", print("[foto " + str(amostra) + " capturada com sucesso]") amostra += 1 cv2.imshow("Face", imagem) cv2.waitKey(1) if(amostra >= numeroAmostras + 1): break print("Faces capturadas com sucesso") camera.realease() cv2.destroyAllWindows() treinamento.py import cv2 import numpy as np import os #usar recusos do SO #cria o algoritmo de reconhecimento eigenface = cv2.face.EigenFaceRecognizer_create() fisherface = cv2.face.FisherFaceRecognizer_create() lbph = cv2.face.LBPHFaceRecognizer_create() def getImagemComId(): caminhos = [os.path.join('dataset', f) for f in os.listdir('dataset')] faces = [] #lista ids = [] #possui todos os caminhos das imagens for caminhoImagem in caminhos: imagemFace = cv2.cvtColor(cv2.imread(caminhoImagem), cv2.COLOR_BGR2GRAY) #abrindo a imagem e convertendo ela em escla de cinza 37 id = int(os.path.split(caminhoImagem)[-1].split('.')[1]!='jpg') print(id) ids.append(id) faces.append(imagemFace) cv2.imshow("Face", imagemFace) cv2.waitKey(10) return np.array(ids), faces ids, faces = getImagemComId() print("Treinando...") eigenface.train(faces, ids) eigenface.write('classificadorEigen.yml') lbph.train(faces, ids) lbph.write('classificadorLPBH.yml') print("Treinamento realizado") reconhecedor-eigenface.py import cv2 class Reconhecedor: detectorFace = cv2.CascadeClassifier("haarcascade-frontalface- default.xml") reconhecedor = cv2.face.EigenFaceRecognizer_create() #reconhece a face no vídeo reconhecedor.read("classificadorEigen.yml") #com base no aprendizado, classifica os rostos largura, altura = 220, 220 font = cv2.FONT_HERSHEY_COMPLEX_SMALL camera = cv2.VideoCapture(1) #conecta com a câmera 38 while (True): conectado, imagem = camera.read() #capturando a imagem imagemCinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY) facesDetectadas = detectorFace.detectMultiScale(imagemCinza, scaleFactor=1.5, minSize=(50, 50)) #pega a imagem que está passando na webcam e localiza as faces e as reconhece for (x, y, l, a) in facesDetectadas: imagemFace = cv2.resize(imagemCinza[y:y + a, x:x + l], (largura,altura)) 39 #reduzindo a imagem para 200X200 cv2.rectangle(imagem, (x, y), (x + l, y + a), (0, 0, 255), 2) id, confianca = reconhecedor.predict(imagemFace) cv2.putText(imagem, str(id), (x,y + (a+30)), font, 2,(0,0,255)) #visualizando a imagem capturada cv2.imshow("Face", imagem) cv2.waitKey(1) camera.release() cv2.destroyAllWindows() a = Reconhecedor()
Compartilhar