Público alvo: Estudante de Machine Learning 🎓 - Objetivo: Demonstrar Machine Learning - Tempo leitura: 00:09:30 mins - Idioma : [EN]
1 CONCEITOS DE FORMA SIMPLES
- Reconhecimento Facial
É a técnica de capturar/pegar em uma imagem a parte frontal do rosto/face que envolve parte da cabeça, testa, olhos, nariz, maças do rosto, bochechas, boca, maxilar, queixo, analisar a distância entre cada uma destas partes, comparar com outras imagens, identificar diferenças, comparar similaridades e exibir o alvo desejado.
A imagem considerada pode ser uma foto, vídeo ou câmera.
O alvo desejado é o ser humano que será identificado.
- Machine Learning
Machine Learning é o objeto de estudo neste projeto. É a técnica computacional de ensinar uma máquina com determinado poder computacional a analisar um conjunto de dados e predizer informações para auxiliar nas decisões.
Esta técnica pode ser utilizada para tentar resolver qualquer tarefa -da mais simples a mais complexa.
- Deep Learning
É a técnica computacional que analisa muito detalhadamente determinadas características de imagem para auxiliar a identificar quem a imagem pertence.
- Neural Network
É um algoritmo computacional que aprende com novos dados inseridos, simulando o cérebro humano.
Exemplo: Programar um computador para aprender todos os detalhes de forma e formato de um determinado rosto, ao inserimos outros rostos ele automaticamente armazenara as suas formas e formatos e a partir dai conseguiremos extrair a quem pertence determinado rosto
2 MACHINE LEARNING + WEBCAM - A ESCOLHA
- Machine Learning como back-end de webcam
Demonstrar o funcionamento de machine learning no reconhecimento facial através de uma webcam, para mim, é a forma mais fácil de explicar na prática a qualquer pessoa, que é possivel incluir uma inteligência em uma máquina com determinado poder computacional. Neste caso utilizei o conhecido Reconhecimento Facial em Tempo Real.
- As bibliotecas de algoritmos a seguir foram ensinadas no treinamento Data Science do Zero e demonstraram eficiência satisfatória, mesmo assim consultei diversas documentações, explicações e exemplos em sites voltados a data science para cumprir este desafio. Os algoritmos principais são :
- OpenCV
- MTCNN
- PIL
- numpy
- keras
- LabelEncoder
- svm-SVC
- Standardization
- Normalizer
- pickle
Fontes de Estudo : edureka, medium, stack overflow, towards data science
3 INFORMAÇÕES TÉCNICAS
- Tecnologias utilizadas neste projeto
- Linguagem de programação : python 3.7.7
- Python Package Index -pip : versão 20.1.1
- Visual Studio Code : Version: 1.46.0 (user setup) Electron: 7.3.1
- OS : Windows_NT x64 10.0.18363 (Windows 10 Home)
- CPU : Intel(R) Corel(TM) i3-4005U CPU @ 1.70GHz 1.70 GHz
- RAM : 8GB
- SSD : 225GB
- Browser : Chrome: 78.0.3904.130
- Plataforma Front de Desenvolvimento : Jupyter notebook 4.6.3
- Plataforma Back de Desenvolvimento : miniconda-conda 4.8.3
- Algoritmos de visão computacional para
- Acessar a webcam local do computador, notebook
- Exibir a imagem em tempo real através da webcam
- Algoritmos deep learning e neural networks mtcnn 0.1.0 para
- Aplicar na imagem capturada diversos cálculos de reconhecimento de forma e formato
- Disponibilizar resultado dos cálculos aos algoritmos machine learning
- Utilizando as técnicas Machine Learning vamos :
- Calcular o Embedding da imagem
- Aplicar Standardization
- Aplicar Normatization com Normalizer da sklearn
- Converter os dados categóricos em numéricos com o LabelEncoder
- Executar treinamento de reconhecimento facial do algoritmo SVC da sklearn.svm
- Utilizar o algoritmo de predição svm nos dados de treino e teste
- Aplicar o cáculo de acurácia/precisão do algoritmo accuracy_score da sklearn.metrics
- Calcular as coordenadas da face
- Utilizar o método de predição do modelo facenet_keras.h5 na imagem visualizada pela webcam
- Aplicar o método Normalizer l2
- Utilizar a inversão do LabelEncoder
- Exibir o resultado da identificação no algoritmo OpenCV pela webcam
4 PRE-REQUISITOS PARA FUNCIONAMENTO DO SISTEMA
- Instalar as plataformas de desenvolvimento
- Instalar miniconda3
- Instalar jupyter notebook
- Instalar visual studio code
Nota:
Analisar o item Tecnologias utilizadas neste projeto - Instalar as bibliotecas de algoritmos
- Atualizar o instalador pip - python package index 💻 python3 -m pip install --upgrade pip
- Recomendo utilizar o prompt/terminal do anaconda e/ou miniconda para instalar as bibliotecas, por ser mais prático e apresentar menos inconsistências.
- Sintaxe para instalar bibliotecas : pip3 install [nome_biblioteca] --user
- Desbloquear sua webcam em seu anti-virus e/ou firewall
Biblioteca | Objetivo |
---|---|
pandas | Estrutura de dados e ferramentas de análise de dados |
numpy | Algoritmos para cálculos matemáticos e computação científica |
opencv-contrib-python | Algoritmos de visão computacional |
scikit-learn | Algoritmos para classificação, regressão, agrupamento, dimensionalidade, validações, melhorias na precisão de predições, preprocessamentos, normalizações, etc |
scipy | Cálculos científicos com numpy |
keras | É uma interface de aplicação de programação desenvolvida para seres humanos, não para máquinas |
Pillow | Biblioteca com algoritmos para ler, escrever, criar, inserir, converter, cortar, redimensionar imagens |
mtcnn | Algoritmos para reconhecimento facial -Face Recognition |
tensorflow | APIs intuitivas de nível superior e construção flexível de modelos em qualquer plataforma |
5 GUIA DE INSTALAÇÃO DO SISTEMA
- Cumprir o item 4 PRE-REQUISITOS PARA FUNCIONAMENTO DO SISTEMA
- Baixar o notebook facenet-keras-mtcnn-labelencoder.ipynb
- Baixar os arquivos facenet_keras.part1.rar a facenet_keras.part4.rar. Nestes há o arquivo modelo treinado facenet_keras.h5
- Baixar o arquivo dataset.rar. Neste há imagens diversas para utilizar em seus treinos e testes
Nota : Consultar documentação DESCOMPACTAR O CONTEÚDO DOS ARQUIVOS EXTENSÃO .rar - WINRAR
Importante : Disponibilizei os arquivos .py caso queira testar com vscode, pycharm, spyder ou em outros IDEs
6 PROCEDIMENTOS DE COMO UTILIZAR O SISTEMA
- Criar estrutura de diretório, para armazenar os arquivos disponibilizados neste repositório. A seguir um modelo de estrutura como orientação :
c:/temp/facenet/ : colocar aqui o conteudo do arquivo dataset.rar, que esta na em files c:/temp/facenet/ : colocar aqui o conteudo do arquivo facenet_keras.rar, que esta em files c:/temp/facenet/facerecognition : os arquivos serão criados no rotina de treinamento do modelo
- Fazer o download do arquivo facenet_keras.rar e descompactar no diretorio facenet
- Abrir o notebook facenet-keras-mtcnn-labelencoder.ipynb no jupyter notebook e executar procedimentos a seguir :
- Na class RegisterImg : substituir conteúdo da variável self.grv_img pelo local em que o conteúdo do dataset.rar foi gravado
- Na class FaceTrainer : substituir conteúdo da variável self.datasetpath pelo local em que o conteúdo do dataset.rar foi gravado
- Na class FaceTrainer : substituir conteúdo da variável self.faces_npz pelo local em que o conteúdo do dataset.rar foi gravado(*)
- Na class FaceTrainer : substituir conteúdo da variável self.keras_facenet pelo local em que o conteúdo dos arquivos .rar foram gravados(**)
- Na class FaceTrainer : substituir conteúdo da variável self.faces_embeddings pelo local em que você criou o diretório facerecognition(*)
- Na class FaceTrainer : substituir conteúdo da variável self.svm_classifier pelo local em que você criou o diretório facerecognition(*)
- Na class FaceDetector : substituir conteúdo da variável self.facenet_model pelo local em que o conteúdo dos facenet_kerasX.rar foram gravados
- Na class FaceDetector : substituir conteúdo da variável self.svm_model pelo local em que você criou o diretório facerecognition
- Na class FaceDetector : substituir conteúdo da variável self.data pelo local em que você criou o diretório facerecognition
Nota : (*) Manter a extensão .npz; (**) Manter o nome e a extensão do arquivo;
- Executar as 5 linhas de códigos
- A linha com os códigos a seguir apresentará uma nova linha solicitando algumas informações
if __name__ == "__main__": os.system('cls') menu = MainMenu() menu.menu_inicial()
- Para gravar sua imagem no conjunto de dados, digitar 1 no campo seguido de >> :
- No campo 'Número Matrícula -> ', digitar o número da matricula
- No campo 'Nome Completo -> ', digitar o primeiro nome de quem esta sendo filmado
- O sistema se conectará em sua webcam, para lhe filmar. A luz de sua webcam ligará e uma janela com sua imagem será habilitada em sua barra de taferas
Nota : Na parte superior desta janela há informação para pressionar ENTER para gravar ou ESC para Finalizar
Importante : Pressione ESC para sair, caso queira executar uma das outras tarefas
- No campo 'Número Matrícula -> ', digitar o número da matricula
- Para treinar o algoritmo com a nova imagem, digitar 2. O sistema exibirá uma imagem similar a seguinte :
Note : O sistema
1. criara os arquivos faces_dataset_embeddings.npz e SVM_classifier.sav no diretório facerecognition
2. criara o arquivo faces_dataset.npz no diretório dataset
3. finalizara e retorna ao menu principal - Para identificar a pessoa através da webcam digitar 3. O sistema ativará a webcam e iniciará o reconhecimento da face. Exibirá janela similar a seguinte :
- Para finalizar o sistema, digite 0 (zero). Uma janela similar a seguinte deverá aparecer :
7 RESULTADOS
- Acurácia
Representa . . .
- Precisão
É a . . .
8 FONTES DE ESTUDO
9 AGRADECIMENTOS
*Ser agradecido para mim é a atitude que torna as pessoas seres melhores*
Agradeço a mulher mais importante da minha vida, a minha mãe sra Rosalita Borges Evangelista por ter sido uma lutadora incansável, lutando por mim, para mim e comigo e também com meus irmãos. Minha mãe é o motivo de eu me tornar um ser humano honrado.
Agradeço aos meus dois irmãos que me ajudaram nos momentos em que mais precisei.
Agradeço à minha esposa e às minhas duas filhas por serem minha razão, emoção e inspiração e por me apoiar em todos os momentos.
Agradeço aos criadores do computador, da internet, das linguagens de programação computacional, inteligência artificial e tecnologias em geral.
Agradeço à equipe Minerando Dados por criar o espaço Data Sciente do Zero, disponibilizando diversos ensinamentos em machine learning, estatísticas, deep learning e data science, para acelerar meu aprendizado e por este desafio proposto que acabei de concluir.
Muito obrigado a todos 😉
Desejo muito sucesso a todos !