Spaces:
Sleeping
Sleeping
| title: GAN Interactive Demo - MNIST | |
| emoji: 🎨 | |
| colorFrom: purple | |
| colorTo: pink | |
| sdk: gradio | |
| sdk_version: 4.44.0 | |
| app_file: app.py | |
| pinned: false | |
| license: mit | |
| # 🎨 GAN Interactive Demo - Exploración del Espacio Latente | |
| Una aplicación interactiva para explorar cómo funcionan las **Redes Generativas Adversarias (GANs)** entrenadas en el dataset MNIST de dígitos manuscritos. | |
| ## 🌟 Características | |
| ### 1. Generación Aleatoria | |
| Genera dígitos manuscritos desde vectores de ruido aleatorio con un solo clic. | |
| ### 2. Control Manual | |
| Ajusta las primeras 10 dimensiones del vector latente (de 100 dimensiones totales) usando sliders interactivos para ver cómo cada dimensión afecta la generación. | |
| ### 3. Interpolación | |
| Observa el **morphing suave** entre dos dígitos diferentes. Esto demuestra que el espacio latente aprendido por la GAN es continuo y significativo. | |
| ### 4. Visualización del Espacio Latente | |
| Inspirado en el **TensorFlow Projector**, esta sección te permite: | |
| - Visualizar el espacio latente de 100 dimensiones reducido a 3D usando **PCA** | |
| - Explorar agrupaciones usando **t-SNE** en 2D | |
| - Generar dígitos desde puntos específicos del espacio | |
| ### 5. Grid de Comparación | |
| Genera múltiples dígitos simultáneamente para observar la diversidad y calidad de las generaciones. | |
| ## 🏗️ Arquitectura | |
| ### Generador | |
| ``` | |
| Input: Vector latente (100D) ~ N(0,1) | |
| ↓ | |
| Dense (7×7×256) + BatchNorm + LeakyReLU | |
| ↓ | |
| Reshape (7, 7, 256) | |
| ↓ | |
| Conv2DTranspose (7×7×128) + BatchNorm + LeakyReLU | |
| ↓ | |
| Conv2DTranspose (14×14×64) + BatchNorm + LeakyReLU | |
| ↓ | |
| Conv2DTranspose (28×28×1) + Tanh | |
| ↓ | |
| Output: Imagen (28×28×1) en rango [-1, 1] | |
| ``` | |
| ### Discriminador | |
| ``` | |
| Input: Imagen (28×28×1) | |
| ↓ | |
| Conv2D (14×14×64) + LeakyReLU + Dropout(0.3) | |
| ↓ | |
| Conv2D (7×7×128) + LeakyReLU + Dropout(0.3) | |
| ↓ | |
| Flatten + Dense(1) | |
| ↓ | |
| Output: Logit (clasificación binaria: real/falso) | |
| ``` | |
| ## 📊 Entrenamiento | |
| - **Dataset**: MNIST (60,000 imágenes de entrenamiento) | |
| - **Épocas**: 50 | |
| - **Batch Size**: 256 | |
| - **Optimizer**: Adam (learning rate = 1e-4) | |
| - **Loss**: Binary Cross-Entropy | |
| - **Tiempo de entrenamiento**: ~20 minutos en CPU | |
| ## 🎓 Propósito Educativo | |
| Esta demo fue creada para una clase de Machine Learning para: | |
| 1. Demostrar visualmente cómo las GANs aprenden distribuciones de datos | |
| 2. Mostrar que el espacio latente es continuo y navegable | |
| 3. Permitir experimentación interactiva con los conceptos | |
| 4. Inspirar a los estudiantes para su proyecto final de GANs | |
| ## 🚀 Uso Local | |
| ```bash | |
| # Clonar el repositorio | |
| git clone https://huggingface.co/spaces/[username]/gan-interactive-demo | |
| cd gan-interactive-demo | |
| # Instalar dependencias | |
| pip install -r requirements.txt | |
| # Ejecutar la aplicación | |
| python app.py | |
| ``` | |
| ## 📚 Referencias | |
| - **Paper Original de GANs**: [Generative Adversarial Networks](https://arxiv.org/abs/1406.2661) (Goodfellow et al., 2014) | |
| - **DCGAN**: [Unsupervised Representation Learning with Deep Convolutional GANs](https://arxiv.org/abs/1511.06434) (Radford et al., 2015) | |
| - **GAN Lab**: [Understanding Complex Deep Generative Models](https://poloclub.github.io/ganlab/) | |
| ## 📝 Licencia | |
| MIT License - Siéntete libre de usar este código para propósitos educativos. | |
| ## 🤝 Contribuciones | |
| ¡Contribuciones, issues y sugerencias son bienvenidas! | |
| --- | |
| **Creado con ❤️ para la clase de Machine Learning** | |