Vertical-sign detection, pass 1: measure before you tune

2026-08-01 · AI3D-339 · A4_5 corpus (143 segments) · post-deep-research implementation queue (handoff items 1–5) · all instruments label-free · compute on battlebox

TL;DR. Pass 1 built the measuring instruments the detector never had, and they immediately earned their keep: the project's first recall number (ceiling ≈0.74 overall, and a previously unknown defect — sign detection is so density-fragile that two half-data runs never find the same sign); a new transient-vs-static FP taxonomy with a shipping feature (record_coverage_ratio) that flags 5/6 transient FPs at an 8.7% base rate; a census showing 3 thresholds block 433 near-miss clusters (the pass-2 triage pool); and two clean discards — the plate-orientation cue (measured dead) and 3 of 4 seed-gate relaxations. One infrastructure finding: out_final is no longer reproducible from master (the shipped RF verifier post-dates it) and must be re-baselined before the next census. No detection quality was changed this pass — deliberately. Every default stays; pass 2 spends the new instruments on actual improvements.

What went well

What didn't

Threshold-margin census (item 3)

Accept-side binding pressure vs one-conjunct near-miss rejects, top 10 thresholds. Symlog x-axis.

Record-multiplicity + planarity features (items 2, 4)

The transient/static FP split. Transient FPs (vehicles, boundary ghosts) cluster at low coverage; static FPs (paint, verge, guardrail top) sit at coverage 1.0 among the reals.

Label-free recall instrument (item 1)

Recall ceilings (optimistic; relative use) and cross-half agreement per type. 126/143 segments usable; 17 single-record segments excluded.

Seed-gate sweeps, FP-first framing (round-4 suspects)

VariantGains (free/railed side)Verdict
brightness p98→p9533 / 19judge in pass 2 — the load-bearing knob; free-side gains are well-sampled (median 995 pts)
span 0.80→0.653 / 0discard — negligible
min_points 300→1502 / 2discard — admits exactly the under-300 reject class
combo39 / 26discard — brightness + min-points bleed-in

Framing per the retracted recall gap: census gains are FP candidates until an overlay says otherwise; gains on guardrailed sides are near-certain FPs. 50 intensity overlays fetched for the judging pass (agent-first, then Miro only if ambiguous).

Research step (Codex, web)

Full memo: out_eval/research_pass1_memo.md (5 questions, ~30 sources). Highest-value takeaways: (1) per-pass independent redetection + capture-history vector is the literature-standard form of our coverage idea (You et al. NeurIPS'22 persistence prior, Barnes/Maddern self-supervised distraction removal); (2) the static-FP family wants height-sliced footprint topology, road-station continuity, and surface-conformality cues — all label-free; (3) our Chapman use needed the dependence caveat it now carries; (4) the auto-label path is abstaining labeling-functions → probabilistic label model → PU-learned verifier with road-section isolation; (5) German RPS/VwV priors are quantifiable: 50 m Leitpfosten lattice 0.5 m off the paved edge at ~1 m height, sign lower edge ~2 m at ~1.5 m lateral, gantry clearance ~4.5 m — usable as soft likelihoods, not hard gates.

Pass 2 queue (ranked)

  1. Re-baseline out_final with current master (verifier on) — prerequisite for every future census. Then freeze the A1 "before" baseline (branches 000+001 middle segments, excl. 65–67) for Miro's end-of-goal before/after report.
  2. Vision-judge the pass-1 candidate pools (agent-first): 33 free-side brightness gains + top near-miss families (227 panel_min_hi / 100 plate_hi_weak). Output: auto-labels + a keep/kill verdict on the p95 brightness relaxation.
  3. Static-FP cues: height-sliced footprint topology + road-station continuity + surface conformality (additive features, then rules or LFs).
  4. Sign density-robustness fix: diagnose why plate evidence dies at half density; likely make plate gates density-aware (ratio-based, not count-based).
  5. Weak-supervision verifier (Miro-approved ML without human labels): rules-as-labeling-functions with abstention + consensus/coverage seeds → PU verifier; strict segment-group isolation.
  6. Instrument v2: per-pass redetection capture histories replacing half-split.

Judge-panel status: not convened this pass — no stop condition is plausibly true: improvements clearly remain that need neither human annotations (weak supervision path is open), nor new data (A1/A4_5 unexhausted), and the results are far from perfect (sign fragility, unjudged FP pools). The panel gates stopping, not continuing; it will be convened when a pass ends with a plausible stop claim.

Artifacts