DetailerDebug (SEGS/pipe)
The detailer that shows its work
- image
- segs
- basic_pipe
- detailer_hook
- refiner_basic_pipe_opt
- scheduler_func_opt
- image
- segs
- basic_pipe
- cropped
- cropped_refined
- cropped_refined_alpha
- cnet_images
This is the workhorse detailer with the lid off. In the UI it shows up as DetailerDebug (SEGS/pipe), and it does exactly what the regular Detailer (SEGS) does - crop each detected region, resample it at a proper resolution, paste it back - except it also spits out the intermediate crops so you can actually see what happened. When your faces are coming out weird and you can't tell whether the detector grabbed the wrong region or the sampler botched the fix, this is the node you swap in to find out.
That detect-crop-resample-paste loop is the entire reason Impact Pack exists. A face that occupies 80x80 pixels of a 1024px frame gets 80x80 worth of the model's attention and comes out mangled. The detailer gives that region its own full-resolution pass. It's the ComfyUI answer to A1111's ADetailer - more knobs, more setup, and (fair warning) more ways to shoot yourself in the foot.
How it works
You feed it an image and a segs (the detected regions, from a detector node). For each region it enlarges the crop toward guide_size, runs a sampling pass using the model and prompts bundled in your basic_pipe, feathers the edge, and composites it back onto the original. The "pipe" in the name means it takes a BASIC_PIPE (model + clip + vae + positive + negative in one wire) instead of five separate inputs - tidier once your graph gets busy.
The inputs and outputs that matter
segs- the regions to fix, from a detector (BBOX/SEGM/Simple Detector). No SEGS, nothing to detail.basic_pipe- your model, VAE, and conditioning bundled together. This is where the actual generation settings live.guide_size/max_size- the crop gets scaled up towardguide_size(default 512) before sampling and capped atmax_size(default 1024). This is what buys back the detail; too small and the fix is pointless, too big and you waste VRAM and can drift the style.denoise- defaults to0.5. For faces, 0.3–0.5 is the sane band. Higher and you're not fixing the face, you're replacing it.feather/noise_mask_feather- soften the paste edge so there's no visible box around the fix.wildcard- an optional region-specific prompt (great for "detailed eyes" on a face pass).
The debug payoff is in the outputs. Alongside the finished image, segs, and basic_pipe (for chaining another pass), you get three list outputs: cropped (what it cut out), cropped_refined (what it made), and cropped_refined_alpha (the mask), plus cnet_images if you're running ControlNet on the SEGS. Wire cropped and cropped_refined into Preview Image nodes and you can watch each region before and after.
How to install it
Install the Impact Pack via ComfyUI Manager (search ComfyUI Impact Pack, Install, restart), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack comfyui-impact-pack
cd comfyui-impact-pack
pip install -r requirements.txt
then restart. To actually feed this node, you'll usually want the Impact Subpack too (for UltralyticsDetectorProvider and its YOLO face/hand models) - since Impact Pack v8.0 that's a separate install and no longer comes bundled.
Common issues & troubleshooting
Grey or mismatched box around the fixed region. Classic detailer artifact from the VAE round-trip. Raise feather and noise_mask_feather, and confirm your basic_pipe carries the correct VAE for the checkpoint.
The fix looks like a different person / style drifts. denoise is too high - drop to 0.3–0.4. Keep the prompt in the pipe consistent with the original generation.
A crowd turns into clones. Every detected region samples from the same seed, so faces converge. Vary the seed or prompt per region, or use the cropped outputs to spot it happening. Use the debug crops to check the detector actually found faces and not, say, patches of background - a wrong SEGS in means a wrong fix out.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| segs | SEGS | — | |
| guide_size | FLOAT | 51264–16384 | — |
| guide_size_for | BOOLEAN | true | — |
| max_size | FLOAT | 102464–16384 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 17 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +11 | |
| denoise | FLOAT | 0.500.0001–1 | — |
| feather | INT | 50–100 | — |
| noise_mask | BOOLEAN | true | — |
| force_inpaint | BOOLEAN | true | — |
| basic_pipe | BASIC_PIPE | If the `ImpactDummyInput` is connected to the model in the basic_pipe, the inference stage is skipped. | |
| wildcard | STRING | — | |
| refiner_ratio | FLOAT | 0.200–1 | — |
| cycle | INT | 11–10 | — |
| detailer_hookopt | DETAILER_HOOK | — | |
| refiner_basic_pipe_optopt | BASIC_PIPE | — | |
| inpaint_modelopt | BOOLEAN | false | — |
| noise_mask_featheropt | INT | 200–100 | — |
| scheduler_func_optopt | SCHEDULER_FUNC | — | |
| tiled_encodeopt | BOOLEAN | false | — |
| tiled_decodeopt | BOOLEAN | false | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| segs | SEGS | — |
| basic_pipe | BASIC_PIPE | — |
| cropped | IMAGE | — |
| cropped_refined | IMAGE | — |
| cropped_refined_alpha | IMAGE | — |
| cnet_images | IMAGE | — |