Este projeto implementa um sistema completo de reconhecimento facial usando técnicas de Álgebra Linear Computacional, visão computacional e aprendizado de máquina.
O sistema oferece duas abordagens para reconhecimento facial:
- Método Simples: Comparação direta entre imagens usando distância euclidiana
- Método PCA: Redução de dimensionalidade usando Análise de Componentes Principais
- ✅ Carregamento automático de datasets organizados
- ✅ Preprocessamento inteligente de imagens
- ✅ Validação cruzada para avaliação de desempenho
- ✅ Comparação entre diferentes algoritmos
- ✅ Visualização de resultados com matrizes de confusão
- ✅ Código bem documentado e organizado
reconhecimento_facial/
├── main.py # 🎯 Menu principal do sistema
├── requirements.txt # Dependências do projeto
├── README.md # Este arquivo
├── src/ # Código fonte
│ ├── reconhecimento_facial.py # Classe principal do sistema
│ ├── reconhecimento_neural.py # Sistema com redes neurais
│ ├── demo_completa_neural.py # Demonstração completa
│ ├── exemplo_uso.py # Exemplos de uso
│ ├── exemplo_neural.py # Exemplos com redes neurais
│ ├── guia_pratico.py # Guia para iniciantes
│ ├── resumo_final.py # Resumo e comparações
│ └── teste*.py # Arquivos de teste
├── data/ # Dados e datasets
├── docs/ # Documentação
├── examples/ # Exemplos adicionais
└── recdev-master/ # Dataset de faces
├── very-easy/ # Imagens mais fáceis
├── easy/ # Imagens fáceis
├── medium/ # Imagens médias
└── hard/ # Imagens difíceis
-
Clone ou baixe o projeto
-
Instale as dependências:
pip install -r requirements.txt
-
Verifique se o dataset está presente:
- O diretório
recdev-master/deve conter as pastas com imagens - As imagens devem estar nomeadas no formato:
pessoa-foto.jpg(ex:2-1.jpg)
- O diretório
Execute o arquivo principal para acessar o menu interativo:
python main.pyO menu oferece as seguintes opções:
- Demonstração Completa: Comparação entre todos os métodos
- Reconhecimento Tradicional: Algoritmos PCA e método simples
- Redes Neurais: Sistema avançado com deep learning
- Guia Prático: Tutorial passo a passo para iniciantes
- Testes Específicos: Execução de testes individuais
Você também pode executar os módulos diretamente da pasta src:
# Exemplo de uso básico
python src/exemplo_uso.py
# Demonstração com redes neurais
python src/exemplo_neural.py
# Guia prático passo a passo
python src/guia_pratico.py
# Comparação completa de métodos
python src/demo_completa_neural.pyPara usuários Windows, use o script de inicialização:
start.batEste script irá:
- Verificar se o Python está instalado
- Instalar automaticamente as dependências
- Configurar o ambiente
- Iniciar o menu principal
Execute o script de instalação para configurar automaticamente:
python install.pySe preferir instalar manualmente:
from reconhecimento_facial import ReconhecimentoFacial
# Cria o reconhecedor para um dataset específico
reconhecedor = ReconhecimentoFacial("recdev-master/easy")
# Executa benchmark completo (compara métodos simples vs PCA)
resultados = reconhecedor.benchmark_dataset(n_componentes_pca=50)# Carrega o dataset
reconhecedor = ReconhecimentoFacial("recdev-master/easy")
reconhecedor.carregar_imagens()
# Treina o modelo PCA
reconhecedor.treinar_pca(n_componentes=30)
# Carrega uma imagem de teste
import cv2
img_teste = cv2.imread("recdev-master/easy/2-1.jpg", 0)
# Reconhecimento usando PCA
indice, distancia, pessoa_predita = reconhecedor.reconhecimento_pca(img_teste)
print(f"Pessoa predita: {pessoa_predita}")# Executa benchmark completo em todos os datasets
python reconhecimento_facial.py
# Executa exemplos específicos
python exemplo_uso.py- Lê automaticamente todas as imagens de um diretório
- Extrai IDs das pessoas do nome dos arquivos
- Normaliza e preprocessa as imagens
Método Simples:
- Compara diretamente os pixels das imagens
- Rápido mas menos preciso
- Boa baseline para comparação
Método PCA:
- Reduz dimensionalidade preservando características importantes
- Mais robusto a variações de iluminação
- Melhor desempenho em geral
- Validação cruzada para resultados confiáveis
- Cálculo de acurácia e tempo de execução
- Matriz de confusão para análise detalhada
- Gráficos de matriz de confusão
- Comparação visual entre métodos
- Relatórios detalhados de desempenho
- Descrição: Número de componentes principais a manter
- Valores típicos: 20-100
- Impacto: Mais componentes = maior precisão, mas mais lento
- Descrição: Número de divisões na validação cruzada
- Valores típicos: 3-10
- Impacto: Mais splits = resultado mais confiável, mas mais lento
=== COMPARAÇÃO DOS MÉTODOS ===
Método Simples: 75.2% ± 8.1%
Método PCA: 87.3% ± 5.2%
✓ PCA apresentou melhor desempenho
- Verifique se o caminho do dataset está correto
- Certifique-se de que o diretório contém arquivos
.jpgou.png
- Os arquivos devem estar no formato
pessoa-foto.jpg - Exemplo:
1-1.jpg,2-3.jpg, etc.
- Experimente diferentes números de componentes PCA
- Verifique se as imagens estão bem organizadas
- Considere usar datasets mais fáceis para teste inicial
- Visão Computacional: Processamento e análise de imagens
- PCA: Redução de dimensionalidade para melhor desempenho
- Validação Cruzada: Avaliação robusta de modelos
- Métricas de Avaliação: Acurácia, matriz de confusão
- Preprocessamento: Normalização e padronização de dados
- Álgebra Linear Computacional: Uso intensivo de operações com matrizes e vetores para otimização de cálculos e extração de características
Para melhorar ainda mais o sistema, você pode:
- Implementar outros algoritmos: SVM, Random Forest, Deep Learning
- Adicionar detecção de faces: Usar Haar Cascades ou MTCNN
- Melhorar preprocessamento: Equalização de histograma, filtros
- Interface gráfica: Criar GUI para uso mais amigável
- Reconhecimento em tempo real: Integrar com webcam
Este projeto foi desenvolvido com base nos testes originais (teste.py e teste3.py), com melhorias em:
- Organização do código
- Tratamento de erros
- Documentação
- Flexibilidade de uso
- Visualização de resultados
Dataset: RecDev - Facial Recognition Development Dataset