Extract ID Embedding
The five seconds where a photo becomes a person
- face_detector
- arcface_model
- image_proj_model
- image
- CONDITIONING
Everything in InfiniteYou exists to answer one question: how do you turn a photo of a person into a conditioning signal strong enough that the model reliably draws that person? Extract ID Embedding is the answer. It's the node doing the actual identity work - the step the whole paper is about. Every other node in the pack either prepares its inputs or applies its output.
How it works
It's the same pipeline that powered IP-Adapter FaceID, InstantID, and PuLID, aimed at a Flux diffusion transformer this time. The AntelopeV2 detector (the FACE_DETECTOR from ID Embedding Model Loader) finds faces, keeps the largest one, aligns it with ArcFace's 112×112 crop, and pulls a 512-dimension identity embedding. Then the image projector - the Resampler loaded in ID Embedding Model Loader - projects that vector into Flux's 4096-dimension embedding space as a short token sequence. What comes out is a CONDITIONING that carries the identity, ready to be handed to Apply InfuseNet's id_embedding input.
Notice what's missing: no text prompt involved, no training, no LoRA. One photo in, one person out, zero shots. That's the entire appeal of the method, and this node is where the magic is actually concentrated.
The inputs
All four are required, and three of them come from a single source:
- face_detector, arcface_model, and image_proj_model - the three outputs of ID Embedding Model Loader, in that order. This node has no defaults and will do nothing if you skip a wire. If a workflow error says something is missing here, check those three connections first.
- image - your reference photo. The one true face.
The output
One CONDITIONING out, into Apply InfuseNet's id_embedding. There's no other meaningful destination for it; this isn't the thing you preview.
Reference quality is the whole ballgame
The output is only as good as the input, and this is the one place in the pack where "garbage in, garbage out" is not a cliché. Clear, frontal-ish lighting beats a moody side profile every time - the detector and ArcFace both want to see the face. One face per call: the largest face in the frame wins, so crop to the person if there's clutter, or you'll be conditioning on the wrong subject. Multiple people means multiple Extract ID Embedding nodes plus masks, which is exactly what the pack's multi-ID example workflow does.
Installing
Same shared install as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/bytedance/ComfyUI_InfiniteYou.git
cd ComfyUI_InfiniteYou
pip install -r requirements.txt
Restart, and let the first run download the models. ComfyUI Manager finds it by searching ComfyUI_InfiniteYou.
Where people get burned
- "No face detected in the input ID image" is a hard error that kills the run. It fires when the detector comes back empty - too small a face, too far gone a profile, too dark a photo. Better reference image, or tune
face_analysis_det_sizeon the loader (AUTO already cascades 640 → 320 → 160). - This is where the "Flux look" complaints sneak in. The identity lands fine; the style can read as generic Flux. That's not an embedding problem - the README's own fix is adding the Realism and Anti-blur Flux LoRAs to the base model, and you can see the difference instantly.
- License reminder, since this node is the ArcFace gateway: the InsightFace weights are non-commercial research-only. InfiniteYou as a whole is a research stack, not a product foundation.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| face_detector | MODEL | — | |
| arcface_model | MODEL | — | |
| image_proj_model | MODEL | — | |
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |