top of page

Serie ComfyUI (XVI) — Multi-ControlNet: combinando varios controles en un mismo workflow

  • hace 2 días
  • 10 Min. de lectura

Continuamos la Serie ComfyUI, dedicada a entender y dominar la generación de imágenes con IA en local.

En artículos anteriores hemos visto cómo usar ControlNet para controlar la forma de una imagen y cómo combinarlo con LoRA para añadir estilo y coherencia visual. Pero cuando empiezas a construir workflows más avanzados, aparece una pregunta clave: ¿Qué pasa si usamos más de un ControlNet a la vez?.


La respuesta es que el control deja de ser unidimensional. Hasta ahora, con un solo ControlNet, el modelo recibe una única guía: bordes, profundidad, pose. Pero cada uno de esos controles representa solo una parte de la información visual.

En este artículo damos un paso más: combinar varios ControlNet dentro de un mismo workflow, y lo hacemos con uno de los casos más útiles y fáciles de entender:

  • Canny → controla la estructura (bordes)

  • Depth → controla el volumen (profundidad)


Diagrama de flujo con cajas de color unidas por líneas. Texto: "Workflow Multi-ControlNet". Imágenes de catedral y edificio. Logo "LozKorp".
Workflow ComfyUI Multi-ControlNet

Además, trabajaremos con un ejemplo muy visual: partimos de una imagen real de la Catedral de León👉 y la reinterpretamos como un edificio industrial futurista. Esto nos permite ver claramente cómo la estructura se mantiene, el volumen se respeta y el estilo se transforma

Un ControlNet controla una dimensión. Varios ControlNet permiten un control multidimensional

🎯 Qué vas a lograr

Al finalizar este artículo serás capaz de:

  • Entender cómo funciona el uso de varios ControlNet en un mismo workflow dentro de ComfyUI.

  • Comprender el papel de cada tipo de control en este caso:

    • Canny → estructura y bordes

    • Depth → volumen y profundidad

  • Aplicar dos preprocessors distintos sobre una misma imagen base.

  • Entender cómo se reparten las responsabilidades entre varios controles sin que se “pisen” entre ellos.

  • Generar imágenes más coherentes en escenas complejas, especialmente en arquitectura, entornos industriales o composiciones con profundidad

  • Reutilizar este workflow como base para:

    • combinar más tipos de ControlNet

    • experimentar con distintos preprocessors

    • y construir pipelines más avanzados


🧩 Requisitos

Para seguir este artículo y ejecutar correctamente el workflow Multi-ControlNet (Canny + Depth) en ComfyUI, necesitas lo siguiente:

💻 Entorno

  • ComfyUI instalado y funcionando correctamente

  • Preferiblemente con GPU para obtener resultados fluidos

🧠 Modelo base (checkpoint)

