La inteligencia artificial generativa ha recorrido un camino largo: de modelos que seguían prompts de texto a sistemas que interpretan estructuras espaciales con precisión. Hasta hace poco, si querías que una imagen respetara una pose específica, una profundidad concreta y unos bordes determinados, tenías que cargar tres modelos de ControlNet diferentes. Eso se traduce en VRAM agotada y un workflow que se convierte en un laberinto de nodos difícil de mantener.
ControlNet Union llega para cortar ese nudo. Un solo archivo. Múltiples canales de control. Especialmente diseñado para arquitecturas de nueva generación como FLUX en ComfyUI.
🏗️ Workflow Pro: ControlNet Union
🏗️ ¿Qué es ControlNet Union y por qué es una Revolución?
ControlNet Union no es una “colección” de modelos empaquetados juntos, sino una arquitectura entrenada para ser multimodal desde su base. Diferencia importante. Tradicionalmente, cada ControlNet (Canny, OpenPose, Depth) era una copia completa del modelo base con capas adicionales entrenadas para una única tarea. Un modelo por función. Sin excepciones.
El problema de la fragmentación: Cargar tres ControlNets de SDXL (aprox. 2.5GB cada uno) sumado al modelo base (6.5GB) y el VAE, ponía de rodillas incluso a las RTX 3090 de 24GB.
ControlNet Union (desarrollado por equipos como X-Labs e InstantX) utiliza una técnica de entrenamiento donde un único modelo aprende a interpretar diferentes canales de entrada. Esto significa que:
- Ahorras espacio en disco: Un solo archivo de ~2.5GB sustituye a 8 o 10 modelos individuales.
- Eficiencia de VRAM: Al ser un solo modelo, la gestión de memoria de ComfyUI evita las cargas y descargas constantes de la GPU que antes provocaban cuellos de botella.
- Simultaneidad nativa: Le indicas al modelo que la entrada A es una pose y la entrada B es un mapa de profundidad, y él lo procesa de forma integrada, no secuencial.
🏗️ Instalación Paso a Paso: ComfyUI-ControlNet-Union
Para utilizar esta tecnología, descargar el modelo no es suficiente. Necesitas nodos que sepan comunicarse con esta arquitectura unificada, porque los nodos estándar de ControlNet no entienden el sistema de tipos que usa Union.
🏗️ 1. Instalación de Custom Nodes
La implementación más popular y estable actualmente es la de X-Labs.
- Abre tu ComfyUI Manager.
- Busca e instala:
ComfyUI-XLabs-AI. - Reinicia ComfyUI completamente.
Alternativamente, vía terminal en tu carpeta custom_nodes:
git clone https://github.com/XLabs-AI/x-flux-comfyui
🏗️ 2. Descarga del Modelo Maestro
Debes descargar el modelo FLUX.1-dev-ControlNet-Union-Pro. Lo encontrarás en Hugging Face bajo el repositorio de Shakker-Labs o el repositorio original de InstantX/Union en el que se basan la mayoría de variantes.
Ruta Crítica: A diferencia de otros ControlNets, los nodos de X-Labs buscan los modelos en ComfyUI/models/xlabs/controlnets/. Si colocas el archivo en la carpeta genérica de controlnets, el nodo no lo encontrará. Crea estas carpetas si no existen antes de mover el archivo.
🏗️ Configuración del Nodo: El Cerebro de la Unión
El corazón de este workflow es el nodo “Apply Flux ControlNet” combinado con “Set Union ControlNet Type”. El segundo no es opcional: sin él, el modelo no sabe qué tipo de señal está recibiendo y los resultados serán impredecibles.
🏗️ Anatomía del Workflow
Para que ControlNet Union funcione con múltiples entradas, el esquema debe ser el siguiente:
- Preprocesadores: Nodos individuales para
Canny,Depth(usando Zoe o MiDaS) yOpenPose. - Selector de Tipo (Set Union ControlNet Type): Este nodo es obligatorio. Se coloca entre el preprocesador y el nodo de aplicación. Tiene un menú desplegable donde seleccionas:
0: Canny1: Tile2: Depth3: Blur4: Pose5: Gray6: Low Res
- Nodo de Aplicación (Apply Flux ControlNet): Recibe la imagen preprocesada, el tipo definido y el modelo Union.
🏗️ Ejemplo Práctico: Combinando Pose, Depth y Canny en un Solo Nodo
Imagina que quieres generar un personaje en una pose de yoga muy específica (Pose), dentro de una habitación cuya estructura quieres mantener (Depth), y con un patrón de ropa determinado (Canny).
🏗️ Configuración de los Nodos
- Pose: Conecta tu imagen de referencia a un nodo
DWPose Estimator. La salida va a unSet Union ControlNet Typeconfigurado enPose. - Depth: Otra imagen (o la misma) a un
Depth Map Estimator. La salida a unSet Union ControlNet Typeconfigurado enDepth. - Canny: Salida a
Set Union ControlNet Typeconfigurado enCanny.
🏗️ El Encadenamiento (Chaining)
En ComfyUI, para usar múltiples controles, encadenas las condiciones (Conditioning) en serie.
- Conecta el
Conditioningde tu Prompt Positivo al primerApply Flux ControlNet. - La salida de este va al
Conditioningdel segundo. - La salida del segundo al tercero.
- El último
Conditioningse conecta al Sampler.
Fuerza (Strength): Al combinar varios controles, la imagen puede volverse rígida o “quemada”. Mantén las fuerzas acumuladas por debajo de 1.0. Un punto de partida razonable: Pose 0.7, Depth 0.4, Canny 0.3. Ajusta desde ahí según el resultado.
🏗️ Gestión de VRAM y Optimización para GPUs Modestas
FLUX con ControlNet Union activo exige hardware en serio: con menos de 16GB de VRAM dedicada, necesitas aplicar al menos dos de estas medidas para que el workflow no colapse a mitad de la generación.
- Uso de GGUF: No uses el modelo
flux1-dev.safetensorsoriginal de 23GB. Usa las versiones GGUF (Q4_K_M o Q5_0). Esto reducirá el uso de memoria a la mitad sin pérdida perceptible de calidad. - Modo FP8: Configura los pesos de ControlNet en
fp8en las opciones del nodo de carga. - VAE Tiled: Si recibes errores de memoria al decodificar la imagen final, usa el nodo
VAE Decode (Tiled). Divide la imagen en fragmentos pequeños para que la GPU pueda procesarlos uno a uno. - Resolución: No intentes generar a 2K directamente con ControlNet Union activado. Quédate en 1024x1024 o 1216x832 y luego haz un Upscale (consulta nuestra guía de upscaling 4K).
🏗️ FAQ Técnico: Resolviendo Problemas Comunes
🏗️ ¿Puedo usar este modelo con Stable Diffusion 1.5 o XL?
No directamente. El modelo Union Pro de X-Labs está diseñado para la arquitectura de FLUX. Existen versiones “Union” para SDXL de InstantX que siguen una lógica similar, aunque con un rango de tipos de control más reducido y menor capacidad de simultaneidad.
🏗️ ¿Por qué obtengo una imagen gris o con ruido aleatorio?
Suele ser un desajuste entre el Sampler y el ControlNet. Comprueba que el XLabs Sampler tenga los steps y cfg recomendados para el modelo base que estás usando. Para FLUX Dev, los valores de referencia son 20-30 steps y un guidance_scale de 3.5. Salirte de ese rango con ControlNet activo amplifica el ruido de forma visible.
🏗️ ¿Qué hace el parámetro ‘Global Average Pooling’?
Si lo activas, el ControlNet interpreta la imagen de forma global en lugar de píxel por píxel. Tiene sentido para el modo Gray o Low Res, donde la información espacial fina no importa tanto. Para Pose o Canny, déjalo desactivado: activarlo difumina los detalles estructurales que precisamente quieres preservar.
Dominar ControlNet Union cambia la forma en que trabajas en ComfyUI. Dejas de negociar con lo que el modelo decide generar y empiezas a dictar la estructura, la profundidad y la anatomía de cada imagen. Un solo archivo. Control total.
Si quieres llevar ese control al nivel de detalle más fino, la guía avanzada de Inpainting para manos es el siguiente paso lógico.
Siguientes pasos en ComfyUI
Primeros pasos
Preguntas frecuentes
- ¿Qué es ControlNet Union y por qué es mejor que los modelos individuales?
- ControlNet Union es un modelo 'unificado' que contiene múltiples arquitecturas de control (Canny, Depth, Pose, etc.) en un solo archivo. Es mejor porque reduce drásticamente la fragmentación del flujo de trabajo, permite usar varios tipos de control simultáneamente con menos sobrecarga de VRAM y simplifica la gestión de archivos en tu carpeta de modelos.
- ¿Puedo usar ControlNet Union con 8GB de VRAM?
- Es posible si usas versiones GGUF cuantizadas de FLUX (como Q4_0) y el modelo Union en modo fp8. Sin embargo, para una experiencia fluida con múltiples controles simultáneos, se recomiendan 12GB o más, ya que FLUX y ControlNet Union son altamente demandantes de memoria.
- ¿Por qué mis controles no parecen afectar a la imagen final?
- Asegúrate de estar usando el nodo 'Set Union ControlNet Type' antes de cada entrada de control. Si no especificas el tipo (ej. Canny o Pose), el modelo Union no sabrá cómo interpretar el mapa de entrada. También verifica que la fuerza (strength) sea superior a 0.5.
- ¿Es compatible ControlNet Union con el sampler estándar de ComfyUI?
- Generalmente, los modelos de X-Labs funcionan mejor con su propio 'XLabs Sampler'. El sampler estándar puede funcionar, pero a menudo produce resultados inconsistentes o ignora el control si no se configuran correctamente los 'timesteps' de aplicación.