Como funciona o reconhecimento facial?

Share on facebook
Share on twitter
Share on whatsapp
Share on linkedin

Se você tem curiosidade de entender como que os computadores conseguem reconhecer pessoas através da face, nesse artigo vamos explicar como isso é possível e tudo o que acontece quando o computador precisa comparar as fotos de duas pessoas.


No entanto, antes de mergulharmos no tópico de reconhecimento facial precisamos falar um pouco sobre inteligência artificial e uma das suas divisões: o aprendizado de máquina, que é o mecanismo que permite que computadores sejam capazes de reconhecer pessoas. 

Embora esse seja um assunto que envolve diversas questões técnicas, vamos tentar colocar todos os tópicos da forma mais simplificada possível, para que mesmo o leitor que não tenha qualquer familiaridade com computadores consiga compreender.


O que é inteligência artificial?

O assunto inteligência artificial começou a ganhar mais destaque nos últimos anos, deixando de ser uma expressão utilizada apenas por acadêmicos e profissionais da área para passar a ser comentado na televisão, internet e pelo público em geral.


De forma simplificada, inteligência artificial (IA) pode ser definida como a capacidade de máquinas (computadores) executarem funções cognitivas, que são geralmente associadas à mente humana, tais como o aprendizado e a solução de problemas. A lista a seguir apresenta alguns dos inúmeros usos da inteligência artificial:

  •  Compreensão da fala humana
  • Capacidade de jogar xadrez
  • Capacidade de dirigir um carro (carros autônomos)
  • Classificação do conteúdo de imagens
  • Interpretação de textos
  • Recomendação de produtos
  • Reconhecimento de faces

A inteligência artificial é divida em diversos tópicos e subtópicos. A Figura 01 a seguir apresenta algumas dessas divisões, com destaque para o Aprendizado Profundo, que é uma subdivisão do Aprendizado de Máquina.

Como veremos mais adiante, esse item é o principal responsável por dar aos computadores a capacidade de comparar rostos e identificar pessoas. 

Figura 01 – Divisões da Inteligência Artificial


Em um típico programa de computador que não faz uso do aprendizado de máquina os programadores dizem ao computador exatamente o que deve ser feito.

Vamos utilizar como exemplo o aplicativo do banco, que foi definido por programadores a reduzir do saldo na sua conta o mesmo valor da transferência que você fez para um amigo. Ou seja, nesse tipo de situação não existe nenhum aprendizado e o computador foi totalmente instruído sobre os passos a serem executados.


No entanto, para reconhecer rostos de forma satisfatória, o computador precisa aprender por conta própria a como fazer isso. Vamos ver a seguir como esse aprendizado funciona.

Como os computadores aprendem?

Para computadores conseguirem aprender, cientistas precisaram desenvolver algum meio para que isso fosse possível. A forma que se mostrou mais eficiente, e que teve início em 1944 na Universidade de Chicago, é o conceito chamado de Redes Neurais. 


Redes Neurais é uma replicação, através de software de computador e cálculos matemáticos, de como os cientistas entendem que o cérebro humano funciona. Ou seja, o conceito de redes neurais tenta levar para os computadores o funcionamento dos neurônios humanos.


A Figura 02 a seguir é a representação de uma rede neural (artificial) simples que usaremos para explicar o conceito.

Figura 02 – Rede neural artificial

Na figura acima, cada círculo é chamado de neurônio (artificial) e as setas representam as conexões entre esses neurônios que, de forma extremamente simplificada, é a replicação do funcionamento do cérebro humano.

Para que consigam aprender e executar tarefas cognitivas os neurônios armazenam um valor chamado de “peso” que vai se alterando à medida que o processo de aprendizado ocorre. 


De acordo com o problema a ser resolvido, uma rede neural pode apresentar desde alguns poucos neurônios até milhares deles. No entanto, independente da quantidade de neurônios, sempre existirá os neurônios de entrada (em vermelho), os intermediários (em azul) e os de saída (em verde), que irão apresentar um vetor (conjunto de números) com base no conhecimento (pesos intermediários) que ele adquiriu. 

Exemplo de aprendizado


