Nodes/Frog Node Pack/🐸 Detailer Pro
ComfyUI Node

🐸 Detailer Pro

The two-pass detailer with quality-gated face skipping

By RabbitThatIsPinkΒ·Created 3 months agoΒ·Updated 24 days agoΒ· 1
🐸 Detailer Pro
  • image
  • basic_pipe
  • model
  • clip
  • vae
  • positive
  • negative
  • face_mask
  • face_mask_2
  • face_mask_3
  • hands_mask
  • body_mask
  • image
  • debug
β—„seed0β–Ί
β—„steps12β–Ί
β—„cfg2.0β–Ί
β—„sampler_nameer_sdeβ–Ί
β—„schedulerbeta57β–Ί
β—„upscale_to512β–Ί
β—„padding32β–Ί
β—„feather8β–Ί
β—„max_upscale_ratio4.0β–Ί
β—„min_region_px48β–Ί
β—„resize_modebicubicβ–Ί
β—„antialiastrueβ–Ί
β—„pre_upscale1.00β–Ί
β—„mask_dilation6β–Ί
β—„sharpen0.4β–Ί
β—„two_passtrueβ–Ί
β—„refine_denoise0.20β–Ί
β—„face_enabledtrueβ–Ί
β—„face_denoise0.45β–Ί
β—„auto_eye_colortrueβ–Ί
β—„face_skip_threshold0.000β–Ί
β—„face_promptdetailed face, detailed eyes, symmetrical eyes, sharp iris, clean linework, high qualityβ–Ί
β—„face_negativeasymmetrical eyes, crossed eyes, heterochromia, bad face, fused face, poorly drawn face, extra eyes, missing eyes, off-model face, nipples, breast, areola, genitals, body partsβ–Ί
β—„hands_enabledtrueβ–Ί
β—„hands_denoise0.50β–Ί
β—„hands_promptdetailed hands, five fingers, correct finger anatomy, clean fingernails, no extra fingersβ–Ί
β—„hands_negativeextra fingers, fused fingers, malformed hands, too many fingers, missing fingers, bad hands, mutated hands, six fingers, four fingers, nipples, breast, areola, nipple, genitals, penis, vagina, nude body parts, bodyβ–Ί
β—„body_enabledtrueβ–Ί
β—„body_denoise0.40β–Ί
β—„body_promptdetailed body, correct anatomy, clean linework, high qualityβ–Ί
β—„body_negativebad anatomy, malformed, extra limbs, missing limbs, fused body parts, distorted anatomy, poorly drawn bodyβ–Ί

Frog Detailer Pro is the older sibling with a longer name and a longer input list. Where the plain 🐸 Detailer runs one pass per region, Pro runs two - a fix pass that corrects structure at full denoise, then a refine pass that sharpens detail - and it adds the tooling to decide whether a region even needs work. It's WIP like its sibling, but it's the version you graduate to when the plain Detailer is either destroying small faces or wasting time on faces that were already fine.

