Sistema robusto de controle de acesso biométrico desenvolvido em Python, utilizando DeepFace para reconhecimento facial de alta precisão e NiceGUI para uma interface moderna e responsiva. O sistema suporta criptografia de dados sensíveis e detecção de vivacidade (Liveness) para prevenir fraudes.
O sistema segue uma arquitetura modular baseada em serviços e eventos. Abaixo estão os fluxos principais de funcionamento.
graph TD
A[Frontend UI - NiceGUI] <--> B[Services Layer]
B <--> C[Inference Engine / IA]
B <--> D[Database Manager]
B <--> E[Camera Manager]
C --> F[DeepFace Model]
C --> G[Liveness Detector]
D <--> H[(SQLite/Postgres DB)]
D <--> I[Secret Key Encryption]
Este fluxo ocorre em tempo real (loop da thread de inferência):
sequenceDiagram
participant Cam as Camera Service
participant Engine as Engine (IA)
participant DeepFace as DeepFace Model
participant RAM as Memoria (Embeddings)
Cam->>Engine: Envia Frame
Engine->>DeepFace: 1. Detecta Rosto
alt Rosto Encontrado
Engine->>Engine: 2. Verifica Liveness (Spoofing)
alt Se Real
Engine->>DeepFace: 3. Gera Vetor (Embedding)
Engine->>RAM: 4. Busca Vetor Similar
RAM-->>Engine: Retorna ID Usuario (Match)
Engine-->>Cam: Acesso Liberado
else Se Fake
Engine-->>Cam: ALERTA DE FRAUDE
end
end
Como os dados são protegidos ao salvar um novo usuário:
flowchart LR
User[Usuário UI] -->|Dados + Foto| Service[Cadastro Service]
Service -->|Texto Puro| Encrypt[Módulo de Segurança]
subgraph Criptografia
Encrypt -->|Fernet| Cipher[Dados Cifrados]
SecretKey[.env SECRET_KEY] --> Encrypt
end
Cipher --> DB[(Banco de Dados)]
style SecretKey fill:#f96,stroke:#333
style DB fill:#9cf,stroke:#333
Todos os dados sensíveis (biometria, PINs e fotos) são criptografados antes de serem salvos no banco de dados.
- Algoritmo: Fernet (Simétrico) da biblioteca
cryptography. - Chave Secreta (
SECRET_KEY):- Armazenada no arquivo
.env. - Crítico: Se a chave for perdida, os dados no banco tornam-se irrecuperáveis.
- Compartilhamento: Para acessar o mesmo banco de dados (ex: PostgreSQL) de múltiplos computadores, a mesma SECRET_KEY deve ser configurada em todos os clientes.
- Armazenada no arquivo
- Memória Volátil: O motor de IA descriptografa os embeddings apenas para a memória RAM durante a inicialização. Se a chave for alterada, o motor recarrega automaticamente para garantir consistência.
O projeto é organizado para facilitar a manutenção e escalabilidade:
| Diretório | Descrição |
|---|---|
src/ |
Código fonte principal da aplicação. |
common/ |
Utilitários globais: Banco de dados, Config, Logger, Segurança (security.py), Temas. |
features/ |
Módulos principais de lógica: inferencia (IA) e cadastro. |
language/ |
Gerenciamento de internacionalização (languages.json). |
pages/ |
Telas da interface: Login, Dashboard, Configurações, Setup. |
public/ |
Arquivos estáticos (Imagens, Ícones). |
services/ |
Gerenciadores de estado (Camera, DB, Engine). |
build_scripts/ |
Scripts PowerShell para gerar executáveis e atalhos. |
tests/ |
Testes unitários e scripts de verificação. |
- Python 3.10+
- Dependências listadas em
requirements.txt
- Clone o repositório
- Crie o ambiente virtual:
python -m venv venv .\venv\Scripts\activate - Instale as dependências:
pip install -r requirements.txt - Execute:
python main.py
O executável unificado (DeepFaceRec_Unified.exe) suporta diferentes modos de incialização via linha de comando:
Abre a tela inicial com opções de navegação.
.\DeepFaceRec_Unified.exeAbre diretamente o painel administrativo.
.\DeepFaceRec_Unified.exe --ManageUsersAbre diretamente a tela de reconhecimento/login.
.\DeepFaceRec_Unified.exe --FaceRecognition4. Serviço Oculto (Hidden Camera)
Monitoramento silencioso em background. A janela fica invisível e só aparece se detectar uma pessoa não autorizada.
.\DeepFaceRec_Unified.exe --HiddenCamTimeout (Auto-Kill) Fecha o aplicativo automaticamente após X segundos.
.\DeepFaceRec_Unified.exe --HiddenCam --timeout 60Regra de Segurança (3 Strikes)
No modo --HiddenCam:
- Se uma pessoa não autorizada (ou desconhecida) for detectada 3 vezes consecutivas, a tela de ALERTA VERMELHO ("ACESSO NEGADO") abre em Tela Cheia.
- Se um Administrador for detectado, o contador zera e a tela se esconde novamente.
O aplicativo suporta execução via terminal para integração com outros sistemas (ex: LabVIEW).
Argumentos:
--CheckAccess: Inicia em modo de verificação de acesso, imprimindo o status no terminal.--CloseAfter: Fecha o aplicativo automaticamente após um acesso permitido.--timeout <segundos>: Define um tempo limite para fechar o aplicativo.
Saída no Terminal:
- Acesso Permitido:
{access allowed, Nome do Usuário, Nível de Acesso} - Acesso Negado:
{access denied}
Exemplo de uso (LabVIEW):
.\FaceRecon-V0.exe --CheckAccess --CloseAfter- Python 3.10+ com ambiente virtual configurado.
- Inno Setup 6 (Necessário para gerar o instalador .exe).
- Download: jrsoftware.org
Para gerar o instalador completo (recomendado para distribuição):
- Abra o terminal na raiz do projeto.
- Execute o script unificado:
.\build_scripts\windows\build_unified.ps1
Saída:
- O instalador estará em:
dist/FaceRecon_Setup.exe - A pasta da aplicação (portátil) estará em:
dist/FaceRecon-V0/
Todas as configurações de IA e Banco de Dados podem ser alteradas diretamente na interface em Configurações > Banco de Dados ou Configurações > Reconhecimento.
- Verify Similarity: Impede que a foto de um usuário seja substituída por uma foto muito diferente, prevenindo erros de cadastro.
- Liveness Check: Analisa micro-expressões e variações de textura para diferenciar uma foto real de uma tela/papel (Spoofing).
© 2026 Fundação Certi - Todos os direitos reservados.
