ComfyUI Node
Portrait Quality Score (face size / clarity / grain gate)
A ComfyUI node in image/analysis with 17 inputs and 8 outputs.
Portrait Quality Score (face size / clarity / grain gate)
- image
- image_pass
- image_reject
- accepted
- hard_reject
- needs_refine
- sr_short_edge
- report
- suffix
◄hard_floor_face_px200►
◄min_face_px500►
◄min_clarity60►
◄max_grain2.5►
◄sr_face_target_px800►
◄sr_max_short_edge2048►
◄stages1►
◄forceoff►
◄accepted_infalse►
◄hard_reject_infalse►
◄filename►
◄csv_path►
◄min_source_grain0.15►
◄min_texture_after_sr0.60►
◄review_texture_below0.85►
◄suffix_in►
Categoryimage/analysis
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| hard_floor_face_px | INT | 2000–4096 | Face short edge below this is rejected outright, no refine (0 = off). Set on the FIRST stage only. |
| min_face_px | INT | 5000–4096 | Face short edge needed to pass. |
| min_clarity | FLOAT | 600–10000 | Variance of Laplacian on the face at normalised scale. ~20 = soft, ~60 = acceptable, 150+ = crisp. |
| max_grain | FLOAT | 2.50–50 | Noise sigma on flat skin at normalised scale. <0.7 clean, >2.5 visibly grainy. |
| sr_face_target_px | INT | 800256–2048 | Face size the super-res pass should aim for. |
| sr_max_short_edge | INT | 2048512–4096 | Cap on the SR short edge. 2048 is the proven SeedVR2 7b setting on 16GB. |
| stage | STRING | s1 | Label for the log / CSV row. Must end in the stage number (s1, s2, s3) for 'force' to work. |
| force | COMBO | off | Manual override, ignores all thresholds. accept = keep as-is at stage 1; refine_1x = one SR pass then keep; refine_2x = two SR passes then keep. Wire one primitive into every stage so they agree. |
| accepted_inopt | BOOLEAN | false | — |
| hard_reject_inopt | BOOLEAN | false | — |
| filenameopt | STRING | — | |
| csv_pathopt | STRING | Append one row per scoring here (empty = off). | |
| min_source_grainopt | FLOAT | 0.150–5 | Stage 1 only. Skin noise below this = no sensor noise at all: illustration, airbrushed export, AI image. Hard reject, no SR (it would only produce wax). 0 = off. |
| min_texture_after_sropt | FLOAT | 0.600–5 | Stages 2+. Skin texture below this after super-res = waxy (the source had no real pores to recover). Rejected with reason. 0 = off. |
| review_texture_belowopt | FLOAT | 0.850–5 | Stages 2+. Texture between min_texture_after_sr and this = accepted but the suffix output becomes '_rev' so you can eyeball those files. 0 = off. |
| suffix_inopt | STRING | Previous stage's suffix output; carried through on passthrough so a '_rev' raised at s2 reaches the filename. |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| image_pass | IMAGE | — |
| image_reject | IMAGE | — |
| accepted | BOOLEAN | — |
| hard_reject | BOOLEAN | — |
| needs_refine | BOOLEAN | — |
| sr_short_edge | INT | — |
| report | STRING | — |
| suffix | STRING | — |