Ultimate Face Fix (Process)
The other half that puts it all back
- extract_image
- face_fix_context
- model
- vae
- positive
- negative
- face_parser
- sam_model
- fixed_image
- original_face_crops
- processed_face_crops
- face_mask
- debug_preview
Extract pulled the faces out; Process is what repairs them and puts them back. Ultimate Face Fix (Process) is the second half of the split pipeline - it takes the crops (after whatever you did to them in between) plus the face_fix_context from the matching Extract node, runs the generation-model repair on each crop, builds the semantic mask, matches colors, blends, and returns the fixed image.
Think of it as the integrated Ultimate Face Fix node with the detection half surgically removed. Everything downstream of detection lives here: the model/vae/positive/negative inputs for the crop img2img, the sampling controls (repair_mode, custom_denoise, seed, steps, cfg, sampler_name, scheduler), and the compositing controls (face_parser, mask_preset, sam_refine, mask_grow_percent, mask_feather_percent, color_match_strength, blend_mode). Outputs are the same five as the integrated node: fixed_image, original_face_crops, processed_face_crops, face_mask, and debug_preview.
The inputs that matter are the ones you already learned on the integrated node. repair_mode picks the denoise preset - Detail 0.28, Repair 0.42, Reconstruct 0.58, or Custom (the default), which reads custom_denoise (0.4). mask_preset (core_face / portrait_safe / head) only really shines when face_parser is connected. blend_mode: multiband hides seams best, alpha is faster - leave it on multiband unless speed is the problem. And a small but genuinely good detail from the source: each face gets a deterministic derived seed (base seed plus a per-region offset), so a crowd of repaired faces doesn't converge into clones the way chained detailer passes famously do.
The contract with Extract is strict, and the node is vocal about it: face_fix_context must come from the matching Extract node, extract_image must be the same batch in the same order, and every crop must stay square. The source validates all of it and throws a clear error if you've resized or reordered the crops. Uniform scaling or enhancement is fine; dropping a face or changing alignment isn't.
The point of the split is custom enhancement before repair. Upscale the extracted crops, then let Process repair them at that higher resolution and blend back into the original - a genuinely better finishing order than repairing tiny crops and upscaling after. The README frames it exactly that way: "custom face upscaling or enhancement before the normal generation-model repair."
Install is the shared pack setup: ComfyUI Manager → search Ultimate Face Fix → Install, restart, or the manual git clone + pip install -r requirements.txt + python scripts/prepare_models.py --comfy-root ../.. steps from the pack page. If the integrated node already does everything you need, Process is unnecessary ceremony; the moment you want your own upscaler or enhancer in the middle, Extract + Process is the whole game.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| extract_image | IMAGE | — | |
| face_fix_context | ULTIMATE_FACE_FIX_CONTEXT | Connect face_fix_context from the matching Ultimate Face Fix (Extract) node. | |
| model | MODEL | Generation model used for crop img2img. | |
| vae | VAE | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| repair_mode | COMBO | custom | 4 options: detail, repair, reconstruct, custom |
| custom_denoise | FLOAT | 0.400–1 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 251–200 | — |
| cfg | FLOAT | 5.50–100 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | beta | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| mask_preset | COMBO | core_face | 3 options: core_face, portrait_safe, head |
| sam_refine | COMBO | auto | 3 options: auto, always, off |
| mask_grow_percent | FLOAT | 1.50–15 | — |
| mask_feather_percent | FLOAT | 2.50–15 | — |
| color_match_strength | FLOAT | 0.650–1 | — |
| blend_mode | COMBO | multiband | 2 options: multiband, alpha |
| face_parseropt | FACE_FIX_PARSER | Connect Load Face Fix Parser. When omitted, SAM/landmark/geometry fallback masks are used. | |
| sam_modelopt | MODEL | Connect the MODEL output from the supplied SAM 3.1 checkpoint. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| fixed_image | IMAGE | — |
| original_face_crops | IMAGE | — |
| processed_face_crops | IMAGE | — |
| face_mask | MASK | — |
| debug_preview | IMAGE | — |