Nodes/ComfyUI_InfiniteYou/InfiniteYou Apply
ComfyUI Node

InfiniteYou Apply

Put a real face on FLUX without training a thing

By ZenAI-Vietnam·Created about a year ago·Updated about a year ago· 249
InfiniteYou Apply
  • control_net
  • model
  • positive
  • negative
  • ref_image
  • latent_image
  • vae
  • MODEL
  • positive
  • negative
  • latent
adapter_file
weight1.00
start_at0.000
end_at1.000
fixed_face_posefalse

InfiniteYou Apply is the node that lets you drop an actual person's face into a FLUX generation with zero training. Feed it one photo, write any prompt - "a studio portrait in the rain, golden hour" - and the person in the output is the person in the photo. No LoRA, no fine-tune, no API. It's the ComfyUI port of ByteDance's InfiniteYou (arXiv:2503.16418, March 2025), built by the ZenAI team, the same people who made ComfyUI_ZenID. Think of it as InstantID's trick finally working on FLUX.

The name undersells it. "Apply" sounds like a tiny patch node, but it's doing the whole identity job in one step, in the same style as the InstantID/PuLID apply nodes. If you've wired one of those, the layout will feel familiar.

How it works

It's the InstantID recipe, ported to FLUX. InsightFace (the antelopev2 model pack, not the default buffalo_l - more on that below) detects the face in your reference and produces an ArcFace embedding, a vector encoding facial geometry rather than just appearance. A Resampler image projection turns that vector into image-prompt embeddings, injected into FLUX through the cross_attn_controlnet path - decoupled cross-attention, the same mechanism ZenID and InstantID use. The ControlNet you load adds spatial structure on top.

Here's the subtle part: the ControlNet is conditioned on drawn face keypoints, a 5-point landmark sketch. That's what fixed_face_pose controls. On, the node renders the reference face's landmarks as the ControlNet image, so the output inherits its angle and expression. Off (the default), the keypoint image is zeros and the face is free to look wherever your prompt points it. If your character keeps staring the same direction as the reference photo, that toggle is why.

The inputs that actually matter

  • adapter_file - dropdown listing files in ComfyUI/models/InfiniteYou. Match it to your ControlNet: aes_stage2_img_proj.bin with aes_stage2_control.safetensors, sim_stage1_img_proj.bin with sim_stage1_control_net.safetensors. Mixing them is the classic "why does this look mushy" mistake.
  • weight (0–5, default 1) - identity strength. 1.0 is the sweet spot; nudge toward 2 if the likeness drifts, drop to ~0.7 if you want a hint rather than a copy.
  • fixed_face_pose - locks pose to the reference, described above.
  • start_at / end_at - when during sampling the identity applies. The default 0→1 is fine; ending around 0.8 frees the later detail steps, which some people prefer.

Everything else - the FLUX model, positive/negative conditioning, latent_image, control_net, vae - comes from the normal loader nodes.

Outputs

MODEL, positive, negative, `latent. All four go into a single KSampler: the node returns the patched model, conditioning with the identity baked in, and the latent you gave it. Nothing else needed - sample and decode.

Installing it

ComfyUI Manager (search "ComfyUI_InfiniteYou"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/ZenAI-Vietnam/ComfyUI_InfiniteYou
pip install -r ComfyUI_InfiniteYou/requirements.txt

Then the downloads, which are the real chore. This runs on FLUX.1-dev, so you need flux1-dev.safetensors and ae.safetensors first. The pack's own files: one ControlNet (~5.6 GB each) into models/controlnet, the matching *_img_proj.bin (~322 MB) into models/InfiniteYou, and InsightFace antelopev2 unzipped into models/insightface/models/antelopev2. The README's quick path does all of it:

python ComfyUI_InfiniteYou/downloadmodel.py
pip install -r ComfyUI_InfiniteYou/requirements.txt

The img_proj files are what populate the adapter_file dropdown - if it comes up empty, that folder is wrong.

Where people get burned

  • "No face detected in the input ID image." InsightFace found nothing (or nothing it trusts). Use a clear front-facing shot; the node grabs the largest face in frame.
  • Install clashes. The requirements pin numpy==1.26.4 and pull insightface + protobuf, and people have reported it breaking PuLID/InstantID/OpenPose nodes until they updated protobuf. Install it in the same venv as everything else and be ready to fix protobuf.
  • It's FLUX.1-dev, so it's hungry. The model launched to a +200 thread where the loudest complaint was "flux chin" - FLUX's house look, not the node's fault. Face consistency on a tight budget is still LoRA territory; this is the zero-training path, and it's very good at being that.
CategoryComfyUI-InfiniteYou

Inputs (12)

NameTypeDefaultDescription
control_netCONTROL_NET
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
ref_imageIMAGE
latent_imageLATENT
adapter_fileCOMBO0 options:
weightFLOAT1.000–5
start_atFLOAT0.0000–1
end_atFLOAT1.0000–1
vaeVAE
fixed_face_poseBOOLEANfalseFix the face pose from reference image.

Outputs (4)

NameTypeDescription
MODELMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT