DWposeDeluxe Keypoint Converter
The utility node that keeps pose data honest
- pose_keypoints
- pose_keypoints
- input_keypoint_info
Pose data is only useful if everyone downstream agrees on what it means, and this pack's own nodes will happily eat either normalized (0–1) or absolute (pixel) coordinates. That's a footgun: mix the two and your skeleton silently lands in the wrong place. The KeypointConverter is the node you run your data through when you want it clean, consistent, and saved - it converts coordinate systems, filters low-confidence junk, and writes the result to disk.
It's less glamorous than the estimator, but it's the one node that rescues you from "my pose is 4 inches to the left and everything's broken" debugging.
The settings that matter
padding_mode-auto-paddingfills in a canvas size if your data doesn't carry one;no-paddingleaves it alone. The pack's geometry nodes need canvas dimensions, so if your data came from outside the pack and lacks them, this is where you fix that.force_normalized- converts everything to normalized (0–1) coordinates. Flip this when you're feeding data into a pipeline that demands relative coords and you don't want to trust auto-detection.confidence_threshold(default 0.25) - drops keypoints below this confidence. Good for scrubbing noise; raises it and you get a cleaner but sparser skeleton.reset_confidence- sets valid points to confidence 1.0 and invalid ones to 0.0. Binary on/off instead of fuzzy values, which some downstream tools prefer.pretty_json- human-readable, indented JSON output. The author is blunt: this makes very large files, so only use it on small batches when you genuinely need to eyeball the data.save_output- writes the converted data to a file in your ComfyUI output directory.
Outputs
pose_keypoints- the processed, cleaned, converted dataset.input_keypoint_info- a STRING summary of what went in (frame count, people, detected format). The pack'sUnifiedKeypointHandleralso auto-detects normalized vs. absolute, which is what most of the other nodes use to stay consistent.
The workflow
Run the estimator → run the output through this converter once (normalize, filter, save) → load the saved file later with LoadPoseKeypoints → edit with the pack's other nodes. One clean pass up front beats chasing format bugs in five places downstream.
Installing it
Ships with DWposeDeluxe:
cd ComfyUI/custom_nodes/
git clone https://github.com/hobinrude/ComfyUI_DWposeDeluxe
cd ComfyUI_DWposeDeluxe
pip install -r requirements.txt
or search DWposeDeluxe in ComfyUI Manager. No models needed. Two honest caveats: the pretty JSON warning is real - a long video batch can balloon into a multi-megabyte wall of whitespace, so leave it off unless you're debugging. And if your source data is a weird or proprietary structure, the converter can only normalize what it recognizes; data from other packs may need manual cleanup first.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_keypoints | POSE_KEYPOINT | — | |
| padding_mode | COMBO | 2 options: auto-padding, no-padding | |
| confidence_threshold | FLOAT | 0.250–1 | — |
| reset_confidence | BOOLEAN | false | — |
| force_normalized | BOOLEAN | false | — |
| pretty_json | BOOLEAN | false | — |
| save_output | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| pose_keypoints | POSE_KEYPOINT | — |
| input_keypoint_info | STRING | — |