NoiseInjectionDetailerHookProvider
Add variance to a detailer's refine pass
- DETAILER_HOOK
Detailers (FaceDetailer, Detailer (SEGS), and friends) refine each detected region by resampling it - but at low denoise, that resampling can look a little flat or samey across regions, especially when you're detailing several faces or several instances of the same object in one image. NoiseInjectionDetailerHookProvider builds a DETAILER_HOOK that injects noise into the latent during each region's processing, adding back some of the variance a low-denoise pass tends to smooth away.
If you haven't touched Impact Pack's hook system yet: a DETAILER_HOOK is a small plug-in behavior you wire into a detailer's detailer_hook input. The detailer calls it at each step of processing each SEGS region. This particular hook's job, per the pack's own description, is to inject noise "while varying the strength according to a schedule" as each region is worked through - not a one-shot dump of noise, but a controlled ramp.
How it works
You set a starting and ending strength, and the hook scales the injected noise between those two values as the detailer cycles through steps for a region. The seed is the base value the noise is generated from, and - this is worth knowing - it increments by 1 with each iteration as processing unfolds, so successive regions or successive cycles don't all get identical noise. source chooses whether that noise is generated on CPU or GPU (this affects the exact noise pattern you get, the way CPU vs GPU noise generation always does in ComfyUI-adjacent tools - same seed, different result, depending which one you pick).
One real dependency to know about: this hook needs BlenderNeko's ComfyUI_Noise node extension installed. The README states it plainly under the PK_HOOK section for the sibling NoiseInjectionHookProvider, and the same underlying noise machinery backs this detailer-hook variant. Without it, the node either won't function correctly or won't be available at all - install it alongside Impact Pack if you plan to use noise-injection hooks.
The inputs and outputs that matter
schedule_for_cycle(skip_start/from_start) - whether the strength ramp begins applying from the very first cycle or skips ahead a bit before kicking in.source(CPU/GPU) - where the noise is generated. Match whichever your workflow generally uses for consistency, though either works.seed(default 0) - base seed for the injected noise. Increments automatically per iteration, so you don't need to manage it by hand.start_strength(default 2, range 0–200) andend_strength(default 1, range 0–200) - the strength ramp. Note the default actually starts higher than it ends (2 → 1), front-loading the variance and easing off as the region converges. Push both down toward 0 for a subtler effect; push them up if your detailed regions still look too uniform.
Output is a single DETAILER_HOOK - wire it into any detailer's detailer_hook input. If you want it alongside another hook (a denoise schedule, a preview hook), combine them first with DetailerHookCombine before feeding the detailer, since most detailers only expose one hook slot.
How to install it
Via ComfyUI Manager: search ComfyUI Impact Pack, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack comfyui-impact-pack
cd comfyui-impact-pack
python -m pip install -r requirements.txt # ComfyUI's python; python_embeded on portable
then restart. Also install BlenderNeko/ComfyUI_Noise - this hook's noise generation depends on it, and it's a separate pack, not bundled.
Common issues & troubleshooting
The hook does nothing / errors on use. The most likely cause is a missing ComfyUI_Noise install - it's an easy dependency to skip since Impact Pack's own installer doesn't pull it in for you. Install it separately and restart.
Regions came out too different from each other, or too different from the original. You've pushed start_strength/end_strength too high for your use case. This is additive on top of whatever denoise your detailer is already running - it's meant to restore a bit of natural variance, not overpower the detail pass. Bring both values down toward 0–1 and reassess.
Not sure whether you need this at all. Most detail passes look fine without any hook - this is a tuning tool for a specific symptom (regions that look too uniform or slightly flat after a low-denoise refine), not a default you should reach for on every detailer. If your faces already look good, skip it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| schedule_for_cycle | COMBO | 2 options: skip_start, from_start | |
| source | COMBO | 2 options: CPU, GPU | |
| seed | INT | 00–18446744073709550000 | — |
| start_strength | FLOAT | 2.000–200 | — |
| end_strength | FLOAT | 1.000–200 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DETAILER_HOOK | DETAILER_HOOK | — |