Creación de una IA capaz de recibir una imagen de entrada y clasificarla según su entorno o contexto (por ejemplo, Kitchen, Office, Bedroom, etc.).
Este proyecto entrena diferentes Redes Neuronales Convolucionales (CNN) a partir de modelos preentrenados (ResNet, ResNeXt, RegNet, etc.), y aprovecha Weights & Biases (W&B) para registrar las métricas de entrenamiento de cada modelo.
-
Clases de entornos
Se entrenó la IA para predecir múltiples ambientes. Los datos se encuentran en la carpetadata, organizada en subdirectorios para entrenamiento y validación. -
App con Streamlit
El proyecto incluye una app con Streamlit que, de forma amigable, permite subir una imagen y clasificarla usando cualquiera de los modelos disponibles. -
Monitoreo con Weights & Biases
Todos los entrenamientos y sus métricas se reportan a W&B, facilitando la comparación de modelos, arquitecturas, épocas y otros hiperparámetros.
Ya puedes probar nuestra app directamente desde el navegador sin necesidad de clonar ni configurar nada.
📌 Hemos desplegado una demo funcional con un modelo que alcanza aproximadamente 94% de accuracy en validación, entrenado con la arquitectura resnext101_32x8d y 13 capas descongeladas.
🔗 Accede aquí: 👉 https://environments-clasification.streamlit.app
- Sube una imagen desde tu equipo.
- Selecciona el modelo preentrenado.
- Obtén la predicción del entorno (
Kitchen,Office,Bedroom, etc.) al instante.
git clone https://github.com/Adarve999/EnvironmentClasification-DeepLearning.git
cd EnvironmentClasification-DeepLearningconda env create -f env_dev.yaml
conda env activate dl_clasificationpython src/train_model.py- Carga pesos preentrenados.
- Entrena en
data/training, validando endata/validation. - Reporta métricas a W&B (si lo configuras) y guarda el mejor modelo en
models/.
- Learning Rate: Se solicita en consola; por defecto 1e-4.
- Capas descongeladas: También se ingresa en consola; por defecto 0.
- Número de épocas: Si no se ingresa, por defecto 1.
Debido a que algunos de los modelos entrenados superan el límite de 100 MB impuesto por GitHub, se han subido a una carpeta de Google Drive para facilitar su descarga. Puedes acceder a todos los modelos en el siguiente enlace:
Carpeta de Drive con los modelos
Para utilizarlos:
- Descarga los archivos
.ptnecesarios. - Colócalos en la carpeta
models/de este repositorio.
Una vez entrenado (o descargado) un modelo:
streamlit run src/app_DragAndDrop.py- Elige el modelo en el panel lateral.
- Sube la imagen.
- Se realiza la clasificación y se muestra la clase predicha.
La siguiente tabla resume algunos resultados de distintos modelos, con sus épocas, tasa de aprendizaje, capas descongeladas y exactitudes (Train y Validación). Estos valores pueden variar según el dataset y la configuración final:
| Modelo | Épocas | Learning Rate | Unfrozen Layers | Accuracy (Train) | Accuracy (Validación) |
|---|---|---|---|---|---|
| resnet50 | 50 | 0,0001 | 0 | 80,00% | 80,00% |
| resnet50 | 30 | 0,0001 | 5 | 86,00% | 87,00% |
| resnext101_32x8d | 100 | 0,0001 | 0 | 84,00% | 92,00% |
| resnext101_32x8d | 200 | 0,0001 | 0 | 88,00% | 92,30% |
| resnext101_32x8d | 30 | 0,0001 | 13 | 93,30% | 93,60% |
| resnext101_64x4d | 30 | 0,0001 | 9 | 93,40% | 94,20% |
| regnet_y_32gf | 10 | 0,0001 | 0 | 71,00% | 73,00% |
| regnet_y_32gf | 10 | 0,0001 | 5 | 86,70% | 94,70% |
| regnet_y_32gf | 30 | 0,0001 | 7 | 91,90% | 94,40% |
A partir de las métricas presentadas en la tabla, se pueden extraer varias conclusiones:
-
Eficacia de ResNeXt y RegNet:
Los modelos ResNeXt (especialmente con configuraciones 32x8d y 64x4d) y RegNet (en configuraciones con más capas descongeladas) suelen obtener mejores resultados de exactitud, tanto en entrenamiento como en validación, superando en varios puntos porcentuales a ResNet50. -
Importancia de descongelar capas:
Al comparar, por ejemplo, el modelo resnet50 con 0 capas descongeladas (80%–80%) frente a resnet50 con 5 capas descongeladas (86%–87%), se observa un aumento significativo en la exactitud. Esto indica que ajustar capas internas (unfreeze) puede permitir al modelo aprender mejor las características específicas del dataset. -
Mayor número de épocas no siempre significa mayor exactitud:
En la familia ResNeXt101_32x8d, se ven resultados para 100 y 200 épocas con (casi) la misma validación (~92%), mientras que con apenas 30 épocas y 13 capas descongeladas sube a ~93,6%. Esto sugiere que la calidad del ajuste (qué capas se descongelan y con qué LR) puede ser más determinante que simplemente entrenar más tiempo. -
Aprendizaje efectivo cuando se combina buena arquitectura + capas descongeladas:
Modelos como resnext101_64x4d con 9 capas descongeladas logran un 93,4% en training y 94,2% en validación, lo que demuestra la eficacia de descongelar parte de la red y elegir una arquitectura con alta cardinalidad. -
RegNet mejora significativamente con más capas descongeladas y más épocas:
Pasar de 0 capas descongeladas (71%–73%) a 5 capas (86,7%–94,7%) o 7 capas (91,9%–94,4%) muestra un salto grande en rendimiento, confirmando que la estrategia de ajuste incide mucho en la exactitud final.
- Rubén Adarve Pérez
- Marta Rodríguez Hebles
- Maria Valvanera Gil de Biedma
- Blanca Sayas Ladaga
Please use this bibtex if you want to cite this repository (main branch) in your publications:
@misc{EnvironmentClasification-DeepLearning,
author = {Rubén Adarve Pérez, Marta Rodríguez Hebles, Maria Valvanera Gil de Biedma, Blanca Sayas Ladaga},
title = {Deep Learning App: Clasificador de Entornos},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/Adarve999/EnvironmentClasification-DeepLearning}},
}