LTX-2.5 Face Identity Reinforcer ⚡
LTX-2.5 face identity that actually sticks
- model
- vae
- reference_image
- target_latent
- reference_image_2
- model
LTX is fast, and LTX is a fantastic draftsman - and LTX will also hand your character a new face three times in one five-second clip. If you're making talking-head or face-to-video content, the community's fix is the Best-Face-ID LoRA (Best_FaceID_v1.0_LoRA.safetensors, from Alissonerdx/LTX-Best-Face-ID), and this node is the packaging that makes that LoRA work properly. It's the whole reference-latent injection, the RoPE phase tagging the LoRA was trained against, face detection, and spatial mask gating, all in one node.
What makes this more than the plain reference-conditioning node is where the reference tokens sit. Best-Face-ID's trained recipe tags reference tokens with a distinct RoPE source position (source_id=2) via phase rotation. Do that wrong and the reference tokens collide with the i2v frame-0 conditioning, and the face drifts again. This node keeps the source_id=2 tag intact while placing tokens at a position that plays nice with the first-frame hold - which is the "reinforcer" part: it makes an identity technique that usually only works for text-to-video survive i2v too. Verified A/B on real GPU: conditioning alone pulls identity toward the photo; reinforcer plus Best-Face-ID locks it closest; strength 0 is a bitwise no-op.
How to wire it
Load the Best-Face-ID LoRA on the MODEL path before this node (a stock LoraLoaderModelOnly works), then connect this node's model output into the rest of the graph. Required inputs: model, vae, reference_image, and target_latent (the same latent that goes into your sampler).
The dials that matter:
auto_face_crop(default on) - detects the face and crops the reference around it atcrop_zoom_factor, matching the target's aspect ratio. This is the single biggest quality lever for wide or full-body references: the VAE gets real face detail to encode instead of a face the size of a stamp. Turn it off if your reference is already a tight headshot.identity_strength- 1.0 is the Best-Face-ID default; nudge up if the likeness is weak, down if the reference starts overpowering the prompt.spatial_gating-mask_soft(recommended) constrains identity influence to the face region with a cosine falloff;mask_hardis binary;offis raw uniform Best-Face-ID. If you've ever had the "person's face is right but their hoodie became a portrait of them" problem, soft gating is the fix.source_id/phase_scale- leave at 2.0 / 1.0. Those are the values the LoRA was trained with.reference_image_2- optional secondary reference for multi-subject scenes.
One model out. It pairs with this pack's LTX-2.5 prep nodes and works with joint AV latents - the video half is unbound automatically.
Installing it
This node ships in ComfyUI-GGUF-Loader (ChrisColeTech's fork of city96's ComfyUI-GGUF). Install via ComfyUI Manager ("ComfyUI-GGUF-Loader"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
pip install --upgrade gguf
Restart ComfyUI, then grab Best_FaceID_v1.0_LoRA.safetensors from the Alissonerdx/LTX-Best-Face-ID repo and drop it in models/loras. The node's face detector is built in - YuNet → MediaPipe → Haar fallback, no separate model download.
Common issues
Two gotchas, both worth knowing before they bite. The Best-Face-ID LoRA is 2.3-trained, so the 2.5 pairing is genuinely unverified cross-version territory - it works, and the community runs it, but the phase tag is only as good as the weights give you. And remember the phase tag does little without the LoRA: this node without Best_FaceID loaded is just reference conditioning, not the full recipe.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| vae | VAE | — | |
| reference_image | IMAGE | — | |
| target_latent | LATENT | — | |
| identity_strengthopt | FLOAT | 1.000–2 | Scales reference latent magnitude. 1.0 = Best-Face-ID default. |
| face_paddingopt | FLOAT | 0.150–0.5 | Face bbox expansion - captures hair/neck context. |
| auto_face_cropopt | BOOLEAN | true | When a face is detected, auto-crop the reference image around the face at zoom_factor extent and match target aspect ratio. Dramatically improves identity transfer for wide/full-body references by giving the VAE much more face detail to encode. Turn off if reference is already tightly cropped. |
| crop_zoom_factoropt | FLOAT | 2.01.2–4 | How much context around the face to include. 2.0 = crop is 2x the face bbox (shoulders + hair). 1.5 = very tight (face + hair only). 3.0 = wide (upper body). Ignored if auto_face_crop off. |
| spatial_gatingopt | COMBO | mask_soft | Constrain identity influence to face region. mask_soft = cosine falloff (recommended). mask_hard = binary. off = uniform (raw Best-Face-ID). |
| placement_modeopt | COMBO | i2v_safe | i2v_safe / t2v_overlap = pure overlap layout (Best-Face-ID's default). Reference reuses target's coord grid, disambiguated by clean/noisy state and sequence position. prefix = additive offset (legacy). |
| source_idopt | FLOAT | 20–8 | RoPE source tag applied via phase rotation. Best-Face-ID LoRA expects 2.0. source_id=0 disables rotation (overlap-only behavior). |
| phase_scaleopt | FLOAT | 1.00–2 | Phase rotation magnitude multiplier. Best-Face-ID LoRA expects 1.0. Lower values reduce reference/target separation strength. |
| reference_image_2opt | IMAGE | Optional secondary reference (multi-subject). | |
| debugopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |