GroundingDINO Model Loader
The Text-Based Detector Loader, BERT and All
- grounding_dino_model
Some regions are easier to describe than to train a detector for. "Find the red car" - try writing a YOLO model that does that. GroundingDINO is the model that finds boxes from free text instead of a fixed class list, and GroundingDINO Model Loader is SimpleSyrup's way of loading it: the detector plus its explicit BERT text encoder, both selectable, with automatic downloads for the known models.
How it works
GroundingDINO pairs a detection backbone with a BERT text encoder that turns your prompt into the thing it searches for. Two inputs:
- grounding_dino_model: the detector weights, default
GroundingDINO_SwinT_OGC(694MB). The dropdown also lists other catalog entries; with the "SimpleSyrup: Show downloadable models in loader dropdowns" setting enabled (Settings → SimpleSyrup), picking a known-but-uninstalled model downloads it automatically with visible Comfy progress. - text_encoder: the BERT encoder paired with it, default
BERT base uncased (auto). There's a manual override if you have a specific BERT you want to use; "auto" picks the right default for the detector.
Output is a GROUNDING_DINO_MODEL socket. Wire it into the pack's Prompt SEGS w/ SAM (which accepts GROUNDING_DINO_MODEL - and also DINO_MODEL from the LayerStyle adapter) alongside a SAM model, and you get the full text-prompt detection pipeline: DINO finds boxes from your prompt, SAM segments them into masks, out come SEGS. It also interoperates with Impact's GroundingDINO-consuming nodes if you prefer to keep detection there.
Why the explicit BERT matters
The WebUI-era GroundingDINO experience was largely "why does my model load but find nothing?" - usually a mismatched text encoder. Separating the two selectors here, with a sensible auto default, removes the most common failure before it starts. If you're running a custom detector build, keeping the encoder as its own choice is what lets you swap one side without rebuilding the other.
Install
Ships in the SimpleSyrup pack. ComfyUI Manager → search SimpleSyrup → Install → restart, or:
Set-Location ComfyUI\custom_nodes
git clone https://github.com/Artificial-Sweetener/SimpleSyrup.git
Set-Location SimpleSyrup
..\..\venv\Scripts\python.exe -m pip install -r requirements.txt
Restart ComfyUI; current build required (v3 extension API). The pack pulls in Segment Anything, ONNX Runtime and the Hugging Face download helpers, which is what makes the model downloads work.
Common issues
- Model listed but download hangs - the loader downloads from Hugging Face with progress; a blocked connection to HF breaks it. Check you can reach huggingface.co, and confirm the "Show downloadable models" setting is on so the catalog entries appear.
- Finds nothing for a prompt - check the prompt phrasing; GroundingDINO is sensitive to wording, and "car" vs. "a red car" can be the difference. Also confirm you're using a SAM pairing that matches the detection.
- Sockets don't connect to Impact nodes - SimpleSyrup and Impact use different GroundingDINO socket names in places; the pack's own detection chain is the guaranteed-compatible path.
- Nodes missing - update ComfyUI first.
It's the load-bearing first step for text-driven region detection in this pack: DINO finds, SAM segments, and this node is where DINO comes from.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| grounding_dino_model | COMBO | GroundingDINO_SwinT_OGC (694MB) | GroundingDINO model choice used to find boxes that match a text prompt. |
| text_encoder | COMBO | BERT base uncased (auto) | BERT text encoder paired with GroundingDINO for prompt matching. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| grounding_dino_model | GROUNDING_DINO_MODEL | Loaded GroundingDINO model for finding prompt-matched boxes in images. |