Reconhecimento facial usando o descritor VggFace

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.

Hardware Usado

CPU: Intel Core i7 7700-HQ

GPU: Nvidia GTX 1050Ti

Referências