Ultralytics Detector Provider
A YOLO detector provider that skips the Impact Subpack install headache
- bbox_detector
- segm_detector
It's the boring part that makes the fun part work
This node doesn't draw anything. It loads a YOLO model and hands out a detector object that other nodes call when they need to find a face. In Mickmumpitz's Consistent Character Creator (CCC) workflow it's what feeds the Face Area Batch Splitter - the node that decides whether a character sheet is a close-up or a wide shot and routes it down the right LoRA-training branch. Without a detector, that routing is manual. With one, you batch a hundred images and the splitter does the sorting.
The name looks like a typo and the import path explains it: it's a clean-room clone of the Impact Subpack's UltralyticsDetectorProvider. Impact's version is the one everyone knows from FaceDetailer, but its parent Subpack has a license restrictive enough that Mickmumpitz couldn't just copy it - and people keep tripping over installing it. So he wrote an independent implementation against the observable interface, and it plugs into the exact same sockets.
What it actually emits
The one input is a model_name dropdown. The source registers ComfyUI's models/ultralytics/bbox and models/ultralytics/segm folders, so anything you drop there as a .pt appears in the list - the two shipped defaults are bbox/face_yolov8m.pt and bbox/hand_yolov8s.pt, with a segmentation model (person_yolov8m-seg.pt) fetched on first run too.
The two outputs are where the value is:
bbox_detector(BBOX_DETECTOR) - finds faces and returns rectangles. Wire this into Face Area Batch Splitter'sbbox_detectorinput, or into Impact Pack's FaceDetailer.segm_detector(SEGM_DETECTOR) - same model, but emits polygon masks that hug the subject instead of a box. Pick this when the rectangular patch edges are showing in your detail pass; the mask follows the face and the seam mostly disappears.
Both wrap the same loaded model - it's cached after first inference, so the "two outputs" is just two views of one detector. Downstream nodes call .detect() on it and get SEG records back, the same data shape Impact's own provider produces. That's the whole compatibility trick: nothing in the node imports from the Impact packages at runtime.
Why it's worth a spot in the pack
The honest pitch: you're building a consistent-character LoRA dataset and you already have Impact Pack (or its Subpack) installed, so this is redundant - their provider works here too. But if you're on a fresh Mickmumpitz install and the Subpack is exactly the dependency you wanted to avoid, this node means you don't need it. The splitter falls back to loading YOLO itself if you leave the detector disconnected, but the recommended wiring is this node in front.
One wrinkle worth knowing: the splitter's tooltip still says the provider "requires the ComfyUI Impact Subpack." That's stale. This node works standalone and the pack's requirements.txt installs ultralytics>=8.0.0 (plus opencv-python) for you, so the README's "ultralytics is optional" framing is optimistic - you're getting it either way if you install via Manager.
Install and first run
cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes.git
# or: ComfyUI Manager → search "Mickmumpitz" → Install
First run auto-downloads the three default models in the background from the Bingsu/adetailer Hugging Face repo (the same weights ADetailer ships) - no manual fetch, and it never re-downloads files that exist. If you'd rather control that, set MMZ_SKIP_MODEL_DOWNLOAD=1 or drop a skip_download_model marker file next to the pack.
Troubleshooting
- Empty dropdown or "model not found": the background download may have failed on a spotty connection. Drop
face_yolov8m.ptintoComfyUI/models/ultralytics/bbox/and restart. - PyTorch 2.6
weights_onlyerror when loading a model: the node already allow-lists the Ultralytics classes it needs, so this shouldn't bite - but if you hit a "not an allowed global" error from a third-party.pt, that's the usual culprit. - Security, briefly: Ultralytics had a supply-chain compromise in December 2024 (a cryptominer reached ComfyUI through Impact Pack's dependency). The YOLO runtime is also AGPL. For personal dataset work this is a non-issue; if you ship a product that embeds this, the license matters.
For the workflow in front of you - batches of character images in, sorted face crops out - this is the quiet node you set once and never think about again.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 1 options: bbox/face_yolov8m.pt |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| bbox_detector | BBOX_DETECTOR | — |
| segm_detector | SEGM_DETECTOR | — |