Load OOTDiffusion Local
The OOTDiffusion Loader That Reads Local Weights (and Why You'd Bother)
- pipe
This node exists to get the OOTDiffusion try-on model into memory - and to give you control over which copy of it you load. LoadOOTDPipeline is the local loader: you point it at a folder on disk and it builds the full pipeline from there. It's the companion to the hub loader in the same pack, and it's the one you want once you've already grabbed the weights and don't feel like re-downloading several gigabytes every clean install.
The pack itself (AuroBit/ComfyUI-OOTDiffusion) is a thin wrapper around levihsu's OOTDiffusion research model - a 2024 virtual try-on pipeline that swaps the clothes on a person photo while leaving the person alone. Nearly 500 GitHub stars, but it hasn't been touched since mid-2024, and the install is famously grumpy. Still, for faithful garment-to-person try-on it holds up, and it's free.
What it does
"Loading" here is heavier than it sounds. When this node runs it constructs the whole inference stack:
- the human parsing models (ATR and LIP, both ONNX) that find the garment region,
- the OpenPose body-pose model that helps shape the mask,
- two UNets - a garment encoder and a try-on inpainting UNet - loaded from
checkpoints/ootd/ootd_hdorootd_dcatcheckpoint-36000, - a VAE and CLIP text encoder, plus a CLIP vision encoder it still fetches from Hugging Face at runtime (
openai/clip-vit-large-patch14), because the garment is conditioned in as an image, not a prompt.
Everything loads in fp16 onto your GPU, and the first time it also compiles a couple of torch C++ extensions via ninja - that's where the notorious install pain lives, not here.
Inputs and output
Just two inputs, and you'll only touch one of them most of the time:
- type -
Half bodyorFull body. Internally these map to thehdanddcmodel variants. Half body is the more mature one and can only handle upper-body garments; full body is what you need for lower-body and dresses. - path - defaults to
models/OOTDiffusion, which is relative to your ComfyUI install root, so the real location isComfyUI/models/OOTDiffusion. Inside it expects the structure:
models/OOTDiffusion/
├── checkpoints/
│ ├── ootd/ootd_hd/checkpoint-36000/ (or ootd_dc)
│ ├── humanparsing/parsing_atr.onnx
│ ├── humanparsing/parsing_lip.onnx
│ └── openpose/ckpts/body_pose_model.pth
Output is a single pipe (MODEL) - a custom OOTDiffusion object despite the type name, so the only thing it wires into is the OOTDGenerate node in this same pack.
Install and the real gotchas
Install is the same pack install as the other two nodes (Manager, or git clone into custom_nodes + pip install -r requirements.txt), and it carries the same baggage: diffusers==0.24.0 is pinned, CUDA + nvcc are required for the compiled extensions, and Windows needs the MSVC build tools with vcvars64.bat. See the OOTDGenerate article or the pack README for the full battle plan.
Specific to this loader: if the path you give it isn't a directory, it raises a ValueError - no graceful fallback. And note it still needs network on first run for the CLIP vision encoder even when everything else is local, so "fully offline" isn't quite on the menu.
When to reach for it
Use this loader when you've already got the weights somewhere (downloaded them yourself, moved them out of the Hugging Face cache, or you're in a shared machine where someone else fetched them). For a first run, the hub loader is less effort - it downloads everything into the HF cache for you. This one is for when you want to own the files and know exactly what's being loaded.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| type | COMBO | 2 options: Half body, Full body | |
| path | STRING | models/OOTDiffusion | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | MODEL | — |