ComfyUI Node

FaceEmbed Combine

The handoff between raw face embeds and generation

By nosiu·Created 3 years ago·Updated about a year ago· 264
FaceEmbed Combine
  • resampler
  • face_embeds
  • face conditioning

This one's a plumbing node, and it's easy to gloss over, but it does something specific: it takes the raw identity vector(s) from FaceEmbed and runs them through the InstantID resampler to produce face_conditioning - the format both InstantIdAdapterApply and ControlNetInstantIdApply actually expect. Without this step, your face embeds are just a vector sitting there; the resampler is what shapes them into something the diffusion model and the ControlNet can condition on.

Why the resampler step exists

InstantID's paper architecture has three moving parts: the ArcFace embedding (identity), an image adapter that feeds it into the UNet via decoupled cross-attention, and IdentityNet, a ControlNet-like module that constrains facial geometry. The resampler is the piece that prepares the embedding for both the adapter and IdentityNet at once - it's loaded alongside the adapter itself in LoadInstantIdAdapter, and this node is where it's actually applied. Think of it as the translator between "here's a face, as a vector" and "here's a face, in the shape my downstream conditioning modules can read."

The inputs and outputs that matter

Only two inputs, both required:

  • resampler - comes straight out of LoadInstantIdAdapter's second output. You can't build this yourself; it only comes from loading the InstantID adapter file.
  • face_embeds - the (possibly chained) output of one or more FaceEmbed nodes.

One output: face conditioning (FACE_CONDITIONING), which plugs directly into InstantIdAdapterApply's face_conditioning input and ControlNetInstantIdApply's face_conditioning input - both of them, from this single node. That's worth noting because it means you only run this combine step once per identity, even though the result feeds two different downstream nodes.

Install

Same pack-wide setup: ComfyUI Manager search for comfyui-instantId-faceswap, or git clone into custom_nodes/ plus pip install -r requirements.txt. This particular node needs the InstantID adapter file (ip-adapter.bin from InstantX/InstantID) downloaded and sitting in ComfyUI/models/ipadapter so LoadInstantIdAdapter can supply the resampler this node needs.

Common issues & troubleshooting

Type mismatch errors on connect. If ComfyUI won't let you wire something into resampler, you've probably got the wrong output socket from LoadInstantIdAdapter - that node has two outputs (InstantId_adapter and resampler), and it's a genuinely easy mixup since they're both just InstantID-flavored blobs at a glance. resampler goes here; InstantId_adapter goes to InstantIdAdapterApply.

If you're using the all-in-one InstantIdAndControlnetApply node instead, you don't need this node at all - that bundle node does the load-adapter-and-combine-embeds step internally. This node matters when you're wiring the pack manually for finer control, like independently scheduling adapter strength versus ControlNet strength, or skipping the adapter entirely (which the README explicitly says is a valid choice).

Weak identity in the final image, even with a good face_embeds input. This node doesn't add or lose identity signal on its own - it's a format conversion, not a strength control. If likeness is off, check the strength parameters on the two nodes downstream of this one instead.

CategoryInstantId Faceswap

Inputs (2)

NameTypeDefaultDescription
resamplerRESAMPLER
face_embedsFACE_EMBED

Outputs (1)

NameTypeDescription
face conditioningFACE_CONDITIONING