1. Introducción
En las guías anteriores hemos visto como crear imágenes desde cero mediante texto (T2I) y como transformarlas añadiendo ruido sobre una imagen de base (I2I). Ahora vamos a dar un paso más y utilizaremos modelos de edición, capaces de modificar una imagen siguiendo instrucciones en lenguaje natural.
A diferencia del img2img clásico, donde el modelo regenera la imagen completa según el valor de --strength, los modelos de edición «entienden» la imagen de referencia y aplican únicamente el cambio solicitado, conservando intacto el resto: la identidad de los personajes, el fondo, la iluminación, el estilo, etc.
Esto permite hacer ediciones tan espectaculares como «cámbiale la chaqueta por un abrigo rojo», «haz que el personaje toque la guitarra», «colócalo de perfil» o «elimina el objeto del fondo», sin necesidad de máscaras, o ediciones y retoques manuales mediante un software.
2. Modelos de edición
Actualmente, el referente de los modelos de edición abiertos es Qwen Image Edit de Alibaba. Sin embargo, existen varios modelos con capacidades de edición como Mage Flow, Boogu Edit o LongCat Image Edit, entre otros.
Al igual que ocurre con otros modelos modernos, sus componentes se encuentran en ficheros separados y hay que indicarlos para hacerlo funcionar:
| Componente | Fichero | Función |
|---|---|---|
| Modelo de difusión | qwen-image-edit-2511.gguf |
Genera y edita la imagen |
| VAE | qwen_image_vae.safetensors |
Codifica/decodifica la imagen |
| LLM | Qwen2.5-VL-7B-Instruct.gguf |
Traduce la instrucción y entiende la escena |
| Proyector de visión | mmproj-BF16.gguf |
Entiende la imagen y la conecta con el LLM |
La gran diferencia respecto a los modelos de generación tradicionales es que el LLM es multimodal (VL, Vision-Language): además de traducir el prompt, recibe a través del proyector (--llm_vision) la imagen de referencia, por lo que puede ver la imagen y seguir órdenes concretas sobre los elementos que la componen.
En nuestro caso, vamos a utilizar:
- Qwen Image Edit 2511 →
41GB, cuantizado aQ3_K_M→9.9GB - Qwen Image Vae, sin cuantizar →
0.2GB - Qwen 2.5 7B con vision →
15.2GB, cuantizado aQ4_0→4.4GB - Proyector (mmproj), sin cuatizar →
1.3GB
En total 15.8GB. Esto hace que entre justo en 16GB, pero que la mayor parte de la inferencia se haga a máxima velocidad. En caso de no entrar, tendría que usarse RAM e irá notablemente más lento, pero la mayor parte funcionará en VRAM.
Recuerda que los ficheros
.ggufson versiones cuantizadas del modelo original. Cuanto más agresiva es la cuantización, menos memoria necesitan, pero pierden algo de calidad respecto al modelo sin cuantizar. Si la generación te va muy lenta, tienes dos vías posibles: ser más agresivo con la cuantización o aumentar a hardware más potente.
3. Uso básico
Para editar imágenes utilizaremos sd-cli, que explicamos como instalarlo en la primera guía de la serie de stable-diffusion.cpp. Para editar una imagen con sd-cli, indicamos la imagen original con el parámetro -r y describimos la edición deseada en el prompt:
sd-cli \
--diffusion-model qwen-image-edit-2511-Q3_K_M.gguf \
--vae qwen_image_vae.safetensors \
--llm Qwen2.5-VL-7B-Instruct-Q4_0.gguf \
--llm_vision mmproj-BF16.gguf \
--model-args qwen_image_zero_cond_t \
-r original.jpg \
-p "Preserve face-identity of character of Picture. Change to playing guitar, full body. Convert to clay polish style" \
-W 1024 \
-H 1024 \
--offload-to-cpu \
--diffusion-fa \
--max-vram 15 \
--mmap \
--cfg-scale 2.5 \
--steps 20 \
--sampling-method euler \
--scheduler beta \
--seed -1 \
-o output.png
Recuerda no olvidarte de parámetros como --offload-to-cpu, --diffusion-fa y --mmap para optimizar el rendimiento y evitar que la generación se demore demasiado. En mi caso también establezco el parámetro --max-vram para indicar que no exceda el uso de VRAM (tengo una GPU de 16GB, pongo como máximo 15GB).
Además, observa que en este caso no necesitamos el --strength que usamos en img2img. El modelo decide por sí mismo qué modificar y qué conservar. Eso sí, conviene escribir el prompt pensando en ambos aspectos: qué cambiar y qué mantener:
Change the jacket to a red coat, preserve the face identity, the background and the lighting
Consejo: Las instrucciones funcionan mejor en inglés y deben ser directas y sin ambigüedades, aunque muchas veces no suele haber problema si las escribes en español. Si el resultado no conserva algún detalle importante, indícalo explícitamente con frases como
preserve the face-identityokeep the background unchanged.
4. Usando LoRAs
Los LoRA (Low-Rank Adapters) son pequeños complementos que amplían las capacidades de un modelo base sin necesidad de sustituirlo. Para utilizarlos, colocamos los ficheros .safetensors en una carpeta e indicamos su ruta con --lora-model-dir.
Más tarde, los invocamos dentro del prompt con la sintaxis <lora:nombre:peso>:
..., <lora:qwen-image-edit-2511-multiple-angles-lora:1>,
<lora:Qwen-Image-Lightning-8steps-V2.0:1>
Algunos LoRAs especialmente interesantes para Qwen Image Edit son:
| LoRA | Utilidad |
|---|---|
multiple-angles-lora |
Cambia el ángulo de cámara (de frente, perfil, cuerpo completo...) manteniendo la identidad. |
lightning-8steps |
Acelera la generación usando solamente ~8-10 pasos (steps). |
El peso (valor numérico final) indica cuánta fuerza tiene el LoRA, donde 1.0 suele ser su intensidad estándar.
5. Ejemplo completo
Vamos a juntarlo todo. En este ejemplo editamos la fotografía original.jpg, donde aparezco en mis vacaciones en Japón. Vamos a editar la imagen para que el personaje (yo) aparezca tocando la guitarra, conservando su identidad facial, eliminando el fondo y cambiando el estilo:
sd-cli.exe \
--diffusion-model qwen-image-edit-2511-Q3_K_M.gguf \
--vae qwen_image_vae.safetensors \
--llm Qwen2.5-VL-7B-Instruct-Q4_0.gguf \
--llm_vision mmproj-BF16.gguf \
--lora-model-dir loras \
--model-args qwen_image_zero_cond_t \
--offload-to-cpu \
-t 6 \
--diffusion-fa \
--max-vram 15 \
--mmap \
--cfg-scale 2.5 \
--flow-shift 3 \
--steps 8 \
-W 1024 \
-H 1024 \
--sampling-method euler \
--scheduler beta \
-v \
-r original.jpg \
--seed -1 \
--negative-prompt "text, deformed, bad quality, malformed" \
--prompt "<lora:qwen-image-edit-2511-multiple-angles-lora:1>, <lora:Qwen-Image-Lightning-8steps-V2.0:1>, Preserve face-identity of character of Picture and change to playing guitar, full body" \
-o output.png
Analicemos las partes más importantes del comando:
| Parámetro | Función |
|---|---|
--lora-model-dir |
Buscará los LoRA que invocamos en el prompt en la carpeta loras/. |
--offload-to-cpu |
Mueve componentes a CPU cuando no se necesitan, ahorrando VRAM. |
-t 6 |
Número de hilos de CPU a utilizar. |
--diffusion-fa |
Activa flash attention en el modelo de difusión para optimizar VRAM. |
--max-vram 15 |
Limita el uso de VRAM (en GB) para evitar desbordamientos. |
--mmap |
Mapea el modelo en memoria, acelerando la carga y reduciendo RAM. |
--flow-shift 3 |
Reparte el ruido entre pasos. Valores bajos favorecen la coherencia en edición. |
--steps 20 |
Pasos de refinado. Con el LoRA Lightning bastan pocos, ~8-10 pasos. |
Fíjate también en cómo está construido el prompt: primero indicamos qué debe conservarse (preserve face-identity), después qué debe cambiarse (playing guitar, full body) y por último los LoRA que vamos a utilizar. Esta estructura de conservar → cambiar → activar da muy buenos resultados.
Este es el resultado aplicando tres estilos distintos sobre la misma fotografía. Puedes cambiar entre ellos con el deslizador o pulsando directamente sobre cada etiqueta:
6. Consejos y buenas prácticas
Sigue los siguientes consejos para conseguir buena calidad en tus ediciones locales de imagen:
| Consejo | Detalle |
|---|---|
| Instrucciones directas | Un prompt claro por edición. Si quieres varios cambios, sé explícito con cada uno de ellos. |
| Indica qué conservar | Si algún detalle es importante (rostro, tatuajes, ropa...), menciónalo con preserve o keep. |
| Negative prompt | Usa --negative-prompt para evitar artefactos típicos: texto deformado, mala calidad, etc. |
| Resolución | Mantén en -W y -H unas dimensiones similares a la imagen original para no distorsionarla. |
| Misma semilla | Usa la misma semilla con --seed para comparar variaciones de la misma edición. |
| LoRA Lightning | Si tu GPU va justa, el LoRA Lightning te permite bajar a --steps 10 y ganar mucho tiempo. |
Recuerda: Si quieres profundizar más en los parámetros generales (CFG, steps, sampling, scheduler), consulta la guía principal de StableDiffusion.cpp.

