🔎Yoloworld ESAM Detector Provider
Open-vocabulary detection for Impact-Pack
- yolo_world_model
- esam_model_opt
- BBOX_DETECTOR
- SEGM_DETECTOR
This one's a bit different from its three siblings, and the README is upfront about it: it wasn't written by ZHO-ZHO-ZHO. It was contributed by ltdrdata - the developer behind ComfyUI-Manager and Impact-Pack, arguably the most load-bearing person in the whole ComfyUI custom-node ecosystem - specifically so YOLO-World could plug into Impact-Pack's detection machinery. If you don't run Impact-Pack, skip this node; it doesn't do anything useful on its own.
What it's actually for
Impact-Pack's whole reason for existing is the detect-crop-refine loop: FaceDetailer and Detailer (SEGS) find a region, resample it at full resolution, and paste it back - the ComfyUI answer to ADetailer. But that loop needs something to plug in as the detector, and normally that's one of Impact-Pack's own bundled models, which - like most detectors - know a fixed list of categories (faces, hands, and whatever else the underlying YOLO weights were trained on).
This node swaps that out. It packages YOLO-World's open-vocabulary detection into the exact detector interface Impact-Pack expects, so instead of being stuck with "face" or "hand," you can type in categories like "logo, tattoo, glasses, wristwatch" and have Impact-Pack's detailer loop run on those instead. It's less a standalone feature and more a bridge: it takes what makes YOLO-World interesting (describe what you want in plain text) and hands it to infrastructure that already knows what to do with a detector.
Inputs and outputs
You wire in yolo_world_model from the Model Loader, same as the other nodes, plus:
categories- the same open-text, comma-separated detection list as Yoloworld ESAM. This defaults to empty here, so you do need to fill it in yourself.iou_threshold(default 0.1) - same behavior as elsewhere in the pack: lower is stricter about overlapping boxes, higher allows more overlap through.with_class_agnostic_nms(default off) - suppresses overlapping detections across different categories rather than just within one.
There's also one optional input, esam_model_opt - plug in EfficientSAM from the ESAM Model Loader if you want the segmentation side wired up too; leave it disconnected if you only need bounding-box detection.
The outputs are BBOX_DETECTOR and SEGM_DETECTOR - not an image, not a mask. These are Impact-Pack's own detector types, meant to be wired straight into a FaceDetailer, a Detailer (SEGS), or any other Impact-Pack node with a detector input. This node doesn't see your actual image at all; it produces a detector object that some other node runs against an image later in the graph.
Installing it
This node ships as part of the same pack as the other three - ComfyUI Manager, search ComfyUI YoloWorld-EfficientSAM, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM
cd ComfyUI-YoloWorld-EfficientSAM
pip install -r requirements.txt
But that alone won't get you anywhere with this specific node - you also need Impact-Pack installed (search ComfyUI Impact Pack in Manager), since that's the only thing that actually consumes a BBOX_DETECTOR/SEGM_DETECTOR. If you want segmentation out of it, grab EfficientSAM's .jit weight files too and wire them through the ESAM Model Loader into esam_model_opt - see the ESAM Model Loader article for exactly where those files need to go.
Where people get stuck
Because this node has no direct output you can preview - it's an intermediate detector object - a "nothing happened" result almost always means the wiring downstream is the problem, not this node. Check that it's actually plugged into an Impact-Pack detailer's detector input and that Impact-Pack itself is installed and up to date. Beyond that, it inherits the same base-pack issues as everything else here: no meaningful updates since early 2024, and reports of install friction on newer Python versions (3.12 in particular) - if pip install -r requirements.txt fails outright, that's the first thing to suspect before digging into the node graph itself. Given this node's job is narrowly "feed Impact-Pack something more flexible than its bundled detectors," if you hit a wall here it's also worth checking whether Impact-Pack's own detector providers have since added anything open-vocabulary - the ecosystem moves faster than this particular bridge does.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| yolo_world_model | YOLOWORLDMODEL | — | |
| categories | STRING | — | |
| iou_threshold | FLOAT | 0.100–1 | — |
| with_class_agnostic_nms | BOOLEAN | false | — |
| esam_model_optopt | ESAMMODEL | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| BBOX_DETECTOR | BBOX_DETECTOR | — |
| SEGM_DETECTOR | SEGM_DETECTOR | — |