Spaces:
Runtime error
Runtime error
title: Practica131clase | |
emoji: ⚡ | |
colorFrom: gray | |
colorTo: gray | |
sdk: gradio | |
sdk_version: 4.31.5 | |
app_file: app.py | |
pinned: false | |
license: cc-by-nc-sa-4.0 | |
# 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", map_location=torch.device('cpu'))) | |
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()) | |