Nodes/ComfyUI_IPAdapter_plus_V2/IPAdapter FaceID Batch V2
ComfyUI Node

IPAdapter FaceID Batch V2

Keep one face across a whole animation

By chflame163·Created 2 years ago·Updated 2 years ago· 55
IPAdapter FaceID Batch V2
  • model
  • ipadapter
  • image
  • image_negative
  • attn_mask
  • clip_vision
  • insightface
  • MODEL
  • face_image
weight1.00
weight_faceidv21.00
weight_type
combine_embeds
start_at0.000
end_at1.000
embeds_scaling

IPAdapter FaceID Batch V2 is the version of the FaceID node you reach for when your reference isn't one image but a stack of them - a video clip, an animation sequence, or a crossfade between two faces. It's the same face-conditioning machinery as the plain FaceID node, with the "Batch" difference that it unfolds the batch and applies per-frame weights. In plain terms: it lets the face drift from person A to person B frame by frame, or hold one face steady while the scene behind it changes.

What it actually does

Like every FaceID node, this one swaps the usual CLIP image embedding for an InsightFace ArcFace embedding - a vector describing facial geometry rather than general appearance. That identity vector, plus a CLIP pass for face structure, gets injected into the model through decoupled cross-attention, which is the trick that makes IP-Adapter work at all: the image conditioning runs on its own attention path so your text prompt keeps working next to it. FaceID needs a companion LoRA applied to the model for the identity to take hold - typical LoRA weight 0.5–1.0 - and it needs the insightface Python package plus a face model like buffalo_l sitting in ComfyUI/models/insightface.

The Batch variant inherits all of that and adds unfold_batch. That's what lets a weight schedule - from IPAdapter Weights V2 or the From Params family - assign a different strength to every frame. Feed it a weights list of length equal to your frame count and the face influence ramps, holds, or fades exactly where you tell it to.

The inputs that matter

The one you'll actually touch is weight (default 1.0, range −1 to 3) - overall face strength. If you're on FaceID Plus v2 weights, weight_faceidv2 (default 1.0, up to 5) is the second dial that blends the CLIP structure contribution in separately. start_at/end_at (0 to 1) control which slice of the denoising steps the adapter is active, and it's worth using: running an adapter across every step measurably softens detail. weight_type picks the curve - linear is fine to start. combine_embeds decides how multiple frames merge (concat keeps them distinct, average blends them toward one face). There are two outputs: MODEL (the patched model, straight into your KSampler) and face_image, the cropped, aligned face InsightFace detected - handy for verifying the node found the right face.

Installing it

ComfyUI Manager: search "ComfyUI_IPAdapter_plus_V2" and install. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2

Restart ComfyUI. The adapter and CLIP vision weights go in ComfyUI/models/ipadapter and ComfyUI/models/clip_vision. FaceID additionally needs the insightface package (pip install insightface) and its models under ComfyUI/models/insightface - the classic pain point, so budget for it.

Gotchas

Two things bite people. First, FaceID weights are research-only - the license inherited from InsightFace means you can't sell anything built on this. Second, this whole pack is a renamed copy of cubiq's V2 codebase so it can sit next to the v1-style pack without node-name collisions, which also means it's a snapshot: it doesn't auto-track cubiq's upstream fixes. And a batch of faces is only as good as its alignment - if face_image looks off, your schedule will too.

Categoryipadapter/faceid

Inputs (14)

NameTypeDefaultDescription
modelMODEL
ipadapterIPADAPTER
imageIMAGE
weightFLOAT1.00-1–3
weight_faceidv2FLOAT1.00-1–5
weight_typeCOMBO15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9
combine_embedsCOMBO5 options: concat, add, subtract, average, norm average
start_atFLOAT0.0000–1
end_atFLOAT1.0000–1
embeds_scalingCOMBO4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty
image_negativeoptIMAGE
attn_maskoptMASK
clip_visionoptCLIP_VISION
insightfaceoptINSIGHTFACE

Outputs (2)

NameTypeDescription
MODELMODEL
face_imageIMAGE