Easy Apply InstantID (Advanced)
One-photo face transfer for SDXL, with the knobs exposed
- pipe
- image
- image_kps
- mask
- control_net
- positive
- negative
- pipe
- model
- positive
- negative
This is the advanced version of Easy-Use's InstantID node - one reference photo in, a face that keeps that person's actual geometry out, no training, no LoRA. The "ADV" part means the extra controls are surfaced (start/end timing, separate positive/negative conditioning, a keypoints image, a mask) instead of hidden behind sane defaults. If you already understand InstantID and want to steer it, this is the one. If you just want a face and don't want to think, the plain easy instantIDApply is friendlier.
What it actually does
InstantID's trick, and the reason it mattered, is IdentityNet: a ControlNet-shaped module that conditions on five facial landmarks. So the generated face copies the reference face's structure - eye spacing, jaw, nose - not just a vague resemblance. That spatial half is what IP-Adapter FaceID never had. It's genuinely good, and it's genuinely SDXL-only: there's no Flux path, the reference repo has been dormant since mid-2024, and on newer architectures the identity job moved to PuLID. On SDXL and Illustrious it still works and people still use it.
Inputs and outputs that matter
The node runs on a pipe (Easy-Use's bundle of model/clip/conditioning), so it slots into a full Easy-Use graph and hands a pipe back out along with model, positive, negative. The handful you'll actually touch:
image- the face you're transferring. One clean, front-ish portrait beats a crop of a group shot.weight(default 0.8) - the master identity dial. 0.8 is a sane start; push toward 1.0+ for stronger likeness at the cost of prompt flexibility, drop it if the face is overriding your style.insightface- pickCUDAif you have an NVIDIA GPU andonnxruntime-gpuinstalled, elseCPU. This chooses the face-analysis execution provider; CPU works, it's just slower.start_at/end_at- when in the denoise InstantID is active. Ending early (say 0.8) lets the base model reclaim some detail on the last steps.image_kps(optional) - a separate keypoints image. Feed it a pose you want the face to follow, decoupled from the identity photo.
instantid_file and control_net_name are dropdowns that will be empty until you've put the model files in place (see below). Optional positive/negative/control_net/mask let you feed conditioning and stack a ControlNet.
Installing it (this is where it gets fiddly)
The Easy-Use node is a wrapper. For it to work you need cubiq's ComfyUI_InstantID installed first, plus the actual model files:
- The InstantID ip-adapter and ControlNet weights, in the InstantID model folders.
- The antelopev2 InsightFace face-analysis pack.
onnxruntime(oronnxruntime-gpufor the CUDA provider).
Install Easy-Use itself via ComfyUI Manager (search ComfyUI Easy Use) or git clone https://github.com/yolain/ComfyUI-Easy-Use into custom_nodes, run its requirements, restart. If the instantid_file and control_net_name dropdowns are blank, the model files aren't where the loader expects them - that's the number-one failure, not a node bug.
The trap nobody mentions until it's too late
You can't legally sell what this makes. InstantID rides on InsightFace, whose pretrained weights are non-commercial research-only - MIT code, non-commercial models, and the second half is the one that binds. The exact thing you'd want a one-photo face tool for commercially is the thing the license forbids. For personal work, go nuts. For a paid product, this whole identity stack is off the table until you license InsightFace directly.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | PIPE_LINE | — | |
| image | IMAGE | — | |
| instantid_file | COMBO | 0 options: | |
| insightface | COMBO | 3 options: CPU, CUDA, ROCM | |
| control_net_name | COMBO | 0 options: | |
| cn_strength | FLOAT | 1.000–10 | — |
| cn_soft_weights | FLOAT | 1.0000–1 | — |
| weight | FLOAT | 0.800–5 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| noise | FLOAT | 0.350–1 | — |
| image_kpsopt | IMAGE | — | |
| maskopt | MASK | — | |
| control_netopt | CONTROL_NET | — | |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE_LINE | — |
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |