Nodes/Eric Composer Studio/Pose Detector (RTMW/DWPose)
ComfyUI Node

Pose Detector (RTMW/DWPose)

Better hands than DWPose — RTMW pose detection for ComfyUI

By EricRollei·Created 5 months ago·Updated 4 months ago· 3
Pose Detector (RTMW/DWPose)
  • image
  • pose_keypoint
  • skeleton_preview
modelrtmw-x
devicecuda
score_threshold0.30
det_score_thresh0.50
preview_color_modeenhanced
preview_line_width4
preview_joint_radius5
draw_facetrue
draw_handstrue
draw_feettrue

If you've ever chased an OpenPose/DWPose skeleton around a photo of someone with their arm behind their back, you know the standard complaint: hands vanish, arms get dropped at the elbow, feet trail off. The whole pitch of the Eric_Composer_Studio pack is that RTMW - a Shanghai AI Lab whole-body model - recovers those limbs far better than DWPose, and this node is where that pitch lands. It runs RTMW-x/l/m or classic DWPose via the rtmlib ONNX backend and hands you a POSE_KEYPOINT in the exact format comfyui_controlnet_aux uses.

DWPose remains the community-standard pose preprocessor - the format every pose ControlNet was trained on - but its weak spot has always been hands under partial occlusion, and that's precisely the case RTMW is better at. So the practical answer is: default to RTMW-x for quality, keep DWPose around for maximum ControlNet compatibility.

How it works

The node builds an rtmlib Wholebody pipeline with ONNX Runtime - a YOLOX person detector plus a whole-body keypoint model that outputs 133 keypoints (body + hands + face + feet). RTMW results get a leg-cleanup pass that strips edge-clamped extrapolation artefacts; DWPose is left conservative. The provider is cuda or cpu (with onnxruntime-gpu installed it picks GPU automatically and logs which provider is active).

The inputs that matter

  • image - input image batch.
  • model - rtmw-x (default, best quality), rtmw-l, rtmw-m (faster, quick iteration), or dwpose.
  • score_threshold - the knob you'll actually tune. Default 0.30 routinely drops arms/hands when a limb is occluded, blurred or foreshortened. Drop it to 0.15–0.20 and the missing hands come back. This is the first thing to try when a skeleton looks amputated.
  • det_score_thresh - YOLO person-detector confidence. Leave at 0.50; only lower it if entire people are being missed.
  • device, plus the preview knobs: preview_color_mode (dwpose or enhanced L/R colour-coding), preview_line_width, preview_joint_radius, and draw_face / draw_hands / draw_feet.

Outputs

  • pose_keypoint - detected keypoints as OpenPose JSON, ready for any node that speaks POSE_KEYPOINT.
  • skeleton_preview - a rendered skeleton image at source resolution, so you can eyeball the detection before it goes anywhere.

Models auto-download on first use (the pack's model manager fetches the ONNX files from OpenMMLab); if you keep your own copies in ComfyUI/models/pose/, it uses those first. Expected files are rtmw-*.onnx, dw-ll_ucoco_384.onnx and a yolox detector.

Installing it

ComfyUI Manager → Custom Nodes Manager → search Eric Composer Studio → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Eric_Composer_Studio.git
cd Eric_Composer_Studio
python -m pip install -r requirements.txt

rtmlib is in requirements - that's the package that isn't bundled with ComfyUI. You also need comfyui_controlnet_aux installed (from Fannovel16's pack), because the POSE_KEYPOINT socket type this node outputs lives there; without it the pose sockets don't exist. onnxruntime-gpu is recommended for anything but a quick CPU test. One thing to check before you build a commercial pipeline on it: the pack is released under CC BY-NC 4.0 with a separate commercial license, so non-commercial use is fine but selling products built on it needs the paid terms.

Where people get burned

Missing hands → lower score_threshold (not det_score_thresh). "rtmlib is not installed" → pip install rtmlib into the Python that runs ComfyUI. And if the skeleton looks fine but ControlNet ignores it, that's a renderer problem, not a detection one - switch the downstream render to dwpose colour mode, because the enhanced preview colours are for your eyes, not for the model.

CategoryEric_Composer_Studio

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
modelCOMBOrtmw-x4 options: rtmw-x, rtmw-l, rtmw-m, dwpose
deviceCOMBOcuda2 options: cuda, cpu
score_thresholdFLOAT0.300–1Keypoint confidence cutoff. Lower (0.15-0.20) recovers arms/hands at partial occlusion.
det_score_threshFLOAT0.500.1–1YOLO person detector confidence. Only lower if entire people are being missed.
preview_color_modeCOMBOenhanced2 options: dwpose, enhanced
preview_line_widthINT41–12
preview_joint_radiusINT51–16
draw_faceBOOLEANtrue
draw_handsBOOLEANtrue
draw_feetBOOLEANtrue

Outputs (2)

NameTypeDescription
pose_keypointPOSE_KEYPOINT
skeleton_previewIMAGE