Prompt Chain Regional Detailer
Face detailing that knows which face is which
- model
- clip
- vae
- image
- masks
- negative
- IMAGE
The detect-crop-resample-composite loop behind ADetailer and Impact Pack's FaceDetailer is the standard fix for faces that come out mangled because they only occupy a few dozen pixels of the frame. What neither of those tools solves on its own is a scene with several faces that each need a different prompt - a plain face detailer redetails every detected face with the same shared text. Regional Detailer is PromptChain's answer to that specific gap: it pairs each detected (or posed) face with its own character's prompt from the regions data, then runs the same detect-crop-refine loop per face.
How it works
Two ways to find faces, chosen with face_source. detect (yolo) runs a YOLO detector over the rendered image - the same family of model ADetailer and Impact Pack use - fast, but it can miss a tilted or full-profile head. mannequin heads skips detection entirely and uses the exact head positions exported from the 3D Poser's pose data, which never misses a face the Poser knows about, frontal or in profile, as long as it's facing generally toward the camera. Once a face region is found, it's cropped with padding, upscaled to a working resolution, resampled with its own conditioning, and feathered back into the original at full size - the same mechanism as PromptChain_MaskedDetail, just with automatic detection and per-character prompting layered on top.
The inputs and outputs that matter
The tooltip on model is worth reading literally: it says a base model is preferred over an already-couple-patched one, because each crop is a single region, so plain regional conditioning is cleaner here than reusing an attention-patched model from an Attention Couple pass upstream. clip, vae, and image are the usual sampling trio; regions is Prompt Chain's 4th output, carrying each character's prompt.
Fields worth setting deliberately: denoise (default 0.4) controls how much of each face is actually re-rendered - lower keeps it closer to what was already there. face_source picks the detection mode above, and if you use mannequin heads, wire the optional pose input or the node has nothing to place heads with. max_face_angle (default 110°) only matters in mannequin mode - it culls heads turned more than that many degrees from camera, and the default is generous enough to keep frontal, three-quarter, and full-profile faces, only dropping ones facing fully away. bbox_threshold and bbox_dilation only matter in detect mode - confidence cutoff and how far to grow a detected box. mask_dilation grows the figure's silhouette (not the face box) before it bounds the re-render, so hair or headgear extending past the mannequin's edge doesn't get clipped. drop_size skips any detected face below that many pixels - useful for ignoring background extras. The optional negative input takes a shared negative if you have one; leave it unwired and it defaults to whatever negative is already in the regions JSON.
Single IMAGE output - the composited result, ready for your next step, whether that's an upscale or straight to output.
How to install it
Manager: search ComfyUI-PromptChain. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/mobcat40/ComfyUI-PromptChain.git
Face detailing is one of the pack's self-installing optional features - expect a first-use prompt to install its own detector and any missing model files, with progress shown live, rather than a separate Manager step.
Common issues & troubleshooting
A profile or tilted face gets skipped entirely. That's detect (yolo) doing what YOLO detectors always do with off-angle faces - miss them. If you posed the scene in the 3D Poser, switch to face_source: mannequin heads and wire pose; it works from known head positions instead of hoping the detector finds them.
Faces across a crowd start looking similar. This node takes one seed for the whole pass, same as most detailer implementations - when several faces are detailed in one run off a single seed, expect some convergence in how they come out, the way any single-seed multi-face detailer behaves. Rerun with a different seed on the outlier if one face needs to stand apart from the rest.
A face's prompt doesn't match the character. Confirm regions is actually wired from Prompt Chain, and if you're on mannequin-heads mode, that pose is wired too - name binding runs through the same $name{} mechanism as the rest of the pack.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Base model preferred — the crop is a single region, so plain regional conditioning is cleaner than the couple-patched model. | |
| clip | CLIP | — | |
| vae | VAE | — | |
| image | IMAGE | — | |
| regions | STRING | Wire to Prompt Chain's 'regions' output (4th). | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–100 | — |
| cfg | FLOAT | 7.00–30 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 0.400–1 | How much of the face is re-rendered. |
| guide_size | INT | 51264–2048 | Upscale the crop so the face spans about this many pixels. |
| max_size | INT | 102464–4096 | Cap on the sampled crop's long side. |
| crop_factor | FLOAT | 2.01–8 | Context padding around the face bbox. |
| feather | INT | 240–128 | Falloff width (px) outside the face box — bounds both the re-rendered area and the composite blend. |
| bbox_threshold | FLOAT | 0.500–1 | Face detection confidence threshold. |
| bbox_dilation | INT | 80–128 | Grow each detected face box by this many pixels. |
| mask_dilation | INT | 220–128 | Grow the figure silhouette before it bounds the re-rendered area, so hair/headgear past the mannequin isn't clipped. |
| drop_size | INT | 160–512 | Skip faces smaller than this many pixels. |
| face_source | COMBO | detect (yolo) | detect: find rendered faces with YOLO (can miss tilted/profile heads). mannequin heads: use the Poser's exact head positions for any head facing the camera — never misses, needs the 'pose' input wired. |
| max_face_angle | INT | 1100–180 | Mannequin mode: skip heads turned more than this many degrees away from the camera. The default (110) keeps every visible face — frontal, three-quarter, and full profile — and only culls heads facing away. Lower it to restrict to frontal faces. |
| masksopt | MASK | Per-figure masks from the 3D Poser MASKS output. | |
| poseopt | STRING | Wire to the 3D Poser's POSE_JSON output — provides exported head boxes for 'mannequin heads' mode. | |
| negativeopt | CONDITIONING | Shared negative; defaults to the regions JSON negative. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |