ScarlotSoft AutoDetailer
A one-node face detailer with optional upscaling — the ScarlotSoft AutoDetailer
- image
- model
- clip
- vae
- positive
- negative
- image
Faces come out small and smeared because the latent has no budget to spend on them. The fix is the detail loop: detect the face, crop it, re-render it at a higher resolution, paste it back. In Impact Pack land that's a detector plus FaceDetailer plus paste nodes; in this pack it's ScarlotSoft AutoDetailer - the entire loop in one node with the YOLO detection, the KSampler pass, and the optional AI upscaler all built in. You feed it your finished image, your model, CLIP, VAE, and both conditionings, and you get the refined image back.
The input list looks intimidating but maps directly onto the loop. Detection: detector_model (a YOLO .pt/.pth from ComfyUI/models/ultralytics/), confidence (0–1, default 0.5). Mask shaping: mask_expansion (default 35, how many pixels of context around each box) and mask_feather (default 20, seam softening). The re-render pass: guide_size (default 512, the resolution crops are scaled to before sampling), seed, steps (20), cfg (6), sampler_name, scheduler, and denoise (0.4). And the differentiator: upscale_model - pick any model from your upscale_models folder (default None) and the crop gets an AI upscale before the sampler, which is exactly the "upscaler + detailer" combo the community keeps landing on. Output is a single IMAGE.
The mechanics are textbook: for each detected box it expands the region, optionally upscales the crop, VAE-encodes it, stamps a feathered rounded-rectangle mask as the noise mask, runs a KSampler at guide_size (rounded to 64s), decodes, resizes back to the original box, and pastes with the feathered mask. One output image per input, batched. The pasted seam quality is where the feathering earns its keep - a hard mask edge is how you get the grey-box-around-face artifact that haunts ADetailer-family tools; keep mask_feather ≥ 15 and let denoise sit in the 0.35–0.5 range for a repair pass, higher for a bigger change.
Two setup gotchas, both real. First, the node needs ultralytics installed - it's not in a requirements file; the code checks on import and pip-installs it on the fly if missing, so the first run can hang a while. Second, it needs a YOLO model: drop face_yolov8n.pt (or any bbox detector) into ComfyUI/models/ultralytics/. If the folder's empty the dropdown literally reads "No YOLO models found" and the node silently passes the image through unchanged - no error, which is quietly the most common "why is nothing happening" report. Watch the console. Also worth knowing from the detailing playbook: the Ultralytics path carries AGPL licensing and had a 2024 supply-chain scare (a poisoned release shipped a miner), so know what you're installing if you're distributing output.
Install the node itself as usual:
cd ComfyUI/custom_nodes
git clone https://github.com/scarlotsoft/ComfyUI_ScarlotSoft
via Manager (search ScarlotSoft), or the above, then restart.
Compared to Impact Pack's FaceDetailer, this trades composability for convenience - it's not SEGS-based, so you can't slot in a different detector or filter mid-loop; it's one fixed pipeline. But as a one-node "make the faces good" button for a normal single-image workflow, it's hard to beat for setup effort. And unlike its A1111 namesake, this one runs inside ComfyUI with the same core YOLO weights - the interface is the difference, not the result.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| detector_model | COMBO | 1 options: No YOLO models found | |
| upscale_model | COMBO | 1 options: None | |
| confidence | FLOAT | 0.500.1–1 | — |
| mask_expansion | INT | 350–200 | — |
| mask_feather | INT | 200–100 | — |
| guide_size | INT | 512256–1024 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–100 | — |
| cfg | FLOAT | 6.01–20 | — |
| 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 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |