ComfyLab
Img2Img en ComfyUI: Guía Completa con Denoise

Img2Img en ComfyUI: Guía Completa con Denoise

6GB VRAM VRAM Intermedio 12 min
Savien

Tienes una imagen generada con txt2img que tiene buena composición pero el estilo no es exactamente lo que querías. O tienes un boceto hecho a mano y quieres convertirlo en una ilustración renderizada. Img2img resuelve eso: en lugar de partir de ruido aleatorio, el KSampler parte de tu imagen, la modifica según el prompt y un parámetro llamado denoise, y devuelve algo nuevo que conserva la estructura original.

Este artículo asume que ya tienes ComfyUI funcionando. Si no, la guía de generación de imágenes con ComfyUI es el punto de partida. Los nodos que usamos aquí (VAEEncode, KSampler) están explicados en detalle en los nodos esenciales de ComfyUI.

🏗️ Workflow: IMG2IMG Pro

🧠 VRAM: 6GB - 12GB 📡 MODEL: SDXL / SD 1.5

🏗️ Qué es img2img y cuándo usarlo

Txt2img genera imágenes desde cero: el KSampler empieza con ruido gaussiano puro y lo refina paso a paso guiado por el prompt. El resultado depende completamente del texto y la semilla aleatoria.

Img2img cambia el punto de partida. En lugar de ruido puro, el KSampler recibe un latente derivado de tu imagen de entrada. El proceso de denoising modifica ese latente de forma que el resultado se parezca a lo que describe el prompt, pero manteniendo la estructura compositiva de la imagen original.

Cuándo usar img2img sobre txt2img:

  • Tienes una composición buena pero el estilo está mal — cambias estilo sin perder la disposición de elementos
  • Quieres iterar sobre un resultado existente — refinas detalles de una imagen que ya te gusta en general
  • Tienes un boceto o referencia visual — conviertes dibujos, wireframes o fotos en ilustraciones renderizadas
  • Necesitas consistencia entre variaciones — mantienes la misma escena con ligeras diferencias

Cuando el resultado de txt2img ya es bueno y solo quieres pequeños ajustes, img2img con denoise bajo (0.2-0.4) es mucho más eficiente que regenerar desde cero.


🏗️ El parámetro denoise: la clave de img2img

Denoise es el único parámetro que diferencia img2img de txt2img. Controla qué fracción del proceso de denoising se aplica partiendo de la imagen de entrada.

Con denoise=1.0, el KSampler añade el máximo de ruido posible a la imagen antes de empezar a refinarla — el resultado es equivalente a txt2img. Con denoise=0.0, no se añade ruido y la imagen no cambia en absoluto.

Valor denoiseQué haceCuándo usarlo
0.0Sin cambios. Imagen idéntica a la entradaSolo para probar el workflow
0.1 – 0.3Cambios mínimos. Ajustes de textura y color muy sutilesCorrecciones muy finas de calidad
0.3 – 0.5Cambios de estilo moderados. La composición se mantiene intactaCambio de estilo artístico, ajustar iluminación
0.5 – 0.7Transformación notable. La estructura principal se conserva pero cambian muchos detallesRediseño de personajes, cambio de entorno
0.7 – 0.9Cambios grandes. La imagen original solo influye en la disposición generalTransformaciones radicales de estilo
1.0Equivalente a txt2img. La imagen de entrada no influye en el resultadoNo tiene sentido usarlo en img2img

El rango más útil en la práctica es 0.4 – 0.7. Por debajo de 0.4 los cambios son demasiado tímidos a menos que uses un prompt muy específico. Por encima de 0.7 puedes perder la composición que querías preservar.


🏗️ Los nodos del workflow img2img

El workflow img2img añade dos nodos sobre el workflow básico de txt2img: LoadImage y VAEEncode. El resto es idéntico.

🏗️ LoadImage

Carga la imagen de entrada desde disco. Soporta PNG, JPG y WEBP. Tiene un botón “Upload” para seleccionar el archivo desde tu sistema de archivos.

Salidas: imagen (IMAGE) y máscara (MASK). Para img2img solo necesitas la salida IMAGE.

🏗️ VAEEncode

Convierte la imagen del espacio de píxeles al espacio latente. El KSampler no trabaja con píxeles directamente — trabaja con representaciones latentes de mucho menor resolución que el VAE (Variational Autoencoder) comprime y descomprime. VAEEncode hace esa compresión: toma la imagen real y devuelve su equivalente latente.