Para exemplificar o conceito de redes neurais, vamos imaginar que um banco deseja analisar suas transações de cartão de crédito para conseguir dizer, em tempo real, se uma compra que você está fazendo é verdadeira ou é uma transação fraudulenta, de alguém que teve acesso aos dados do seu cartão. 


Para que os responsáveis pelo setor de fraude do banco consigam utilizar essa rede neural ela precisa ser ensinada. Para isso, o banco irá reunir todas as suas transações com cartão de crédito e separar entre transações verdadeiras e transações falsas (aquelas que você ligou informando que não havia comprado).

Para exemplificar, vamos supor que irão informar como Input (círculos vermelhos da Figura 02) o valor da compra, o horário, e o local (cidade/bairro ou Internet) e, além disso, irão informar para a rede neural quais são verdadeiras e quais são falsas.


De posse dessas informações, o programa de computador responsável pela rede neural irá ajustar os valores de P1, P2, P3 e P4 de forma que para as transações verdadeiras o número final no resultado (círculos verdes) seja maior em O1 do que em O2. Após esse procedimento ser finalizado, a rede neural estará com o aprendizado completo.


Quando você utilizar o seu cartão de crédito novamente, o banco irá passar para essa rede neural (que agora já foi ensinada), os mesmos parâmetros utilizados no treinamento (valor, horário e o local). A rede neural irá, então, informar os valores de O1 e O2. Caso o valor de O1 seja maior que o valor de O2, o banco poderá considerar que essa transação é verdadeira. No entanto, caso o valor de O2 seja maior, o banco poderá emitir um alerta para o setor responsável entrar em contato com você para perguntar se você está realmente realizando a compra. 


O exemplo que apresentamos acima é extremamente simplificado e serve apenas para compreensão do conceito. Esse tipo de uso de redes neurais é bastante comum, mas envolve tanto um número muito maior de informações como uma estrutura de rede neural maior. 

Fluxos de sistemas biométricos


Antes de explicarmos como redes neurais são utilizadas no reconhecimento facial precisamos relembrar como funcionam os fluxos de um sistema biométrico.
Um sistema biométrico, independente da modalidade (impressão digital, face, íris, voz, escrita, etc), pode ser dividido em 3 etapas:

  • Captura
  • Extração
  • Comparação

Captura


A etapa de captura é aquela na qual a amostra da biometria (imagem da impressão digital, imagem da face, áudio da voz, etc) é adquirida através de algum dispositivo adequado. Essa etapa, embora seja a mais simples para a maioria das modalidades biométricas, é extremamente importante, pois a captura de uma amostra de baixa qualidade irá influenciar negativamente na precisão durante as etapas seguintes. 


Extração

A Figura 03 a seguir representa o que acontece na etapa de extração.

Figura 03 – Extração de Características Biométricas

Após receber como entrada a amostra biométrica (imagem da impressão digital, imagem da face, imagem da íris, etc), o extrator de características (quadro azul na Figura 03) irá realizar o processamento e gerar como saída um Vetor de Características. Esse vetor é o que será utilizada na etapa de comparação, como veremos a seguir.


É importante destacar que a extração de características é única para cada modalidade biométrica, assim como o vetor de características. Para as modalidades biométricas apresentadas, a extração de características da impressão digital e da íris NÃO necessita de redes neurais. Já um extrator de características para reconhecimento facial deve fazer uso intenso desse recurso caso queira atingir um nível de precisão adequado.

Comparação

A etapa de comparação é aquela na qual os vetores de características são comparados através de cálculos matemáticos. Após os cálculos, uma pontuação é gerada, que diz o quão similares (pertencentes à mesma pessoa) os dois vetores de características são. Esse processo está representado na Figura 04 a seguir.

Figura 04 – Comparação Biométrica

O nível de complexidade dos cálculos matemáticos efetuados pelo comparador difere de acordo com a modalidade biométrica. Por exemplo, a comparação dos vetores de característica de faces e de íris é um processo geralmente executado com cálculos simples. Já o comparador de vetores de características de impressões digitais envolve diversas combinações matemáticas, aumentando sua complexidade. 

Reconhecimento facial e redes neurais


O leitor mais atento deve ter observado que colocamos as cores da Figura 03 compatíveis com as cores da rede neural de exemplo da Figura 02. Fizemos isso exatamente para demonstrar que, para o reconhecimento facial, a rede neural irá atuar como um extrator de características e que a sua camada de saída (círculos vermelhos) será exatamente o vetor de características que será utilizado pelo comparador para gerar uma pontuação de similaridade.


O tamanho da rede neural, assim como o número de elementos do vetor de características, é variável e cada empresa que fornece esse tipo de solução adota uma estratégia diference. Os tamanhos mais comuns de vetores de características para o reconhecimento facial são 128, 256, 512 e 1024. É importante, no entanto, destacar que um vetor de características maior não significa melhor qualidade ou maior precisão.


O aprendizado

Como vimos anteriormente, para que uma rede neural possa aprender ela precisa receber as informações de entrada e ser informada se o resultado final gerado está correto ou não. Ou seja, durante o aprendizado, a rede neural tenta diminuir o máximo possível a quantidade de erros que comete. 
A Figura 05 a seguir apresenta o fluxo de treinamento de uma rede neural para reconhecimento facial.

Figura 05 – Treinamento de Rede Neural para Reconhecimento Facial

Para que ocorra o aprendizado de uma rede neural cuja função é gerar um vetor de características que será utilizado para reconhecimento facial, o primeiro passo é a construção de uma base de dados de fotos.

Essa base de dados deverá conter um diverso número de pessoas e, para cada pessoa, deverá conter inúmeras imagens. 

Durante o treinamento, a rede neural irá receber 2 imagens (em sequência) da mesma pessoa (o Pelé, no exemplo acima) e irá gerar os vetores de características dessas fotos. O comparador irá então gerar a pontuação de similaridade. 

Em uma outra etapa, a rede neural irá receber 2 imagens de pessoas diferentes (Pelé e Maradona) e irá gerar os vetores de características que serão utilizados para gerar a pontuação de similaridade.


Após executar esse processo milhões de vezes para centenas de milhares de pessoas, com centenas ou milhares de fotos para cada pessoa, a rede neural terá conseguido fazer com o que a pontuação de similaridade seja MAIOR para fotos pertencentes à mesma pessoa e MENOR para fotos de diferentes pessoas. 


A comparação


Após terminado o aprendizado, essa rede neural será capaz de gerar vetores de características para pessoas que não estavam presentes na base de dados. Sua qualidade será proporcional à varidade de fotos e pessoas utilizadas durante o treinamento.

Por que se fala em “pontos da face”?

Um fato interessante quando se fala de reconhecimento facial é que algumas empresas qualificam seus produtos de reconhecimento facial pela quantidade de pontos da face que utilizam.

Ao longo do artigo, não falamos em nenhum momento sobre “pontos da face” e fica claro que não existe relação aparente entre essa expressão e a identificação facial.

Mas por que esse termo é tão utilizado então? Existem duas explicações. 

A primeira é que o tamanho de vetor de características é utilizado, erroneamente, como sinônimo de quantidade de pontos detectados na face. Além de ser uma afirmação incorreta já vimos que a precisão do reconhecimento facial não está ligada diretamente ao tamanho do vetor de características, ou seja, uma empresa que utiliza vetores de tamanho 256 pode apresentar melhor precisão de uma outra empresa que utiliza vetores de tamanho 1024.


A segunda explicação é que a maioria das fotos de divulgação de reconhecimento facial apresenta, para dar um ar mais futurístico, marcações de pontos e linhas na face, assim como a Figura 06 abaixo.

Figura 06 – Pontos na Face

Pelo fato de ser mais fácil de representar e dar um tom mais comercial às imagens, algumas empresas passaram a adotar essa qualificação de número de pontos.

Do ponto de vista comercial, é uma abordagem válida, mas do ponto de vista técnico já aprendemos que não existe relação entre número de pontos na face e a precisão do reconhecimento facial.

Esse foi um artigo mais longo e bastante denso em termos de conteúdo. Caso tenha ficado alguma dúvida, fique à vontade para entrar em contato conosco para entender mais.