Cambiar tema

ControlNet en ComfyUI: controla poses y composición con OpenPose, Canny y Depth

Easton editorial illustration: central orange ControlNet node with visible input and output sockets, three compact reference tiles showing a pose skeleton, Canny edges, and depth contours, one framed output portrait whose pose and composition match the reference tiles

"La documentación oficial de Apply ControlNet describe entradas, rango de strength y comportamiento de start_percent y end_percent."

Quieres que una referencia fije pose, líneas y composición, pero la figura se deforma, los bordes se diluyen y el encuadre cambia.

ControlNet aporta esa guía estructural: OpenPose para pose, Canny para bordes y Depth para relaciones espaciales. Quedan los ajustes: qué strength usar, cómo interpretar start_percent y end_percent y cómo evitar conflictos entre controles.

Elige primero preprocesador y pesos según el objetivo. Ajusta después fuerza y rango. Si el resultado sigue desviándose, revisa conexiones, compatibilidad base y señales contrapuestas.

Tabla rápida por objetivo de control

Primero decide qué estructura conservar, no el valor de strength.

ObjetivoTipoPreprocesadorPesos SD1.5 comunes
Generar una persona con pose concretaPoseOpenPose / DWPosecontrol_v11p_sd15_openpose
Seguir las líneas de una referenciaBordesCannycontrol_v11p_sd15_canny
Mantener planos y composiciónProfundidadDepth (MiDaS / LeReS)control_v11f1p_sd15_depth
Guiar con un bocetoBocetoScribblecontrol_v11p_sd15_scribble
Mantener contornos suavesBorde suaveSoftEdge (HED / PiDiNet)control_v11p_sd15_softedge

Considera dos detalles:

  1. OpenPose y DWPose generan puntos de pose. DWPose suele detallar mejor cuerpo, manos y rostro, útil para gestos.

  2. La salida debe coincidir con los pesos. Un mapa OpenPose necesita un modelo de pose. Si mapa, pesos o arquitectura no coinciden, el efecto será mínimo o habrá error.

Los pesos suelen ir en ComfyUI/models/controlnet. Reinicia ComfyUI o actualiza la lista y selecciónalos en Load ControlNet Model.

Tabla de parámetros de ControlNet

strength, start_percent y end_percent controlan influencia y momento. Usa los límites oficiales y estos valores iniciales.

ParámetroRangoInicioEfectoPrueba
strength0–101.0Influencia del mapaMantén el seed y varía alrededor de 1.0; 0.5–1.5 es el rango de prueba oficial habitual
start_percent0–10Inicio de la influenciaPose y composición suelen empezar en 0; retrasa solo después de validar la base
end_percent0–11Fin de la influenciaSi queda rígido, prueba 0.8 o menos para liberar detalles tardíos

Cómo entender start_percent y end_percent

Definen un intervalo, no una espera. Con start_percent=0.2 y end_percent=0.8, ControlNet actúa solo entre el 20 % y el 80 % de la difusión.

Pose y composición se forman pronto. Para fijarlas, empieza en 0. Si el resultado queda rígido, conserva start_percent=0 y baja end_percent de 1 a 0.8.

El rango completo (start_percent=0, end_percent=1) es una buena base. Confirma el efecto y cambia un parámetro cada vez.

Cómo elegir strength

strength regula la influencia. En 0 desactiva el control. Valores mayores suelen imponer más el mapa, aunque cada modelo responde distinto.

Empieza cerca de 1.0. Sube en pasos pequeños si ignora el mapa y baja si anatomía o líneas se deforman. 0.5–1.5 es una referencia oficial, no un rango seguro universal.

Montar el workflow

La cadena esencial carga el modelo base y ControlNet, procesa la referencia, aplica el control a los conditionings positive y negative y los envía a KSampler.

Paso 1: carga el modelo base

Nodo: Load Checkpoint

  • Selecciona el checkpoint de Stable Diffusion.
  • Identifica si es SD1.5, SDXL u otra arquitectura.
  • Continúa el grafo con MODEL, CLIP y VAE.

Paso 2: carga el modelo ControlNet

Nodo: Load ControlNet Model

  • Selecciona pesos compatibles con arquitectura y tipo de mapa.
  • Su salida CONTROL_NET se conecta a Apply ControlNet.

Paso 3: carga y preprocesa la referencia

Nodos: Load Image y un preprocesador como OpenPose Preprocessor.

  • Load Image: sube la referencia.
  • Preprocesador: conviértela en pose, bordes o profundidad.
  • Comfy Core no incluye todos; instala comfyui_controlnet_aux con ComfyUI Manager si hace falta.

