Spaces:
Sleeping
A newer version of the Gradio SDK is available: 6.13.0
title: Acuarela Portrait Daggr
emoji: 🎨
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 4.19.2
python_version: '3.10'
app_file: app_daggr.py
pinned: false
tags:
- daggr
- modal
- sdxl
- watercolor
Generador de Retratos Acuarela con IA
Proyecto 1 - Asignatura de Modelos de IA
IES Rafael Alberti
Ejemplo de Resultado
Definición del Problema
Problema a resolver
Transformar fotografías de personas en ilustraciones artísticas estilo acuarela, manteniendo la estructura y composición original pero aplicando un estilo pictórico profesional.
Input esperado
- Imagen: Fotografía de una o más personas (formato JPG, PNG, WebP)
- Resolución recomendada: Mínimo 512x512 píxeles
Output generado
- Imagen acuarela: Ilustración artística que preserva la pose, composición y número de personas de la foto original
- Descripción: Caption automático de la imagen original + prompt artístico utilizado
Modelos Utilizados
Este proyecto combina dos modelos de inteligencia artificial en un pipeline secuencial:
1. GIT - Generative Image-to-Text (Microsoft)
| Característica | Valor |
|---|---|
| Modelo | microsoft/git-large-coco |
| Tipo | Vision-Language Model (VLM) |
| Tarea | Image Captioning |
| Arquitectura | Transformer encoder-decoder |
| GPU | NVIDIA T4 (16GB VRAM) |
Función: Analiza la imagen de entrada y genera una descripción textual del contenido (personas, poses, contexto).
2. SDXL - Stable Diffusion XL (Stability AI)
| Característica | Valor |
|---|---|
| Modelo | stabilityai/stable-diffusion-xl-base-1.0 |
| Tipo | Latent Diffusion Model |
| Tarea | Image-to-Image Generation |
| Arquitectura | U-Net + VAE + Text Encoder |
| GPU | NVIDIA A10G (24GB VRAM) |
Función: Transforma la imagen original en estilo acuarela, guiado por el caption + prompt artístico.
Pipeline de Procesamiento
Foto Original --> GIT Captioning --> Caption texto
|
v
Imagen Acuarela <-- SDXL Img2Img <-- Prompt con estilo
Parámetro clave: strength=0.65 - Determina cuánto de la imagen original se preserva (65% transformación, 35% estructura).
Limitaciones Conocidas
- Fidelidad facial: Los rostros pueden diferir del original debido a la naturaleza generativa del modelo
- Tiempo de procesamiento: 30-60 segundos por imagen (cold start) o 10-20s (warm)
- Resolución: Máximo 1024x1024 píxeles
- Estilo fijo: El estilo acuarela está predefinido en el prompt
- Dependencia de GPU: Requiere GPUs en la nube (Modal) para ejecutar los modelos
Arquitectura de Despliegue
Hugging Face Space --> Modal Backend
(Gradio frontend) (GPU serverless)
- Interfaz web - GIT en T4
- Subir imagen - SDXL en A10G
- Mostrar resultado - Modelos cacheados
Configuración del Space
Secrets necesarios (Settings > Secrets):
| Nombre | Descripción |
|---|---|
MODAL_TOKEN_ID |
ID de token de Modal |
MODAL_TOKEN_SECRET |
Secret de token de Modal |
Obtener tokens de Modal:
- Crear cuenta en modal.com
- Ir a Settings > API Tokens
- Crear nuevo token y copiar ID + Secret
Instalación Local
Opción A: Con UV (⚡ Recomendado - 100x más rápido)
# 1. Instalar UV (Windows/Mac/Linux)
pip install uv
# 2. Clonar repositorio
git clone <repo-url>
cd AcuarelaPortraits
# 3. Crear entorno virtual con UV
uv venv
# 4. Activar (Windows)
.venv\Scripts\Activate.ps1
# O en cmd: .venv\Scripts\activate.bat
# Linux/Mac: source .venv/bin/activate
# 5. Instalar dependencias
uv sync
# O: uv pip install -e ".[dev]"
# 6. Autenticarse en Modal
modal token new
# 7. Desplegar backend en Modal
modal deploy modal_backend.py
# 8. Ejecutar aplicación (elige una opción)
# - App original:
python app.py
# - App con Daggr (visualización del workflow):
python app_daggr.py
Opción B: Con pip (Tradicional)
# 1. Clonar repositorio
git clone <repo-url>
cd AcuarelaPortraits
# 2. Crear entorno virtual
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/Mac
# 3. Instalar dependencias
pip install -r requirements.txt
# 4. Autenticarse en Modal
modal setup
# 5. Desplegar backend en Modal
modal deploy modal_backend.py
# 6. Ejecutar aplicación
python app.py
🆕 Integración con Daggr
Este proyecto ahora incluye Daggr, una herramienta de Hugging Face para visualizar y debuggear pipelines de IA.
Características:
- 👀 Inspecciona el output de cada paso del pipeline
- ⏪ Vuelve a ejecutar pasos individuales sin re-ejecutar todo
- 📊 Canvas visual automático del workflow
- 💾 Persiste estado automáticamente
Para usar Daggr:
python app_daggr.py
Ve a MIGRATION_UV_DAGGR.md para más detalles.
Costos Estimados
| Componente | Costo aproximado |
|---|---|
| GIT (T4) | ~$0.003/imagen |
| SDXL (A10G) | ~$0.01/imagen |
| Total | ~$0.01-0.02/imagen |
Solo se paga por el tiempo de GPU utilizado.
Autor
Desarrollado para el IES Rafael Alberti - Módulo de Modelos de IA
