Pose Detection VitPose to DWPose
ViTPose detection, DWPose-shaped output
- vitpose_model
- images
- dw_poses
The name is a mouthful but the idea is simple: run ViTPose instead of DWPose's own detector, then reshape the result so it looks like DWPose output anyway. PoseDetectionVitPoseToDWPose is that adapter, and it's basically the whole DWPose story of kijai's ComfyUI-SCAIL-Pose pack in one node. Straight from the pack's own README: "For face and hands, instead of DWPose this uses Vitpose and it's outputs converted into DWpose format for the optional alignment." DWPose is a solid all-in-one body/face/hand detector, but if you specifically want sharper face and hand keypoints, ViTPose is the upgrade - and this node is what keeps everything downstream that expects DWPose-shaped data working without modification.
Why it matters
For context on what's actually being detected: house convention on pose control puts OpenPose-family skeletons at roughly 17 body joints, 70 face landmarks, and 21 keypoints per hand, with DWPose specifically built as "an improved pose detector, better hand detection" over plain OpenPose. Hands are the classic weak point in pose extraction - this node exists because ViTPose does a better job there, and this pack wants that quality without breaking compatibility with anything expecting DWPose's format.
How it works
It's a two-step pass: ViTPose runs its own detection on your images using the loaded ViTPose model, then the result gets remapped onto DWPose's keypoint schema. No pose estimation happens twice and nothing gets lost by design - it's a format conversion sitting on top of a different (and, per the pack's own framing, better-for-hands) detector.
The inputs and outputs that matter
vitpose_model(required,POSEMODEL) - a loaded ViTPose model. Here's the catch worth knowing before you start wiring this up: this pack does not ship a ViTPose loader itself. The README points you elsewhere for it: "VitPose detector is available in these nodes: https://github.com/kijai/ComfyUI-WanAnimatePreprocess" - that's a separate kijai pack, and you need it installed just to get a node that produces thisPOSEMODELinput.images(required,IMAGE) - your source frames.- Output:
dw_poses(DWPOSES) - feeds this pack's ownRenderNLFPoses, into either itsdw_posesorref_dw_poseinputs, for 2D drawing or alignment.
How to install it
You actually need two packs here, not one:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-SCAIL-Pose
git clone https://github.com/kijai/ComfyUI-WanAnimatePreprocess
Or via ComfyUI Manager: search and install both ComfyUI-SCAIL-Pose and ComfyUI-WanAnimatePreprocess by name, then restart. ComfyUI-SCAIL-Pose's own requirements (taichi, opencv-python, pillow) get pulled in either way, but this specific node's actual dependency - the ViTPose loader - lives entirely in the other pack.
Common issues & troubleshooting
No node produces a POSEMODEL you can plug in. This is the single most likely thing to trip people up here: you installed ComfyUI-SCAIL-Pose alone, saw this node in your search, and there's simply no compatible loader anywhere in your graph. Install ComfyUI-WanAnimatePreprocess - it's not bundled, despite living in the same author's ecosystem and sharing a category name in the node menu.
You don't actually need ViTPose's accuracy. If plain DWPose is good enough for your use case, this node - and the extra pack it requires - is more setup than necessary. A standard DWPose preprocessor gets you a workable skeleton with one fewer dependency to manage.
Output looks off on cluttered or crowded scenes. Pose detectors in general (ViTPose included) get less reliable the more people or occlusion is in frame - that's a property of the detection step, not something this conversion node can fix after the fact.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| vitpose_model | POSEMODEL | — | |
| images | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| dw_poses | DWPOSES | — |