https://github.com/ericshantos/fs_detector_model
Modelo de reconhecimento facial baseado no modelo MobileNetV2
https://github.com/ericshantos/fs_detector_model
mobilenetv2 neural-networks notebook-jupyter tensorflow
Last synced: about 2 months ago
JSON representation
Modelo de reconhecimento facial baseado no modelo MobileNetV2
- Host: GitHub
- URL: https://github.com/ericshantos/fs_detector_model
- Owner: ericshantos
- License: mit
- Created: 2025-02-08T03:14:49.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-08T04:03:35.000Z (over 1 year ago)
- Last Synced: 2025-04-05T20:09:51.850Z (over 1 year ago)
- Topics: mobilenetv2, neural-networks, notebook-jupyter, tensorflow
- Language: Jupyter Notebook
- Homepage:
- Size: 27.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Reconhecimento facial baseado em transfer learning: Fernanda Montenegro e Fernanda Torres
## Descrição
Este projeto implementa um modelo de reconhecimento facial baseado em **Transfer Learning**, utilizando o modelo **MobileNetV2** para classificar imagens das atrizes **Fernanda Montenegro** e **Fernanda Torres**. O objetivo é explorar técnicas de **Deep Learning** e **aprendizado por transferência**.
## Tecnologias Utilizadas
- Python
- TensorFlow/Keras
- OpenCV
- NumPy
- Google Colab
## Estrutura do Projeto
```
fs_detector_model/
│-- assets/
│ │-- montenegro_e_torres.jpg # Imagem de teste para previsão
│ │-- resultado.png # Resultado da rede neural
│-- dataset/ # Diretório contendo as imagens de treino e validação
│-- fs_detector_model.ipynb # Notebook Jupyter com todo o código
│-- fs_detector_model.h5 # Modelo treinado salvo
```
## Como Executar
> Atenção: para utilizar este caderno jupyter, é necessário usar o ambiente do Google Colab.
## Treinamento do Modelo
1. **Carregamento do MobileNetV2**
- O modelo base é carregado sem a camada de classificação final.
- Camadas personalizadas são adicionadas para adaptar ao problema.
2. **Configuração da Rede Neural**
- Camada de pooling global.
- Camada densa com 1024 neurônios (ReLU).
- Camada de saída com duas classes (Softmax).
- Camadas do MobileNetV2 são congeladas para preservar os pesos pré-treinados.
3. **Pré-processamento de Imagens**
- Aumento de dados usando `ImageDataGenerator`.
- Normalização dos valores dos pixels.
4. **Treinamento**
- O modelo é treinado por 10 épocas usando `Adam` como otimizador e `categorical_crossentropy` como função de perda.
5. **Salvamento do Modelo**
- O modelo final é salvo no arquivo `fs_detector_model.h5` para futuras previsões.
## Testando o Modelo
1. **Carregar o modelo salvo**
```python
from tensorflow.keras.models import load_model
model = load_model('fs_detector_model.h5')
```
2. **Realizar previsão em uma imagem**
```python
import cv2
import numpy as np
image = cv2.imread('montenegro_e_torres.jpg')
image_array = np.expand_dims(image, axis=0) / 255.0
predictions = model.predict(image_array)
```
3. **Exibir a classe predita**
```python
class_indices = {'Montenegro': 0, 'Torres': 1}
classes = {v: k for k, v in class_indices.items()}
predicted_class = classes[np.argmax(predictions)]
confidence = np.max(predictions)
print(f"Previção: {predicted_class} com confiança {confidence:.2f}")
```
4. **Visualização do resultado com OpenCV**
- A imagem é processada para detecção de rostos usando o classificador Haar Cascade.
- Cada rosto é classificado e rotulado na imagem com sua respectiva confiança.
- Exibição da imagem anotada com `cv2_imshow()` no Google Colab.
## Resultado do modelo

## Licença
Este projeto está licenciado sob a **MIT License**. Consulte o arquivo `LICENSE` para mais informações.
---
Desenvolvido por **Eric dos Santos** - 2025