|
--- |
|
title: Generador de Letras con Difusión |
|
emoji: 🔤 |
|
colorFrom: blue |
|
colorTo: green |
|
sdk: gradio |
|
app_file: app.py |
|
pinned: false |
|
license: mit |
|
tags: |
|
- diffusion |
|
- letters |
|
- alphabet |
|
- image-generation |
|
- pytorch |
|
--- |
|
|
|
# Generador de Letras con Modelo de Difusión |
|
|
|
Este modelo utiliza un UNet condicionado por clase para generar letras del abecedario (A-Z) en imágenes de 512x512 píxeles en escala de grises. |
|
|
|
## Características del Modelo |
|
|
|
- **26 clases**: Una para cada letra del abecedario (A-Z) |
|
- **Resolución**: 512x512 píxeles |
|
- **Canales**: 1 canal (escala de grises) |
|
- **Arquitectura**: UNet2D con condicionamiento por clase |
|
- **Parámetros**: 63,153,745 parámetros totales |
|
|
|
## Uso del Modelo |
|
|
|
```python |
|
from diffusers import DDPMScheduler |
|
import torch |
|
|
|
# Cargar el modelo |
|
model = LetterConditionedUnet(num_classes=26, class_emb_size=8) |
|
model.load_state_dict(torch.load("pytorch_model.bin")) |
|
|
|
# Crear scheduler |
|
scheduler = DDPMScheduler.from_pretrained("./", subfolder="scheduler") |
|
|
|
# Generar una letra (ejemplo: letra 'A' = clase 0) |
|
device = "cuda" if torch.cuda.is_available() else "cpu" |
|
model = model.to(device) |
|
|
|
# Ruido inicial |
|
x = torch.randn(1, 1, 512, 512, device=device) |
|
labels = torch.tensor([0], device=device) # 0 = 'A', 1 = 'B', etc. |
|
|
|
# Proceso de denoising |
|
for t in scheduler.timesteps: |
|
with torch.no_grad(): |
|
residual = model(x, t, labels) |
|
x = scheduler.step(residual, t, x).prev_sample |
|
|
|
# La imagen generada está en x |
|
``` |
|
|
|
## Entrenamiento |
|
|
|
El modelo fue entrenado en el dataset `jruaechalar/letrasPlantilla` que contiene imágenes de letras del abecedario con sus respectivas etiquetas. |
|
|
|
## Licencia |
|
|
|
MIT License |
|
|