AcuarelaPortraits / README.md
Alexramsal's picture
fix: update python_version format in README for consistency
283e0ad

A newer version of the Gradio SDK is available: 6.13.0

Upgrade
metadata
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

Ejemplo de transformación


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

  1. Fidelidad facial: Los rostros pueden diferir del original debido a la naturaleza generativa del modelo
  2. Tiempo de procesamiento: 30-60 segundos por imagen (cold start) o 10-20s (warm)
  3. Resolución: Máximo 1024x1024 píxeles
  4. Estilo fijo: El estilo acuarela está predefinido en el prompt
  5. 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:

  1. Crear cuenta en modal.com
  2. Ir a Settings > API Tokens
  3. 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