Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Reconhecimento Facial

Este projeto implementa um sistema completo de reconhecimento facial usando técnicas de Álgebra Linear Computacional, visão computacional e aprendizado de máquina.

📋 Descrição

O sistema oferece duas abordagens para reconhecimento facial:

  1. Método Simples: Comparação direta entre imagens usando distância euclidiana
  2. Método PCA: Redução de dimensionalidade usando Análise de Componentes Principais

🚀 Características

  • ✅ 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

📁 Estrutura do Projeto

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

🛠️ Instalação

  1. Clone ou baixe o projeto

  2. Instale as dependências:

    pip install -r requirements.txt
  3. 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)

📖 Como Usar

🎯 Opção 1: Menu Interativo (Recomendado)

Execute o arquivo principal para acessar o menu interativo:

python main.py

O 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

🔧 Opção 2: Execução Direta

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.py

🚀 Opção 3: Instalação Automática (Windows)

Para usuários Windows, use o script de inicialização:

start.bat

Este script irá:

  • Verificar se o Python está instalado
  • Instalar automaticamente as dependências
  • Configurar o ambiente
  • Iniciar o menu principal

🛠️ Instalação Manual Detalhada

1. Configuração Inicial

Execute o script de instalação para configurar automaticamente:

python install.py

2. Instalação Manual das Dependências

Se preferir instalar manualmente:

Uso Básico - Benchmark Completo

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)

Uso Avançado - Teste Individual

# 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}")

Executar Exemplos Prontos

# Executa benchmark completo em todos os datasets
python reconhecimento_facial.py

# Executa exemplos específicos
python exemplo_uso.py

📊 Funcionalidades Principais

1. Carregamento de Dados

  • Lê automaticamente todas as imagens de um diretório
  • Extrai IDs das pessoas do nome dos arquivos
  • Normaliza e preprocessa as imagens

2. Algoritmos de Reconhecimento

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

3. Validação e Avaliação

  • 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

4. Visualização

  • Gráficos de matriz de confusão
  • Comparação visual entre métodos
  • Relatórios detalhados de desempenho

🎯 Parâmetros Importantes

n_componentes_pca

  • Descrição: Número de componentes principais a manter
  • Valores típicos: 20-100
  • Impacto: Mais componentes = maior precisão, mas mais lento

n_splits

  • 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

📈 Exemplo de Resultados

=== COMPARAÇÃO DOS MÉTODOS ===
Método Simples: 75.2% ± 8.1%
Método PCA:     87.3% ± 5.2%
✓ PCA apresentou melhor desempenho

🔧 Solução de Problemas

Erro: "Dataset não encontrado"

  • Verifique se o caminho do dataset está correto
  • Certifique-se de que o diretório contém arquivos .jpg ou .png

Erro: "Nome de arquivo inválido"

  • Os arquivos devem estar no formato pessoa-foto.jpg
  • Exemplo: 1-1.jpg, 2-3.jpg, etc.

Baixa precisão

  • Experimente diferentes números de componentes PCA
  • Verifique se as imagens estão bem organizadas
  • Considere usar datasets mais fáceis para teste inicial

🎓 Conceitos Implementados

  • 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

📚 Próximos Passos

Para melhorar ainda mais o sistema, você pode:

  1. Implementar outros algoritmos: SVM, Random Forest, Deep Learning
  2. Adicionar detecção de faces: Usar Haar Cascades ou MTCNN
  3. Melhorar preprocessamento: Equalização de histograma, filtros
  4. Interface gráfica: Criar GUI para uso mais amigável
  5. Reconhecimento em tempo real: Integrar com webcam

Infos

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

About

Sistema de Reconhecimento Facial que integra técnicas de Álgebra Linear Computacional, Visão Computacional e Aprendizado de Máquina. Usando comparação simples, o método PCA e Redes Neurais.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages