Resgatando uma das atividades realizadas durante a graduação (não espere padrão de projetos)
Reconhecimento facial usando o descritor VggFace, juntamente com o extrator de rosto Ultra-Light. A origem de ambos pode ser encontrada nas referências, no entanto, foram feitas modificações no código do extrator de face e um algoritmo foi criado através da saída do descritor de face.
A base de dados utilizada para teste foi Labeled Faces in the Wild
O diretório da base deve estar estruturado da seguinte forma:
---- BaseDeDados
|
------- lwf
|
-------- nome1
|
-------- nome2
|
-------- nome3
|
-------- ...
|
-------- nome N
No diretório o arquivo estruturabase.zip é um exemplo da estrutura
- O arquivo precomputes features using vgg face.py é usado para percorrer a base de dados com todas as faces e gerar os vetores de caracteristicas com a vggface, após é gerado e salvo um vetor média (com bases muito grandes isto terá de ser revisto) dos descritores de cada face juntamente com o nome da face da base e salvo em um .pkl.
- O arquivo realtime.py carrega o .pkl e usa o extrator de faces citado na referência para extrair a face em tempo real, pela webcam, onde esta extração passa pela vggface e o vetor gerado é classificado pelo vetor com a menor distãncia disponivel no .pkl caso essa distãncia obedeça um limiar minimo.
Caso utilize o ambiente conda o arquivo ambiente.yml contém todo o ambiente configurado para utilizar a implementação. Basta realizar o seguinte comando no prompt anaconda:
conda env create -f reconhecimentoFacialVGGFace.yml
Para maiores informações dos códigos aproveitados verifique as referências.
CPU: Intel Core i7 7700-HQ
GPU: Nvidia GTX 1050Ti