Nodes/ComfyUI-DisPose/(Down)Loader_DisPose
ComfyUI Node

(Down)Loader_DisPose

The (Down)Loader_DisPose name is not a joke — this node really does download your models

By bombax-xiaoice·Created 2 years ago·Updated about a year ago· 0
(Down)Loader_DisPose
    • pipe
    base_model_dirpretrained_weights/stable-video-diffusion-img2vid-xt-1-1
    ckpt_filepretrained_weights/MimicMotion_1-1.pth
    controlnet_filepretrained_weights/DisPose.pth
    dift_model_dirpretrained_weights/stable-diffusion-v1-5
    cmp_filemimicmotion/modules/cmp/experiments/semiauto_annot/resnet50_vip+mpii_liteflow/checkpoints/ckpt_iter_42000.pth.tar
    dwdetector_filepretrained_weights/DWPose/yolox_l.onnx
    dwpose_filepretrained_weights/DWPose/dw-ll_ucoco_384.onnx
    use_fp16true

    Most ComfyUI loaders are misnamed - "Loader" that loads nothing but a checkpoint file path. (Down)Loader_DisPose from ComfyUI-DisPose is the opposite: the "(Down)" prefix is doing literal work. The first time you run it, it pulls missing weights from Hugging Face automatically and then loads a six-model pipeline into memory. The pun is the feature.

    What it's loading (and why there are six things)

    DisPose is the ComfyUI wrapper around the ICLR 2025 human-image-animation model (lihxxx et al.). "Human image animation" is the pose-transfer trick: you hand it one reference image of a person plus a video of someone else's movements, and it animates your person with the driving pose. Getting that to work cleanly isn't one model's job - DisPose composes several, and the loader assembles all of them into a single pipe object:

    • SVD XT 1.1 (base_model_dir) - the base video-diffusion UNet, VAE, and image encoder. Everything generates on top of this.
    • MimicMotion_1-1.pth (ckpt_file) - Tencent's pose-conditioned video model; DisPose borrows its pose net.
    • DisPose.pth (controlnet_file) - the actual DisPose ControlNet, the thing that injects pose guidance into the UNet.
    • SD 1.5 (dift_model_dir) - used as a DIFT feature extractor, which finds keypoint correspondences between your reference image and each video frame.
    • CMP checkpoint (cmp_file) - a correspondence model that turns sparse keypoints into a dense motion field.
    • DWPose ONNX (dwdetector_file + dwpose_file) - the pose detector that finds body, face, and hand keypoints in the first place.

    That's why a "loader" has eight inputs. All of them are file paths, and here's the nice part: every single one has a working default. If you leave them alone, the node resolves them relative to the pack folder and auto-downloads anything missing via hf_hub_download. So the beginner path is literally just executing the node and waiting.

    The one input that matters: use_fp16

    use_fp16 (default true) is the only input you might actually touch. It loads the VAE, image encoder, UNet, and pose net in fp16 - about half the VRAM of fp32, with no quality difference you'll ever see. Leave it on unless you have a reason not to.

    The path fields, for the curious: base_model_dir, ckpt_file, controlnet_file, dift_model_dir, cmp_file, dwdetector_file, dwpose_file. The README shows how to pre-download everything into pretrained_weights/ with git lfs clone if you'd rather not let first-run surprise you - useful on slow connections, since we're talking tens of gigabytes across all six components.

    Output

    One output, pipe, typed DisPosePipeline. This is a custom type - you can't plug it into a normal checkpoint loader or inspect it like a tensor. It goes into Sampler_DisPose (required) and Decoder_DisPose (required). That's the whole graph.

    Installing the pack

    cd ComfyUI/custom_nodes
    git clone https://github.com/bombax-xiaoice/ComfyUI-DisPose
    cd ComfyUI-DisPose && pip install -r requirements.txt
    

    Or use ComfyUI Manager and search "ComfyUI-DisPose". The requirements are the standard heavy video stack - diffusers, accelerate, onnxruntime (for DWPose), opencv_contrib_python, decord, av - so expect a long first pip install. You need Python ≥3.10 and torch ≥2.0.1 with CUDA.

    Gotchas

    • First run looks broken. The node has no obvious progress bar for downloads, so a missing model turns into a silent, multi-GB fetch. Let it cook. The README explicitly suggests pre-downloading if you want to see what's happening.
    • Watch the downloads vs. the README. The brief's README predates the auto-download behavior; the source code is what actually downloads, and it does, per-component. The defaults in the node are authoritative.
    • This is a big pipeline. Loader alone is the heavy part of the workflow's VRAM story, which is why the sampler offers cpu_offload. If you're on a small card, that's where you'll feel it.

    The name is silly, but honestly: (Down)Loader_DisPose is the most accurately named node in ComfyUI.

    CategoryDisPose

    Inputs (8)

    NameTypeDefaultDescription
    base_model_dirSTRINGpretrained_weights/stable-video-diffusion-img2vid-xt-1-1
    ckpt_fileSTRINGpretrained_weights/MimicMotion_1-1.pth
    controlnet_fileSTRINGpretrained_weights/DisPose.pth
    dift_model_dirSTRINGpretrained_weights/stable-diffusion-v1-5
    cmp_fileSTRINGmimicmotion/modules/cmp/experiments/semiauto_annot/resnet50_vip+mpii_liteflow/checkpoints/ckpt_iter_42000.pth.tar
    dwdetector_fileSTRINGpretrained_weights/DWPose/yolox_l.onnx
    dwpose_fileSTRINGpretrained_weights/DWPose/dw-ll_ucoco_384.onnx
    use_fp16BOOLEANtrue

    Outputs (1)

    NameTypeDescription
    pipeDisPosePipeline