Nodes/ComfyUI-WanAnimatePreprocessV2/Wan Pose Detect — YOLO + ViTPose (V2)
ComfyUI Node

Wan Pose Detect — YOLO + ViTPose (V2)

Just the skeleton, please — keypoints without the face-crop and gaze machinery

By Code2Collapse·Created 8 months ago·Updated 8 days ago· 17
Wan Pose Detect — YOLO + ViTPose (V2)
  • images
  • model
  • pose_data
  • info
detection_threshold0.30
pose_threshold0.30
use_clahetrue
use_blur_for_posefalse
blur_radius2
blur_sigma1.5
rescale1.25
fallback_to_full_frametrue

WanPoseDetectViTPoseV2 is the slim version of the pack's main detector. It runs the same YOLO + ViTPose detection and emits the same POSEDATA bundle - but it stops there. No face cropping, no iris/gaze pipeline, no debug overlays, no temporal smoothing. Just keypoints. If you only need a skeleton - for a ControlNet conditioning map, for a pose-editing workflow, or as the front end to the format converter in this pack - this is the node you want, because it skips a lot of compute and a whole category of failure modes.

The trade-off is exactly the feature list of the big node. PoseAndFaceDetectionV2 gives you stabilised face crops and gaze because Wan Animate's character replacement path needs them. Here there's no character to replace - you're capturing motion, so the lean pipeline is the right tool.

Inputs and what they mean

Required: images (the RGB stack) and model (the POSEMODEL from OnnxDetectionModelLoaderV2). The optional knobs mirror the main detector's:

  • detection_threshold (0.3 - note this is the strict side, vs. the main node's 0.05) - YOLO person confidence. If people keep getting missed, drop it toward 0.05.
  • pose_threshold (0.3) - per-keypoint confidence; below this, the keypoint's confidence is forced to 0.
  • use_clahe (true) - CLAHE contrast on the 256×192 pose crop, matching the main preprocessor's default.
  • use_blur_for_pose (false) - Gaussian pre-blur for noisy frames. Interesting: this defaults off, and the pack's main node even documents a bug-fix where blur was on by default and softened the exact edges ViTPose needs. Blur only for genuinely grainy source.
  • rescale (1.25) - bbox padding factor before the ViTPose crop.
  • fallback_to_full_frame (true) - if YOLO finds no person, run ViTPose on the whole frame instead of skipping it. Leave on for wide shots; it's the difference between a missing skeleton and a mediocre one.

Outputs: pose_data and an info string. The bundle is compatible with the V2 editor and downstream conditioning nodes, so you can feed it into WanPoseFormatConvertV2, DrawViTPoseV2, or the face controller.

Why this one earns its place

The skeleton-only path is genuinely faster - you're cutting the MediaPipe face mesh, the L2CS/blendshape gaze engine and the crop-smoothing machinery out of every frame. For pose-conditioned generation (skeleton → pose ControlNet, the classic OpenPose-style workflow that predates Wan Animate entirely), the heavy node is overkill and its face machinery is just more that can go wrong. If you've ever watched the main detector grind through face-crop smoothing on footage you only wanted a stick figure from, this is the node that stops that.

Install: shared pack path - ComfyUI Manager search "WanAnimatePreprocessV2", or git clone https://github.com/Code2Collapse/ComfyUI-WanAnimatePreprocessV2 into custom_nodes + pip install -r requirements.txt + restart. Needs the ONNX models in ComfyUI/models/detection/ like the rest of the pack.

CategoryWanAnimatePreprocessV2/extras

Inputs (10)

NameTypeDefaultDescription
imagesIMAGERGB image stack to detect poses on. Float [0,1], shape (B,H,W,3).
modelPOSEMODELViTPose+YOLO bundle from OnnxDetectionModelLoaderV2.
detection_thresholdoptFLOAT0.300–1YOLO person-detection confidence threshold.
pose_thresholdoptFLOAT0.300–1Per-keypoint confidence threshold; below this the keypoint's confidence is forced to 0.
use_claheoptBOOLEANtrueCLAHE contrast enhancement on the 256x192 pose crop. Matches the main preprocessor default.
use_blur_for_poseoptBOOLEANfalseApply a Gaussian blur to the images before YOLO+ViTPose (anti-aliases noisy frames).
blur_radiusoptINT20–32
blur_sigmaoptFLOAT1.50–8
rescaleoptFLOAT1.251–2Bbox padding factor before crop for ViTPose. 1.25 = match the main preprocessor.
fallback_to_full_frameoptBOOLEANtrueIf YOLO finds no person in a frame, run ViTPose on the entire frame instead of skipping it.

Outputs (2)

NameTypeDescription
pose_dataPOSEDATA
infoSTRING