La evolución de la inteligencia artificial generativa ha pasado de modelos simples que seguían prompts de texto a sistemas complejos capaces de interpretar estructuras espaciales. Hasta hace poco, si querías que una imagen siguiera una pose específica, una profundidad concreta y unos bordes determinados, necesitabas cargar tres modelos de ControlNet diferentes, lo que consumía una cantidad ingente de VRAM y complicaba el workflow hasta hacerlo inmanejable.
ControlNet Union llega para resolver este problema. Es el modelo definitivo que unifica las capacidades de múltiples redes de control en un solo archivo, permitiendo una versatilidad sin precedentes en ComfyUI, especialmente para modelos de nueva generación como FLUX.
🏗️ Workflow Pro: ControlNet Union
🏗️ ¿Qué es ControlNet Union y por qué es una Revolución?
ControlNet Union no es simplemente una “colección” de modelos, sino una arquitectura entrenada para ser multimodal desde su base. Tradicionalmente, cada ControlNet (como Canny o OpenPose) era una copia pesada del modelo base con capas adicionales entrenadas para una tarea específica.
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 es mucho más eficiente, evitando cargas y descargas constantes de la GPU.
- Simultaneidad nativa: Puedes “decirle” al modelo que la entrada A es una pose y la entrada B es un mapa de profundidad, y él lo procesará de forma integrada.
🏗️ Instalación Paso a Paso: ComfyUI-ControlNet-Union
Para utilizar esta tecnología, no basta con descargar el modelo; necesitamos nodos que entiendan cómo hablarle a esta arquitectura unificada.
🏗️ 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 X-Labs.
Ruta Crítica: A diferencia de otros ControlNets, los nodos de X-Labs suelen buscar los modelos en ComfyUI/models/xlabs/controlnets/. Crea estas carpetas si no existen.
🏗️ 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”. Aquí es donde ocurre la magia.
🏗️ 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, debes encadenar las condiciones (Conditioning).
- Conecta el
Conditioningde tu Prompt Positivo al primerApply Flux ControlNet. - La salida de este va al
Conditioningdel segundo. - La salida del segundo al tercero.
- Finalmente, el último
Conditioningse conecta al Sampler.
Fuerza (Strength): Al combinar muchos controles, la imagen puede volverse rígida o “quemada”. Te recomiendo usar fuerzas acumuladas menores a 1.0. Por ejemplo: Pose 0.7, Depth 0.4, Canny 0.3.
🏗️ Gestión de VRAM y Optimización para GPUs Modestas
FLUX y ControlNet Union son el “Crysis” de la IA generativa actual. Si tienes menos de 16GB de VRAM, sigue estos consejos:
- 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. Sin embargo, existen versiones “Union” simplificadas para SDXL de InstantX que siguen una lógica similar, aunque menos potentes.
🏗️ ¿Por qué obtengo una imagen gris o con ruido aleatorio?
Esto suele ser un desajuste entre el Sampler y el ControlNet. Asegúrate de que el XLabs Sampler tenga los mismos steps y cfg recomendados para el modelo base que estás usando. Para FLUX Dev, lo ideal son 20-30 steps y un guidance_scale de 3.5.
🏗️ ¿Qué hace el parámetro ‘Global Average Pooling’?
Si lo activas, el ControlNet intentará entender la imagen de forma global en lugar de pixel por pixel. Es útil para el modo Gray o Low Res, pero para Pose o Canny suele ser mejor dejarlo desactivado para mantener la precisión quirúrgica.
Dominar ControlNet Union es el paso definitivo para convertirte en un experto en ComfyUI. Ya no estás limitado por lo que la IA “quiere” dibujar, sino que tienes el control total sobre la estructura, la profundidad y la anatomía de tus creaciones.
Si te interesa profundizar más en cómo refinar tus imágenes una vez generadas, no te pierdas nuestra guía avanzada de Inpainting para manos, donde llevamos el control de detalle al siguiente nivel.
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.