Nodes/ComfyUI_EmAySee_CustomNodes/EmAySee Multi BBox Detector
ComfyUI Node

EmAySee Multi BBox Detector

Ten detectors, one SEGS — running every bbox model at once in ComfyUI

By EmAySee·Created about a year ago·Updated 4 months ago· 2
EmAySee Multi BBox Detector
  • image
  • bbox_detector_1
  • bbox_detector_2
  • bbox_detector_3
  • bbox_detector_4
  • bbox_detector_5
  • bbox_detector_6
  • bbox_detector_7
  • bbox_detector_8
  • bbox_detector_9
  • bbox_detector_10
  • segs
threshold0.30
dilation10
crop_factor3.0
drop_size10
labelsall

Impact Pack's FaceDetailer is the ComfyUI way to stop small faces from getting mangled, and the whole machine is driven by detection. But a single detector only knows one thing. EmAySee Multi BBox Detector is the "all of them at once" version: it runs up to ten Impact Pack bbox detectors over one image and fuses every box they find into a single SEGS stream, ready for a detailer.

That's genuinely useful for multi-region workflows. Wire a face detector into one slot, a hand detector into another, and a person detector into a third, and one SEGS output carries faces, hands, and bodies for a Detailer (SEGS) pass - without chaining detector nodes and merging their outputs yourself. If you've ever hand-built that with Impact Pack's own merge nodes, you'll recognize what this is saving you.

How it works

The node is a thin loop over the bbox_detector_1 through bbox_detector_10 inputs. For each connected detector it calls the detector's detect(image, threshold, dilation, crop_factor, drop_size, labels) method - the same call Impact Pack's own detectors expect - then collects every detected item into one list and returns it as a (shape, items) SEGS tuple. Any slot left empty is skipped; a detector that throws is logged to the console and ignored, so one flaky model won't kill the whole pass.

The important consequence: threshold, dilation, crop_factor, drop_size, and labels are passed to every detector identically. You can't tune a face detector's threshold and a hand detector's separately inside this node. If one detector wants a lower threshold than another, this is the wrong tool - or you accept one global setting.

The inputs that matter

  • image - the frame to scan.
  • labels - which class labels to look for. The default all means "keep everything the detector finds." Set it to specific labels (say face or hand) to keep only those classes.
  • threshold (0.3) - detection confidence cutoff. Lower catches more boxes and more false positives.
  • dilation (10) - how much to grow each box. Detailers usually want a padded region, not a skin-tight crop. Negative values shrink.
  • crop_factor (3.0) - extra margin around each detection relative to the box size.
  • drop_size (10) - boxes smaller than this many pixels get discarded, a handy filter for noise.

Output is a single segs, which you feed straight into Detailer (SEGS), FaceDetailer, or any SEGS consumer. Note the source expects the BBOX_DETECTOR type, which only Impact Pack provides - you'll want Impact Pack installed before this node is useful, plus an actual detector node feeding each input.

Install

It ships in the EmAySee pack - one author's grab-bag of 60+ nodes, several of which are honestly "fun, useful, and useless TBH" per the pyproject. Install the pack once and it appears under EmAySee/Segs:

cd ComfyUI/custom_nodes
git clone https://github.com/EmAySee/ComfyUI_EmAySee_CustomNodes

Then restart ComfyUI (or use ComfyUI Manager and search "ComfyUI_EmAySee_CustomNodes"). No requirements.txt, no model downloads - the detection models live in whatever Impact Pack detectors you attach. On startup the pack prints a big ASCII "SPECTRE v5.0" banner; that's just cosmetics.

Gotchas

Where people get burned: expecting per-detector settings (see above), and expecting this to run detection on its own. It doesn't - it's a merge hub for detector objects that Impact Pack gives you. And it's a no-support pack: the README closes with "code provided without any guarantees or warranties or support," so if results look off, the class is a short read in py/EmAySee_SegsUnion.py and the logic is right there.

CategoryEmAySee/Segs

Inputs (16)

NameTypeDefaultDescription
imageIMAGE
thresholdFLOAT0.300–1
dilationINT10-512–512
crop_factorFLOAT3.01–10
drop_sizeINT101–1024
labelsSTRINGall
bbox_detector_1optBBOX_DETECTOR
bbox_detector_2optBBOX_DETECTOR
bbox_detector_3optBBOX_DETECTOR
bbox_detector_4optBBOX_DETECTOR
bbox_detector_5optBBOX_DETECTOR
bbox_detector_6optBBOX_DETECTOR
bbox_detector_7optBBOX_DETECTOR
bbox_detector_8optBBOX_DETECTOR
bbox_detector_9optBBOX_DETECTOR
bbox_detector_10optBBOX_DETECTOR

Outputs (1)

NameTypeDescription
segsSEGS