Nodes/Ultimate Face Fix/Ultimate Face Fix (Extract)
ComfyUI Node

Ultimate Face Fix (Extract)

Own the middle of your face pipeline

By Merserk·Created 2 months ago·Updated 2 months ago· 20
Ultimate Face Fix (Extract)
  • image
  • face_detector
  • face_landmarker
  • bboxes
  • extract_image
  • face_fix_context
face_selectionall
detection_qualitymaximum
max_faces16
min_face_size24
detection_confidence0.25
context_scale1.80
target_resolution1024

The integrated Ultimate Face Fix node is a one-stop shop: detect, repair, blend, done. But "one-stop" is also a wall - you can't slip your own processing between the detection and the repair. That's what the split pipeline is for, and Extract is the first half of it.

Ultimate Face Fix (Extract) does detection and cropping and nothing else. Feed it an image and it runs the YOLO face finder (or your external bboxes), picks faces per face_selection, crops each one square with context around it, resizes to target_resolution, and hands you two outputs: extract_image - the batch of square face crops - and face_fix_context, a small bundle that carries the source image, the face regions, and the original crops.

That second output is the interesting one. It's a custom ULTIMATE_FACE_FIX_CONTEXT type, and it's the contract between the two halves: your enhancement chain gets the crops, but the context remembers where they came from, what order they're in, and what the originals looked like. The matching Process node needs both. This is the "custom crop pipeline" from the README, and the use case is anything where you want to touch the face crops before the generation-model repair - most commonly running them through an upscaler so the img2img repair happens at higher resolution.

The controls are all detection-side, and they're the same ones the integrated node exposes: face_selection (all, largest, largest_n), max_faces (default 16), min_face_size (default 24 - ignores tiny noise detections), detection_confidence (0.25 default; lower finds more faces and more false positives), detection_quality (maximum = tiled detection for small faces, balanced = full image only), context_scale (1.8 - how much headroom around the face), and target_resolution (1024 default; none keeps native crops). Optional inputs: face_detector from the YOLO loader, face_landmarker for landmark-aware cropping, and bboxes, which completely replace YOLO detection.

The constraint that will bite you: whatever you do to extract_image between Extract and Process must preserve the square shape, the batch count, the alignment, and the face order. The Process node validates this and raises a clear error if you hand it non-square crops or a mismatched context. Resize uniformly, don't reorder, don't drop a crop.

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. No extra model downloads beyond what the pack already fetched, since Extract reuses the same detector.

Reach for Extract when the middle of the pipeline should be yours. If you just want faces fixed with zero ceremony, the integrated node is fewer clicks and produces the same result.

Categoryultimate face fix

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
face_selectionCOMBOall3 options: all, largest, largest_n
detection_qualityCOMBOmaximum2 options: maximum, balanced
max_facesINT161–64
min_face_sizeINT244–1024
detection_confidenceFLOAT0.250.01–1
context_scaleFLOAT1.801.1–3
target_resolutionCOMBO10245 options: none, 512, 768, 1024, 1536
face_detectoroptFACE_FIX_DETECTORConnect Load Face Fix Detector. It may be omitted only when bboxes is connected.
face_landmarkeroptFACE_DETECTION_MODELConnect ComfyUI's Load Face Detection Model (MediaPipe) output for landmark-aware crops.
bboxesoptBOUNDING_BOX[object Object]When connected, these boxes replace YOLO detection.

Outputs (2)

NameTypeDescription
extract_imageIMAGE
face_fix_contextULTIMATE_FACE_FIX_CONTEXT