DWposeDeluxe Cherry Picker (Frames)
Beat pose jitter by over-sampling, then cherry-picking
- pose_keypoints
- pose_keypoints
Pose detection jitters. Keypoints wobble frame to frame even when the person isn't moving, and when you feed a shaky skeleton into a ControlNet, the generated video inherits the wobble. This node attacks the problem from a clever angle: instead of trying to smooth bad data, it assumes you have extra data - an over-sampled, high-FPS pose sequence - and picks the most confident keypoint from each chunk of frames.
The idea is that a 2x over-sampled detection gives you two measurements per output frame, and the more confident one is usually the more accurate one. Sample even higher (via a VFI pass), and you get even more votes to choose from.
How it works
Input pose_keypoints is your over-sampled batch; factor (default 2) is the downsampling ratio. The node walks the sequence in chunks of factor frames, and for each output frame it builds the merged pose by taking, for every individual keypoint, the highest-confidence value across all frames in the chunk. Body, face, and both hands all get the treatment.
So with factor=2, a 240-frame 2x sequence becomes 120 frames, each one assembled from the best-scoring keypoints of its two source frames. Because it picks per-keypoint rather than per-frame, a hand that was crisp in frame 1 and blurry in frame 2 keeps the crisp one while a shoulder that was better in frame 2 does the same - hence "cherry picking."
Two behaviors worth knowing. It logs a confidence-gain summary per body point to the console after each run, so you can see how much the picking actually helped (or didn't). And the chunking logic means the last partial chunk - if your frame count isn't evenly divisible by factor - still contributes a frame, just from fewer votes.
When it's worth it
The README positions this for use after VFI (Video Frame Interpolation): interpolate your video to 2x or higher, detect poses on the denser sequence, then cherry-pick back down. If you're already running VFI in your pipeline, this is nearly free anti-jitter. If you're not, running an entire extra detection pass just to smooth a skeleton is a real cost - this node pays for itself when pose quality is the bottleneck, not when you're just prototyping.
Honest caveat: it picks the most confident point, not the most correct one. If the detector is confidently wrong on the same keypoint across all frames in a chunk, cherry-picking just picks the most confident wrong answer. It's a statistical improvement, not a guarantee.
Installing it
Part of the DWposeDeluxe pack:
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 involved - pure data processing. Pair it with its sibling CherryPickerTwoInputs if your redundant data comes from two separate detection runs rather than one over-sampled run.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_keypoints | POSE_KEYPOINT | — | |
| factor | INT | 22–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pose_keypoints | POSE_KEYPOINT | — |