Ricardouchub/SarcasmDiffusion
Modelo basado en Stable Diffusion XL ajustado mediante LoRA para aprender el estilo visual de los memes irónicos y sarcásticos, utilizando el dataset Hateful Memes Dataset (Facebook AI). Genera imágenes limpias y expresivas sin texto incrustado, sobre las cuales se superpone luego el caption estilo meme.
SarcasmDiffusion
SarcasmDiffusion es un modelo de generación de imágenes basado en Stable Diffusion XL, entrenado con LoRA para capturar la esencia visual del sarcasmo y la ironía en los memes.
Utiliza un dataset curado a partir de Hateful Memes Dataset de Facebook AI para generar imágenes limpias y expresivas, listas para que añadir caption.
| Notebook | Modelo en HF |
|---|---|
| Notebook de proceso de entrenamiento | Modelo en Hugging Face |
Arquitectura y Técnicas Utilizadas
| Componente | Descripción |
|---|---|
| Modelo base | Stable Diffusion XL (Base 1.0) |
| Fine-tuning | LoRA sobre el UNet (fp16) |
| Framework | Hugging Face Diffusers + PEFT + Accelerate |
| Dataset | Hateful Memes Dataset - 10k |
| App | Streamlit UI para inferencia con overlay estilo meme |
| Preprocesamiento | NLP con GoEmotions + RoBERTa-Irony para etiquetado semántico |
| Formato final | Modelo fusionado (sdxl_fused_full) + LoRA weights |
Hiperparámetros del entrenamiento
| Parámetro | Valor |
|---|---|
| Resolución | 1024 px |
| Batch Size | 1 (Grad Accum = 4) |
| Learning Rate | 0.0001 |
| Max Steps | 9,000 |
| LoRA r / α / dropout | 8 / 16 / 0.05 |
| Optimizer | AdamW8bit |
| Scheduler | Cosine + Warmup |
Entrenamiento realizado con fp16 mixed precision en CUDA 12.4 (PyTorch 2.6).
Flujo de trabajo
-
Fase A — Preprocesamiento
Limpieza del dataset, enriquecimiento con emociones e ironía, y balanceo de tonos. -
Fase B — Generación de prompts
Creación automática de descripciones de entrenamiento (humor,irony,neutral). -
Fase C — Entrenamiento SDXL con LoRA
Fine-tuning del UNet del modelo con parámetros congelados para preservar calidad base. -
Fase D — Inferencia & Overlay
Generación con SDXL + superposición de texto estilo meme. -
Fase E — Inferencia y UI
Implementación de una app en Streamlit (app.py).
Ejemplos de prompts
| Prompt | Caption arriba | Caption abajo |
|---|---|---|
| "sarcastic meme about running on too much coffee" | ONE CUP OF COFFEE | AWAY FROM A MELTDOWN |
| "sarcastic meme about saying 'just five more minutes' of sleep and waking up late" | WHEN YOU SAY '5 MORE MINUTES | AND WAKE UP AT NOON |
| "meme sarcástico sobre intentar comer saludable pero viendo pizza" | CUANDO PROMETES COMER SANO | PERO LA PIZZA TE HABLA |
Generación
App
Resultado
✅ Entrenamiento de un modelo de difusión capaz de aprender el estilo visual de memes sarcásticos.
✅ Dataset enriquecido y balanceado automáticamente.
✅ Generación controlada con negative prompts (sin texto ni ruido).
✅ App de inferencia funcional en Streamlit.
✅ Overlay automático estilo meme con ajuste dinámico del texto.
Estructura del repositorio
SarcasmDiffusion/
├── app.py # Interfaz Streamlit para inferencia
├── SarcasmDiffusion.ipynb # Notebook principal del proyecto
├── data/
│ ├── img/ # Imágenes originales del dataset
│ ├── processed/
│ │ ├── metadata_v3.csv # Dataset enriquecido y balanceado
│ │ ├── train_lora_prompts.csv # Prompts generados por tono
│ │ └── infer_samples/ # Resultados de inferencia
├── models/
│ └── lora_only/ # Pesos LoRA del UNet
└── img/ # Carpeta de imágenes para readme
Licencia
Este proyecto se distribuye bajo licencia MIT.
Dataset original: Hateful Memes (Facebook AI)