The two-pass loop is the core idea. Pass one does the main denoise and fixes the structural problems - wrong eyes, smeared mouth. Pass two runs at refine_denoise (default 0.2, and the tooltip's honest range is 0.15–0.25) to add crispness without re-breaking what pass one fixed. That split is why Pro produces cleaner results at comparable denoise: structure correction and texture sharpening want different noise levels, and jamming both into one pass always compromises one of them.

Pro also adds pre_upscale - upscale the whole image before detailing, then downscale back after. The tooltip is blunt about why: it makes small features (small hands, and yes, it says "nipples") large enough for the model to refine rather than hallucinate. 1.0 is off; 2.0 is the recommendation for body features. And sharpen (unsharp mask, 0–3, default 0.4) counters the softness VAE decode always introduces. If your Pro output looks softer than expected, this is the knob.

The clever bit: quality-gated skipping

face_skip_threshold is the node that knows when to leave a face alone. It's a sharpness score in the 0–0.2 range, default 0.0 (always process). The workflow the tooltip describes is genuinely useful: run once with 0.0, read the console's "quality score" lines, then set the threshold just below the score of faces you want kept. A typical well-drawn ANIMA face scores 0.030–0.070; a broken or blurry one scores 0.005–0.020. Set the threshold at, say, 0.025 and already-good faces skip their pass entirely - you save time and stop the detailer from "fixing" a face that was fine.

The inputs that matter

Beyond the two-pass pair (two_pass, refine_denoise) and the quality gate, the knobs are the same family as the plain Detailer: max_upscale_ratio and min_region_px guard against generating faces from scratch; mask_dilation expands each mask outward before cropping so the model gets context; face_denoise/hands_denoise/body_denoise default higher here (0.45/0.5/0.4) because the refine pass handles the cleanup. Pro also ships per-region negative prompts (face_negative, hands_negative, body_negative) so the fix pass can actively avoid bad anatomy - the defaults are long, explicit lists of exactly the artifacts you're fixing. auto_eye_color carries over from the plain Detailer: per-mask eye-color sampling so multi-character scenes don't cross-contaminate.

Masks come from 🐸 Florence2+SAM Masker or 🐸 Mask Batch Split (per the face_mask tooltip), and basic_pipe overrides the individual model/conditioning inputs when connected.

Installing and where people trip

Pack install, no extras:

cd ComfyUI/custom_nodes
git clone https://github.com/RabbitThatIsPink/FrogNodePack

Same traps as its sibling, plus one of its own: face_skip_threshold works only if you actually do the calibration run - setting it blind is guessing. And if you crank pre_upscale to 4Γ— on a big image, you're paying a real VRAM and time cost for the whole frame, not just the regions; 2Γ— is the sweet spot the tooltip recommends. Remember it's WIP, so expect occasional breakage on pack updates.

Category🐸 Node Pack

Inputs (43)

NameTypeDefaultDescription
imageIMAGEβ€”
seedINT00–18446744073709550000β€”
stepsINT121–150ANIMA: 8–15 is sufficient.
cfgFLOAT2.00–30ANIMA: 1.5–3.0 with er_sde.
sampler_nameCOMBOer_sde44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBObeta5710 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +4
upscale_toCOMBO5124 options: 512, 768, 1024, 1536
paddingINT320–256β€”
featherINT80–128β€”
max_upscale_ratioFLOAT4.01–16Hard cap on crop scale factor. Prevents tiny regions being generated from scratch.
min_region_pxINT480–512Skip regions whose shorter dimension is below this. Set 0 to disable.
resize_modeCOMBObicubic4 options: bicubic, bilinear, area, nearest
antialiasBOOLEANtrueAntialiasing for bicubic/bilinear. No effect on area/nearest.
pre_upscaleFLOAT1.001–4Upscale the full image by this factor before detailing, then downscale back to original resolution after all passes. Makes small features (nipples, small hands) large enough for the model to refine rather than hallucinate. 1.0 = off. 2.0 recommended for body features.
mask_dilationINT60–64Expand each mask outward N pixels before cropping. Gives the model more context.
sharpenFLOAT0.40–3Unsharp mask strength applied after decode. Counters VAE softness. 0 = off.
two_passBOOLEANtrueRun two inpaint passes per region. Pass 1 (fix) β€” main denoise, corrects structure. Pass 2 (refine) β€” refine_denoise, sharpens detail.
refine_denoiseFLOAT0.200–1Denoise for the refinement pass. Typically 0.15–0.25.
face_enabledBOOLEANtrueβ€”
face_denoiseFLOAT0.450–1β€”
auto_eye_colorBOOLEANtrueDetect dominant eye colour per face mask and prepend it to face conditioning.
face_skip_thresholdFLOAT0.0000–0.2Skip a face pass if its sharpness score β‰₯ this value. 0.0 = always process (disabled). Run once with 0.0, read the console 'quality score' lines, then set threshold just below the score of faces you want kept. Typical well-drawn ANIMA face: 0.030–0.070. Broken/blurry face: 0.005–0.020.
face_promptSTRINGdetailed face, detailed eyes, symmetrical eyes, sharp iris, clean linework, high qualityβ€”
face_negativeSTRINGasymmetrical eyes, crossed eyes, heterochromia, bad face, fused face, poorly drawn face, extra eyes, missing eyes, off-model face, nipples, breast, areola, genitals, body partsβ€”
hands_enabledBOOLEANtrueβ€”
hands_denoiseFLOAT0.500–1β€”
hands_promptSTRINGdetailed hands, five fingers, correct finger anatomy, clean fingernails, no extra fingersβ€”
hands_negativeSTRINGextra fingers, fused fingers, malformed hands, too many fingers, missing fingers, bad hands, mutated hands, six fingers, four fingers, nipples, breast, areola, nipple, genitals, penis, vagina, nude body parts, bodyβ€”
body_enabledBOOLEANtrueβ€”
body_denoiseFLOAT0.400–1β€”
body_promptSTRINGdetailed body, correct anatomy, clean linework, high qualityβ€”
body_negativeSTRINGbad anatomy, malformed, extra limbs, missing limbs, fused body parts, distorted anatomy, poorly drawn bodyβ€”
basic_pipeoptBASIC_PIPEProvide model/clip/vae/positive/negative as a pipe. Overrides individual inputs.
modeloptMODELβ€”
clipoptCLIPβ€”
vaeoptVAEβ€”
positiveoptCONDITIONINGβ€”
negativeoptCONDITIONINGβ€”
face_maskoptMASKFace mask. Wire from 🐸 Florence2+SAM Masker or 🐸 Mask Batch Split.
face_mask_2optMASKSecond character face mask.
face_mask_3optMASKThird character face mask.
hands_maskoptMASKβ€”
body_maskoptMASKβ€”

Outputs (2)

NameTypeDescription
imageIMAGEβ€”
debugSTRINGβ€”