Apply InstantID Advanced
Separate dials for identity and pose, plus the burn fix
- instantid
- insightface
- control_net
- image
- model
- positive
- negative
- image_kps
- mask
- MODEL
- positive
- negative
The plain Apply InstantID node is one weight slider covering two very different jobs at once: how strongly the face identity applies, and how strongly the pose/structure controlnet applies. That's fine until you hit a case where you want more of one and less of the other - a stylized checkpoint that fights the identity, or a pose you want to nail exactly while letting the likeness relax a bit. Apply InstantID Advanced is the same node with those two dials split apart, plus manual control over the noise trick the basic version does automatically.
How it works
Same three-part InstantID machinery as the basic node - ArcFace identity embedding, cross-attention adapter, IdentityNet controlnet - just exposed with finer knobs. Worth knowing going in: per the author, the InstantID model itself drives roughly 25% of the final composition, and the controlnet drives the rest. That's a useful mental model for which slider to reach for when a result isn't working: if the pose and structure are off, it's cn_strength; if the face isn't landing, it's ip_weight.
The inputs and outputs that matter
Same required backbone as the basic node - instantid, insightface, control_net, image, model, positive, negative - but the single weight slider becomes two: ip_weight (default 0.8, 0–3) for identity strength, and cn_strength (default 0.8, 0–10) for the controlnet/pose side. start_at / end_at (0–1) work the same as before.
Two things the basic node doesn't give you: noise (default 0, 0–1) and combine_embeds (average / norm average / concat). Noise injection is InstantID's documented fix for its own "burn" tendency - the basic node bakes in 35% automatically; here it starts at 0 and you dial it up yourself, which means more control but also means you have to remember to use it. combine_embeds decides how multiple face embeddings get merged when you're feeding more than one reference - relevant mainly for multi-ID setups.
Optional image_kps (drive pose from a separate image) and mask (region-restrict, the multi-ID mechanism) both work exactly as they do on the basic node.
Outputs are the same trio: MODEL, positive, negative, straight into your sampler.
Installing it
It's in the same pack as everything else here - search "ComfyUI InstantID (Native Support)" in ComfyUI Manager, or clone cubiq/ComfyUI_InstantID into custom_nodes and restart. You need the same three downloads as the basic node: insightface + onnxruntime/onnxruntime-gpu as Python packages, the antelopev2 InsightFace model in models/insightface/models/antelopev2, and the InstantID model plus its controlnet in models/instantid and models/controlnet respectively.
Common issues
Don't reach for this node first. If you've never run InstantID before, start with the plain Apply InstantID - it's one slider and works fine for the common case. Come here once you know specifically what you're trying to fix.
Still getting burned/oversaturated results. Since noise defaults to 0 here (unlike the basic node's automatic 35%), it's easy to forget to turn it on. Try something in the 0.2–0.4 range as a starting point, and lower ip_weight before you crank noise - noise is a compensator, not a cure. Lowering your sampler CFG to around 4–5 (or adding a RescaleCFG node) helps here too, same as with the basic node.
Confusing which slider to move. If the identity is right but the pose/composition is wrong, it's cn_strength, not ip_weight - people instinctively reach for the "InstantID" weight first since that's the name on the node, but the controlnet is doing the majority of the compositional work per the author's own estimate.
combine_embeds doing nothing visible. It only matters when you're actually feeding multiple face embeddings in - with a single reference image it has no effect, so don't spend time tuning it unless you're building a multi-reference or multi-ID setup.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| instantid | INSTANTID | — | |
| insightface | FACEANALYSIS | — | |
| control_net | CONTROL_NET | — | |
| image | IMAGE | — | |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| ip_weight | FLOAT | 0.800–3 | — |
| cn_strength | FLOAT | 0.800–10 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| noise | FLOAT | 0.00–1 | — |
| combine_embeds | COMBO | average | 3 options: average, norm average, concat |
| image_kpsopt | IMAGE | — | |
| maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |