Skip to content

Lyon audit (#159): Jon's 200-pano review, scores, recall by elevation - #277

Merged
jonfroehlich merged 7 commits into
mainfrom
benchmark/lyon-verdicts-159
Oct 31, 2026
Merged

jonfroehlich merged 7 commits into
mainfrom
benchmark/lyon-verdicts-159

Conversation

@jonfroehlich

Copy link
Copy Markdown
Member

Closes out the Lyon label audit of #159 (campaign #263, track 2). The bundle and plan merged in #264. This PR adds the review and the reads made from it.

What's here

  • benchmark/lyon/verdicts.json: Jon's export of 2026-10-27T16:34Z, byte for byte. The 38- and 104-pano partial exports are in verdicts_backups/.
  • analysis_out/lyon_review_159/score.json: score --write against the posted plan (plan_posted: true, partial: false).
  • New elevation subcommand → recall_by_elevation.json (level camera) and recall_by_elevation_tilt.json (PR Image-based pano tilt estimator: validated on GSV, run on Lyon (#159) #273's per-pano pitch/roll undone). It asserts that its pool equals score.json's recall_055 pool.
  • docs/lyon_review_159.md section 10 holds the results, caveats and clean-clone reproduce commands.
  • Tests: the committed score.json reproduces, tilt is undone exactly, band edges, and the elevation pool matches the score pool. .gitattributes pins analysis_out/lyon_review_159/** to LF.

Results

group P@0.55 reading R@0.55
Grand Lyon Ladybug 0.83 (84/101) eligible, not decisive 0.27
ecartip GoPro Max 0.95 (75/79) eligible (decisive) 0.26
other GoPro Max 0.94 (45/48) eligible (decisive) 0.27
other cameras 0.87 (40/46) eligible, not decisive 0.26
  • Precision passes in all four groups. Recall is low in all of them.
  • The low recall is mostly not far-field. Recall within about 24 m is 0.31 (on both the level and the tilt-corrected reading), and within about 14 m it is 0.34 level and 0.37 corrected.
  • Tilt correction moves 85 of the 87 above-horizon points below it.
  • Hypothesis, not tested: the near-field misses are Lyon's lipped kerbs and wide diagonal ramps, which don't look like US curb ramps.

Replication caveat

The tilt-corrected file needs analysis_out/pano_tilt/lyon.json from #273, which is not merged yet. The doc gives the git show 090cb4f:… recipe, and the file's sha256 is recorded in the output. Everything else re-derives on CPU from committed files. Re-doing the review needs the 200 git-ignored panos, which are pinned in imagery_manifest.json and held in the makelab2 run archive.

Open for Jon

🤖 Generated with Claude Code — Opus 5.5, claude-opus-5-5

jonfroehlich and others added 6 commits October 22, 2026 09:50
Not a finished review: do not score or quote. verdicts.json is the
2026-10-22T16:47Z export (104 panos); verdicts_backups/ keeps each export
as received (38 panos 2026-10-21, 104 panos 2026-10-22).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
verdicts.json is the 2026-10-27T16:34Z export, copied byte for byte;
verdicts_backups/ adds it beside the 38- and 104-pano partial exports.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`lyon_review_159.py elevation` splits the 0.55 recall pool (asserted equal to
score.json's recall_055) by degrees below the horizon, level-camera and, with
--tilt, after undoing PR #273's per-pano pitch/roll. Within ~24 m recall is
0.31 either way, so most of Lyon's recall deficit is near-field, not far-field.
docs/lyon_review_159.md section 10 carries the per-group verdicts, the split,
the caveats and the clean-clone reproduce commands. Tests cover the geometry,
the band edges, the pool identity and the committed score's byte check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pool-wide elevation intervals now keep zero-ramp panos as score does, and
cmd_elevation asserts the total interval equals score.json recall_055's.
Doc: near-field sentence states the miss shares and that size still matters;
tilt recipe notes the unmerged-commit risk; input list completed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… CI on #277)

Lyon's verdicts.json made shared split discovery pick it up, adding a
'lyon' gap row to cascade_cost_35's summary and failing its byte check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jonfroehlich
jonfroehlich merged commit cd0ce29 into main Oct 31, 2026
3 checks passed
@jonfroehlich
jonfroehlich deleted the benchmark/lyon-verdicts-159 branch October 31, 2026 13:21
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.

1 participant