Nodes/ComfyUI-SDPose-OOD/Load GroundingDINO Model (SDPose)
ComfyUI Node

Load GroundingDINO Model (SDPose)

The optional GroundingDINO loader that gives SDPose a text-prompted person detector

By judian17·Created 10 months ago·Updated 6 months ago· 314
Load GroundingDINO Model (SDPose)
    • GROUNDING_DINO_MODEL
    model_name

    This is the least glamorous node in the SDPose-OOD pack, and honestly that's fine. It doesn't estimate anything. It just loads GroundingDINO - an open-set object detector - so the pack's Run SDPose Estimation node has a third way to find people in an image. If you only ever pose single characters in simple images, you can skip this node entirely and never miss it.

    GroundingDINO's superpower is that it detects by text. Instead of a fixed class list, you give it a phrase - the default in this pack is person . - and it returns bounding boxes for whatever that phrase means. That matters for the specific problem this pack exists to solve: DWPose and the classic OpenPose preprocessors go blind on anime and cartoon art, spitting out empty or black pose maps. SDPose-OOD itself handles illustration fine, but it still needs to know where the person is before it can pose them. GroundingDINO is the detector you reach for when the default YOLO models - trained mostly on real photos - are the weak link.

    What it does

    One input, one output. You pick a model, it downloads it if it's not already cached, and it hands you a GROUNDING_DINO_MODEL that you wire into the processor node's grounding_dino_model input. That's the whole job.

    • model_name - GroundingDINO_SwinT_OGC (694MB) or GroundingDINO_SwinB (938MB). SwinT is the one you actually want. SwinB is more accurate and twice as hungry; you're just finding people to pose, not grading a benchmark.
    • Output GROUNDING_DINO_MODEL - feeds the grounding_dino_model socket on Run SDPose Estimation. The text prompt and the detection threshold live on the processor, not here.

    Mechanically it pulls the .pth checkpoint plus its .cfg.py config from ShilongLiu/GroundingDINO on Hugging Face into ComfyUI/models/grounding-dino/, builds the model through the groundingdino Python package, and wraps it for the pack. It also needs the bert-base-uncased tokenizer bits that GroundingDINO rides on, so the first run does a little extra downloading.

    The detection hierarchy

    Here's the part people trip over. If you connect multiple detectors to the processor, it doesn't combine them - it picks one. From the source: Florence2 data wins, then GroundingDINO, then YOLO. So GroundingDINO is effectively your mid-tier option: better on anime than the stock YOLO models, but it loses to data_from_florence2 if you happen to have that wired in. If you don't connect any detector, the processor just poses the whole image as one person - the right call for single-subject frames.

    Install

    It ships with the pack, so install the pack and you're done:

    cd ComfyUI/custom_nodes
    git clone https://github.com/judian17/ComfyUI-SDPose-OOD
    cd ComfyUI-SDPose-OOD
    pip install -r requirements.txt
    

    The dependency that matters here is groundingdino-py, which is in that requirements file. On Windows, set PYTHONUTF8=1 before installing it - the package has encoding-related build quirks that get grumpy otherwise. ComfyUI Manager handles all of this if you'd rather not get your hands dirty.

    When to reach for it

    Anime character in a busy scene, or a character reference where YOLO keeps missing them? Add this loader, keep the default person . prompt, and let the processor run with it. Real-photo work with one subject? Leave it unplugged and save yourself the VRAM.

    CategorySDPose

    Inputs (1)

    NameTypeDefaultDescription
    model_nameCOMBO2 options: GroundingDINO_SwinT_OGC (694MB), GroundingDINO_SwinB (938MB)

    Outputs (1)

    NameTypeDescription
    GROUNDING_DINO_MODELGROUNDING_DINO_MODEL