Nodes/ComfyUI-SDPose-OOD/Load SDPose Model
ComfyUI Node

Load SDPose Model

The anime-proof pose estimator that thinks it's a diffusion model

By judian17·Created 10 months ago·Updated 6 months ago· 314
Load SDPose Model
    • SDPOSE_MODEL
    model_type
    unet_precision
    device
    unload_on_finishfalse

    If you've ever fed an anime frame into DWPose and watched it hand you a black void where a skeleton should be, this node is the answer you were looking for. Load SDPose Model loads SDPose-OOD, a pose estimator that handles the out-of-distribution images - cartoons, illustrations, stylized art - that the classic OpenPose-family preprocessors just refuse to see.

    Here's the clever part. SDPose-OOD isn't a classic keypoint detector. It borrows the trick that made Marigold great for depth: take an image-generation model's prior knowledge and repurpose it for a vision task. SDPose is a small diffusion pipeline - a UNet wrapped around a standard diffusers UNet2DConditionModel, a VAE encoder, and a heatmap head - that takes a person crop and produces keypoints plus confidence scores in a single denoising step. The "OOD" in the name is the whole pitch: because it's generative, it generalizes to art styles that ground-truth detectors were never trained on.

    The two models

    • model_type: Body - 17 keypoints, body only. The classic OpenPose layout.
    • model_type: WholeBody - 133 keypoints: body, face, and both hands. This is the one you want for pose-ControlNet work that needs fingers and expressions, the same reason you'd pick openpose_full over bare OpenPose in the ControlNet ecosystem.

    The README's precision guidance is worth following: bf16 for 30-series GPUs and newer, fp16 for 20-series and older, fp32 for CPU. bf16/fp16 cut VRAM noticeably at essentially identical speed. CPU inference silently forces fp32, so don't fight it.

    What you actually set

    • model_type - Body or WholeBody. WholeBody is bigger, slower, and more useful.
    • unet_precision - fp32 / fp16 / bf16. Use the guidance above.
    • device - auto (picks your CUDA GPU via ComfyUI's model management), cuda, or cpu.
    • unload_on_finish - a genuinely useful toggle that offloads the model to CPU after a run, freeing VRAM for the sampler that follows. Leave it off while you're testing, flip it on for big workflows.
    • Output SDPOSE_MODEL - wires straight into Run SDPose Estimation. Nothing else consumes it.

    Install and the heavyweight dependency

    Install via ComfyUI Manager (search "ComfyUI-SDPose-OOD") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/judian17/ComfyUI-SDPose-OOD
    cd ComfyUI-SDPose-OOD
    pip install -r requirements.txt
    

    The requirements list is where this pack gets spicy: diffusers, groundingdino-py, ultralytics, mmdet, mmengine, timm, and mmcv==2.1.0. The good news on mmcv - normally the thing that eats entire weekends because it wants to compile against your exact torch build - is that this requirements file pins a prebuilt piwheels wheel, so no compilation. On Windows, set PYTHONUTF8=1 before pip install for groundingdino-py.

    First run downloads the model automatically from Hugging Face (teemosliang/SDPose-Body or SDPose-Wholebody) into ComfyUI/models/SDPose_OOD/. The pack also ships the empty_text_encoder/empty_embedding.safetensors the pipeline needs, so that part is handled. The downloads are a couple of gigabytes and the WholeBody variant is a chunky VRAM resident - don't be alarmed by the first-run wait.

    One honest caveat: the README notes that ComfyUI has since added native SDPose_OOD support. This loader still earns its place if you want the pack's extra person-detection paths (YOLO, GroundingDINO, Florence2 bboxes) and its editor-JSON export, which the built-in node doesn't offer. If all you need is a bare anime pose map, check the native node first - you may not need the install hassle.

    CategorySDPose

    Inputs (4)

    NameTypeDefaultDescription
    model_typeCOMBO2 options: Body, WholeBody
    unet_precisionCOMBO3 options: fp32, fp16, bf16
    deviceCOMBO3 options: auto, cuda, cpu
    unload_on_finishBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    SDPOSE_MODELSDPOSE_MODEL