LTX-Best-Face-ID — Identity LoRA for LTX-2 (Reference-to-Video)
Keep a person's identity in generated video. Give it one reference photo + a text prompt, and
it generates a video of that person performing the action.
If this model was helpful to you in any way, please consider helping me continue creating more model for the price of a coffee.
How it works
The reference is injected as an overlap latent with TASS-RoPE (source-phase) tagging, plus a
differentiable ArcFace identity loss — so the face transfers without becoming the first frame.
Rank-128 LoRA, trained on HuMoSet (close-up / frontal identities). Base model: LTX-2 (22B).
⚠️ Requires the BFS Nodes for ComfyUI
👉 https://github.com/alisson-anjos/ComfyUI-BFSNodes
Full model card + files (workflow): https://huggingface.co/Alissonerdx/LTX-Best-Face-ID
Use the LTX Identity Transfer node → feed the reference image → load this LoRA on the MODEL path.
Tips
- Use a clean, frontal, well-lit close-up as the reference.
- Identity is prompt-driven — describe the person's attributes (skin tone, hair, eyes, glasses,
facial hair) for best results. The shared workflow's **Prompt Enhancer** can auto-describe the
reference for you.
- Prefix prompts with `ref_t2v:`.
Limitations
- Close-up bias — full-body / large-angle shots hold identity less well.
- A bare/generic prompt gives weaker identity — describe the person.
- The reference framing/accessories can partially copy into the video; a clean frontal
reference minimizes it.
Description
FAQ
Comments (48)
It is a IC lora or normal lora ?
IC LoRA
any chance of a comfyui workflow json?
This is on Huggingface; I left it in the model's description.
Wow, just wow... You're a genius ash. I gen two test videos and it works perfectly. Thanks for sharing.
Not so good
Tell me what problem you encountered because so far I haven't encountered many problems; you probably don't know how to use it or you don't read the instructions.
I have tried several face images following recommendations (clear, front-facing, etc.) but, while the video quality is pretty good, the face has distortions and the facial resemblance is a bit off. Any advice appreciated.
@NRDX I used your workflow, and it's ruining my face. The original "image2video" from LTX works better.
@Dumcluck51 Try the second pass workflow that I left in HF.
@Udimuz If you're trying to generate full-body video, clearly the face will be worse, since this model was trained on close-up videos. Just read the description; there are some people on Banocodo who managed to combine I2V + Best Face ID and are getting incredible results that they would never have gotten with I2V alone, especially when the character's face isn't visible and they need to turn towards the camera.
@NRDX is there a link to this workflow? and another question - your first workflow works well, but the second one, where there is an upscale, changes the face a lot during the upscale stage, and I've tried different values. The second question is whether it's possible to use these nodes and Lora in the face swap and editing processes, as the face sometimes changes during editing. I thought it might help keep the face in place better. Thank you for your work.
@dav79mail156 Yes, in the second pass it does change sometimes, not always, since it introduces noise to achieve upscaling. I haven't really experimented enough to give you an answer right now. Regarding head swapping, I think it's possible to use it together, but I haven't tested it yet either.
@NRDX Thanks, we'll do the tests.
@NRDX Would you mind sharing this workflow?
"If you're trying to generate full-body video, clearly the face will be worse, since this model was trained on close-up videos. Just read the description; there are some people on Banocodo who managed to combine I2V + Best Face ID and are getting incredible results that they would never have gotten with I2V alone, especially when the character's face isn't visible and they need to turn towards the camera."
Or making it?
Thanks!
Great job btw!
Many of the audio layers are all zeroes. They take up quite a bit of space and are redundant. Resized to 200mb with 96.65% retention.
Yes, totally possible, If I remove the audio part, the model will be half the size 1.2gb
Thanks for sharing. I was able to get it all working and the results are fine, but I'm not clear what the advantage is for using this approach rather than the standard I2V workflow. Is the idea that using the lora with the standard I2V workflow will help with consistency of the subject's face and minimize identity shift?
If you didn't understand, then you must not have made it work correctly. If you use an I2V, you'll always generate something starting from that image, meaning you'll always have to generate the initial frame. Every camera change will always start from the image. If you use a LoRa identity, you can provide any prompt, and it will generate the video without starting from a first frame, since no first frame is being used, only a reference. What will make things happen is the prompt. Besides, you can use this to improve facial consistency since it's a LoRa IC.
If you look at my samples, you'll see the prompt format. To really use this model in a pleasant way, you have to pay attention to the prompt. It was trained on videos from a dataset that focuses on close-ups, so close-up videos will be better than full-body videos since there wasn't a full-body video in the dataset. Another thing you'll notice if you look at the samples is that the generated video doesn't start from the reference image, meaning I can customize everything with the prompt: change the clothes, change the scenery, change the action.
In scenarios where you want to generate a long video, you will always have to provide the keyframes, that is, generate the images beforehand. Using this model, you can simply generate continuously using only prompts. For example, music clips, etc.
@NRDX No, I had it set up correctly...I just wasn't paying close attention to the output after I ran it. Based on your explanation I see the difference now. The image I loaded was just a portrait of a woman's face, but the video output's initial frame had a coffee cup already raised to her mouth (based on my text prompt). Thanks for explaining, and again thanks for sharing the lora and the workflow.
Last time I tried the ComfyUI-BFSNodes workflow, it used a billion GB VRAM.
That's because nodes involving v2v will always use more VRAM since you're providing an entire video as a reference, which will be much more resource-intensive than i2v or t2v.
Very impressive so far, thank you.
The workflow contains a custom audio node/set node, but I can't find a toggle anywhere to actually use it. The Audio group just seems to contain the means to generate an empty audio latent, there's nothing I can see to use the custom audio. Did I miss something?
You can do this for custom audio https://imgur.com/a/s2GuAvk
I need to update this workflow with this.
any way to do generative audio instead of upload audio? which nodes can i bypass to get that 😅
One of the main problems with AI video in general (Including WAN2.2 and LTX), is that when the camera is far away from the person's face, the face distorts immensely.. will this help solve that?
You can try applying and doing a second pass to try and solve some distortion problems, but as you already know, this is a LoRa and it won't solve a problem that has existed for a long time.
@NRDX got it, will have to our best with what we have then, thanks for all your work!
The problem is how the model "sees" the face in latent space. In LTX, it's highly compressed, which means the model has trouble "seeing" facial details in wide shots. The only solution is to inpaint the face and regenerate only the face region, increasing the resolution in that area. But this requires a separate workflow.
@Neural_Dreamer_XXX Interesting, I didn't know you could use that kinda of stuff with videos, only images... something like Adetailer I'm guessing?
@ArtiOtaku You could just run the video through FaceFusion which is a face swapper. FYI you may need to edit a file to make it be able to change NSFW video faces.
By the way, is this just a workaround for "T2V with a reference instead of I2V" or something that actually force fidelity to the reference throughout the generation ??
This is actually a technique that forces identity; it's not a conventionally trained IC lora , and that's why it requires my custom node to work. In the model's huggingface, I've included an article explaining how this works, but basically, it involves placing the reference in an offset space within the ROPE. This technique is called TASS-ROPE, and I needed to customize some code from the official training script to make it work.
@NRDX What I mean is, does it reinforce the "identity" of the begining of the generation, or throughout the whole length ?
Because what sounds really insteresting is to be able to inject this (with your node) inside a WF we are using personnally. In a I2V WF for example, it would help to enhance fidelity ?
Although even if it does, I have no idea about how to merge it to existent T2V/ I2V WF without breaking things.
@hboxgames132 Yes, it works. You could provide the first image and then add a latent to it over the empty latents.
@NRDX Thanks for replying, not sure I understand all this... But I will try working around haha
@NRDX This is really interesting, do you have any good resources for learning more about RoPE in general because this has been something of an area of interest for me for a while but I'm not sure about where to look for resources on digging into RoPE in general. An underexplored area in most models in my opinion.
@clzpetn804 Claude code hahaha and reading the arxiv articles.
@NRDX ok fair enough, theres a lot of really interesting stuff on arxiv. ill dig back into that stuff and poke some AI brains as well, thanks
@clzpetn804 If someone manage to make a T2V I2V polyvalent workflow with this reference reinforcement I'm down..
@hboxgames132 I think TenStrip made a node for this; you have to join the Sulphur Discord server. https://discord.gg/Tqqmq9r2C
@NRDX Thanks ! But it says your invitation link is not valid..
This looks amazing, how does it work in combination with keyframes (Face reference + first, middle and last frames)? Have you tested it that way or is this only t2v?
You can test this with i2v, v2v, but the training focus was ref2v, which is a IC LoRa , so it was designed to work with v2v. The issue that needs testing is that I have a custom node to make the reference work. I'll try to run some tests today and bring new workflows soon.
Details
Files
Best_FaceID_v1.0_LoRA.safetensors
Mirrors
Best-FaceID - LTX2.3 - Give it one reference photo + a text prompt.safetensors
Best-FaceID - LTX2.3 - Give it one reference photo + a text prompt.safetensors
Best_FaceID_v1.0_LoRA.safetensors
Best_FaceID_v1.0_LoRA.safetensors
Best_FaceID_v1.0_LoRA.safetensors
Best_FaceID_v1.0_LoRA.safetensors
Best_FaceID_v1.0_LoRA.safetensors