Skip to content

Build1 publisher3 min readPublished

Two thresholds at 0.25 decide which of Grounding-Dino's 900 default boxes survive

The Replicate build from hautechai takes one image URI and one query string per call, with both thresholds adjustable between 0 and 1. Throughput and memory are numbers you would have to measure yourself.

The Engineer · Build desk

Illustration accompanying Two thresholds at 0.25 decide which of Grounding-Dino's 900 default boxes survive

What happened

  • The Replicate build of Grounding-Dino, maintained by hautechai, is a zero-shot text-prompted detector with a SwinT-OGC backbone running on an H100, returning boxes for the object names you pass in.
  • Its hosted schema takes one image URI and one query string. Batch input, image resizing, a non-maximum-suppression setting, a maximum detection count and a model-size selector are all missing.
  • The query field asks for comma-separated object names while the upstream README recommends separating category names with periods.
  • The underlying project reports 52.5 AP detecting COCO categories zero-shot, a figure it reached without training on COCO data.
  • The guide says the supplied materials are silent on parameter count, image-resolution limits, inference latency, VRAM consumption and any structured output schema beyond a ModelOutput reference.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • cost Without a latency or VRAM figure, pricing a labeling run means running it on your own images and timing it, so the sizing work lands on whoever adopts it.
  • constraint One image per request puts throughput in your own concurrency and retry code, since the call has no parameter for it.
  • decision Boxes-only output makes this one stage of a pipeline: a dataset that needs masks or track IDs still needs a second model budgeted behind it.
  • contradiction The hosted field and the project README disagree about the separator, so the one input you fully control has to be settled by measurement before a labeling pass is trusted.

The scoring loop is the part to read before budgeting a labeling run. The guide says the model produces 900 boxes by default, scores them against the input words, keeps a box when its highest similarity exceeds `box_threshold`, and takes the words whose similarity clears `text_threshold` as that box's label [10]. Both thresholds accept 0 to 1 and both default to 0.25 [15]. Tuning comes down to the query string and those two numbers [18], because the schema carries no resizing, non-maximum-suppression or batch controls [8].

Scoring happens against tokens. One word can split into several tokens, and the guide says the number of words in a sentence is not necessarily the number of text tokens [11]. A description combining several concepts can therefore behave differently from the same categories sent separately [14]. The label-extraction step is also how you end up with labels that do not match the phrase you typed, alongside missed detections and duplicate or weak boxes [12].

The hosted query field is described as "Comma seperated names of the objects" [9], typo included. The guide calls the gap between that and the upstream README's periods an interface mismatch worth testing [9]. I would send one image twice, commas once and periods once, and compare which boxes clear 0.25 [15].

Both accuracy figures come from the underlying project and not the hosted build: 52.5 AP zero-shot on COCO with no COCO training data [4], and 63.0 AP after COCO fine-tuning [5]. The 10.5-point difference is what fitting one fixed class list buys [6]. For the zero-shot number to say anything about your run, your prompts would have to behave like COCO's category names on images like COCO's, and a query naming a red safety helmet, a forklift and a damaged package [16] is measuring something else.

The reason to adopt it anyway is that the class list is a string. You can add a category no fixed detector carries without retraining anything, and the guide says to treat what comes back as proposals that require review, especially for production datasets [16]. For inspection prototypes it says threshold tuning and human validation stay necessary where the consequences are high [19].

Downstream, boxes are what you get. The project's workflows feed them to Grounded SAM and Grounded SAM 2 for masks, and to Stable Diffusion and GLIGEN as spatial grounding for edits; the detector does not return pixel masks or tracking trajectories itself [17]. Depth, pose, identity, attributes with guaranteed reliability and consistency across video frames are all beyond it [13]. It will put a box on a forklift without telling you which forklift [13]. Small, occluded, unusual, abstract or visually ambiguous objects can fail [14].

What to watch

  • Whether hautechai's field description or the upstream README changes so the comma-versus-period guidance agrees.
  • A published latency or VRAM figure for the H100 build, which would let a labeling run be priced before it is launched.
  • Whether the hosted schema gains batch input, resizing or non-maximum-suppression controls.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories