FaceBBoxDetect(FaceParsing)
Find the face(s), padded and ready to crop
- bbox_detector
- image
- BBOX_LIST
This is the node that actually runs the YOLO detector you loaded with BBoxDetectorLoader and turns "there's a face somewhere in this image" into a concrete, usable list of boxes. It's the workhorse detection step in a typical face-parsing graph: image goes in, a BBOX_LIST comes out, and everything after it - cropping, parsing, compositing back - works on that list. If you're doing a multi-face image, this is also where you find out how many faces there are, because every box in the list corresponds to one detected face.
The inputs that matter
- bbox_detector (BBOX_DETECTOR) - from BBoxDetectorLoader. Required, obviously.
- image (IMAGE) - what you're detecting faces in.
- threshold (FLOAT, default 0.3, range 0–1) - the confidence cutoff. Lower it if the detector is missing faces it should catch (small, angled, or partially obscured faces); raise it if it's picking up false positives. 0.3 is a reasonably permissive default, which tends to favor catching real faces over rejecting maybes.
- dilation (INT, default 8, range -512 to 512) - expands (positive) or shrinks (negative) each detected box by this many pixels in every direction before it's returned. YOLO face boxes are often drawn tight to just the face itself, and a little padding here means the crop you take later includes some forehead, chin, and jaw rather than clipping right at the edges - which matters if you're about to run FaceParse on that crop, since chopped-off ears or hairlines make for worse segmentation.
The output is a single BBOX_LIST - one box per detected face, ready to feed into ImageCropWithBBoxList or looped through individually with BBoxListItemSelect.
How it fits the workflow
The typical chain is: BBoxDetectorLoader → FaceBBoxDetect → ImageCropWithBBoxList (or crop one at a time via BBoxListItemSelect + ImageCropWithBBox) → FaceParse on the tighter crop → composite the result back with ImageInsertWithBBox. Detecting first and cropping before parsing is the whole reason this node exists separately from FaceParse itself - segmentation quality drops fast when the face is a small fraction of the frame, so cropping tight first is worth the extra step.
Installing it
Ships with the whole pack:
- ComfyUI Manager - search "comfyui_face_parsing", install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/Ryuukeisyou/comfyui_face_parsing.git, restart ComfyUI.
Needs the face_yolov8m.pt weights (handled by BBoxDetectorLoader) already on disk - see that node's page if the download hasn't happened yet.
Common issues
The most common frustration is a detector that returns nothing at all - an empty BBOX_LIST - which happens on faces that are small, heavily angled, partially covered, or stylized/non-photorealistic (YOLO face detectors are trained mostly on real photos, so anime or heavily stylized art can confuse them). Dropping the threshold is the first lever to pull. If detection is fine but the crops downstream look too tight around the jaw or hairline, bump dilation up a bit before you crop - it's cheaper to fix here than to re-run detection.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| bbox_detector | BBOX_DETECTOR | — | |
| image | IMAGE | — | |
| threshold | FLOAT | 0.300–1 | — |
| dilation | INT | 8-512–512 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BBOX_LIST | BBOX_LIST | — |