ProjectSidewalk / ProjectSidewalk/RampNet

Score crop-window rules against the manual_gold boxes: containment, margin, and context ratio (crop-clarity acceptance test)

Open
#114 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
7
Forks
1
Avg merge
4d 11h
Merged PRs (30d)
7

Description

Part of the crop-clarity acceptance test (recorded in sidewalk-auto-labeler's PLAN-crop-clarity.md): before any AI-submitted label ships, the crop-window rule that will produce its Gallery image (ProjectSidewalk/SidewalkWebpage#4865 plans to port predict_crop_size as "sizing v1") gets scored against gold boxes, not eyeballed. This repo holds the only gold extent data in the ecosystem — manual_labels/ has 3,919 human-drawn curb-ramp boxes on the 1,000 manual_gold panos, consumed until now only as centers (rampnet/detection_eval.py drops w/h at parse time; #83 already flags them as the eval set for extent work).

What to build

scripts/analysis/crop_window_eval.py — pure geometry, no GPU, no network, no pixels needed for the numbers (pano dims come from benchmark/manual_gold/records.jsonl):

For each gold box, place each candidate crop window at a prompt point and score:

  • containment — gold box fully inside the window (seam-wrap aware; the visibly-broken failure mode);
  • margin — signed min distance from box edge to window edge, normalized by window side (containment is margin ≥ 0, and violation depth is visible instead of binary);
  • context ratio — object max side / window side, against the ~10–15% band the consumer survey converged on (sidewalk-panorama-tools reports/2026-08-09-cropper-consumer-requirements.md — a survey, not a measurement; treated as a target band only);

stratified by depression angle / flat-ground distance band. Two prompt modes:

  • gold-center — window centered on the box center; isolates sizing error from placement;
  • detection — window centered on the matched RampNet detection (standard 0.022 radius greedy match); the production-realistic number, since real crops are cut at detection points.

Candidates scored

candidate what
v1-raw predict_crop_size exactly as CropRunner runs it today (pixel-linear in native y)
v1-norm the resolution-normalized port specified for SidewalkWebpage's CropService (compute in 6656-height reference space, scale back)
geo-v1.5 depression angle → flat-ground distance (fixed 2.5 m camera height) → metric ramp footprint → pixels → pad to the context band; the naive precursor of a per-pano-height rule (ProjectSidewalk/sidewalk-auto-labeler#40)

manual_gold is 4096×2048 GSV, which makes the raw-vs-normalized comparison sharp: the raw formula's constants were calibrated on 6656-height panos.

Deliverables: the script + CPU-only tests (seam wrap, clamp-by-shift, formula pinning at 6656 parity), a committed docs/crop_window_eval.md with the numbers, and an overlay gallery mode (--gallery) that renders gold box + predicted windows for whatever subset of benchmark/manual_gold/panos/ exists locally (imagery via scripts/fetch_manual_gold.py, as usual a local convenience, not an input to the numbers).

Not in scope here: SAM2 point-prompted extent (#83 path 1) — that becomes a fourth candidate once it exists; and the Mapillary arm (boxes on richmond's benchmark panos), which needs the box-annotation pass first.

🤖 Generated with Claude Code (claude-fable-5)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with rampnet/detection_eval.py to understand the existing gold-box parsing, then inspect benchmark/manual_gold/records.jsonl and the crop-clarity plan. Implement and test scripts/analysis/crop_window_eval.py, including seam-wrap, clamp-by-shift, and 6656-height parity cases. Done means the CPU-only tests, docs/crop_window_eval.md results, and optional --gallery mode are present.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-vision, documentation, testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.