Este projeto utiliza Streamlit e DeepFace para criar uma aplicação de reconhecimento facial. Abaixo está a documentação dos principais arquivos Python presentes na pasta app/.
Dentro da pasta raiz do projeto, ou seja, a que possui app/, .gitignore, README.md e requirements.txt, rode:
pip install -r requirements.txtsudo apt-get updatesudo apt install libgl1Arquivo principal da aplicação Streamlit para reconhecimento facial.
Comando para rodar aplicação:
streamlit run main.py- Cria a navegação entre as páginas do frontend usando
st.navigation. - Executa a página selecionada com
page.run().
Módulo principal de reconhecimento facial. Utiliza a biblioteca DeepFace para extrair características faciais e realizar comparações.
Engine de reconhecimento facial que gerencia extração de características e comparação de faces.
-
Atributos:
fr_model (str): Modelo usado para reconhecimento facial (Facenet por padrão).fd_model (str): Modelo usado para detecção facial (centerface por padrão).threshold (float): Limiar de similaridade para considerar faces como matching.
-
Métodos:
__init__: Inicializa o engine de reconhecimento facial com modelos padrão.match_faces(img1, img2): Compara duas imagens e verifica se são da mesma pessoa.- Parâmetros:
img1,img2(arquivos upados) - Retorno:
bool(True se forem da mesma pessoa, False caso contrário)
- Parâmetros:
__extract_template(img, num_img): Extrai o template (template) facial de uma imagem usando DeepFace.- Parâmetros:
img(array numpy),num_img(índice da imagem) - Retorno:
listde templates - Exceção:
NoFacesExceptionse nenhuma face for detectada
- Parâmetros:
__check_single_face_detected(templates, num_img): Verifica se apenas uma face foi detectada na imagem.- Parâmetros:
templates(lista de templates),num_img(índice da imagem) - Exceção:
MultiFacesExceptionse mais de uma face for detectada
- Parâmetros:
__compare_templates(template1, template2): Compara dois templates faciais usando distância do cosseno.- Parâmetros:
template1,template2(templates) - Retorno:
bool(True se forem da mesma pessoa, False caso contrário)
- Parâmetros:
Módulo com funções utilitárias para manipulação de imagens.
Converte uma imagem enviada via Streamlit em um array numpy (BGR).
- Parâmetros:
imagem_upada(objeto FileUploader do Streamlit) - Retorno:
numpy.ndarrayrepresentando a imagem no formato BGR
Exceção customizada para quando múltiplas faces são detectadas em uma imagem.
Exceção lançada quando mais de uma face é detectada em uma imagem onde deveria haver apenas uma.
- Parâmetros:
msg (str)- Mensagem de erro descrevendo o problema
Exceção customizada para quando nenhuma face é detectada em uma imagem.
Exceção lançada quando nenhuma face é detectada em uma imagem onde deveria haver pelo menos uma.
- Parâmetros:
msg (str)- Mensagem de erro descrevendo o problema
Página Streamlit para comparação 1:1 entre duas faces.
- Permite o upload de duas imagens e exibe o resultado da comparação, indicando se são ou não a mesma pessoa.
- Utiliza o engine de reconhecimento facial para processar as imagens.
- Exibe mensagens de erro caso não haja faces ou haja múltiplas faces em alguma imagem.
(sem código implementado)