Nodes/ComfyUI-Flux-FaceIR/Flux FaceIR Restore Face
ComfyUI Node

Flux FaceIR Restore Face

Restoring a face with 50 diffusion steps and zero CodeFormer

By cosmicrealm·Created 5 months ago·Updated 3 days ago· 63
Flux FaceIR Restore Face
  • faceir_model
  • clip
  • vae
  • face_image
  • reference_image_1
  • reference_image_2
  • reference_image_3
  • restored_face
promptrestore a high quality portrait photo of a person, natural skin, detailed face
resolution512
num_steps50
guidance_scale4.0
seed42

This is the node you actually came for. Flux FaceIR Restore Face is the diffusion engine of the pack: feed it an aligned face crop and it re-renders the face clean, using FLUX.2-Klein (the 4B base) with a restoration LoRA on top. No CodeFormer, no GFPGAN - a real diffusion pass that repairs blur, compression, and noise instead of smearing new skin over them.

If you've used older restoration tools, you know the failure mode: they fix the artifacts but quietly swap the face for a slightly different person. SUPIR was notorious for it. This pack's party trick is that it does reference-guided restoration - you can hand it one to three clean-ish photos of the same person, and it keeps their identity while fixing the degraded crop. Rare enough that the roundup thread that introduced the pack had someone cheering it on.

How it works

The node takes your aligned face crop, VAE-encodes it as image conditioning, and lets the diffusion model re-draw the face conditioned on that degraded version - with the FaceIR LoRA steering the base model toward "restored photo" rather than "new portrait." Reference images get VAE-encoded the same way and condition the generation as guidance. Because it runs the base (non-distilled) Klein checkpoint, guidance actually does CFG work here: it samples the empty prompt against your positive prompt, which is why guidance_scale defaults to 4 rather than the 1 you see on distilled checkpoints.

It processes faces one at a time - each batch item gets its own 50-step run, with the seed bumped per face so you don't get identical results.

The inputs that matter

  • faceir_model - the FACEIR_MODEL coming out of Flux FaceIR Apply LoRA (the base model with the FaceIR LoRA applied). Not optional, and easy to forget: it's why your graph needs that extra Apply LoRA node.
  • clip and vae - the Qwen3-4B text encoder and the flux2 VAE, loaded with the standard CLIPLoader/VAELoader.
  • face_image - the aligned_face output from Flux FaceIR Detect And Align Face (or your own crop if you're on the aligned workflow).
  • prompt - defaults to "restore a high quality portrait photo of a person, natural skin, detailed face." It works; tweak the wording rather than ripping it out.
  • resolution - 512 default. Keep it in step with the face_size you aligned at.
  • num_steps - 50 default; the bundled whole-image workflow runs 20 and results stay strong. This is your speed lever.
  • guidance_scale - 4 default. For the base model, this is real CFG; raise it if faces come out washed-out, lower it if they look overcooked.
  • reference_image_1/2/3 - optional, and the differentiator. A clear face of the same person in 1–3 slots anchors identity.

Output: restored_face (IMAGE), wired into Flux FaceIR Paste Restored Face - or saved directly if you're working on aligned crops.

The heavy part: models

This node is why the pack has a download burden. You need all five files, and the README is explicit that the workflow targets the non-quantized, non-FP8 base checkpoint:

  • flux-2-klein-base-4b.safetensorsmodels/diffusion_models/
  • qwen_3_4b.safetensorsmodels/text_encoders/
  • flux2-vae.safetensorsmodels/vae/
  • lora_weights.safetensorsmodels/loras/
  • plus retinaface_r34.pth for the detect node if you're doing full images

Install the pack via ComfyUI Manager (search Flux FaceIR) or clone + python install.py, restart, and you're set. Expect roughly 9–13GB of VRAM for the 4B base at 50 steps - it's a consumer-friendly Flux 2, not the 32B dev model, but it's still a diffusion model.

Where people get burned

  • Wrong checkpoint. The distilled Klein (4 steps) and the base (50 steps) behave differently, and this node is tuned for the base. Grab the non-quantized base-4B or results degrade and guidance_scale stops meaning what you think it means.
  • Slow batch. 50 steps × N faces adds up fast. Drop num_steps to 20 first; only then consider batch size.
  • References don't "fix" a different pose - they're guidance for identity and texture, not a warp target. The final image comes from your degraded crop, not the reference.
  • "Missing node" after install - on Windows portable installs, dependencies often land in system Python instead of python_embeded, which makes nodes vanish from the graph. Re-run the install with the full path to the embedded Python and restart.

It's new (the pack shipped April 2026), so treat settings as starting points, not gospel. But 50 honest diffusion steps per face beats any one-shot "restore faces" checkbox I've used.

CategoryFlux FaceIR

Inputs (12)

NameTypeDefaultDescription
faceir_modelFACEIR_MODEL
clipCLIP
vaeVAE
face_imageIMAGE
promptSTRINGrestore a high quality portrait photo of a person, natural skin, detailed face
resolutionINT512128–2048
num_stepsINT501–200
guidance_scaleFLOAT4.00–20
seedINT420–2147483647
reference_image_1optIMAGE
reference_image_2optIMAGE
reference_image_3optIMAGE

Outputs (1)

NameTypeDescription
restored_faceIMAGE