Nodes/ComfyUI-Champ/ChampLoader
ComfyUI Node

ChampLoader

One node, ten model paths, all the heavy lifting

By chaojie·Created 2 years ago·Updated 2 years ago· 24
ChampLoader
    • champ
    • cfg
    • vae
    • image_enc
    • noise_scheduler
    sd_path/home/admin/ComfyUI/models/diffusers/stable-diffusion-v1-5
    vae_path/home/admin/ComfyUI/models/diffusers/sd-vae-ft-mse
    image_encoder_path/home/admin/ComfyUI/models/diffusers/sd-image-variations-diffusers/image_encoder
    motion_module_path/home/admin/ComfyUI/models/champ/motion_module.pth
    denoising_unet_path/home/admin/ComfyUI/models/champ/denoising_unet.pth
    reference_unet_path/home/admin/ComfyUI/models/champ/reference_unet.pth
    depth_path/home/admin/ComfyUI/models/champ/guidance_encoder_depth.pth
    dwpose_path/home/admin/ComfyUI/models/champ/guidance_encoder_dwpose.pth
    normal_path/home/admin/ComfyUI/models/champ/guidance_encoder_normal.pth
    semantic_map_path/home/admin/ComfyUI/models/champ/guidance_encoder_semantic_map.pth
    weight_dtypefp16

    CHAMP is the Fudan group's human image animation model: one photo of a person in, a video of that person moving out, driven by a sequence of depth, pose, normal, and semantic maps. It landed in March 2024 to a genuinely excited community, and then reality set in - research code, absolute paths, a pile of checkpoints. ChampLoader is the community fix for that. It's one node that assembles the entire stack - base model, VAE, image encoder, motion module, and four guidance encoders - so the rest of your workflow only ever sees a handful of outputs.

    Don't use this node for quick experiments. Loading it means pulling in a full SD1.5 diffusers model, a second UNet, an AnimateDiff-style temporal motion module, and a CLIP vision encoder, all at once. That's a solid minute-plus of "loading, loading, loading" before anything happens, and it holds several GB of VRAM just sitting there. That's the job, though. Every CHAMP workflow in this pack starts here, and there's no shortcut around it.

    How it works

    Under the hood the node reads the pack's configs/inference.yaml, overwrites the model paths with the ones you typed, and builds everything: a DDIMScheduler (configured for zero-SNR v-prediction), the CLIP image encoder, an SD1.5 VAE, and the denoising UNet - an SD1.5 UNet inflated with a Vanilla motion module, the same temporal-attention trick that powered AnimateDiff. It then loads a second, frozen "reference" UNet and the four guidance encoders (depth, DWPose, normal, semantic map). The ReferenceAttentionControl that ties the reference image's appearance into the denoising UNet is wired up here too - that's what keeps the person looking like the person.

    The inputs that matter

    Ten string paths and one dropdown. The paths are absolute - there's no model scanning, no models/ folder convention. You point each one at a real file or folder:

    • sd_path, vae_path, image_encoder_path - the diffusers-format folders for SD1.5, sd-vae-ft-mse, and the SD image-variations CLIP encoder.
    • motion_module_path, denoising_unet_path, reference_unet_path - the .pth checkpoints.
    • depth_path, dwpose_path, normal_path, semantic_map_path - the four guidance encoder weights.

    Defaults are /home/admin/... paths that exist on nobody's machine, so you're retyping all ten no matter what. weight_dtype is fp16 (default) or fp32. Keep fp16 unless you're chasing a precision bug.

    Outputs

    Five: champ, cfg, vae, image_enc, noise_scheduler. Every one of them plugs into ChampRun, the pack's generation node - don't skip any, they're all required there.

    How to install it

    Open ComfyUI Manager → Install Custom Nodes and search "Champ"; this is a low-profile 2024 pack, so if it doesn't surface, clone it directly:

    cd ComfyUI/custom_nodes
    git clone https://github.com/chaojie/ComfyUI-Champ
    

    Restart ComfyUI. The real work is the model downloads from the README: SD1.5, sd-vae-ft-mse, and the image encoder from HuggingFace, then the CHAMP checkpoints from a Google Drive folder - several gigabytes total. The pack also pins transformers==4.30.2 and requires xformers, which ComfyUI installs don't all ship with.

    Where people get burned

    Three classic failure points. First, the pack hard-requires CUDA - every model gets .to("cuda"), there is no CPU fallback. Second, if xformers isn't installed the loader dies with a loud "xformers is not available" error even though ComfyUI itself runs fine - install it in your ComfyUI Python environment. Third, VRAM: commenters on the original CHAMP release thread reported ~20–23 GB used at default settings. If you OOM on load, you're not squeezing this into a 12 GB card at full settings; drop the resolution and frame count in ChampRun, not here.

    CategoryChamp

    Inputs (11)

    NameTypeDefaultDescription
    sd_pathSTRING/home/admin/ComfyUI/models/diffusers/stable-diffusion-v1-5
    vae_pathSTRING/home/admin/ComfyUI/models/diffusers/sd-vae-ft-mse
    image_encoder_pathSTRING/home/admin/ComfyUI/models/diffusers/sd-image-variations-diffusers/image_encoder
    motion_module_pathSTRING/home/admin/ComfyUI/models/champ/motion_module.pth
    denoising_unet_pathSTRING/home/admin/ComfyUI/models/champ/denoising_unet.pth
    reference_unet_pathSTRING/home/admin/ComfyUI/models/champ/reference_unet.pth
    depth_pathSTRING/home/admin/ComfyUI/models/champ/guidance_encoder_depth.pth
    dwpose_pathSTRING/home/admin/ComfyUI/models/champ/guidance_encoder_dwpose.pth
    normal_pathSTRING/home/admin/ComfyUI/models/champ/guidance_encoder_normal.pth
    semantic_map_pathSTRING/home/admin/ComfyUI/models/champ/guidance_encoder_semantic_map.pth
    weight_dtypeCOMBOfp162 options: fp16, fp32

    Outputs (5)

    NameTypeDescription
    champChamp
    cfgcfg
    vaevae
    image_encimage_enc
    noise_schedulernoise_scheduler