ManzGPU

Crea imágenes (I2I)

Hype-Generator 3000™: It's a game-changer

Aprende a utilizar stable-diffusion.cpp para generar imágenes a partir de otra imagen de referencia o hacer inpainting.

1. Introducción

En la guía anterior vimos como generar imágenes desde cero mediante texto (text-to-image). Si estas llegando por primera vez aquí, quizás te convendría echar un vistazo a la guía anterior, donde también abordamos la instalación y configuración.

Ahora vamos a dar un paso más y aprenderemos a generar imágenes basadas en otra imagen de referencia, lo que se conoce como i2i, img2img o image-to-image.

El funcionamiento es similar al text-to-image, pero en lugar de partir sólo de texto (prompt inicial), partimos de una imagen existente que el modelo va a transformar siguiendo las indicaciones del prompt:

Imagen de entrada Prompt Model CLIP VAE Imagen generada

Esto es muy útil para múltiples casos de uso: mejorar una imagen existente, cambiar el estilo, corregir detalles, o incluso hacer inpainting (modificar solo partes concretas de la imagen).

2. Uso básico

Para usar img2img con sd-cli, simplemente necesitamos añadir el parámetro -i o --init-img con la ruta a la imagen de referencia. En este caso, utilizaremos Krea 2 Turbo, un potente modelo de generación de imagen, ayudado de Qwen3 para trabajar con el prompt de texto:

sd-cli --diffusion-model krea2_turbo-Q4_K_M.gguf \
  --llm Qwen3VL-4B-Instruct-Q8_0.gguf \
  --vae wan_2.1_vae.safetensors \
  -p "A floating white robot with yellow cat face and arms with green leds on low poly style" \
  -W 1024 -H 1024 \
  --seed -1 \
  --cfg-scale 1.0 \
  --sampling-method euler \
  --scheduler simple \
  -i reference.png \
  --strength 0.5 \
  -o output.png

Ahora, como podrás observar, al contrario que con Stable Diffusion, el modelo, el CLIP y el VAE se encuentran en ficheros separados. Observa también que el comando es casi idéntico al de text-to-image, pero ahora incluimos -i imagen_entrada.png y el parámetro --strength que veremos a continuación.

3. El parámetro strength

El parámetro --strength es el corazón de img2img. Controla cuánto ruido se añade a la imagen de entrada y por tanto cuánto puede cambiar el resultado. Recuerda que el ruido es la parte que genera una nueva imagen, por lo que un 0.4 de ruido generará un 40% de la imagen, y conservará un 60% de la imagen de referencia:

Valor de strengthEfecto
0.1 - 0.3 Cambios sutiles. La imagen resultante se parece mucho a la original. Ideal para correcciones menores.
0.4 - 0.6 Cambios moderados. Mantiene la estructura general pero permite variaciones notables.
0.7 - 0.85 Cambios significativos. Solo conserva la composición básica de la imagen.
0.9 - 1.0 Cambios extremos. Prácticamente genera una nueva imagen, usando vagamente la referencia.
sd-cli ... -i entrada.png --strength 0.3 \
  -p "..." -o imagen_con_baja_variacion.png

sd-cli ... -i entrada.png --strength 0.7 \
  -p "..." -o imagen_con_alta_variacion.png

Consejo: Un valor de 0.5 o 0.55 es un buen punto de partida para experimentar. Si el resultado se parece demasiado a la original, sube el valor; si se aleja demasiado, bájalo.

4. Ejemplo de img2img

Imagina que tienes una imagen y quieres hacer variaciones sobre ella:

sd-cli --diffusion-model krea2_turbo-Q4_K_M.gguf \
  --llm Qwen3VL-4B-Instruct-Q8_0.gguf \
  --vae wan_2.1_vae.safetensors \
  -p "A floating white robot with yellow cat face and arms with green leds on low poly style" \
  -W 1024 -H 1024 \
  -n "blur, low quality" \
  --cfg-scale 1.0 \
  --sampling-method euler \
  --seed -1 \
  -i reference.png \
  --strength 0.55 \
  -o image.png

En el siguiente ejemplo interactivo puedes ver como varía el resultado según el valor de strength utilizado. La imagen de referencia es un robot con forma de gato, y se ha generado con el prompt "A floating white robot with yellow cat face and arms with green leds, low poly style":

A medida que más alto es el valor de strength, menos importancia le da a la imagen de referencia y más importancia le da al prompt.

5. Inpainting con máscara

El inpainting es una técnica que permite modificar solo una zona concreta de la imagen, indicada mediante una máscara. Para ello utilizamos el parámetro --mask:

sd-cli --diffusion-model krea2_turbo-Q4_K_M.gguf \
  --llm Qwen3VL-4B-Instruct-Q8_0.gguf \
  --vae wan_2.1_vae.safetensors \
  -i imagen_original.png \
  --mask mascara.png \
  -p "A floating white robot with rabbit ears on low poly style" \
  --strength 0.8 \
  --seed -1 \
  --cfg-scale 1.0 \
  --sampling-method euler \
  -o resultado_inpaint.png

La máscara es una imagen en escala de grises donde:

  • Negro (#000000): zonas que no se modifican
  • Blanco (#FFFFFF): zonas que sí se modifican

Puedes crear máscaras con herramientas como GIMP, Photoshop o incluso Paint. Simplemente pinta de blanco la zona que quieres que la IA regenere:

Importante: La máscara debe tener las mismas dimensiones que la imagen de entrada.

6. Consejos y buenas prácticas

ConsejoDetalle
Resolución Usa la misma resolución que la imagen de entrada, o acércate lo más posible. Si la imagen de entrada es 1024x768, usa esos valores en -W y -H.
Prompt descriptivo Describe lo que quieres ver en el resultado, no lo que hay en la imagen original. El modelo se encargará de mantener la composición según el strength.
Negative prompt Usa -n para indicar lo que no quieres. Por ejemplo: -n "blur, low quality, deformed".
Modelo adecuado Hay modelos que permiten edición avanzada como Qwen Image Edit o FLUX Klein.
Misma semilla Usa la misma semilla con --seed de la imagen original para obtener resultados más fieles/coherentes.

Recuerda: Si quieres profundizar más en los parámetros generales (CFG, steps, sampling, scheduler), consulta la guía principal de StableDiffusion.cpp.