- Pré-requisitos
- Como funciona o reconhecimento facial com OpenCV
- Detecção de rosto usando classificadores em cascata em OpenCV
O reconhecimento facial está se tornando cada vez mais popular e a maioria de nós já o está usando sem perceber. Seja uma simples sugestão de tag do Facebook ou filtro Snapchat ou uma vigilância avançada de segurança de aeroporto, o Face Recognition já trabalhou sua mágica nisso. A China começou a usar o Reconhecimento Facial nas escolas para monitorar a frequência e o comportamento dos alunos. As lojas de varejo começaram a usar o Face Recognition para categorizar seus clientes e isolar pessoas com histórico de fraude. Com muito mais mudanças em andamento, não há dúvida de que essa tecnologia seria vista em todos os lugares no futuro próximo.
Neste tutorial, aprenderemos como podemos construir nosso próprio sistema de reconhecimento facial usando a biblioteca OpenCV no Raspberry Pi. A vantagem de instalar este sistema no Raspberry Pi portátil é que você pode instalá-lo em qualquer lugar para funcionar como sistema de vigilância. Como todos os sistemas de reconhecimento facial, o tutorial envolverá dois scripts python, um é um programa Trainer que irá analisar um conjunto de fotos de uma pessoa em particular e criar um conjunto de dados (arquivo YML). O segundo programa é o programa Reconhecedorque detecta um rosto e, em seguida, usa esse arquivo YML para reconhecer o rosto e mencionar o nome da pessoa. Ambos os programas que discutiremos aqui são para Raspberry Pi (Linux), mas também funcionarão em computadores Windows com pequenas alterações. Já temos uma série de tutoriais para iniciantes para começar a usar o OpenCV, você pode verificar todos os tutoriais do OpenCV aqui.
Pré-requisitos
Como dito anteriormente, usaremos a Biblioteca OpenCV para detectar e reconhecer rostos. Portanto, certifique-se de instalar a Biblioteca OpenCV no Pi antes de prosseguir com este tutorial. Além disso, alimente seu Pi com um adaptador 2A e conecte-o a um monitor por meio de um cabo HDMI, já que não poderemos obter a saída de vídeo por meio de SSH.
Além disso, não vou explicar como funciona exatamente o OpenCV, se você estiver interessado em aprender processamento de imagens, verifique os fundamentos do OpenCV e os tutoriais avançados de processamento de imagens. Você também pode aprender sobre contornos, detecção de blob, etc. neste tutorial de segmentação de imagens.
Como funciona o reconhecimento facial com OpenCV
Antes de começar, é importante entender que a detecção de rosto e o reconhecimento de rosto são duas coisas diferentes. Na detecção de rosto, apenas o rosto de uma pessoa é detectado, o software não terá ideia de quem é essa pessoa. No Face Recognition, o software não detectará apenas o rosto, mas também reconhecerá a pessoa. Agora, deve ficar claro que precisamos realizar a detecção de rosto antes de realizar o reconhecimento de rosto. Não seria possível para mim explicar como exatamente o OpenCV detecta um rosto ou qualquer outro objeto para esse assunto. Então, se você está curioso para saber, pode seguir este tutorial de Detecção de Objetos.
Um feed de vídeo de uma webcam nada mais é do que uma longa sequência de imagens estáticas sendo atualizadas uma após a outra. E cada uma dessas imagens é apenas uma coleção de pixels de diferentes valores reunidos em suas respectivas posições. Então, como um programa pode detectar um rosto a partir desses pixels e reconhecer ainda mais a pessoa nele? Existem muitos algoritmos por trás disso e tentar explicá-los está além do escopo deste artigo, mas como estamos usando a biblioteca OpenCV, é muito simples realizar o reconhecimento facial sem nos aprofundarmos nos conceitos
Detecção de rosto usando classificadores em cascata em OpenCV
Somente se formos capazes de detectar um rosto, seremos capazes de reconhecê-lo ou lembrá-lo. Para detectar um objeto como rosto, o OpenCV usa algo chamado Classificadores. Esses classificadores são conjuntos de dados pré-treinados (arquivo XML) que podem ser usados para detectar um objeto específico em nosso caso, um rosto. Você pode aprender mais sobre Classificadores de detecção de rosto aqui. Além de detectar o rosto, os classificadores podem detectar outros objetos como nariz, olhos, placa do veículo, sorriso etc. A lista de classificadores de caso pode ser baixada do arquivo ZIP abaixo
Classificadores para detecção de objetos em Python
Alternativamente, o OpenCV também permite que você crie seu próprio classificador, que pode ser usado para detectar qualquer outro objeto em uma imagem, treinando seu classificador Cascade. Neste tutorial, usaremos um classificador chamado “haarcascade_frontalface_default.xml” que detectará o rosto da posição frontal. Vamos ver