ControlNet lee el mapa procesado. Previsualízalo para detectar miembros, bordes o profundidad ausentes.

Paso 4: conecta Apply ControlNet

Nodo: Apply ControlNet

  • control_net: desde Load ControlNet Model.
  • image: desde el preprocesador, no la imagen original.
  • positive: conditioning positivo.
  • negative: conditioning negativo.
  • strength: empieza en 1.0.
  • start_percent: empieza en 0.
  • end_percent: empieza en 1.

Apply ControlNet produce nuevos conditionings. Conecta ambos a KSampler. Si el sampler recibe los originales, ControlNet queda fuera de la ruta.

Paso 5: genera y compara

Nodo: KSampler

  • model: desde Load Checkpoint.
  • positive / negative: desde Apply ControlNet.
  • latent_image: desde Empty Latent Image u otra fuente.
  • Fija el seed para comparar; la variación aleatoria puede ocultar el efecto.

Revisa tres conexiones:

  1. positive y negative atraviesan Apply ControlNet.
  2. image recibe el mapa procesado.
  3. Apply ControlNet(Old) está obsoleto; usa el nodo estándar.

Compatibilidad con el modelo base

SD1.5, SDXL y FLUX no comparten pesos automáticamente. Identifica el modelo base y elige compatibilidad documentada.

Compatibilidad de preprocesador y modelo

PreprocesadorSD1.5 comúnRegla SDXLRegla FLUX
Cannycontrol_v11p_sd15_cannyPesos SDXL que acepten CannyPesos documentados para FLUX objetivo y Canny
OpenPose / DWPosecontrol_v11p_sd15_openposePesos SDXL que acepten posePesos documentados para FLUX objetivo y Pose
Depth (MiDaS / LeReS)control_v11f1p_sd15_depthPesos SDXL que acepten DepthPesos documentados para FLUX objetivo y Depth
Scribblecontrol_v11p_sd15_scribblePesos SDXL que acepten ScribbleComprueba la ficha; no todo Union admite Scribble
SoftEdge (HED / PiDiNet)control_v11p_sd15_softedgePesos SDXL que acepten SoftEdgeComprueba ficha y workflow para esa entrada

Los modelos Union reúnen varios modos y son una opción para FLUX. Modos, nodos y fuerzas útiles dependen del modelo y versión del workflow.

Tabla de compatibilidad base

BaseSelecciónCarpetaAdvertencia
SD1.5La familia control_v11*_sd15_* es comúnComfyUI/models/controlnetsd15 indica SD1.5, no SDXL
SDXLUsa pesos marcados para SDXLComfyUI/models/controlnetHay varias implementaciones; sigue la ficha
FLUXUsa ControlNet o Union compatible con el FLUX objetivoComfyUI/models/controlnetNodos, modos y fuerza son específicos; no copies SD1.5

Elegir el modelo base

Si aún no lo elegiste, consulta la guía de selección de modelos Stable Diffusion. Compara características y recursos; aquí solo tratamos compatibilidad.

Dónde guardar el modelo

Los pesos suelen ir en ComfyUI/models/controlnet. Reinicia o actualiza la lista y selecciónalos en Load ControlNet Model.

Si hay muchos archivos, usa subcarpetas compatibles. Conserva la fuente y la ficha: un prefijo inventado no demuestra compatibilidad.

Ajustar varios ControlNet

Puedes encadenar Apply ControlNet para pose y composición. Prueba cada control solo antes de mezclar dos fallos.

Encadenar Apply ControlNet

Conecta las salidas positive y negative del primero a las entradas equivalentes del segundo.

  1. Primer ControlNet:

    • Carga OpenPose y un mapa de pose.
    • Prueba strength=1.0, start_percent=0, end_percent=0.7.
  2. Segundo ControlNet:

    • Carga Depth y un mapa de profundidad.
    • Empieza con strength=0.6, start_percent=0, end_percent=0.6.
  3. Orden:

    • Conditioning → primer Apply ControlNet → segundo Apply ControlNet → KSampler.
    • Mantén el mismo orden en positive y negative.

Son valores de diagnóstico, no óptimos. Pose y profundidad son estructuras tempranas; empieza en 0 y separa funciones por fuerza y final.

Principios de ajuste

Empieza por prioridad y rango.

Define prioridad:

  • Prueba el principal cerca de 1.0.
  • Empieza el auxiliar en 0.5–0.7.
  • Si tiran en direcciones opuestas, baja el auxiliar antes de subir ambos.

Define rango:

  • Pose y composición actúan pronto; deja start_percent en 0 al inicio.
  • Usa end_percent distintos, por ejemplo 0.7 y 0.6.
  • Para liberar detalles tardíos, termina antes en lugar de mover el control a la segunda mitad.

