LOCUS

Locate Once, Check Until Settled
Draft-and-Verify Visual Grounding with a Box Head and Coordinate-Token Verification

Muhammad Talha

Independent Researcher

Top: a box head drafts a loose box around the right elephant in one pass; the backbone then checks the draft as coordinate tokens in three parallel passes and returns its own greedy box, 4 steps instead of 19. Bottom: Acc@0.9 rises from 54.9 for the head to 59.1 verified; the head reaches 90.1 Acc@0.5; exact answers take 102 ms against 152 ms for vLLM decoding the same tokens; 46.9% of evaluation targets also occur in a RefCOCO-union training split.
A box head drafts the box in one pass (green); the backbone verifies the draft as coordinate tokens in a few parallel passes (blue) and returns its own greedy answer.

Abstract

Vision-language models (VLMs) ground a referring expression in one of two ways. They decode the box as coordinate tokens, which is precise but takes one sequential step per token, or they regress it from a hidden state with a small head, which takes one step but loses accuracy at high IoU. The two fail differently: a head usually finds the right object but places its edges loosely, while coordinate tokens place edges precisely. We therefore use the regression head as a speculative drafter for the model's own coordinate tokens. LOCUS writes the head's box as coordinate tokens and checks them with the same backbone by Jacobi iteration over a shared image prefix. The fixed point is the model's greedy coordinate-token answer, reached in about 5.60 sequential passes on average instead of 18.46 decoding steps; head and verifier are one set of weights, trained jointly.

On the 8 RefCOCO, RefCOCO+ and RefCOCOg splits, verification raises LOCUS-2B's Acc@0.9 from 54.87 for its own head to 59.13, and the one-pass head is ahead at Acc@0.5 of every published model with at most 3B parameters except Florence-2-L. Against Jag, the strongest open regression-head model, at its own size and training budget, LOCUS ties at Acc@0.5 and, with typical acceptance, gains +4.52 points at Acc@0.9, with paired significance tests. Exact answers come 1.5× faster than vLLM greedy-decoding the same coordinate tokens with the same weights; a pure regression head remains faster still.

5.60verifier passes on average, instead of 18.46 decoding steps
54.9 → 59.1Acc@0.9 of LOCUS-2B, head vs. verified, same weights
+4.52Acc@0.9 over Jag-0.8B at equal size and budget
1.5×faster than vLLM decoding the same tokens, same answer

Method

Three parts share one image prefill. The image and a fixed prefix are encoded once and cached; each question then runs as a short branch that attends to the prefix and to itself, never to another branch.

(a) Architecture: a frozen vision encoder and adapted merger feed a fine-tuned language model. A box branch ends in a [BOX] token read by an MLP box head; a verifier branch ends in coordinate tokens read by the LM head. A block attention mask lets each branch see the prefix and itself. (b) Inference: the draft box 434, 486, 801, 914 is written as tokens; pass 1 accepts the first token and corrects the second; after three passes the fixed point is 474, 488, 802, 910, the model's greedy answer with IoU 0.96.
(a) Box and verifier branches share one cached image prefill. (b) The head's box is rendered as the tokens the model would write; every pass keeps the longest agreed prefix and corrects the next token until the draft stops changing.

1. Draft

Following Jag, a small MLP reads the final state of a learned [BOX] token and predicts the whole box plus an IoU-aware confidence in one pass.

2. Verify

The draft is rounded to the 0–1000 grid and tokenised exactly as the verifier would write it. Each Jacobi pass reads the argmax at every position in parallel, keeps the longest prefix that matches, and replaces the rest. Every pass extends the verified prefix by at least one token, so the fixed point is the model's greedy decode. In fp32 the verified box equals the greedy box on all 505 checked questions. Typical acceptance (α < 1) trades exactness for fewer passes.

3. Train once

Head and verifier are one set of weights, trained jointly on one image prefill per step. Two separately trained models are no more accurate and need two prefills. A dual mode keeps answers to any other question about the image exactly the base model's.

Results

