Nodes/ComfyUI-MultiPoseToolkit/MultiPose ▸ Pose Extraction
ComfyUI Node

MultiPose ▸ Pose Extraction

Every person in the frame, one skeleton canvas — not just the one closest to the camera

By starsFriday·Created 9 months ago·Updated 21 days ago· 3
MultiPose ▸ Pose Extraction
  • model
  • images
  • pose_images
  • pose_keypoints

Most pose extractors in ComfyUI have a quiet bias: they detect one person. DWPose and OpenPose pick the dominant figure in the frame and hand you a single skeleton, which is exactly wrong for a group shot, a dance clip with two people, or any sports footage where the interaction is the point. MultiPose ▸ Pose Extraction is the node that fixes that - it detects every person in the frame and renders all of them onto one pose canvas. That's the whole pitch, and it's why the pack exists.

How it works

The pipeline is deliberately simple, per the README, and it's all ONNX:

  1. YOLO runs on each frame at 640×640 and keeps every bounding box that clears its confidence and NMS thresholds, sorted by area so each person holds a stable sequence position.
  2. Each detected crop is resized to 256×192, normalized with ImageNet stats, and pushed through a ViTPose Whole-Body model. The heatmaps are decoded to 133 keypoints plus confidences (body, both hands, and 68 face landmarks).
  3. All of those skeletons - body, hands, face - are drawn onto a single black canvas per frame and returned as a normal IMAGE.

That black-canvas skeleton rendering is worth knowing about: it's the classic pose-guider format from the Alibaba Wan team's pose utilities (the pack literally reuses their drawing code, copyright header and all). So the output drops into Wan / SCAIL / VACE-style pose-conditioned video workflows in the same slot a single-person extractor would fill.

Inputs and outputs

There are only two inputs and you'll rarely touch either:

  • model - the POSEMODEL handle from MultiPose ▸ ONNX Loader. Load that first; nothing here works without it.
  • images - an IMAGE tensor, i.e. one frame or a whole video batch.

Outputs:

  • pose_images (IMAGE) - the rendered pose canvases, same resolution as the input. Feed these to a pose ControlNet, Pose Guider, or just preview them.
  • pose_keypoints (POSE_KEYPOINT) - per-frame data in the OpenPose-style schema (pose_keypoints_2d, face_keypoints_2d, hand_left/right_keypoints_2d, canvas dimensions). Same shape DWPose/OpenPose produce, so anything that already consumes a POSE_KEYPOINT can take this instead.

Sensible fallback: if a frame has no people, it uses the full frame as the bounding box rather than erroring - you still get a skeleton, just a "where's the person" skeleton.

Installation and gotchas

Same pack install as the rest: ComfyUI Manager → search ComfyUI-MultiPoseToolkit, or git clone https://github.com/starsFriday/ComfyUI-MultiPoseToolkit into custom_nodes/, install the requirements, download the YOLO + ViTPose ONNX files into ComfyUI/models/detection/, restart. Nodes land under the WanMultiPose menu group.

The honest gotcha is speed. It's per-frame YOLO plus per-person ViTPose, all in Python with a tqdm bar. On CPU, a short clip with three people can take a real while; run the loader on CUDAExecutionProvider and batch short previews first. There are no tuning knobs on this node - thresholds live in the detector defaults - so if you need to relax detection confidence you're editing code or picking a different YOLO checkpoint, not flipping a slider. Given the pack is brand new (single commit), treat any weirdness as a report to the repo rather than a skill issue.

CategoryWanMultiPose

Inputs (2)

NameTypeDefaultDescription
modelPOSEMODEL
imagesIMAGE

Outputs (2)

NameTypeDescription
pose_imagesIMAGE
pose_keypointsPOSE_KEYPOINT