A tradutora Elena Bornovolokova, especificamente para Netology, adaptou um artigo de Fayzan Shaykh sobre como criar um modelo de reconhecimento de rosto e em que áreas ele pode ser aplicado.1. Introdução
Nos últimos anos, a visão computacional ganhou popularidade e se destacou em uma direção separada. Os desenvolvedores estão criando novos aplicativos que são usados em todo o mundo.
Nesse sentido, sou atraído pelo conceito de código aberto. Até os gigantes da tecnologia estão prontos para compartilhar novas descobertas e inovações com todos, para que a tecnologia não permaneça como privilégio dos ricos.
Uma dessas tecnologias é o reconhecimento facial. Quando usada corretamente e eticamente, essa tecnologia pode ser aplicada em muitas áreas da vida.
Neste artigo, mostrarei como criar um algoritmo eficaz de reconhecimento de rosto usando ferramentas de código aberto. Antes de passar para essas informações, quero que você se prepare e se inspire assistindo a este vídeo:
Reconhecimento Facial: Aplicações Potenciais
Aqui estão algumas áreas potenciais de aplicação da tecnologia de reconhecimento de rosto.
Reconhecimento facial em redes sociais . O Facebook substituiu a marcação manual de imagens por sugestões de tags geradas automaticamente para cada imagem carregada na plataforma. O Facebook usa um algoritmo simples de reconhecimento de face para analisar os pixels da imagem e compará-lo com seus respectivos usuários.
Reconhecimento facial em segurança . Um exemplo simples de uso da tecnologia de reconhecimento de rosto para proteger dados pessoais é desbloquear seu smartphone "na cara". Essa tecnologia também pode ser implementada no sistema de acesso: uma pessoa olha para a câmera e determina se ela deve ser inserida ou não.
Reconhecimento facial para contar o número de pessoas . A tecnologia de reconhecimento de rosto pode ser usada para contar o número de pessoas que participam de um evento (como uma conferência ou concerto). Em vez de contar manualmente os participantes, instalamos uma câmera que pode capturar imagens dos rostos dos participantes e fornecer o número total de visitantes. Isso ajudará a automatizar o processo e economizar tempo.

Configuração do sistema: Requisitos de hardware e software
Considere como podemos usar a tecnologia de reconhecimento de rosto entrando em contato com as ferramentas de código aberto disponíveis para nós.
Usei as seguintes ferramentas que recomendo:
- Webcam (Logitech C920) para a construção de um modelo de reconhecimento facial em tempo real em um laptop Lenovo E470 ThinkPad (Core i5 7th Gen). Você também pode usar a câmera ou a câmera de vídeo embutida do seu laptop com qualquer sistema adequado para análise de vídeo em tempo real, em vez dos que eu usei.
- É preferível usar um processador gráfico para um processamento de vídeo mais rápido.
- Usamos o sistema operacional Ubuntu 18.04 com todo o software necessário.
Antes de prosseguir com a construção do nosso modelo de reconhecimento facial, analisaremos esses pontos com mais detalhes.
Etapa 1: configuração do hardware
Verifique se a câmera está configurada corretamente. Com o Ubuntu, isso é simples: veja se o dispositivo é reconhecido pelo sistema operacional. Para fazer isso, execute as seguintes etapas:
- Antes de conectar a webcam ao laptop, verifique todos os dispositivos de vídeo conectados, digitando
ls /dev/video*
no prompt de comando. Como resultado, uma lista de todos os dispositivos de vídeo conectados ao sistema é exibida. 
- Conecte a webcam e emita o comando novamente. Se a webcam estiver conectada corretamente, o novo dispositivo será refletido como resultado do comando.

- Você também pode usar o software da webcam para verificar seu funcionamento correto. O Ubuntu pode usar o programa Cheese para isso.

Etapa 2: configuração do software
Etapa 2.1: Instale o PythonO código neste artigo foi escrito usando Python (versão 3.5). Para instalar o Python, recomendo usar o
Anaconda , uma distribuição popular do Python para processar e analisar dados.
Etapa 2.2: Instale o OpenCVO OpenCV é uma biblioteca de código aberto projetada para criar aplicativos de visão computacional. A instalação do OpenCV é feita usando o
pip
:
pip3 install opencv-python
Etapa 2.3: definir a API face_recognitionUsaremos a
face_recognition API
, que é considerada a API de reconhecimento de faces Python mais fácil do mundo. Para instalar, use:
pip install dlib pip install face_recognition
Implementação
Após a configuração do sistema, prosseguimos para a implementação. Para começar, criaremos um programa e explicaremos o que fizemos.
Passo a passo
Crie um arquivo
face_detector.py
e copie o código abaixo:
Em seguida, execute este arquivo Python digitando:
python face_detector.py
Se tudo funcionar corretamente, uma nova janela será aberta com o modo de reconhecimento de rosto iniciado em tempo real.
Para resumir e explicar o que nosso código fez:
- Primeiro, indicamos o hardware no qual o vídeo será analisado.
- Em seguida, fizemos uma captura de vídeo em tempo real, quadro a quadro.
- Em seguida, cada quadro foi processado e a localização de todas as faces da imagem foi extraída .
- Como resultado, esses quadros foram reproduzidos na forma de um vídeo, juntamente com uma indicação de onde os rostos estão localizados.
Exemplo de aplicação de reconhecimento de rosto
Isso não é tudo que acaba a diversão. Faremos mais uma coisa interessante: criaremos um exemplo completo de aplicativo com base no código acima. Faremos pequenas alterações no código e tudo estará pronto.
Suponha que você deseje criar um sistema automatizado usando uma câmera de vídeo para rastrear onde o alto-falante está localizado no momento. Dependendo da sua posição, o sistema gira a câmera para que o alto-falante permaneça sempre no centro do quadro.
O primeiro passo é criar um sistema que identifique a pessoa ou pessoas no vídeo e se concentre na localização do orador.

Vamos descobrir como fazer isso. Como exemplo, selecionei um vídeo no YouTube com um discurso dos palestrantes da conferência DataHack Summit 2017.
Primeiro, importe as bibliotecas necessárias:
import cv2 import face_recognition
Então lemos o vídeo e definimos a duração:
input_movie = cv2.VideoCapture("sample_video.mp4") length = int(input_movie.get(cv2.CAP_PROP_FRAME_COUNT))
Depois disso, criamos um arquivo de saída com a resolução e taxa de quadros necessárias semelhantes às do arquivo de entrada.
Carregamos a imagem do alto-falante como uma amostra para reconhecê-la no vídeo:
image = face_recognition.load_image_file("sample_image.jpeg") face_encoding = face_recognition.face_encodings(image)[0] known_faces = [ face_encoding, ]
Terminado, iniciamos o ciclo, que será:
- Extrair quadro do vídeo.
- Encontre todos os rostos e identifique-os.
- Crie um novo vídeo que combine o quadro original com o local do rosto do falante com uma assinatura.
Vamos dar uma olhada no código que irá executar isso:
O código fornecerá esse resultado:
Dos editores
Cursos de netologia sobre o tema: