Nodes/IMAGDressing-ComfyUI/IMAGDressingNode
ComfyUI Node

IMAGDressingNode

Dress a person in any garment — no LoRA, no person photo needed

By AIFSH·Created 2 years ago·Updated 2 years ago· 61
IMAGDressingNode
  • cloth
  • prompt
  • pose
  • face
  • model_image
  • IMAGE
use_case
num_inference_steps50
guidance_scale7.50
seed42

This is the ComfyUI port of IMAGDressing-v1, the AAAI 2025 "customizable virtual dressing" model from muzishen's group (paper: arXiv 2407.12705). Feed it a photo of a shirt, dress, or jacket, and it generates a plausible person wearing it - no person photo, no pose reference, and crucially no per-garment LoRA training. That "rapid customization in seconds" is the whole pitch, and it's why you'd reach for this over an image-editing workflow.

Set expectations: it's built on SD 1.5 - Realistic Vision V4.0 under the hood, with a separately-downloaded sd-vae-ft-mse VAE. That means 2024 research-model quality: excellent fabric fidelity, SD1.5-era faces, fixed 512×640 output. Not the frontier of 2026 photorealism - more like the best open virtual-dressing tool of its generation, and worth treating as exactly that.

How it works

The garment image is encoded twice: VAE-latent-encoded as the "reference image" for a second, cache-attention UNet that runs alongside the main one, and CLIP-encoded as an IP-Adapter-style image prompt (a 16-token resampler, the same trick as classic IP-Adapter). The reference UNet's cached attention injects the garment's spatial detail while the text prompt describes the rest. That dual-conditioning is why the fabric comes out recognizable instead of merely "inspired by."

The interesting part is that IP-Adapter, ControlNet, and FaceID aren't separate nodes you stack - they're baked into the use_case dropdown:

  • base - cloth + prompt, that's it.
  • controlnet - adds pose: an openpose skeleton the openpose ControlNet (control_v11p_sd15_openpose) uses to fix the body pose.
  • ipa_controlnet - adds face on top; InsightFace extracts a FaceID embedding and an IP-Adapter FaceID Plus v2 LoRA steers identity.
  • cartoon - same as base but swaps in counterfeit-v30, an anime SD1.5 checkpoint.
  • inpainting - the reverse: model_image is a photo of a real person, and the node auto-runs human parsing + openpose to mask the upper body, then re-dresses just that region with the ControlNet-inpaint model. The mask is automatic, not something you draw.

The inputs that matter

Only a handful are worth your attention:

  • cloth (IMAGE, required) - the whole point of the node. A clean, front-on garment photo works far better than an angled one.
  • use_case - the five modes above. Switching it tears down and rebuilds the entire pipeline, which is slow; pick one and stick with it per session.
  • prompt (TEXT) - describes the model (e.g. "a beautiful woman"). The node appends best quality, high quality and bakes in a fixed negative: bare, naked, nude, undressed, ....
  • num_inference_steps (50), guidance_scale (7.5), seed (42) - the standard trio. Defaults are fine to start.

The output is one IMAGE tensor at 512×640 - wire it into a PreviewImage or SaveImage. That's the whole output.

Installing it

ComfyUI Manager can find it by searching "IMAGDressing", or clone it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/AIFSH/IMAGDressing-ComfyUI.git
cd IMAGDressing-ComfyUI
pip install -r requirements.txt

Then restart ComfyUI. Two things to know first: the requirements file is the upstream repo's pinned list (diffusers, transformers, insightface, onnxruntime-gpu, bitsandbytes, deepspeed) and it installs into your shared ComfyUI environment - the classic dependency-conflict risk. And the weights are not in your models/ folder: everything auto-downloads from HuggingFace into pretrained_models/ inside the pack on first run - several GB covering the SD1.5 base, VAE, IP-Adapter encoders, the adapter weights (feishen29/IMAGDressing), openpose/inpaint ControlNets, FaceID Plus v2, and the IDM-VTON parsing ONNX files for inpainting. First run is a long download; after that it's cached per use case.

Where people get burned

  • ModuleNotFoundError: No module named 'cuda_malloc' - the most likely reason this node shows as missing. The pack's __init__.py imports a cuda_malloc helper that ships neither in the repo nor in its requirements. Fix is a one-line shim: drop a cuda_malloc.py into the pack folder containing def cuda_malloc_supported(): return True (or torch.cuda.is_available()) and restart.
  • The seed is a lie. It's only applied when the pipeline builds - changing the seed widget after your first run does nothing until you switch use_case. "Randomize" won't behave like a normal ComfyUI seed.
  • VRAM. The author tested on a 2080 Ti 11GB (torch 2.3.0+cu121, Python 3.10). It's fp16 and 512×640, so 11GB is comfortable and 8GB is marginal.
  • It's less tunable than the paper's demo. The upstream Gradio demo got the usual "doesn't work well with my own pictures" complaint, and the fix there was weight sliders - which this node doesn't expose. You get guidance_scale and that's it.
  • The README's "ask for an answer" is a WeChat donation pitch for a paid Windows one-click pack. The author does answer issues, but expect a commercial nudge, and the inpainting path pulls IDM-VTON (non-commercial research) models - fine for personal use, not for a product.
CategoryAIFSH_IMAGDressing

Inputs (9)

NameTypeDefaultDescription
clothIMAGE
promptTEXT
use_caseCOMBO5 options: base, controlnet, ipa_controlnet, cartoon, inpainting
num_inference_stepsINT50
guidance_scaleFLOAT7.50
seedINT42
poseoptIMAGE
faceoptIMAGE
model_imageoptIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE