ProjectSidewalk / ProjectSidewalk/RampNet
Score crop-window rules against the manual_gold boxes: containment, margin, and context ratio (crop-clarity acceptance test)
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-toolsreports/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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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