Nodes/ControlNet Auxiliar/modaux: openpose
ComfyUI Node

modaux: openpose

Modaux openpose

By madtunebk·Created 2 years ago·Updated 2 years ago· 17
modaux: openpose
  • image
  • IMAGE
detect_resolution512
image_resolution512
include_bodytrue
include_handtrue
include_facetrue

This is the node behind every "make this dancer a robot but keep the exact stance" image you've ever seen. OpenPose looks at a photo of a person and draws a stick-figure skeleton over them - 17 body joints, plus landmarks for hands and face - and that skeleton becomes the leash for your generator. The person in the output changes completely; the pose doesn't budge.

Inside ComfyUI it's listed as modaux: openpose under the ControlNet Auxiliar category. It's the classic pose preprocessor, the one every union ControlNet supports and the first thing beginners reach for after canny.

How it works

The node wraps OpenposeDetector from Hugging Face's controlnet_aux, which is ControlNet's heavily-edited fork of CMU OpenPose. It runs three separate models on your image - body, hand, and face estimators - and draws the detected keypoints onto a clean canvas. Weights come from lllyasviel/Annotators on Hugging Face and download on first run.

Where the defaults bite: the underlying detector ships with hands and face off, but this pack flips all three toggles on. So out of the box you get full body + hands + face on every image, which is slower and noisier than you usually want. If you're posing a full body, turn off include_hand and include_face - cleaner skeleton, faster run, and most body-pose ControlNets don't care. Keep them on when hands or facial expression are the point (that's the "openpose_full" mode).

The other two inputs, detect_resolution and image_resolution (both default 512), control detection quality and output size respectively. Output is a single IMAGE - the skeleton - which goes into an OpenPose ControlNet (control_v11p_sd15_openpose on SD 1.5, or the "pose" condition of any union model).

The classic recipe

Load Image → modaux openpose → ControlNet Apply (openpose checkpoint)
                                    ↓
Load Image (same source) → VAE Encode → KSampler → output

A few knobs worth knowing once it's wired: pose ControlNets respond well to a strength around 0.6–0.9 rather than the old 1.0 default, and ending the control halfway through the steps (start 0.0, end ~0.5) lets the model take over the details after the composition is locked. Stacking openpose with a depth map - pose for the person, depth for the scene - is the standard multi-ControlNet combo.

Installing it

ComfyUI Manager: search ControlNetAux (repo madtunebk/ComfyUI-ControlnetAux) and install. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/madtunebk/ComfyUI-ControlnetAux
cd ComfyUI-ControlnetAux
pip install -r requirements.txt   # timm, controlnet-aux==0.0.7, mediapipe

Then restart ComfyUI.

Where people get burned

Two naming traps. First, this is the small beta "ControlNet Auxiliar" pack by madtunebk, not Fannovel16's much bigger comfyui_controlnet_aux - if a workflow asks for AIO_Prep or LLlyasviel* nodes, that's the other pack, and you'll want to install that one instead. Second, don't confuse this with DWPose, which is the improved pose detector everyone switches to for hand accuracy; this pack ships its own controlaux_dwpose node, but it needs a separate MMDetection/MMCV/MMPose install that none of the other nodes require.

OpenPose is the single most-traveled ControlNet condition for people. If your problem is "I want this person in that pose," this node plus an OpenPose ControlNet is the whole answer - just decide whether you actually want the hands first.

CategoryControlNet Auxiliar

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
detect_resolutionINT512256–1024
image_resolutionINT512256–1024
include_bodyoptBOOLEANtrue
include_handoptBOOLEANtrue
include_faceoptBOOLEANtrue

Outputs (1)

NameTypeDescription
IMAGEIMAGE