Entradas:

  • pixels — la imagen que sale de LoadImage
  • vae — el VAE que sale del CheckpointLoaderSimple

Salida: LATENT — el latente que va al KSampler como latent_image.

Sin VAEEncode no puedes pasar una imagen al KSampler. Ese nodo es la pieza central que hace posible img2img.

🏗️ KSampler con denoise < 1.0

El KSampler en img2img es exactamente el mismo que en txt2img, con una diferencia: el parámetro denoise debe estar por debajo de 1.0. Si lo pones en 1.0, ignora completamente la imagen de entrada.

El campo latent_image recibe el latente de VAEEncode en lugar del EmptyLatentImage que usarías en txt2img.

🏗️ VAEDecode y SaveImage

Idénticos al workflow básico. VAEDecode convierte el latente resultante de vuelta a píxeles, y SaveImage guarda el archivo en la carpeta output/ de ComfyUI.


🏗️ Construir el workflow paso a paso

Empieza desde el workflow de txt2img por defecto que carga ComfyUI al arrancar. La estructura base (CheckpointLoaderSimple → CLIPTextEncode × 2 → KSampler → VAEDecode → SaveImage) se mantiene. Solo hay que añadir dos nodos y reconectar latent_image.

Paso 1: Añadir LoadImage

Haz clic derecho en el canvas → Add Node → Image → Load Image. Aparece el nodo LoadImage. Sube tu imagen con el botón Upload.

Paso 2: Añadir VAEEncode

Haz clic derecho en el canvas → Add Node → Latent → VAE Encode. Aparece el nodo VAEEncode.

Paso 3: Conectar LoadImage → VAEEncode

Arrastra desde la salida IMAGE de LoadImage hasta la entrada pixels de VAEEncode.

Paso 4: Conectar el VAE a VAEEncode

El CheckpointLoaderSimple tiene tres salidas: MODEL, CLIP y VAE. La salida VAE ya va conectada a VAEDecode — añade una segunda conexión desde esa misma salida VAE hasta la entrada vae de VAEEncode. En ComfyUI puedes conectar una salida a múltiples entradas.

Paso 5: Conectar VAEEncode → KSampler

Arrastra desde la salida LATENT de VAEEncode hasta la entrada latent_image del KSampler. Si el KSampler tenía un EmptyLatentImage conectado, desconéctalo — ya no lo necesitas.

Paso 6: Ajustar denoise en el KSampler

Cambia el campo denoise del KSampler de 1.0 a tu valor objetivo. Empieza con 0.5 para la primera prueba.

Paso 7: Queue Prompt

El workflow está listo. Escribe tu prompt, haz clic en “Queue Prompt” y espera 15-30 segundos (con SDXL en una RTX 3060 o similar).

El workflow completo tiene esta forma:

CheckpointLoaderSimple
  ├─ MODEL ──────────────────────────────→ KSampler.model
  ├─ CLIP  ──────────────────────────────→ CLIPTextEncode (×2) → KSampler
  └─ VAE   ──────────────────────────────→ VAEEncode.vae
                                         └→ VAEDecode.vae

LoadImage → IMAGE → VAEEncode.pixels
            VAEEncode → LATENT → KSampler.latent_image

KSampler → LATENT → VAEDecode → IMAGE → SaveImage

🏗️ Casos de uso prácticos

🏗️ Cambiar el estilo artístico de una foto

Tienes una fotografía y quieres convertirla en una ilustración estilo anime, pintura al óleo o comic book.

Configuración recomendada:

  • Denoise: 0.55 – 0.65
  • Prompt: describe el estilo objetivo con detalle (“anime style, cel shading, vibrant colors, detailed linework”)
  • Negative prompt: “photorealistic, photograph, realistic”
  • Steps: 30-40 (más steps ayudan con transformaciones grandes)

Con denoise de 0.6 y un prompt de estilo claro, la composición se mantiene pero la estética cambia de forma reconocible.

🏗️ Mejorar la calidad de un boceto

Tienes un dibujo hecho a mano o un boceto digital y quieres añadir detalles, sombras y textura.

