Nodes/ComfyUI Batch BBox Detector/BBox Detector (Batch)
ComfyUI Node

BBox Detector (Batch)

Object detection across a whole batch, without a node per frame

By rslosh·Created 11 months ago·Updated 5 months ago· 1
BBox Detector (Batch)
  • bbox_detector
  • images
  • images
  • masks
threshold0.50
dilation4
return_type

BBox Detector (Batch) is the reason this pack has "Batch BBox Detector" in its name. ImpactPack gives you a single-image BboxDetectorCombined - excellent node, but it handles one image at a time. When you've got 60 video frames and you want a mask for every one, wiring 60 of those together is absurd. This node takes a whole IMAGE batch in, runs detection frame by frame, and hands you a stacked mask batch out. It's the batch loop ImpactPack should have had, bolted on as a thin wrapper.

How it works: for each frame in the batch it calls the exact same detect_combined(threshold, dilation) that the ImpactPack node uses, collects the masks, and stacks them into a [B, H, W] tensor. The bbox_detector input is an ImpactPack BBOX_DETECTOR object - that's the type coming out of UltralyticsDetectorProvider, so this node doesn't ship or bundle any detection model itself.

The inputs that matter:

  • bbox_detector - the ImpactPack detector object. Required, and this is the dependency to get right (more below).
  • images - your batch, [B, H, W, C]. Required.
  • threshold (0–1, default 0.5) - detection confidence. Lower it to 0.3–0.4 to catch more objects with more false positives; raise it for precision. The classic empty-mask fix.
  • dilation (−512 to 512, default 4) - mask expansion. Positive grows the mask to cover context around a detection; negative contracts it. 4 is a gentle default.
  • return_type - mask_only (default) or image_with_boxes.

Outputs are images and masks ([B, H, W]). The masks are what you actually care about - feed them to a detailer, an inpainting pass, or mask-to-video nodes.

Now the honest part about image_with_boxes: in the current source it's a stub. The drawing loop is literally empty (pass), so selecting it returns your images essentially unchanged. It's not a bug in your workflow - the feature just isn't implemented yet. Use mask_only and draw your own boxes if you need them on screen.

Install and dependencies, since these matter more here than anywhere else in the pack: this node only works with ImpactPack installed. ComfyUI Manager → search "Batch BBox Detector" → Install for the pack, plus Impact Pack, plus - since Impact Pack v8.0 - the separately-installed Impact Subpack, which is where UltralyticsDetectorProvider now lives. Then you need a YOLO detector model (the same Bingsu/adetailer weights ImpactPack's FaceDetailer uses work fine). There's no requirements.txt in NodeSweet; the heavy lifting is all in the ImpactPack side.

One historical warning worth knowing: the Ultralytics dependency is how the December 2024 cryptominer supply-chain compromise reached ComfyUI users, and Ultralytics is AGPL-licensed. It's not a reason to panic - pin your versions and install through Manager - but it is a reason to know what you're pulling in. For small batches this is the right node; for 300+ frames, use the Chunked variant so you don't OOM.

Categorynodesweet-hellorob

Inputs (5)

NameTypeDefaultDescription
bbox_detectorBBOX_DETECTOR
imagesIMAGE
thresholdFLOAT0.500–1
dilationINT4-512–512
return_typeoptCOMBO2 options: mask_only, image_with_boxes

Outputs (2)

NameTypeDescription
imagesIMAGE
masksMASK