|
--- |
|
license: mit |
|
language: |
|
- es |
|
--- |
|
# Modelo de Reconocimiento Facial de Expresiones |
|
|
|
## Descripci贸n |
|
|
|
Este modelo ha sido entrenado para clasificar expresiones faciales en siete categor铆as: Enfadado, Disgustado, Miedo, Feliz, Triste, Sorprendido y Neutral. Es parte de un proyecto del curso de especializaci贸n en IA y Big Data, dise帽ado para demostrar el uso de modelos preentrenados y t茅cnicas de Fine-Tuning en la clasificaci贸n de im谩genes. |
|
|
|
## Detalles del Modelo |
|
|
|
- **Arquitectura**: ResNet50 |
|
- **Dataset de Entrenamiento**: [FER2013](https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data) |
|
- **N煤mero de Etiquetas**: 7 |
|
- **Tama帽o de Imagen**: 224x224 |
|
- **Funci贸n de Activaci贸n de Salida**: Softmax |
|
- **Funci贸n de P茅rdida**: CrossEntropyLoss |
|
- **Optimizador**: Adam |
|
- **Tasa de Aprendizaje**: 0.001 |
|
|
|
## Transformaciones de Datos |
|
|
|
Durante el preprocesamiento, las im谩genes se sometieron a las siguientes transformaciones: |
|
|
|
- **Resize**: 224x224 |
|
- **RandomHorizontalFlip**: True |
|
- **ColorJitter**: |
|
- Brillo: 0.2 |
|
- Contraste: 0.2 |
|
- Saturaci贸n: 0.2 |
|
- Tinte: 0.1 |
|
- **Normalize**: |
|
- Media: [0.485, 0.456, 0.406] |
|
- Desviaci贸n Est谩ndar: [0.229, 0.224, 0.225] |
|
|
|
## Mejoras Realizadas |
|
|
|
- **Congelaci贸n y Descongelaci贸n Selectiva de Capas**: Descongelamos las 煤ltimas capas de la red preentrenada para permitir un ajuste m谩s fino. |
|
- **Early Stopping**: Implementamos early stopping para detener el entrenamiento cuando la precisi贸n de validaci贸n dejaba de mejorar. |
|
- **Scheduler de Tasa de Aprendizaje**: Utilizamos un scheduler para reducir la tasa de aprendizaje durante el entrenamiento, ayudando a afinar el modelo. |
|
|
|
## Resultados |
|
|
|
El modelo alcanz贸 los siguientes resultados durante el entrenamiento y validaci贸n: |
|
|
|
- **Train Accuracy**: ~97.5% |
|
- **Validation Accuracy**: ~61% |
|
- **Test Accuracy**: ~62.5% |
|
|
|
## Uso del Modelo |
|
|
|
Para utilizar este modelo, puedes cargarlo y realizar predicciones en nuevas im谩genes de la siguiente manera: |
|
|
|
```python |
|
import torch |
|
from torchvision import models, transforms |
|
import json |
|
from PIL import Image |
|
|
|
# Cargar el modelo |
|
model = models.resnet50() |
|
model.load_state_dict(torch.load("pytorch_model.bin")) |
|
model.eval() |
|
|
|
# Configuraci贸n |
|
with open("config.json") as f: |
|
config = json.load(f) |
|
|
|
# Preprocesamiento de im谩genes |
|
transform = transforms.Compose([ |
|
transforms.Resize((config["image_size"], config["image_size"])), |
|
transforms.ToTensor(), |
|
transforms.Normalize(mean=config["transformations"]["Normalize"]["mean"], std=config["transformations"]["Normalize"]["std"]) |
|
]) |
|
|
|
# Ejemplo de uso con una imagen |
|
image = Image.open("ruta_a_tu_imagen.jpg") |
|
image = transform(image).unsqueeze(0) |
|
output = model(image) |
|
_, predicted = torch.max(output, 1) |
|
print("Predicted emotion:", predicted.item()) |