Add the supervised YOLO baseline to the comparison harness (#51) - #76
Merged
Conversation
The architecture-vs-data ablation for issue #51: does a generic detector trained on the RampNet dataset also beat the zero-shot field, or is RampNet's keypoint architecture doing the work? - YoloDetector + yolo_results_to_boxes in detectors.py, plus the `yolo` branch in build_detector. Identity is the weights file stem, so the detection cache key is machine-independent; signature() hashes the weights bytes, so a retrain busts the cache. It emits scored boxes, so YOLO gets AP, PR curves and --sweep like the other open detectors. - compare.py: --yolo-model / --yolo-conf (0.05 floor) / --yolo-iou / --yolo-imgsz. requirements-vlm.txt: ultralytics. - prepare_yolo_dataset.py: tiles+pano dataset builder with pluggable box-size strategies and deterministic background thinning. - run_yolo_{data,prep,train}.slurm and hyak_yolo_runbook.sh (repo root, beside hyak_qwen_runbook.sh). - +10 tests. The training record these scripts produced is PR #77, kept separate so this PR is reviewable as code. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jonfroehlich
force-pushed
the
feat/yolo-baseline-51
branch
from
July 28, 2026 21:17
234c1b1 to
29449c6
Compare
jonfroehlich
added a commit
that referenced
this pull request
Jul 28, 2026
- Config table: record the as-run batches from args.yaml (y11x_tiles 3->12 across its two attempts, y26_tiles 6) -- batch is the load-bearing variable in the collapse hypothesis, so the table must be exact - Provenance: box-size corrected to pitch/1.8m per run_yolo_prep.slurm's as-run defaults, with a TODO to confirm from the klone prep log before scratch purges; add y11x_tiles's inferred job ID 37745359 - Drop the run_yolo_train.slurm / hyak_yolo_runbook.sh snapshots: the canonical copies land via #76 (launcher byte-identical; runbook drift was display-only, documented in #76). Removes the two-live-copies trap at merge time. - .gitignore: enforce the stated weights-out policy structurally (*.pt, *.pth) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Runbook: default ACCOUNT to ckpt-makelab (run_yolo_train.slurm pins the ckpt partition, which the old gpu-l40s default cannot submit to) and pin per-config BATCH in the train stage -- unpinned, jobs ran batch=-1 (auto), defeating the identical-LR-schedule rationale the .slurm header states - Runbook: align BOX_SIZE default with the as-run prep (pitch, ramp 1.8m, per run_yolo_prep.slurm) and point the multi-hour data/prep stages at their compute-node sbatch wrappers (login nodes reap heavy processes) - prepare_yolo_dataset.py: stamp the full prep config into data.yaml as comments -- box size et al. are train-only knobs no downstream args.yaml records, and exactly that gap made the #77 provenance question unanswerable from disk; regression test added (188 pass) - prepare_yolo_dataset.py: render each overlay view once, not twice; --overlay-n help now says PER SPLIT - detectors.py: hoist the hashlib import to module top Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Member
Author
|
Review fixes pushed in ebbc27b:
The "Overlap with #77" merge-time task is resolved ahead of time: #77 dropped its two script copies and its README points at the canonical paths here, so no dedup is needed whichever merges second. 🤖 Generated with Claude Code |
jonfroehlich
added a commit
that referenced
this pull request
Jul 28, 2026
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jonfroehlich
added a commit
that referenced
this pull request
Jul 28, 2026
Lands the YOLO baseline training record with the corrected instability diagnosis, four regenerable figures, and the deletion of the duplicate script snapshots that #76 now carries canonically.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The issue #51 architecture-vs-data ablation: does a generic detector trained on
the RampNet dataset also beat the zero-shot field, or is RampNet's keypoint
architecture doing the work?
This is the code half only. The training record it produced is #77, opened
concurrently by another session — the two are disjoint after a rewrite of this
branch (see "Overlap with #77" below).
What's here
YoloDetector+yolo_results_to_boxesindetectors.py, plus theyolobranch in
build_detector. Identity is the weights file stem, so thedetection cache key is machine-independent;
signature()hashes the weightsbytes, so a retrain busts the cache. It emits scored boxes, so YOLO gets AP,
PR curves and
--sweeplike the other open detectors.compare.py:--yolo-model,--yolo-conf(0.05 floor),--yolo-iou,--yolo-imgsz.requirements-vlm.txt:ultralytics.prepare_yolo_dataset.py— tiles+pano dataset builder with pluggable box-sizestrategies and deterministic background thinning.
run_yolo_{data,prep,train}.slurmandhyak_yolo_runbook.sh(repo root,beside
hyak_qwen_runbook.sh).Box size is a train-only knob: evaluation reduces predictions to centre
points and matches at radius 0.022, so width and height are never scored.
Overlap with #77 — one thing to fix at merge time
This branch originally also carried the training record; I dropped it once #77
appeared, so the two PRs now touch disjoint files. One conflict survives and
is worth catching whichever merges second:
#77 adds
scripts/model_comparison/yolo_baseline/run_yolo_train.slurmand.../yolo_baseline/hyak_yolo_runbook.sh. This PR adds the canonicalscripts/model_comparison/run_yolo_train.slurmand the repo-roothyak_yolo_runbook.sh. Git will not flag it — different paths — but mergingboth leaves two copies of each script, and:
run_yolo_train.slurmfiles are byte-identical;ARG_MAX fix to the dataset count display (
ls "$DATA/$s"/*.jpg | wc -loverflowed on the ~150k-file train split and printed a false
train: 0).Suggested resolution: keep the canonical copies from this PR, drop the two under
yolo_baseline/, and have that README point at them. The provenance those copiesexisted to preserve is already in git history. The difference is display-only and
cannot affect the recorded runs, but shipping the older text as a second live copy
would be a real trap.
Status
Training is still running; nothing here is a result. The benchmark-city
evaluation against RampNet has not been run — see #77 for what the runs so far
do and do not support.
🤖 Generated with Claude Code