YDem Pose Remove Hand
Telling DWPose to Shut Up About Hands
- pose_keypoint
- pose_keypoint
DWPose is great at finding hands. That's usually a feature - the "better hand detection" is half the reason people pick it over stock OpenPose. But it's also a liability. A hand that's occluded, blurry, or half out of frame gets detected as a mangled skeleton, and if you're feeding that into a ControlNet, the model will faithfully reproduce the mangled hand. YDem Pose Remove Hand lets you zero out the hand keypoints on specific frames so a bad detection stops being the model's problem.
It's one of the three pose nodes in luoq24/ydem_nodes, and it's the surgical one: it doesn't re-sort or re-track anything, it just blanks hand keypoints.
How it works
The node understands both hand formats you'll actually see in a POSE_KEYPOINT:
- COCO-WholeBody 133-point layout - the single array DWPose outputs, where hand keypoints live at fixed index ranges. The left hand is indices 91–112, the right hand 112–133 (the code walks the array in x-y-score triples). Zeroing those ranges removes the hands.
- OpenPose-style separate arrays - some pose data stores hands as their own
hand_left_keypoints_2dandhand_right_keypoints_2dlists. The node zeros those too.
So whatever flavor of whole-body pose your upstream detector handed you, the hands get wiped.
The inputs
Four inputs, and the only ones you touch are the three beyond the pose itself:
pose_keypoint- in, from a DWPose Estimator.left_handandright_hand- booleans, both default false. Flip the one you want gone.frames- a string specifying which frames, instart_endpairs separated by semicolons:1_5;13_20means frames 1–5 and 13–20. Frame numbers are 1-based.
Here's the trap, and it's a real one: if frames is empty, the node does nothing - even with a hand toggle on. All three have to line up: the toggle, the frame range, and the pose input. The node is coded to no-op rather than guess, which is defensible, but it means the classic "I toggled it and nothing happened" moment is usually just an empty frames field. (If both hand toggles are off, it also returns the input untouched.)
Why you'd bother
Beyond fixing mangled hands, this is the standard move for clean-hands prompting. A common trick in pose-conditioned work is to drop the hand skeleton entirely and let the model invent hands from the prompt - hands are the single most-criticized body part in AI images, and a perfectly good pose map is often the thing making them weird. Blank the hands on the frames you care about and you remove the conditioning the model was leaning on to draw them wrong.
The single output, pose_keypoint, feeds straight into a ControlNet or into the pack's YDem Pose Renderer to preview the result.
Installing it
Same pack as the rest - ComfyUI Manager, search "ydem_nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/luoq24/ydem_nodes
Restart ComfyUI. The dependency is comfyui_controlnet_aux, which is where POSE_KEYPOINT comes from; there are no models or extra pip requirements in this pack. The one real-world friction people hit with DWPose installs on non-NVIDIA setups (ROCm/AMD path) lives in comfyui_controlnet_aux, not here - but if you already have DWPose running, this node will just work.
It's a narrow tool, no question. But when you're five frames into a clip and one bad hand detection is ruining every single output, "narrow" is exactly what you want.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_keypoint | POSE_KEYPOINT | — | |
| left_hand | BOOLEAN | false | — |
| right_hand | BOOLEAN | false | — |
| frames | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pose_keypoint | POSE_KEYPOINT | — |