Skip to content

feat(vlm): optional detector hint for VLM labeling; remove the registry prior (closes #61) - #202

Merged
davidamacey merged 4 commits into
mainfrom
fix/193-registry-prior
Oct 9, 2026
Merged

davidamacey merged 4 commits into
mainfrom
fix/193-registry-prior

Conversation

@davidamacey

@davidamacey davidamacey commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Closes #61. Refs #193.

The registry prior was measured on the live COCO oracle and removed; the detector hint is #61 item 2 and meets its acceptance (overall accuracy improves with it on versus off).

Numbers (gemma-4-e4b local VLM, 200 COCO images, oracle = COCO GT at IoU>=0.5, packs cloned from generic_item_v1, labels reset between runs)

arm overall answered acc answered
off (539 crops) 0.7755 0.8496 492
detector hint >=50% 0.8534 0.9182 501
off, ten classes seeded (506 crops) 0.7846 0.8668 458
prior on + hint, seeded 0.8478 0.9089 472

Hint: overall 0.775 -> 0.853 (0.7846 -> 0.8478 in the seeded arm). Run-to-run noise is about 0.5 point.

Caveat: the detector is COCO-trained and the oracle is COCO ground truth, so the gain may be optimistic for other domains.

Registry prior (removed): unseeded it is a no-op (0.7755 off vs 0.7737 on); with ten validated classes seeded it was 0.7846 off vs 0.7747 on and pending proposals rose 85 -> 120. Pre-fix it regressed 0.7904 -> 0.7607.

Changes

  • Added: detector_hint_min_confidence_pct pack setting (int 0..100, 0 = off); label_batch and the auto-label pipeline attach the stored detector_class_name and confidence; the prompt gets one hint line per image.
  • Removed: registry_prior_top_k, MAX_REGISTRY_PRIOR_TOP_K, registry_prior.py, registry_prior_source.py, the 503 / stage-error prior path, the schema row, contracts, frontend fixture/pins and the related docs. pack_field_out_of_range stays (the hint uses it).
  • Kept: the broadened default DEFAULT_PROPOSAL_DENYLIST (abstract*, _background, _object, scene, empty, blank_*, _image, shadow, ...) shared by both built-in packs and the example pack, tested against the COCO class names.
  • The oracle tool is now scripts/curation/bakeoff/vlm_hint_oracle.py (dump/compare, with the async-bind fix).
  • Docs, CHANGELOG [Unreleased] and frontend/CHANGELOG.md updated; contracts regenerated.

…ctor hint

The prior never lists denylisted names, ranks only classes with validated
items (skipped when none), and feeds back a pending proposal only with at
least 3 crops behind it. The shipped denylist gains abstract*, *_background,
*_object and related words. New pack setting detector_hint_min_confidence_pct
(0 = off) names the item's stored detector class in the prompt.

Refs #193
… item 2

The prior measured no gain on the live COCO oracle (a no-op unseeded, about
-1 point and more pending proposals when seeded). Removes registry_prior_top_k,
the ranking module, the source module, the 503 path, the schema row and the docs.
The detector hint raised COCO-oracle overall accuracy 0.775 -> 0.853.

Refs #61, #193
@davidamacey davidamacey changed the title fix(vlm): stop the registry prior amplifying noise; add optional detector hint (refs #193) feat(vlm): optional detector hint for VLM labeling; remove the registry prior (closes #61) Oct 9, 2026
@davidamacey
davidamacey merged commit 1607c1f into main Oct 9, 2026
10 checks passed
@davidamacey
davidamacey deleted the fix/193-registry-prior branch October 9, 2026 23:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(vlm): reduce new-class proposal noise, optional registry prior, separate label agreement from cluster purity

1 participant