Mascot Pose Detector
Pose detection for characters that aren't built like people
- mascot_pose_model
- image
- pose_keypoint
Mascot Pose Detector is the node this pack's mascot half exists to deliver: it estimates a 25-point body pose on characters that normal DWPose simply cannot handle - mascot suits, costume characters, chibi and otherwise stylized bodies. Standard pose detectors are trained on real human proportions, so a giant-headed suit character reads as a deformed blob. This detector was trained to look at exactly those shapes and still produce a clean, human-compatible skeleton you can drive generation with.
The output is a POSE_KEYPOINT, which is the whole point: once it's in that format, your mascot character drops straight into the same pipeline as a human - ProportionChanger Reference to reshape proportions, Params to fine-tune, Pose Render to preview, and from there into VACE or ControlNet-style conditioning for actual video. The pack's SCAIL example workflow literally runs mascot detection straight into ConvertToSCAILPose to drive SCAIL-Pose video generation with a suit character. That's the gap this node closes: previously, suit characters were simply off the table for pose-driven workflows.
How it works
It's a two-model top-down pipeline, both running in ONNXRuntime. First the RTMDet-style bounding-box model finds the body region (the same detector the standalone Mascot BBox Detector exposes), then a DINOv2-backed ViTPose keypoint model (dinov2_vitpose_l_v2 by default) estimates joints inside that crop. The results get rebuilt into the pack's 25-point POSE_KEYPOINT format on the canvas size you specify, including toe keypoints. If no body is found, you get an empty frame instead of a crash.
The inputs that matter
- mascot_pose_model - output of DownloadAndLoadMascotDWPoseModel. Required; the node has no model of its own.
- image - the input, RGB float [0,1].
- width / height (defaults 1024×1024) - the output canvas size the keypoints are mapped onto, not a resize of your image. Match it to whatever your downstream model expects (e.g. the video generation resolution), because the skeleton coordinates are expressed in this canvas.
- threshold (default 0.3) - keypoint confidence cutoff.
Output is pose_keypoint, ready for the rest of the pack.
Install and gotchas
Shared pack install - ComfyUI Manager search "ComfyUI-ProportionChanger", or clone + pip install -r requirements.txt + restart. First run downloads the ONNX models from HuggingFace into ComfyUI/models/mascot_body_detect/, so you need network once. And as with the loader node: the pack installs CPU-only onnxruntime unless you swap in onnxruntime-gpu, and the cuda flag on the loader will just fall back to CPU otherwise.
The two traps people actually hit: forgetting the loader (red socket, no output), and mismatching the canvas size - if you set width/height to 512 but your video model wants 1024, your pose renders tiny or off-center, and it can look like a detection failure when it's really a canvas mismatch. Also set expectations: the model handles stylized proportions, not mangled input - a heavily cropped or nearly invisible subject still returns an empty skeleton.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| mascot_pose_model | MASCOT_POSE_MODEL | Output of (Down)Load Mascot Pose Model | |
| image | IMAGE | Input image, RGB float [0,1]. | |
| width | INT | 102464–8192 | — |
| height | INT | 102464–8192 | — |
| threshold | FLOAT | 0.300–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pose_keypoint | POSE_KEYPOINT | — |