$ cd ../
DDPM Difusión — bash

user@devops:~$ cat README.md

DDPM Difusión

# Descripción

DDPM (Denoising Diffusion Probabilistic Model) implementado desde cero en PyTorch sobre Fashion-MNIST, la familia de modelos detrás de DALL-E 2 y Stable Diffusion. Idea: en lugar de comprimir (VAE) o competir (GAN), el modelo aprende a INVERTIR un proceso de ruido. Proceso forward fijo (sin parámetros): q(x_t|x_0) = N(x_t; √ᾱ_t·x_0, (1-ᾱ_t)·I) con schedule lineal β: 1e-4 → 0.02 en T=200 pasos, hasta convertir la imagen en ruido puro. Proceso reverse aprendido: una UNet (361,905 parámetros, 3 niveles 16/32/32 canales, embedding temporal sinusoidal 128→256→128, ResBlocks con GroupNorm+SiLU+inyección temporal, bottleneck 7×7, upsampling con F.interpolate) predice el ruido ε_θ(x_t, t) y lo resta paso a paso. Entrenamiento: loss = MSE(ε, ε_θ), 25 épocas sobre 4,000 muestras en CPU (~9 min), loss final 0.1228 con descenso monótono y suave (sin modo collapse, a diferencia de las GAN). Generación: muestrear x_T ~ N(0, I) y denoisear 200 pasos — 64 imágenes nuevas en 21s. Hallazgos: (1) en t=100 la imagen está casi destruida pero el x_0 estimado ya revela la silueta de la prenda — el modelo "ve" a través del ruido; (2) la generación es estocástica pero coherente (zapatillas, pantalones, bolsos), sin modo collapse; (3) el proceso reverse es un revelado gradual: primero la silueta global (t≈100), luego los detalles finos (t<50); (4) CPU-viable: 361K params + T=200 (vs 1000 del paper) + 4,000 muestras = convergencia en 9 min. Incluye 7 visualizaciones: forward diffusion, noise schedule, curvas de entrenamiento, 64 muestras generadas, progreso del denoise y predicción de ruido en t=25 y t=100.

# Características principales

$ DDPM desde cero en PyTorch: forward q(x_t|x_0) cerrado + reverse p_θ aprendido con UNet

$ UNet 361,905 params: 3 niveles (16/32/32 ch), embedding temporal sinusoidal, ResBlocks con GroupNorm + inyección temporal

$ Loss = MSE(ε, ε_θ(x_t, t)): el modelo solo aprende a predecir el ruido añadido

$ Schedule lineal β: 1e-4 → 0.02 en T=200 pasos (vs 1000 del paper, CPU-friendly)

$ Generación estocástica: muestrear x_T ~ N(0, I) y denoisear — 64 imágenes nuevas en 21s

$ El modelo ve a través del ruido: en t=100 el x_0 estimado ya revela la silueta de la prenda

$ Proceso reverse como revelado gradual: silueta global primero (t≈100), detalles finos después (t<50)

$ CPU-optimizado: 25 épocas sobre 4,000 muestras en ~9 min, loss final 0.1228 sin modo collapse

# Galería

Terminal de entrenamiento
DDPM Difusión - Terminal de entrenamiento
64 imágenes generadas desde ruido
DDPM Difusión - 64 imágenes generadas desde ruido
Proceso reverse: de ruido a imagen
DDPM Difusión - Proceso reverse: de ruido a imagen
Proceso forward: imagen → ruido
DDPM Difusión - Proceso forward: imagen → ruido
Predicción de ruido en t=100
DDPM Difusión - Predicción de ruido en t=100

# Tecnologías utilizadas

PyTorch Python NumPy Matplotlib Torchvision