Nodes/comfyui-instantId-faceswap/Apply instantId and ControlNet
ComfyUI Node

Apply instantId and ControlNet

The whole pipeline in one node

By nosiu·Created 3 years ago·Updated about a year ago· 264
Apply instantId and ControlNet
  • model
  • face_embed
  • control_image
  • positive
  • negative
  • model
  • positive
  • negative
ipadapter_path
control_net_name
adapter_strength0.5
control_net_strength0.70

This pack normally makes you wire five separate nodes together to get InstantID running - load the adapter, combine the face embeds, load a ControlNet, apply the adapter, apply the ControlNet. This node collapses all of that into one. It's literally a subgraph that bundles LoadInstantIdAdapter, FaceEmbedCombine, ControlNetLoader, InstantIdAdapterApply, and ControlNetInstantIdApply behind a single set of dropdowns and sliders. If you're building your first InstantID workflow with this pack, start here, not with the manual five-node version.

Why bother with the manual version at all, then

The tradeoff is control. This node applies both the adapter and the ControlNet together with no way to run one without the other, no way to schedule their strengths differently across steps, and no way to reuse a loaded adapter across multiple ControlNet strengths in the same graph. Given that the pack's own README calls the adapter step optional and says you can get good results without it, that's a real limitation - if you want to skip the adapter entirely and run ControlNet-only, you need the manual nodes. Use this one for speed and simplicity; drop down to the individual pieces once you know what you actually need to tune independently.

The inputs and outputs that matter

The important ones, since there are eight required inputs total:

  • model - your SDXL checkpoint.
  • ipadapter_path - dropdown, searched from models/ipadapter by default.
  • control_net_name - dropdown for the InstantID ControlNet file.
  • face_embed - from FaceEmbed (or a chain of them). Note this node takes the raw embed, not something pre-combined - the resampling happens internally.
  • control_image - the keypoint map, same as ControlNetInstantIdApply expects; from PreprocessImage or KpsMaker.
  • adapter_strength (default 0.5) and control_net_strength (default 0.7) - the two dials, run independently even though everything else is bundled.
  • positive / negative - your conditioning.

Outputs: model, positive, negative - everything downstream needs, in one shot.

Install

ComfyUI Manager: search comfyui-instantId-faceswap. Manual: git clone https://github.com/nosiu/comfyui-instantId-faceswap into custom_nodes/, pip install -r requirements.txt. Because this node bundles everything, it needs all three of the pack's model downloads in place before it'll populate its dropdowns: the ip-adapter.bin in models/ipadapter, the InstantID ControlNet files in models/controlnet/<a folder>, and antelopev2 in models/insightface/models/antelopev2 (needed upstream by whichever node built your face_embed and control_image). Works on SDXL checkpoints only - this whole pack never got a Flux or SD 1.5 path.

Common issues & troubleshooting

Dropdowns are empty. This node reads two model folders (ipadapter and controlnet) at ComfyUI startup. If either is empty or the files aren't there yet, the dropdown shows nothing to pick. Restart after adding files.

Confusing model path setup in general. This is a known pain point with this pack specifically - people have gotten stuck trying to get ComfyUI to recognize non-default ipadapter/controlnet/insightface folders through extra_model_paths.yaml, including one case where a malformed edit stopped ComfyUI from starting at all. If you're not using the pack's suggested default folder layout, double- and triple-check your YAML indentation before assuming the node is broken.

Results look weaker than you expected from InstantID elsewhere. Check both strength values independently - adapter_strength defaults to 0.5, control_net_strength to 0.7, and community-reported strong settings for InstantID overall run closer to control_net_strength 1.0+ when you want the face to really hold. There's headroom in both sliders (up to 10) before you hit diminishing returns or artifacts.

CategoryInstantId Faceswap

Inputs (9)

NameTypeDefaultDescription
modelMODEL
ipadapter_pathCOMBOThe default folder where the adapter is searched for is: models/ipadapter.
control_net_nameCOMBO0 options:
face_embedFACE_EMBED
control_imageIMAGE
adapter_strengthFLOAT0.50–10
control_net_strengthFLOAT0.700–10
positiveCONDITIONING
negativeCONDITIONING

Outputs (3)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING