Nodes/ComfyUI YoloWorld-EfficientSAM/🔎Yoloworld ESAM Detector Provider
ComfyUI Node

🔎Yoloworld ESAM Detector Provider

Open-vocabulary detection for Impact-Pack

By ZHO-ZHO-ZHO·Created 2 years ago·Updated 2 years ago· 825
🔎Yoloworld ESAM Detector Provider
  • yolo_world_model
  • esam_model_opt
  • BBOX_DETECTOR
  • SEGM_DETECTOR
categories
iou_threshold0.10
with_class_agnostic_nmsfalse

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.

Category🔎YOLOWORLD_ESAM

Inputs (5)

NameTypeDefaultDescription
yolo_world_modelYOLOWORLDMODEL
categoriesSTRING
iou_thresholdFLOAT0.100–1
with_class_agnostic_nmsBOOLEANfalse
esam_model_optoptESAMMODEL

Outputs (2)

NameTypeDescription
BBOX_DETECTORBBOX_DETECTOR
SEGM_DETECTORSEGM_DETECTOR