Mean over the 8 RefCOCO / RefCOCO+ / RefCOCOg val and test splits, every row run in the same harness on the same rows. Baselines use released weights. Passes: mean sequential branch passes per question.
ModelOutputAcc@0.5Acc@0.75Acc@0.9Passes
Jag-0.8Bregression head88.1676.5148.761
LocateAnything-3Bbox tokens88.6880.8265.55–
Hi-Token-3Bdigit tokens87.2476.9354.75–
LOCUS-0.8Bhead87.9775.5847.031
LOCUS-0.8Bverified, exact87.0575.9353.106.68
LOCUS-0.8Bverified, α = 0.787.1776.1453.294.37
LOCUS-2Bhead90.0179.7954.871
LOCUS-2Bverified, exact89.3080.3159.135.60
LOCUS-2Bverified, α = 0.589.6080.4958.953.43

Verification adds most where a head is weakest: the gap between a head and its verified answer opens above IoU 0.8. LocateAnything-3B, larger and trained on far more grounding data, remains ahead at high IoU.

Line chart of accuracy against IoU threshold from 0.5 to 0.95 for each model. LOCUS heads are dashed and verified answers solid; the verified lines pull above their heads past a threshold of about 0.8.
Accuracy at each IoU threshold, mean over the 8 splits. Dashed: LOCUS heads; solid: verified answers.

Latency

One RTX A6000, batch 1, 512² inputs, end to end from image file to parsed box, 256 RefCOCO testA questions. Jag, LOCUS and vLLM all use CUDA graphs and GPU preprocessing.

LOCUS sits between a pure regression head and coordinate-token decoding.
SystemOutputms / question
Jag-0.8Bregression head20.3
LOCUS-0.8Bhead / exact25.5 / 63.5
LOCUS-2Bhead / α = 0.5 / exact43.5 / 84.3 / 102.2
LOCUS-2B weights in vLLMsame coordinate tokens151.6
Qwen3-VL-2B in vLLMfull JSON answer297.2
Scatter of Acc@0.9 against latency in milliseconds. Each LOCUS line runs from the fast one-pass head through typical acceptance to exact verification, sitting between Jag's regression head and coordinate-token decoding in vLLM.
Acc@0.9 against measured latency. Each LOCUS line runs from the one-pass head through typical acceptance to exact verification.

Evaluation on clean rows

The RefCOCO-family splits are drawn per dataset, so 46.9% of evaluation rows ask about an object that is in another dataset's training split. LOCUS trains on no evaluation image, and every comparison is repeated on the clean rows no model has seen. There, every margin over Jag-0.8B grows, and the equal-budget LOCUS-0.8B head moves ahead at Acc@0.5.

Dot plot of the margin over Jag-0.8B for each LOCUS output, on all rows and on clean rows, with 95% bootstrap intervals; every clean-row margin is larger than its all-row margin.
Margin over Jag-0.8B on all rows and on clean rows, pooled over the 8 splits, with 95% image-bootstrap intervals.

Examples

Four RefCOCO test examples with ground truth (dashed), Jag-0.8B (orange) and LOCUS-2B verified (blue). LOCUS is tight on 'blurry person in back', 'big tie' and 'large dark item next to car' where Jag is not; on 'black and blue backpack' LOCUS fails and Jag succeeds.
Jag-0.8B and LOCUS-2B (verified) on RefCOCO / RefCOCO+ test questions. The first three are the first in split order where LOCUS's IoU exceeds 0.9 and Jag's is below 0.6; the last is the first where LOCUS fails and Jag succeeds.
Six openly licensed web photos, two expressions each, with Jag-0.8B and LOCUS-2B boxes. The models mostly agree; LOCUS is tighter on two expressions, they disagree on one, and both return the whole person for 'her blue headscarf'.
Openly licensed photos from Wikimedia Commons; expressions were written before either model was run, and every result is shown. Images: Fruit Market, Old Kathmandu by Sundar1 (CC BY-SA 3.0); Amsterdam cyclists by Fons Heijnsbroek (CC0); Person cooks in a cozy wooden kitchen by Shixart1985 (CC BY 2.0); Dogs playing 001 by Sardaka (CC BY-SA 4.0); Living room with 1960s objects by Kotivalo (CC BY-SA 4.0); Farmer manually harvesting rice in Raichur, Karnataka by Nanditha Gogate, WELL Labs (CC BY-SA 4.0).

Limitations

BibTeX

@misc{talha2026locus,
  title  = {{LOCUS}: Locate Once, Check Until Settled. Draft-and-Verify Visual Grounding
            with a Box Head and Coordinate-Token Verification},
  author = {Talha, Muhammad},
  year   = {2026},
  url    = {https://muhammad-talha-ad.github.io/LOCUS/}
}