FastMaskDetailer
Detail everything inside your mask, not just faces
- image
- model
- vae
- positive
- negative
- mask
- image
- cropped_image
FastMaskDetailer is the mask-driven sibling of the pack's FastDetailer: instead of auto-detecting faces or objects with a bbox model, you give it a mask and it details everything inside that mask. Same crop → upscale → sample → downscale → uncrop loop, but you're in charge of the region. If FastDetailer is "fix the face," this is "fix whatever I drew around."
The detailer concept comes from the Impact Pack's FaceDetailer, which has been a fixture of every photorealistic face workflow since 2023 - detect the face, regenerate it at higher resolution so the sampler has more pixels of budget to fix distortion. The author's take ("FastDetailer") is the same idea tuned for speed: crop, upscale to ~1MP, sample, scale back down, and paste back. The explicit trade-off, stated in the docs, is detail and speed at the cost of cohesion with the rest of the image. MaskDetailer lets you point that power at any region - eyes, hands, a logo, a specific prop - by masking it instead of hoping a detector finds it.
How it works
Your mask becomes SEGS via Impact's MaskToSEGS, each connected region is cropped (with padding), upscaled to roughly a megapixel, sampled with the positive/negative conditioning and your sampler settings, downscaled back to the original crop size, and composited back onto the image. Two parameters shape the result:
- context_padding (default 0.1) - percentage of context to include around the mask edge so the model has surroundings to work with. Too little and the sampler invents wild content at the boundary; too much and you're basically regenerating the whole image.
- feather (default 0.2) - percentage of the region edge that gets feathered when compositing back, so the patch blends instead of showing a hard line.
The rest are the sampler controls: steps (20), cfg (1.5), sampler (euler_ancestral_cfg_pp), scheduler (align_your_steps), and denoise (0.4) - how much the masked region gets re-rolled. And upscale_method/upscale_model for the upscale stage.
Inputs and outputs
Required: image, model, vae, positive, negative, mask, seed, plus the sampler and upscale settings. No optional inputs. Outputs:
- image - the final composited result.
- cropped_image - the padded crops batched together. Mostly a debugging output, but handy to check that you masked what you think you masked.
Installing
Part of the mudknight utils pack, and this node needs the Impact Pack. ComfyUI Manager → install comfyui-mudknight-utils plus ComfyUI-Impact-Pack and ComfyUI-Impact-Subpack (the README lists both as required), or:
cd ComfyUI/custom_nodes
git clone https://github.com/mudknight/comfyui-mudknight-utils
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack
git clone https://github.com/ltdrdata/ComfyUI-Impact-Subpack
Restart. No model files needed beyond your checkpoints and any upscale model you want to use.
Gotchas
- "Node not found" errors - Impact Pack isn't installed (MaskToSEGS, SegsToCombinedMask come from it). That's the #1 failure.
- Nothing happens - an empty or all-black mask produces no SEGS, and the node returns the original image silently. Draw a real mask.
- Hard edges - raise
feather; default 0.2 is conservative on small crops. - Sampler result wanders off - raise
context_paddingor lowerdenoise. At 0.4 denoise the region is being substantially rewritten, which is the point, but it needs context to stay on-model.
It's a niche node in a zero-impression pack, but if you've hit the wall where FaceDetailer's detector won't grab what you want fixed, a mask-driven detailer is the escape hatch - and this one is fast.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | MODEL | — | |
| vae | VAE | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| mask | MASK | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 1.50–100 | — |
| sampler | COMBO | euler_ancestral_cfg_pp | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | align_your_steps | 10 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +4 |
| denoise | FLOAT | 0.400–1 | — |
| upscale_method | COMBO | 5 options: lanczos, bilinear, bicubic, area, nearest-exact | |
| upscale_model | COMBO | 1 options: none | |
| feather | FLOAT | 0.200–1 | Percentage of image to feather when uncropping |
| context_padding | FLOAT | 0.100–1 | Percentage of image to use for context from edge |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| cropped_image | IMAGE | — |