Skip to content

NeicerVB/App_recomendacion_ropa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

👗 App de Recomendación de Ropa

Sistema de recomendación de ropa basado en similitud visual usando redes neuronales convolucionales (MobileNetV2 + ResNet50) con fine-tuning y transferencia de aprendizaje.

El sistema extrae embeddings visuales de imágenes de prendas y recomienda las más similares usando similitud coseno.

Demo de la App

✨ Características

  • Dos modelos CNN con fine-tuning: MobileNetV2 (ligero) y ResNet50 (robusto)
  • Modo combinado: Concatena embeddings de ambos modelos para mayor precisión
  • Interfaz web interactiva con Streamlit
  • Dos modos de uso: Subir tu propia imagen o navegar el catálogo
  • Filtrado por categoría: T-Shirts, Shirts, Pants, Shorts, Shoes, Sneakers
  • Pre-cómputo de features: Arranque rápido sin re-extraer embeddings

📁 Estructura del Proyecto

App_recomendacion_ropa/
├── app.py                      # App de Streamlit (interfaz web)
├── requirements.txt            # Dependencias del proyecto
├── README.md
├── assets/                     # Imágenes y GIFs del proyecto
├── data/
│   └── clothes/
│       ├── train/              # Imágenes de entrenamiento por categoría
│       └── test/               # Imágenes de test por categoría
├── models/
│   ├── mobilenet_finetuned.keras   # Modelo MobileNetV2 entrenado
│   ├── resnet_finetuned.keras      # Modelo ResNet50 entrenado
│   ├── features_mobilenet.pkl      # Embeddings pre-computados
│   ├── features_resnet.pkl
│   ├── features_combined.pkl
│   ├── metadata.pkl                # Metadata de las imágenes
│   ├── class_names.json
│   ├── training_metrics.json
│   └── plots/                      # Gráficas de entrenamiento
├── notebooks/
│   └── exploration.ipynb       # Notebook de exploración y entrenamiento
└── src/
    ├── __init__.py
    ├── data_loader.py          # Descarga y carga del dataset
    ├── feature_extractor.py    # Extracción de features con CNNs
    ├── train.py                # Pipeline de entrenamiento
    ├── build_index.py          # Pre-cómputo del índice de features
    ├── recommender.py          # Lógica de recomendación
    └── utils.py                # Funciones utilitarias

🚀 Instalación y Configuración

1. Clonar e instalar dependencias

pip install -r requirements.txt

2. Descargar el dataset y entrenar los modelos

Puedes hacerlo de dos formas:

Opción A: Usando el notebook (recomendado para exploración)

jupyter notebook notebooks/exploration.ipynb

Opción B: Usando los scripts directamente

# Paso 1: Entrenar modelos (descarga el dataset automáticamente)
cd src
python train.py

# Paso 2: Pre-computar features
python build_index.py

3. Ejecutar la aplicación

streamlit run app.py

🧠 Arquitectura del Sistema

Imagen de entrada
       │
       ▼
┌──────────────┐     ┌──────────────┐
│ MobileNetV2  │     │   ResNet50   │
│ (fine-tuned) │     │ (fine-tuned) │
└──────┬───────┘     └──────┬───────┘
       │ 256-d              │ 512-d
       └────────┬───────────┘
                │ Concatenar
                ▼
        Vector 768-d (combinado)
                │
                ▼
    Similitud Coseno vs Catálogo
                │
                ▼
      Top-N Recomendaciones

Pipeline de entrenamiento

  1. Transfer Learning: Se cargan MobileNetV2 y ResNet50 preentrenados en ImageNet con las capas base congeladas
  2. Fine-tuning: Se descongelan las últimas capas y se re-entrenan con learning rate bajo
  3. Data Augmentation: Rotación, flip horizontal, zoom y desplazamiento para compensar el dataset pequeño (~300 imágenes)
  4. Evaluación: Accuracy, matriz de confusión y reporte por categoría

📊 Dataset

  • Fuente: Kaggle - Clothes Dataset
  • Categorías: T-Shirts, Shirts, Pants, Shorts, Shoes, Sneakers (6 clases)
  • Tamaño: ~300 imágenes organizadas en train/test

🛠️ Tecnologías

Componente Tecnología
Deep Learning TensorFlow / Keras
Modelos MobileNetV2, ResNet50
ML clásico scikit-learn (cosine similarity)
Interfaz Streamlit
Datos pandas, numpy
Visualización matplotlib, seaborn
Dataset kagglehub

📄 Licencia

Este proyecto está bajo la Licencia MIT.

About

Aplicación que recomienda ropa similar basada en imágenes. Usa inteligencia artificial para analizar prendas y sugerir opciones parecidas. Ideal para explorar estilos y encontrar combinaciones.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors