JK Easy Detailer
Impact Pack's detect-crop-refine loop as one node
- IMAGE
- model
- clip
- vae
- positive
- negative
- detailer_hook
- IMAGE
- SEGS
If you've ever generated a full-body shot and watched the face come out mushy - because a face that's 80 pixels wide in a 1024×1024 frame only gets 80 pixels of the model's attention - this node is for that. It detects a region, crops it, re-samples it at proper resolution, and pastes the result back in. That's the same core trick behind A1111's ADetailer and, in ComfyUI, Impact Pack's FaceDetailer, which is exactly what this node leans on: its optional detailer_hook input is documented as coming straight "from impact pack."
So think of JK Easy Detailer as a convenience wrapper: a full detect-and-refine detailer pass, KSampler settings and all, condensed into one node instead of wiring together a detector provider, a SEGS detector, and a separate detailer node.
How it works
detector picks which model finds your target region - this dropdown is populated at runtime from whatever detector models you have installed via Impact Pack's providers (the usual suspects are YOLO weights like face_yolov8n.pt or hand_yolov8n.pt, or a SAM-based provider). Once it finds a match, the node crops around it using crop_factor (how much padding around the detected box) and dilation (grow/shrink the mask, negative values shrink it), runs a full second sampling pass on just that crop using the usual suspects - model, clip, vae, seed, steps, cfg, sampler_name, scheduler, positive, negative, and denoise (default 0.5) - then composites it back using feather to blend the seam.
guide_size and max_size control the resolution the crop gets resampled at (default 512 / 1024) - this is the whole point of the technique, giving the small region real pixel budget instead of the scraps it got in the full frame. threshold filters low-confidence detections, and drop_size throws out detections smaller than that many pixels (useful for ignoring a tiny background face you don't want detailed). iterations lets you run the detect-crop-refine loop more than once on the same image. noise_mask and force_inpaint control masking behavior during the resample; noise_mask_feather softens that mask.
Two optional fields, extra_positive_text / extra_negative_text with a _conditioning_mode (replace/combine/concat/average), let you push extra prompt wording into just the detail pass - handy for adding "detailed skin texture" only on the face crop without touching your main prompt.
Output is IMAGE (the composited result) and SEGS - the raw detection/segmentation data, which you can feed into a second detailer, a mask preview, or anything else in the Impact Pack ecosystem that speaks SEGS.
Installing it
Part of the kostenickj/jk-comfyui-helpers pack - pre-installed on comfy.icu, or self-hosted via cd ComfyUI/custom_nodes && git clone https://github.com/kostenickj/jk-comfyui-helpers.git then restart. This is a small, low-visibility pack overall, so don't expect a big community thread if you hit something unusual - the README is thin, and this is genuinely just one dev's personal toolkit.
What actually matters for this node: you need Impact Pack installed and at least one detector model downloaded, or the detector dropdown will simply be empty and there's nothing to detect with. Impact Pack itself is standard, widely-used infrastructure in ComfyUI, so grab it via ComfyUI Manager if you don't have it - it also brings the detector-provider nodes that populate model choices here.
Common issues
- Empty detector dropdown. No detector models installed - install Impact Pack (or its detector-model add-on, split out since Impact Pack v8.0) and download at least a face/hand YOLO model through it.
- Grey box or color shift around the detailed region. A known ADetailer/FaceDetailer-family artifact from the VAE encode/decode cycle on the crop. Increase
featherandnoise_mask_feather, and double-check you're feeding the right VAE. - Style mismatch between the detailed region and the rest of the image. Lower
denoise(0.3–0.4) and make surecfgroughly matches your main pass. - Nothing gets detected. Lower
threshold, or checkdrop_sizeisn't filtering out a detection that's genuinely smaller than expected.
For a context-pipe version that pulls model/clip/vae/positive/negative from a bundled JK_CONTEXT instead of six separate wires, see JKEasyDetailer_Context.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| IMAGE | IMAGE | — | |
| detector | COMBO | 0 options: | |
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28 | |
| scheduler | COMBO | 9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3 | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| denoise | FLOAT | 0.500.0001–1 | — |
| threshold | FLOAT | 0.500–1 | — |
| dilation | INT | 10-512–512 | — |
| crop_factor | FLOAT | 3.01–100 | — |
| drop_size | INT | 101–16384 | — |
| feather | INT | 50–100 | — |
| noise_mask | BOOLEAN | true | — |
| force_inpaint | BOOLEAN | true | — |
| guide_size | FLOAT | 51264–16384 | — |
| guide_size_for | BOOLEAN | true | — |
| max_size | FLOAT | 102464–16384 | — |
| noise_mask_feather | INT | 200–100 | — |
| iterations | INT | 11–10 | — |
| detailer_hookopt | DETAILER_HOOK | Optional detailer hook from impact pack | |
| extra_positive_textopt | STRING | if non empty, will be encoded and used depending on the value of extra_positive_conditioning_mode | |
| extra_positive_conditioning_modeopt | COMBO | replace | 4 options: replace, combine, concat, average |
| extra_negative_textopt | STRING | if non empty, will be encoded and used depending on the value of extra_negative_conditioning_mode | |
| extra_negative_conditioning_modeopt | COMBO | replace | 4 options: replace, combine, concat, average |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| SEGS | SEGS | — |