ValidFace
Reconhecimento Facial aplicado a prevenção de fraudes
O Trabalho de Conclusão de Curso de Engenharia de Computação da Escola Politécnica da USP, no qual se propõe a criação de uma ferramenta para comprovar a titularidade de documentos com foto através do uso de tecnologias de reconhecimento facial.
Autores: Caio Augusto Silva Pires, Felipe Fernandes de Lima, Matheus de Almeida Orsi e Silva
Orientador: Jorge Luis Risco Becerra
Co-orientadores: Infosimples
Propósito
O sistema desenvolvido soluciona a validação de identidade por reconhecimento facial de baixo custo e integrável a outras plataformas digitais. Valida-se a identidade pela similaridade entre a fotografia e o documento, além de analisar os quadros em busca de vitalidade.
O projeto
Introdução
Vários sistemas necessitam validar dados cadastrais dos usuários recolhendo algum documento com foto, como é o caso de instituições financeiras, prestadores de serviços como energia, telefonia, internet. Contudo, pessoas mal intencionadas tentam burlar esses sistemas cometendo o crime de falsa identidade. Assim, com o intuito de reduzir esses casos de fraudes, o projeto propõe a validação de documentos através de reconhecimento facial e prova de vida.
O projeto tem como objetivo fornecer uma solução barata, eficiente utilizando ferramentas open source, constrastando com o que há disponível no mercado: ferramentas de alto custo e código fechado, caixas pretas. sem explicabilidade de resultados.
Aplicativo para verificação de documentos
Afim de testar o sistema desenvolvido, uma aplicação Android foi feita. O aplicativo fornece instruções de como posicionar a câmera e ajustar o ambiente para melhorar a acertividade do sistema.
O protótipo simula uma aplicação de casos de usos reais, nos quais os usuários, ao realizar um cadastro, precisam gravar seu rosto e mandar foto de um documento com foto.
Aplicação dos modelos de Machine Learning e cálculos
Nessa figura podemos ver o Front-end capturando as mídias, a gravação e a foto do documento, passando-as para o back-end.
Em seguida o modelo MTCNN encontra as faces nos quadros.
O OpenCV recebe os quadros da gravação e analisa o piscar de olhos e passa-se para o cálculo final da prova de vida.
No quadro vermelho, o FaceNet realiza a criação dos embeddings e, então, o cálculo da similaridade é feito pela distância euclidiana.
Por fim, os cálculos são retornados para o Front-end.
Desenvolvimento e Estratégias
Para o reconhecimento facial, selecionou-se uma rede neural de código aberto para avaliação. A rede FaceNet, mantida pela Google;
Essa rede realiza a transformação de faces em vetores chamados embeddings, cujo tamanho é de 128 elementos;
A verificação entre duas faces é realizada pela similaridade, podendo ser feita de três maneiras, todas calculando a distância vetorial;
Distância Euclidiana;
Produto escalar;
Cosseno.
Podemos ver em seguida algumas métricas de Distâncias Euclidianas entre embeddings de um data-set, CelebA, constituído de faces de famosos;
Dada a distribuição e a função probabilidade da função de similaridade entre as faces, escolhe-se um limite para o valor da Distância Euclidiana aceitável.
Os falsos positivos podem ser causados por luminosidade baixa, ângulo da face, cabelo afrente do rosto e acessórios como óculos e chapéus.
Para evitar isso, a estratégia tomada é o teste de similaridade da face avaliada contra uma base de testes. Caso haja similaridade com alguém da base, a face é um falso positivo, que é similar a qualquer face comparada.
Com o fluxograma funcional do projeto, podemos entender melhor a relação entre usuário, aplicativo e backend separados em camadas.
O projeto é de fácil aplicação em estrutura cloud. Na Figura se propõe uma infraestrutura servless onde o backend pode ser hospedado em um ambiente isolado pelo container Docker.