Después revisa:

  1. Dos controles iguales no están prohibidos, pero mapas de la misma estructura suelen añadir conflicto.
  2. Prefiere señales complementarias como OpenPose + Depth u OpenPose + Canny.
  3. Fija el seed y compara uno frente a dos controles.
  4. No empieces con dos strengths altos.
  5. Cambia un parámetro y guarda un workflow reproducible.
  6. No añadas el segundo hasta ver el efecto del primero.

Lista de solución de problemas

ProblemaCausa probableRevisión
Imagen igual sin ControlNetMapa desconectado, strength cerca de 0, conditioning original o arquitectura incorrectaPrevisualiza mapa; revisa image y conditioning; compara seed fijo; confirma arquitectura
Pose o líneas no coincidenPreprocesador incorrecto, mapa incompleto o poca influenciaRevisa esqueleto/bordes; prueba DWPose o Canny; sube strength gradualmente
Imagen rígida o deformadaFuerza alta, mapa con ruido o control hasta el finalBaja strength; limpia mapa; cambia end_percent de 1 a 0.8 o menos
Falta el preprocesadorCustom node ausente o dependencia fallidaInstala comfyui_controlnet_aux; reinicia; revisa errores de importación
SDXL/FLUX no carga o no actúaPesos incompatibles con arquitectura o nodoRevisa base, nodos y ejemplo de la ficha; no confíes solo en el nombre
Falta Apply ControlNet(Old)Nodo obsoleto ocultoUsa Apply ControlNet estándar; muestra obsoletos solo para workflows antiguos
Varios ControlNet chocanMapas opuestos, auxiliar fuerte o muchos cambiosPrueba solos; fija seed; baja auxiliar; acorta rango; cambia un valor
Los cambios no se notanSeed variable, mapa pobre o ruta que evita ControlNetFija seed y sampler; revisa mapa; comprueba positive y negative de KSampler

Próximos pasos

ControlNet controla estructuras difíciles de expresar con un prompt. Cuando el grafo funcione, continúa con:

Crear un workflow básico de ControlNet en ComfyUI

Preprocesar una referencia e incorporar su estructura a la cadena de muestreo.

  1. 1

    Step 1: Identifica la arquitectura base

    Comprueba si el checkpoint es SD1.5, SDXL o FLUX y elige pesos compatibles.
  2. 2

    Step 2: Carga y preprocesa la referencia

    Genera un mapa de pose, bordes o profundidad con OpenPose, Canny o Depth.
  3. 3

    Step 3: Carga ControlNet

    Guarda los pesos en ComfyUI/models/controlnet y selecciónalos en Load ControlNet Model.
  4. 4

    Step 4: Conecta Apply ControlNet

    Conecta positive, negative, control_net y la imagen procesada; envía el conditioning a KSampler.
  5. 5

    Step 5: Ajusta con seed fijo

    Prueba strength 1.0, start_percent 0 y end_percent 1; después cambia un valor cada vez.
  6. 6

    Step 6: Valida antes de encadenar

    Prueba cada ControlNet solo y reduce la fuerza o el rango del control auxiliar.

FAQ

¿Qué diferencia hay entre OpenPose y DWPose?
Ambos convierten una persona en puntos clave. DWPose suele aportar más detalle corporal, facial y de manos; OpenPose basta para una pose general. Confirma el formato esperado en la ficha del modelo.
¿Qué valor de strength conviene usar?
Empieza cerca de 1.0 con el mismo seed. Sube poco a poco si el control es débil y baja si aparecen rigidez o deformaciones. El rango oficial 0.5–1.5 es una referencia de prueba, no una garantía universal.
¿Qué significan start_percent y end_percent?
Definen el tramo de difusión en el que actúa ControlNet. 0.0–0.8 significa desde el inicio hasta el 80 %. Pose y composición suelen empezar en 0; terminar antes deja más libertad al detalle final.
¿Puedo usar varios ControlNet?
Sí. Conecta las salidas positive y negative de un Apply ControlNet a las entradas equivalentes del siguiente y envía el último resultado al sampler. Valida cada control por separado.
¿Qué ControlNet debo usar con FLUX?
Usa pesos con compatibilidad explícita para tu modelo FLUX y el workflow actual. Los modelos Union son una opción, pero modos, nodos y rangos dependen de cada ficha.

8 min de lectura · Publicado el: 19 jul 2026 · Actualizado el: 19 jul 2026

Comentarios

Inicia sesión con GitHub para dejar un comentario

Easton BlogEaston Blog