Configuración recomendada:

  • Denoise: 0.4 – 0.55
  • Prompt: describe el resultado final con detalles (“detailed illustration, professional shading, clean linework, high quality”)
  • La imagen de entrada es el boceto escaneado o fotografiado

🏗️ Iterar sobre un resultado de txt2img

Generaste una imagen con txt2img que tiene buena composición pero algunos detalles están mal (una mano, un fondo, una textura). En lugar de regenerar desde cero, usa img2img con denoise bajo.

Configuración recomendada:

  • Denoise: 0.2 – 0.4
  • Mismo prompt que usaste para generar la imagen original
  • El resultado corrige detalles manteniendo lo que ya funcionaba

Este flujo de trabajo — txt2img para la composición, img2img para refinar — es uno de los más comunes en producción.


🏗️ Img2img con LoRA

Combinar img2img con LoRAs no requiere ningún cambio en la estructura principal del workflow. El nodo LoraLoader se inserta entre CheckpointLoaderSimple y los nodos que consumen MODEL y CLIP.

Añade el nodo LoraLoader (clic derecho → Add Node → Loaders → Load LoRA) y conecta:

CheckpointLoaderSimple.MODEL → LoraLoader.model
CheckpointLoaderSimple.CLIP  → LoraLoader.clip

LoraLoader.MODEL → KSampler.model
LoraLoader.CLIP  → CLIPTextEncode (×2)

El resto del workflow (LoadImage → VAEEncode → KSampler) no cambia. La LoRA influye en el estilo de la transformación exactamente igual que en txt2img: si usas una LoRA de estilo acuarela con denoise 0.6, el resultado combinará la composición de tu imagen con la estética de la LoRA.

Parámetro strength_model y strength_clip en LoraLoader controlan cuánto influye la LoRA. Valores entre 0.6 y 0.9 son habituales para img2img — si la LoRA es demasiado agresiva, baja estos valores antes de tocar el denoise.

Para una guía completa sobre LoRAs, consulta cómo usar LoRAs en ComfyUI.


🏗️ Upscale después de img2img

Un flujo habitual es usar img2img en resolución baja (512×512 o 768×768) para iterar rápido y luego hacer upscale del resultado. Esto reduce el tiempo de cada prueba a 5-10 segundos y el upscale se hace una sola vez al final.

La forma más simple de añadir upscale al workflow:

  1. Añade un nodo UpscaleModelLoader y carga un modelo de upscale (RealESRGAN_x4plus, 4x-UltraSharp, etc.)
  2. Añade un nodo ImageUpscaleWithModel
  3. Conecta la salida IMAGE de VAEDecode a la entrada image de ImageUpscaleWithModel
  4. Conecta UpscaleModelLoader a upscale_model
  5. Conecta la salida de ImageUpscaleWithModel a SaveImage

El resultado del img2img se upscalea ×4 antes de guardar. Con RealESRGAN_x4plus en una GPU de 6GB, el upscale de una imagen 512×512 a 2048×2048 tarda 2-4 segundos adicionales.


🏗️ Resolución de imagen y resize en VAEEncode

VAEEncode espera que las dimensiones de la imagen sean múltiplos de 64. Si tu imagen tiene dimensiones irregulares (por ejemplo, una foto de 1920×1080 recortada a 847×623), el workflow puede fallar o producir artefactos.

ComfyUI incluye el nodo ImageScale para redimensionar antes de codificar. Añádelo entre LoadImage y VAEEncode:

  • Conecta IMAGE de LoadImage → image de ImageScale
  • Conecta la salida de ImageScale → pixels de VAEEncode
  • Configura ImageScale con width y height en múltiplos de 64 (512, 768, 1024)
  • Método de interpolación: lanczos para fotos, nearest-exact para píxel art

Para SDXL, las resoluciones nativas son 1024×1024 o combinaciones como 1152×896, 896×1152. Usar estas resoluciones con SDXL da mejores resultados que resoluciones arbitrarias.


🏗️ Solución de problemas

🏗️ La imagen resultado es demasiado diferente a la original

El denoise es demasiado alto. Bájalo 0.1-0.15 y prueba de nuevo. Si con denoise 0.5 la composición se pierde demasiado, intenta con 0.35.

También puede ser que el prompt sea demasiado diferente a la imagen de entrada — si la imagen es un retrato y el prompt describe un paisaje, incluso con denoise bajo el resultado puede ser caótico.

🏗️ La imagen resultado es casi idéntica a la original

