Commit Graph
14 Commits
Author SHA1 Message Date
jungfrau bb258eb2d2 dataset: 2026-10-26_v5h (1690 train / 298 val, 6 new pool images) 2026-10-26 01:43:39 +01:00
jungfrauandClaude Fable 5.1 63ee07fe61 a gold outline the reviewer kept from the model's proposal is not judged
CI / ledger-and-tools (push) Successful in 19s
454 of the 1 029 gold outlines are a proposal kept unchanged (loop 159 of 317, pin 140 of
224, face 140 of 295, crystal 14 of 149): the pre-labelling model's own masks. The
evaluation now ignores them object by object for every model, like a crowd region: they
leave the gold, and an unmatched prediction on one of them is not a false alarm.
tools/gold_kept.py finds them against the studio's batch proposals (mask IoU >= 0.98) and
writes data/gold/kept_machine.json; evaluate_image, evaluate_dirs and gate_stats.per_frame
read it. With it, the frame-level exclusion of 845bd87 is no longer applied (it stays as
the fallback without the file), so the gold set can grow with frames the active model
pre-labelled. Every registry model is measured again on this basis and the three v5 runs
are re-gated, without promotion.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013uu3Bxsu5JqFhaWa9Ftu6z
2026-10-25 09:48:20 +01:00
jungfrauandClaude Fable 5.1 845bd87bb3 a model is not measured on the gold frames it pre-labelled itself
CI / ledger-and-tools (push) Successful in 21s
Where a reviewer keeps an outline the model proposed, the gold holds the model's own mask,
which overlaps itself perfectly: on the 50 gold frames v4 had pre-labelled it scored a
matched IoU of 0.959 against 0.905 elsewhere, every other model 0.93, and that alone
produced the "mask dip" that failed all three v5 runs. tools/gold_prelabel.py records
which model proposed each gold frame (data/gold/prelabel.json, 265 of 335 frames);
gate_stats.without_own_proposals drops those frames from that model's measure; the unseen
comparison and the gate's paired bootstrap use it, so two models are compared on the
frames neither of them touched. The three v5 runs are re-gated on that basis, without
promotion.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-25 02:48:09 +02:00
jungfrau 27afcd57c2 dataset: 2026-10-22_v5 (2119 train / 372 val, 596 new pool images) 2026-10-22 11:38:19 +02:00
jungfrauandClaude Fable 5.1 8c3c538244 gold: 285 frames (batch 8 added by mount: 83 corrected frames, 2-per-mount cap, 20 siblings held out); every model re-measured
CI / ledger-and-tools (push) Successful in 20s
231 frames unseen by every model (core 148), 82 crystals on them. v4-noflip-mask1 stays
the best: F1 0.855, mask score 0.798; v3-noflip-mask1 0.848 / 0.793, within noise;
the small cluster model now clearly loses on masks (-0.021, won in 0 % of draws).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 15:49:30 +02:00
jungfrauandClaude Fable 5.1 e8804c7762 gold: 202 frames (tpi_14688 dropped: same image as tpi_14689), mount groups and light states; comparison drawn by mount
CI / ledger-and-tools (push) Successful in 18s
11 mounts hold 40 of the 202 frames (largest 12); 6 saturated and 29 dark frames.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 15:48:02 +02:00
GotthardGandClaude Fable 5.1 831367d35d noise-aware gate, frozen core of unseen frames, and a cycle script for the Spark
A paired bootstrap over the 149 unseen gold frames (2026-10-02) showed that a
difference between two models carries about +-0.023 of noise in F1, +-0.018 in
the mask score and +-0.10 in crystal F1, while the gate's tolerance was 0.005.

- tools/gate_stats.py: per-frame counts and a paired bootstrap (pure Python).
- train_run.py: when the baseline's gold predictions exist, the gate requires
  the candidate to beat it on F1 or the mask score in 90 % of the draws and
  not to lose the other in more than 90 %; the point rule is the fallback and
  is always reported (pass_point_rule).
- tools/compare_unseen.py replaces the Spark's ~/fair_gate_all.py: all models
  on the frames none trained on, on the frozen core (data/gold/unseen_core.json,
  149 frames) and on all unseen frames once the gold set grows, with the
  interval and win share against the active model.
- measure_weights.py keeps a version's gate verdict when it re-measures it.
- tools/spark_cycle.sh: gold growth, export, re-measure, train, gate, compare,
  push, with what cycles 3 and 4 taught built in.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 13:25:45 +02:00
jungfrau 7688cfa713 dataset: 2026-10-01_v4 (1610 train / 285 val, 493 new pool images) 2026-10-02 13:25:44 +02:00
jungfrau a6da2aa4aa dataset: 2026-09-29_v3 (1181 train / 210 val, 366 new pool images) 2026-09-29 22:41:12 +02:00
jungfrau 039cdcba1c dataset: 2026-09-29_v2 (876 train / 156 val, 315 new pool images) 2026-09-29 17:58:38 +02:00
jungfrau 8898f4212a dataset: 2026-09-28_alc-v1-humanonly (476 train / 84 val, 7 new pool images) 2026-09-28 20:01:45 +02:00
jungfrau 489cc22dc3 dataset: 2026-09-28_alc-v1 (606 train / 108 val, 714 new pool images) 2026-09-28 16:49:58 +02:00
GotthardGandClaude Fable 5.1 4698dbeaf9 training loop: run ledger, studio export importer with an image pool, train_run with gold gate and auto-promotion, SLURM template, CI
CI / ledger-and-tools (push) Successful in 17s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 16:06:06 +02:00
duan_j 391c357c84 migration and splitting AareLC 2026-04-14 16:07:31 +02:00