Aula 02 – Python – Biblioteca Face Recognition – Localizando rostos
Aula 02 – Python – Face Recognition – Reconhecimento facial
Biblioteca Face Recognition – Localizando rostos
Voltar para página principal do blog
Todas as aulas desse curso
Aula 01 Aula 03
Código da aula:
https://github.com/toticavalcanti/codigo-fluente-face-recognition-tutorial
Documentação oficial do Face Recognition:
https://github.com/ageitgey/face_recognition
Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook
Link do código fluente no Pinterest
Meus links de afiliados:
Hostinger
Digital Ocean
One.com
Biblioteca Face Recognition – Localizando rostos em imagens
Para os exemplos, você mesmo pode preparar suas imagens para testar, ou usar as imagens que eu usei.
Além dos scripts de exemplos, temos uma pasta chamada img, no mesmo nível dos scripts.
Dentro dela temos 3 pastas: groups, known e unknown.
A groups tem fotos de pessoas reunidas.
Em known temos pessoas cadastradas digamos assim, pessoas que conhecemos e sabemos seus nomes.
E em unknown, tem as fotos que queremos que o face_recognition reconheça a partir das fotos contidas na pasta know.
Face Locations
No exemplo 01, e nos próximos também, usaremos a face_locations.
face_recognition.api.face_locations (img, number_of_times_to_upsample = 1, model = ‘hog’)
Retorna uma matriz de caixas delimitadoras de rostos humanos em uma imagem.
Parâmetros:
img – Uma imagem (como uma matriz numpy)
number_of_times_to_upsample – Quantas vezes é para aumentar a amostra da imagem procurando rostos. Números mais altos encontram rostos menores.
model – Qual modelo de detecção de rosto usar. O “hog” é menos preciso, mas, mais rápido nas CPUs. “Cnn” é um modelo de aprendizado profundo bem mais preciso, acelerado por GPU / CUDA (se disponível). O padrão é “hog”.
Retorno:
Uma lista de tuplas de com coordenadas (superior, direita, inferior, esquerda) das faces encontradas na imagem.
Vamos ao exemplo 01 countFacesInImage.py:
import face_recognition
# load the images as a numpy array
image = face_recognition.load_image_file('./img/groups/team2.jpg')
# get the locations of the faces in image
face_locations = face_recognition.face_locations(image)
# Array of coords of each face
print(face_locations)
print(f'Existem {len(face_locations)} pessoas nessa imagem')
Face Encoding
No exemplo 02 iremos usar o face_recognition.api.face_encodings
face_recognition.api.face_encodings (face_image, known_face_locations = None, num_jitters = 1, model = ‘small’)
Dada uma imagem, o face_encodings retorna uma versão da imagem com 128 dimensões.
Parâmetros:
face_image – é a imagem que contém uma ou mais faces.
known_face_locations – Opcional – as caixas delimitadoras de cada face, se você já as conhece.
num_jitters – Quantas vezes será feito o re-sample da imagem, ao calcular a codificação. Quanto maior o número, mais preciso, porém, mais lento (ou seja, 100 é 100x mais lento)
model – Opcional – qual modelo usar. “Grande” (padrão) ou “pequeno”, que retorna apenas 5 pontos, mas é mais rápido.
Retorno:
Uma lista com as codificações das imagens de face em uma versão com 128 dimensões.
Exemplo 02 countFacesInImage.py:
import face_recognition
fernanda_image = face_recognition.load_image_file('./img/known/fernanda_montenegro.jpg')
# face_encodings encode an image at 128 dimentions
fernanda_face_encoding = face_recognition.face_encodings(fernanda_image)[0]
unknown_image = face_recognition.load_image_file('./img/unknown/fernanda-600x398.jpg')
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]
# Compare faces
results = face_recognition.compare_faces(
[fernanda_face_encoding], unknown_face_encoding)
if results[0]:
print('Essa é a Fernanda Montenegro')
else:
print('Essa NÃO é a Fernanda Montenegro')