El denoise es demasiado bajo. Súbelo 0.15-0.2 por encima de donde estás. Con denoise menor a 0.2 los cambios son tan sutiles que apenas se notan.

Otra causa: el prompt no es suficientemente específico o descriptivo. Añade más detalles estilísticos.

🏗️ Artefactos o ruido en áreas específicas

Suele pasar cuando la imagen de entrada tiene compresión JPEG agresiva. Usa PNG para las imágenes de entrada siempre que puedas. Si la fuente es JPEG, sube ligeramente el denoise (0.05-0.1) para que el denoising corrija los artefactos de compresión.

🏗️ CUDA out of memory con SDXL

El consumo de VRAM en img2img con SDXL es similar al de txt2img: 6GB es el mínimo. Si falla con 6GB:

  • Usa --lowvram al arrancar ComfyUI (python main.py --lowvram)
  • Reduce la resolución a 768×768 en lugar de 1024×1024
  • Cambia a SD 1.5 que consume significativamente menos VRAM

🏗️ El workflow no encuentra la imagen

LoadImage carga desde la carpeta input/ de ComfyUI por defecto. Si subes la imagen con el botón Upload, se copia ahí automáticamente. Si intentas referenciar una ruta absoluta del sistema, usa el nodo Load Image (from path) disponible en algunos packs de nodos personalizados.


🏗️ Comparación de velocidad: img2img vs txt2img

Con una RTX 3060 (12GB VRAM) y SDXL Base 1.0 a 1024×1024, 30 steps:

ModoDenoiseTiempo por imagen
Txt2img1.0~22 segundos
Img2img0.7~16 segundos
Img2img0.5~12 segundos
Img2img0.3~8 segundos

El tiempo se reduce aproximadamente proporcional al denoise porque el KSampler ejecuta menos steps efectivos. Con denoise=0.5 y 30 steps configurados, el KSampler hace efectivamente ~15 steps de denoising.

Esto hace que img2img con denoise bajo sea una forma muy eficiente de iterar: pruebas en 8-12 segundos son mucho más ágiles que esperar 22 segundos por cada variación.


Img2img es la técnica que separa iterar con control de regenerar a ciegas. Con el workflow de cinco nodos que has construido aquí y el denoise ajustado a tu caso de uso, puedes transformar cualquier imagen de entrada con precisión quirúrgica. El siguiente paso natural es añadir ControlNet para tener aún más control sobre qué partes de la composición se preservan — o combinar lo aprendido aquí con LoRAs siguiendo la guía de LoRAs en ComfyUI. Si quieres entender mejor qué hace cada nodo que has conectado, los nodos esenciales de ComfyUI explica VAEEncode, KSampler y el resto con más profundidad.

Preguntas frecuentes

¿Qué hace el parámetro denoise en img2img de ComfyUI?
Denoise controla cuánto se aleja el resultado de la imagen original. Con 0.0 la imagen no cambia nada. Con 1.0 el KSampler ignora completamente la imagen de entrada y actúa como txt2img. Los valores prácticos van de 0.3 a 0.7: suficiente para cambiar estilo o añadir detalles sin perder la composición.
¿Cuánta VRAM necesito para img2img en ComfyUI con SDXL?
El consumo de VRAM en img2img con SDXL es prácticamente igual al de txt2img: 6GB es el mínimo funcional. Con 8GB trabajas con más margen. Si tienes menos de 6GB, usa SD 1.5 (2GB de modelo) con resoluciones de 512×512 — img2img funciona igual con modelos más ligeros.
¿Cuál es la diferencia entre img2img y txt2img en ComfyUI?
En txt2img el KSampler parte de ruido puro (denoise=1.0). En img2img partes de una imagen real que VAEEncode convierte al espacio latente, y el KSampler usa ese latente como punto de partida con un denoise menor a 1.0. El resultado mantiene la estructura de la imagen original según lo bajo que pongas el denoise.
¿Puedo combinar img2img con LoRAs en ComfyUI?
Sí. El nodo LoraLoader se conecta entre CheckpointLoaderSimple y los encoders de texto (CLIPTextEncode) y modelo (KSampler). El workflow img2img es idéntico salvo por ese nodo adicional. La LoRA afecta el estilo de la transformación igual que en txt2img.
Compartir X LinkedIn

También te puede interesar