Blog

Postado em em 18 de abril de 2023

Reconhecimento Facial com Deepface – Python

Você sabe como construir um código para fazer o reconhecimento facial com Deepface no Python? É muito simples, aprenda nesta aula!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala Impressionadores! Na aula de hoje eu quero te mostrar como funciona o Reconhecimento Facial com Python.

Para essa aula nós vamos utilizar a biblioteca DeepFace no Python, além do OpenCV e da biblioteca Pandas. Com isso nós vamos conseguir fazer o reconhecimento de emoções com Python e o reconhecimento de idade com Python utilizando o DeepFace.

É claro que a qualidade da imagem vai interferir no resultado, mas você vai notar que os resultados são exatos ou bem próximos.

Você vai poder utilizar esse reconhecimento de imagens com Python em diversos projetos, inclusive vou falar sobre a documentação da biblioteca que é onde você pode visualizar tudo o que ela pode fazer e como usar cada ferramenta.

E aí vamos aprender como o DeepFace funciona e como você pode utilizá-lo para analisar suas imagens?

Para começar vamos usar uma biblioteca do Python chamada Deepface, essa biblioteca reúne várias soluções de reconhecimento facial, ela pode comparar duas fotos para dizer se são ou não a mesma pessoa, reconhecer idade, expressão do rosto, etc.

Vamos utilizar o reconhecimento da idade e da expressão, para iniciarmos o primeiro passo é instalar as bibliotecas Deepface e opencv e o pandas (o Deepface precisa do Pandas para rodar).

>pip install opencv-python deepface pandas

Passo a passo

import cv2

from deepface import Deepface

Após importar vamos ter 3 passos importantes:

# ler a nossa imagem

# passar a imagem para a Deepface

# ver os resultados da análise

Código

import cv2

from deepface import Deepface

# ler a nossa imagem

imagem = cv2.imread("img2.jpg")

# passar a imagem para a Deepface

resultado = DeepFace.analyze(imagem, actions=("age", "emotion"))

# ver os resultados da analise

print(resultado)
action - opções
action – opções

Antes de dar o resultado, o código pode demorar um pouco, principalmente se for a primeira vez que você estiver usando.

Assim que ele te entrega o resultado, você vai observar que este resultado é uma sequência de informações, primeiro ele passa a idade e depois os locais da imagem que ele usou para chegar a esta conclusão.

Em seguida como resultado da expressão, ele te passa uma sequência de probabilidades de ser as expressões que ele tem disponíveis em sua base, por último ele te aponta a expressão com a maior probabilidade de ser.

resultado
resultado

As previsões sempre vão dar certo?

É importante para um bom resultado que a foto esteja com uma boa iluminação, que o rosto não esteja virado, etc. Esse são fatores que vão impactar na capacidade que o programa tem de analisar os pontos da imagem.

Reconhecimento Facial com Deepface
imagens nítidas

Você pode também passar para o código mais um parâmetro chamado enforce_detection=False, passando este parâmetro você força o código a gerar um resultado mesmo que ele tenha dificuldade em reconhecer a imagem, é uma forma de não resultar em erro.

# passar a imagem para a Deepface

resultado = DeepFace.analyze(imagem, actions=("age", "emotion"), enforce_detection=False)

Como funciona o reconhecimento da imagem?

Reconhecimento Facial com Deepface
reconhecimento das imagens

Se olharmos a documentação vamos ver que existem diversos modelos que fazem esse reconhecimento, inclusive é levado em consideração a capacidade que um ser humano possui de fazer a previsão baseado na imagem, essa capacidade foi considerada menor do que a capacidade do programa.

Processo de reconhecimento

Essa análise acontece por um processo que se chama Convolution neural network, você pode pesquisar por este termo no Google…

Ele faz esse reconhecimento de uma forma muito parecida com a forma feita pelo nosso olho, essencialmente temos diversos sensores em nossa vista, alguns para detectar o brilho, as cores, os formatos, etc.

Então cada camada é responsável por um detectar um aspecto, o que o programa faz é imitar esse processo, ele analisa a imagem por partes, passando por várias camadas de comandos que analisam cada aspecto de forma similar ao nosso olho.

E como aplicar o código para analisar várias imagens de uma vez?

Vamos importar mais uma biblioteca -> import os. Feito isso vamos listar as imagens usando o listdir (vai listar tudo que tem em um diretório).

Como não queremos fazer o reconhecimento em todos os arquivos somente nas imagens jpg vamos usar o if para criar uma condição e o FOR para executar um loop de repetição, assim analisaremos todas as imagens jpg.

Código Final

import cv2

from deepface import Deepface

import os

arquivos = os.listdir()

for arquivo in arquivos:

  if "jpg" in arquivo:

    #ler a nossa imagem

    imagem = cv2.imread("arquivo")

    # passar a imagem para a Deepface

    resultado = DeepFace.analyze(imagem, actions=("age", "emotion"), enforce_detection=False)

    # ver os resultados da analise

    print(resultado)

Pronto, agora você pode colocar quantas imagens quiser analisar, procure tirar boas fotos e faça testes para conhecer a capacidade desta ferramenta.

Conclusão – Reconhecimento Facial com Deepface

Hoje é muito comum que os aplicativos e sites tenham que trabalhar com reconhecimento facial, na maior parte das vezes vão utilizar a foto em um cadastro para poder aumentar os níveis de segurança do aplicativo ou site.

Geralmente esse recurso é encontrado em bancos, portarias de prédios, sites diversos, segurança, etc. Mas, você já sabia como esse recurso funciona?

Pensando nisso, trouxe a explicação sobre a biblioteca Deepface do Python responsável por essa detecção e reconhecimento facial, sugiro a vocês que consultem a documentação para saber todas as possibilidades dessa ferramenta incrível!

Eu fico por aqui! Até a próxima! Um abraço,

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer ter acesso a um Minicurso de Finanças no Excel de forma 100% gratuita? Preencha seu e-mail abaixo!