En este workflow utilizamos: juggernautXL_v8Rundiffusion.safetensors (https://civitai.com/models/133005/juggernaut-xl?modelVersionId=782002), pero podríamos usar cualquier modelo compatible con SDXL.

🧠 ControlNet

Este workflow utiliza dos modelos de ControlNet:

👉 Cada uno se encarga de un tipo de control distinto:

  • Canny → bordes y estructura

  • Depth → volumen y profundidad

🖼️ Imagen de entrada

El workflow parte de una única imagen base "Catedral_Leon.png" 


🗂️ Crear o cargar el workflow en ComfyUI

Tienes dos maneras de trabajar con este flujo:

🅰️ Opción A — Cargar el workflow ya creado

1️⃣ Descarga el archivo JSON adjunto:📁  wf_ComfyUI_SDXL_Multi_ControlNet_Canny_Depth_OneImage.json



2️⃣ Abre ComfyUI.

3️⃣ En el menú superior selecciona:Workflow → Load

4️⃣ Carga el archivo JSON. Verás en el lienzo todos los nodos conectados y listos para funcionar.


Interfaz de software con menú "Workflow" resaltado. Flecha señala "Open" con "Ctrl + O". Diagrama colorido a la derecha. Fondo gris.
Cargar workflow en ComfyUI

🅱️ Opción B — Crear el workflow desde cero

Si prefieres entenderlo pieza a pieza, puedes recrearlo manualmente. En la siguiente sección explicamos qué hace cada bloque del flujo.


Interfaz de software con opción "Workflow" y botón "+ New" en un menú, resaltado en rosa, mostrando un flujo de trabajo no guardado.
Empezar con Workflow en blanco

🧠 Qué significa usar varios ControlNet

Hasta ahora, en la serie, hemos trabajado con un único ControlNet en cada workflow. Y eso implica una forma bastante directa de control: le das al modelo una guía y el modelo la sigue.

Por ejemplo:

  • con Canny, el modelo respeta los bordes

  • con Depth, el modelo respeta el volumen

  • con Pose, el modelo respeta la postura


Cada ControlNet representa una forma de interpretar la imagen. Pero esa interpretación es parcial. Canny ve líneas y Depth ve volumen. Ninguno ve la imagen completa.


Cuando usamos varios ControlNet, no estamos “añadiendo más fuerza”. Estamos dando al modelo más información estructural, y lo importante es que esa información viene de la misma imagen, procesada de formas distintas


🎯 En este artículo

Trabajamos con:

  • Canny → lectura basada en bordes

  • Depth → lectura basada en profundidad

Ambos parten de la misma imagen, pero generan dos interpretaciones completamente distintas:

  • una describe la forma externa

  • la otra describe la estructura espacial


Cuando encadenas varios ControlNetApplyAdvanced, el modelo no “elige uno”. Integra todos los condicionamientos, es decir:

  • primero aplica el control de Canny

  • después añade el control de Depth

  • y genera teniendo en cuenta ambos


Cada ControlNet tiene sus propios parámetros: strength, start y end. Eso define cuanto influye y en que parte del proceso lo hace.

En este workflow:

  • Canny (0.7, 0→1) → mantiene la estructura durante todo el proceso

  • Depth (0.5, 0→0.7) → aporta volumen principalmente al inicio

👉 Resultado: la forma se conserva, el volumen se respeta, pero el modelo sigue teniendo libertad para reinterpretar


🔥 Qué cambia respecto a usar uno solo

  • Solo Canny: buena estructura pero volumen pobre o inconsistente

  • Solo Depth: buen volumen pero bordes difusos

  • Canny + Depth: estructura clara, volumen coherente y resultado mucho más sólido


⚙️ El workflow: estructura general

La lógica del workflow es la siguiente:

LoadImage
 ├── Canny → ControlNet (estructura)
 └── Depth → ControlNet (volumen)

Checkpoint + Prompt
   ↓
Apply ControlNet (Canny)
   ↓
Apply ControlNet (Depth)
   ↓
KSampler
   ↓
VAE Decode
   ↓
Save / Preview

El flujo completo se compone de los siguientes elementos:

Bloque

Función

1️⃣

LoadImage

Carga la imagen base

2️⃣

Canny

Extrae la estructura

3️⃣

DepthAnythingPreprocessor

Genera el mapa de profundidad

4️⃣

ControlNetLoader (Canny)

Carga el control de bordes

5️⃣

ControlNetLoader (Depth)

Carga el control de profundidad

6️⃣

CLIPTextEncode (+)

Prompt positivo

7️⃣

CLIPTextEncode (–)

Prompt negativo

8️⃣

CheckpointLoaderSimple

Modelo base SDXL

9️⃣

ControlNetApplyAdvanced (1)

Aplica Canny

🔟

ControlNetApplyAdvanced (2)

Aplica Depth

1️⃣1️⃣

EmptyLatentImage

Define resolución

1️⃣2️⃣

KSampler

Genera la imagen

1️⃣3️⃣

VAEDecode

Convierte a imagen

1️⃣4️⃣

SaveImage / PreviewImage

Visualiza y guarda

🔗 Cómo fluye la información

1. Flujo de estructura (Canny): define bordes, contornos y geometría visible.

Imagen → Canny → ControlNet
  1. Flujo de volumen (Depth): define profundidad, jerarquía espacial y relación entre planos

Imagen → Depth → ControlNet

3. Flujo de intención (Prompt): define que quieres generar y como reinterpretar la escena

Prompt → ControlNet → KSampler

🧱 Entendiendo el workflow paso a paso

1️⃣ LoadImage (imagen base)

Qué hace: carga la imagen de entrada que se utilizará como referencia estructural.

Qué tocar:

  • La imagen de entrada. en este caso: "Catedral_Leon.png".

👉 Cuanto más clara sea la estructura, mejor funcionarán los ControlNet.

Salida:

  • IMAGE → Canny

  • IMAGE → Depth


Diagrama de flujo con imagen de catedral medieval cargada. Filtros Canny y profundidad aplicados. Fondos gris y azul claro, texto visible.
Load Image & Canny & Depth Anything

2️⃣ Canny (estructura)

Qué hace: convierte la imagen en un mapa de bordes que define la estructura visible.

Qué tocar:

  • low: 0.1

  • high: 0.3 

👉 Ajuste típico:

  • valores bajos → más detalle

  • valores altos → menos ruido

Salida:

  • IMAGE → ControlNetApply (Canny)

  • IMAGE → PreviewImage (para ver el resultado del preprocesado)


3️⃣ DepthAnythingPreprocessor (volumen)

Qué hace: genera un mapa de profundidad a partir de la misma imagen. Este nodo no detecta bordes, sino que interpreta la escena en términos de qué está cerca, qué está lejos y cómo se organiza el espacio. Es decir, convierte la imagen en una representación de volumen y jerarquía espacial.


El resultado no es una imagen “bonita”, sino una imagen donde:

  • zonas claras → más cercanas

  • zonas oscuras → más lejanas

👉 Esto permite al modelo entender la escena en 3D, aunque parta de una imagen 2D.


El mapa de profundidad influye directamente en:

  • cómo se distribuyen los elementos en el espacio

  • la sensación de escala

  • la coherencia entre planos (primer plano / fondo)


Qué tocar:

  • modelo: depth_anything_vitl14.pth

    • ersión grande y precisa del modelo DepthAnything

    • mejor calidad en escenas complejas (arquitectura, interiores, etc.)

    • algo más pesado, pero merece la pena en este caso

  • resolución: 1024 

    • más alta (1024 o más)

      • mayor detalle en el mapa de profundidad

      • mejor coherencia espacial

      • más consumo de recursos

    • más baja (512–768)

      • más rápido

      • pero pierde precisión en volúmenes complejos

Salida:

  • IMAGE → ControlNetApply (Depth)

  • IMAGE → PreviewImage


4️⃣ ControlNetLoader (Canny)

Qué hace: carga el modelo de ControlNet especializado en bordes.

Qué tocar:

Salida:

  • CONTROL_NET → ControlNetApply (Canny)


Diagrama de flujo con dos módulos "Load ControlNet Model", detalles de conexión y ajuste de parámetros. Fondo gris, texto y líneas de colores.
ControlNetLoader & Apply ControlNet

5️⃣ ControlNetLoader (Depth)

Qué hace: carga el modelo de ControlNet especializado en profundidad.

Qué tocar:

Salida:

  • CONTROL_NET → ControlNetApply (Depth)


6️⃣ CLIPTextEncode (prompt positivo)

Qué hace: convierte el prompt en instrucciones para el modelo.

Qué tocar:

  • el contenido del prompt. Aquí defines la reinterpretación de la escena.

👉 En este workflow:

futuristic industrial cathedral, large scale industrial facility inspired by gothic architecture, massive metallic structures, pipes, reactors, steel beams, complex machinery integrated into architecture, volumetric fog, steam, dramatic cinematic lighting, dark industrial sci-fi environment, ultra detailed

Salida:

  • CONDITIONING → ControlNetApply (Canny)


Diagrama de flujo con cuadros de texto y líneas de colores conectadas. Contiene varias etiquetas y configuraciones técnicas sobre inteligencia artificial.
Load Checkpoint & CLIPTextEncode

7️⃣ CLIPTextEncode (prompt negativo)

Qué hace: Indica al modelo qué debe evitar.

Qué tocar:

👉 En este workflow:

blurry, low quality, watermark, text, logo, artifacts
  • añadir términos si aparecen errores

Salida:

  • CONDITIONING → ControlNetApply (Canny)


8️⃣ CheckpointLoaderSimple (modelo base)

Qué hace: carga el modelo SDXL base.

Qué tocar:

Salida:

  • MODEL → KSampler

  • CLIP → CLIPTextEncode

  • VAE → VAEDecode


9️⃣ ControlNetApplyAdvanced (Canny)

Qué hace: aplica el control de bordes sobre el conditioning inicial.

Qué tocar:

  • strength: 0.7

  • start: 0

  • end: 1 

👉 Interpretación:

  • actúa durante todo el proceso

  • define la estructura global

Salida:

  • CONDITIONING → ControlNetApply (Depth)


Diagrama de flujo con nodos conectados. Paneles a la izquierda muestran configuraciones de "ControlNet" y "KSampler". Imagen de torre oscura a la derecha.
Apply ControlNet & KSampler

🔟 ControlNetApplyAdvanced (Depth)

Qué hace: añade el control de profundidad sobre el conditioning ya modificado.

Qué tocar:

  • strength: 0.5

  • start: 0

  • end: 0.7 

👉 Interpretación:

  • influye más al inicio

  • deja libertad al final

Salida:

  • CONDITIONING → KSampler


1️⃣1️⃣ EmptyLatentImage

Qué hace: define el lienzo donde se generará la imagen. Habrá que tener en cuenta el tamaño de la imagen de entrada.

Qué tocar:

  • resolución (en nuestro ejemplo 768 × 1152 )

  • proporción

Salida:

  • LATENT → KSampler


1️⃣2️⃣ KSampler

Qué hace: genera la imagen combinando: el modelo base, el doble ControlNet, el prompt y el latente

Qué tocar:

  • steps: 24

  • CFG: 6

  • sampler: euler

  • scheduler: normal 

👉 Ajuste típico:

  • más steps → más calidad

  • más CFG → más fidelidad al prompt

Salida:

  • LATENT → VAEDecode


1️⃣3️⃣ VAEDecode

Qué hace: convierte el latente en imagen visible.

Qué tocar: nada en este flujo

Salida: IMAGE → Save / Preview


1️⃣4️⃣ SaveImage / PreviewImage

Qué hace:

  • muestra la imagen

  • la guarda en disco


🎛️ Ajustes clave: cómo controlar el resultado

Una vez que el workflow funciona, el resultado final depende del equilibrio entre tres elementos:

En Multi-ControlNet, este equilibrio es aún más importante que con un solo control, porque ahora tienes varios sistemas influyendo al mismo tiempo

Elemento

Función

Canny

Mantiene la forma

Depth

Mantiene el volumen

Prompt

Define la reinterpretación

🔁 Cómo ajustar correctamente

1️⃣ Empieza con valores base

  • Canny: 0.7

  • Depth: 0.5

2️⃣ Ajusta una variable cada vez. Regla clave:una variable por iteración

3️⃣ Orden recomendado

  1. Canny (estructura)

  2. Depth (volumen)

  3. Prompt (interpretación)


🧪 Casos típicos y cómo corregirlos

Cuando trabajas con Multi-ControlNet (Canny + Depth), los problemas no suelen venir de un solo parámetro. Vienen de un mal equilibrio entre estructura, volumen e interpretación.


Aquí tienes los casos más habituales y cómo corregirlos rápidamente.

Caso

Qué ocurre

Causa probable

Solución

🔴 Imagen demasiado rígida

Parece un “calco” de la original

Canny y Depth demasiado altos

Bajar Canny (0.7 → 0.6) o Depth (0.5 → 0.4)

🔴 Imagen plana

Falta sensación de profundidad

Depth demasiado bajo

Subir Depth (0.5 → 0.6)

🔴 Pérdida de forma

La estructura se deforma

Canny demasiado bajo

Subir Canny (0.7 → 0.8)

🔴 Resultado caótico

Elementos incoherentes

Prompt poco claro o conflicto entre controles

Simplificar prompt

🔴 Volumen incorrecto

Perspectiva rara o poco realista

Depth mal interpretado o resolución baja

Subir resolución del depth (ej. 1024)

🔴 Demasiado detalle en bordes

Exceso de líneas

Canny demasiado sensible

Subir low/high en Canny

🔴 Resultado poco industrial

No se transforma lo suficiente

Prompt débil

Reforzar conceptos industriales

🔴 Resultado inconsistente entre pruebas

Difícil reproducir resultados

Cambios múltiples simultáneos

Ajustar una variable por iteración

Si algo no funciona: 1️⃣ Revisa Canny (estructura)2️⃣ Revisa Depth (volumen)3️⃣ Revisa el prompt4️⃣ Ajusta solo una variable, y vuelve a probar


🔁 Qué puedes probar a continuación

Una vez que entiendes cómo combinar Canny + Depth dentro de un workflow Multi-ControlNet, el siguiente paso es experimentar de forma controlada.

Prueba

Qué hacer

Qué vas a observar

🧪 Cambiar la imagen base

Probar con otras arquitecturas, interiores o ciudades

Cómo cambia la interpretación manteniendo estructura y volumen

🎛️ Ajustar Canny

Probar valores: 0.6 / 0.7 / 0.8

Diferencias en fidelidad estructural

🌐 Ajustar Depth

Probar valores: 0.4 / 0.5 / 0.6

Cambios en la sensación de volumen

🧠 Modificar el prompt

Hacerlo más técnico o más creativo

Cómo cambia la reinterpretación sin perder coherencia

⚙️ Cambiar resolución

Probar 768×1152 vs 1024×1024

Impacto en composición y escala

🔄 Cambiar modelo base

Probar otros checkpoints SDXL

Diferencias en estilo y detalle

Catedral de León con cielo gris. Texto LEÓN al frente. Imagen transformada en boceto, mapa en blanco y negro, y versión industrial oscura.
Ejemplo creado con este workflow

🗺️ Conclusión

En este artículo has dado un paso importante dentro de la serie: pasar de usar un único ControlNet a combinar varios dentro de un mismo workflow,

En cuanto introduces varios ControlNet, todo cambia. Ya no estás dando una única instrucción, estás construyendo una descripción más completa de la escena, en este caso Canny define la estructura, Depth define el volumen y juntos permiten reinterpretar la imagen de forma mucho más coherente.


A partir de ahora puedes:

  • entender cómo funcionan varios ControlNet en conjunto

  • construir workflows más ricos y controlados

  • separar forma y volumen de forma consciente

  • diagnosticar problemas de estructura vs profundidad

  • mejorar la coherencia en escenas complejas

Generar imágenes con IA no es cuestión de suerte. Es cuestión de control, y ahora tienes una herramienta más potente para hacerlo.


Si quieres seguir aprendiendo a dominar la IA en local y construir workflows realmente útiles:


🌐 Recursos útiles


Comentarios


© 2025 by Lozkorp                                                         

bottom of page