(Down)Loader_DisPose
The (Down)Loader_DisPose name is not a joke — this node really does download your models
- pipe
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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| base_model_dir | STRING | pretrained_weights/stable-video-diffusion-img2vid-xt-1-1 | — |
| ckpt_file | STRING | pretrained_weights/MimicMotion_1-1.pth | — |
| controlnet_file | STRING | pretrained_weights/DisPose.pth | — |
| dift_model_dir | STRING | pretrained_weights/stable-diffusion-v1-5 | — |
| cmp_file | STRING | mimicmotion/modules/cmp/experiments/semiauto_annot/resnet50_vip+mpii_liteflow/checkpoints/ckpt_iter_42000.pth.tar | — |
| dwdetector_file | STRING | pretrained_weights/DWPose/yolox_l.onnx | — |
| dwpose_file | STRING | pretrained_weights/DWPose/dw-ll_ucoco_384.onnx | — |
| use_fp16 | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | DisPosePipeline | — |