From ed208bff9525cbbf68ea56c2b4ca1765496016b6 Mon Sep 17 00:00:00 2001 From: jungfrau Date: Mon, 28 Sep 2026 20:44:27 +0200 Subject: [PATCH] run 2026-09-28_alc-v1-humanonly: gate passed, not promoted (A/B on clean gold: masks no tighter without accepted-unchanged labels, crystal worse) --- .../gold_report.json | 93 ++++++++ .../metadata.json | 51 +++++ .../weights.pt | 3 + .../fair_gate_clean_gold.json | 215 ++++++++++++++++++ runs/2026-09-28_alc-v1-humanonly/metrics.json | 38 ++++ runs/2026-09-28_alc-v1-humanonly/run.json | 57 ++++- runs/README.md | 9 + 7 files changed, 461 insertions(+), 5 deletions(-) create mode 100644 models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/gold_report.json create mode 100644 models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/metadata.json create mode 100644 models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/weights.pt create mode 100644 runs/2026-09-28_alc-v1-humanonly/fair_gate_clean_gold.json create mode 100644 runs/2026-09-28_alc-v1-humanonly/metrics.json diff --git a/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/gold_report.json b/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/gold_report.json new file mode 100644 index 0000000..83c6b64 --- /dev/null +++ b/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/gold_report.json @@ -0,0 +1,93 @@ +{ + "per_class": { + "loop_all": { + "tp": 113, + "fp": 7, + "fn": 4, + "precision": 0.9416666666666667, + "recall": 0.9658119658119658, + "f1": 0.9535864978902954, + "mean_mask_iou": 0.8770614850251075, + "n_matched": 113 + }, + "pin": { + "tp": 84, + "fp": 9, + "fn": 5, + "precision": 0.9032258064516129, + "recall": 0.9438202247191011, + "f1": 0.9230769230769231, + "mean_mask_iou": 0.9258323755269584, + "n_matched": 84 + }, + "crystal": { + "tp": 21, + "fp": 24, + "fn": 12, + "precision": 0.4666666666666667, + "recall": 0.6363636363636364, + "f1": 0.5384615384615385, + "mean_mask_iou": 0.7929802397975723, + "n_matched": 21 + }, + "loop_face": { + "tp": 87, + "fp": 17, + "fn": 18, + "precision": 0.8365384615384616, + "recall": 0.8285714285714286, + "f1": 0.8325358851674641, + "mean_mask_iou": 0.8578543451465753, + "n_matched": 87 + }, + "ice": { + "tp": 5, + "fp": 12, + "fn": 27, + "precision": 0.29411764705882354, + "recall": 0.15625, + "f1": 0.20408163265306123, + "mean_mask_iou": 0.7708521231731791, + "n_matched": 5 + }, + "needle": { + "tp": 0, + "fp": 0, + "fn": 1, + "precision": 0.0, + "recall": 0.0, + "f1": 0.0, + "mean_mask_iou": 0.0, + "n_matched": 0 + } + }, + "overall": { + "tp": 310, + "fp": 69, + "fn": 67, + "precision": 0.8179419525065963, + "recall": 0.8222811671087533, + "f1": 0.8201058201058201, + "mean_mask_iou": 0.8774775517144151, + "n_matched": 310 + }, + "dataset": { + "gold_images": 120, + "pred_images": 120, + "missing_predictions": 0, + "iou_threshold": 0.5 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", + "f1_delta": -0.0004, + "mask_iou_delta": 0.0113, + "mask_score": 0.7215, + "mask_score_baseline": 0.7103, + "matched_only_iou_delta": -0.0033, + "class_f1_delta": { + "loop_all": 0.0292, + "pin": 0.0042 + }, + "pass": true + } +} diff --git a/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/metadata.json b/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/metadata.json new file mode 100644 index 0000000..40e2ea0 --- /dev/null +++ b/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/metadata.json @@ -0,0 +1,51 @@ +{ + "model_id": "yolo26n-seg-alc-v1-humanonly-2026-09-28", + "family": "yolo26n", + "task": "segmentation", + "training_date": "2026-09-28", + "run": "2026-09-28_alc-v1-humanonly", + "dataset": "dataset/2026-09-28_alc-v1-humanonly", + "base_weights": "/home/jungfrau/AareLC/models/yolo26n-seg.pt", + "hyperparams": { + "epochs": 400, + "patience": 50, + "imgsz": 640, + "batch": 16, + "device": "0", + "overlap_mask": false, + "scale": 0.7, + "translate": 0.15, + "mosaic": 0.5, + "close_mosaic": 10, + "fliplr": 0.5, + "flipud": 0.3, + "shear": 5.0, + "perspective": 0.0 + }, + "export_formats": [ + "pt" + ], + "metrics": { + "tp": 310, + "fp": 69, + "fn": 67, + "precision": 0.8179419525065963, + "recall": 0.8222811671087533, + "f1": 0.8201058201058201, + "mean_mask_iou": 0.8774775517144151, + "n_matched": 310 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", + "f1_delta": -0.0004, + "mask_iou_delta": 0.0113, + "mask_score": 0.7215, + "mask_score_baseline": 0.7103, + "matched_only_iou_delta": -0.0033, + "class_f1_delta": { + "loop_all": 0.0292, + "pin": 0.0042 + }, + "pass": true + } +} diff --git a/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/weights.pt b/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/weights.pt new file mode 100644 index 0000000..3392c3d --- /dev/null +++ b/models/registry/yolo26n-seg-alc-v1-humanonly-2026-09-28/weights.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7cc3a9815f818c9d0b429f877513db10725fd825e3f071ecd6031dc2925c556 +size 6587549 diff --git a/runs/2026-09-28_alc-v1-humanonly/fair_gate_clean_gold.json b/runs/2026-09-28_alc-v1-humanonly/fair_gate_clean_gold.json new file mode 100644 index 0000000..7922e91 --- /dev/null +++ b/runs/2026-09-28_alc-v1-humanonly/fair_gate_clean_gold.json @@ -0,0 +1,215 @@ +{ + "clean_frames": 66, + "reports": { + "beamline": { + "per_class": { + "loop_all": { + "tp": 43, + "fp": 14, + "fn": 21, + "precision": 0.7543859649122807, + "recall": 0.671875, + "f1": 0.7107438016528924, + "mean_mask_iou": 0.8603647813074378, + "n_matched": 43 + }, + "pin": { + "tp": 48, + "fp": 7, + "fn": 11, + "precision": 0.8727272727272727, + "recall": 0.8135593220338984, + "f1": 0.8421052631578948, + "mean_mask_iou": 0.9478639299321778, + "n_matched": 48 + }, + "crystal": { + "tp": 2, + "fp": 15, + "fn": 5, + "precision": 0.11764705882352941, + "recall": 0.2857142857142857, + "f1": 0.16666666666666666, + "mean_mask_iou": 0.8492457223853397, + "n_matched": 2 + }, + "loop_face": { + "tp": 30, + "fp": 12, + "fn": 23, + "precision": 0.7142857142857143, + "recall": 0.5660377358490566, + "f1": 0.631578947368421, + "mean_mask_iou": 0.8979746795878049, + "n_matched": 30 + }, + "ice": { + "tp": 1, + "fp": 4, + "fn": 1, + "precision": 0.2, + "recall": 0.5, + "f1": 0.28571428571428575, + "mean_mask_iou": 0.8931750741839762, + "n_matched": 1 + } + }, + "overall": { + "tp": 124, + "fp": 52, + "fn": 61, + "precision": 0.7045454545454546, + "recall": 0.6702702702702703, + "f1": 0.6869806094182825, + "mean_mask_iou": 0.9034198478996224, + "n_matched": 124 + }, + "dataset": { + "gold_images": 66, + "pred_images": 120, + "missing_predictions": 0, + "iou_threshold": 0.5 + } + }, + "A all labels": { + "per_class": { + "loop_all": { + "tp": 58, + "fp": 7, + "fn": 6, + "precision": 0.8923076923076924, + "recall": 0.90625, + "f1": 0.8992248062015504, + "mean_mask_iou": 0.873542286431727, + "n_matched": 58 + }, + "pin": { + "tp": 56, + "fp": 7, + "fn": 3, + "precision": 0.8888888888888888, + "recall": 0.9491525423728814, + "f1": 0.9180327868852458, + "mean_mask_iou": 0.913231968211653, + "n_matched": 56 + }, + "crystal": { + "tp": 4, + "fp": 2, + "fn": 3, + "precision": 0.6666666666666666, + "recall": 0.5714285714285714, + "f1": 0.6153846153846153, + "mean_mask_iou": 0.7662505101273234, + "n_matched": 4 + }, + "loop_face": { + "tp": 38, + "fp": 9, + "fn": 15, + "precision": 0.8085106382978723, + "recall": 0.7169811320754716, + "f1": 0.76, + "mean_mask_iou": 0.8637306298851367, + "n_matched": 38 + }, + "ice": { + "tp": 1, + "fp": 1, + "fn": 1, + "precision": 0.5, + "recall": 0.5, + "f1": 0.5, + "mean_mask_iou": 0.8808139534883721, + "n_matched": 1 + } + }, + "overall": { + "tp": 157, + "fp": 26, + "fn": 28, + "precision": 0.8579234972677595, + "recall": 0.8486486486486486, + "f1": 0.8532608695652173, + "mean_mask_iou": 0.8826370876593987, + "n_matched": 157 + }, + "dataset": { + "gold_images": 66, + "pred_images": 120, + "missing_predictions": 0, + "iou_threshold": 0.5 + } + }, + "B no accepted-unchanged": { + "per_class": { + "loop_all": { + "tp": 60, + "fp": 5, + "fn": 4, + "precision": 0.9230769230769231, + "recall": 0.9375, + "f1": 0.9302325581395349, + "mean_mask_iou": 0.8627592241834525, + "n_matched": 60 + }, + "pin": { + "tp": 55, + "fp": 3, + "fn": 4, + "precision": 0.9482758620689655, + "recall": 0.9322033898305084, + "f1": 0.94017094017094, + "mean_mask_iou": 0.9206098193697871, + "n_matched": 55 + }, + "crystal": { + "tp": 4, + "fp": 9, + "fn": 3, + "precision": 0.3076923076923077, + "recall": 0.5714285714285714, + "f1": 0.4, + "mean_mask_iou": 0.7422849246805395, + "n_matched": 4 + }, + "loop_face": { + "tp": 40, + "fp": 14, + "fn": 13, + "precision": 0.7407407407407407, + "recall": 0.7547169811320755, + "f1": 0.7476635514018692, + "mean_mask_iou": 0.8552237297527754, + "n_matched": 40 + }, + "ice": { + "tp": 1, + "fp": 0, + "fn": 1, + "precision": 1.0, + "recall": 0.5, + "f1": 0.6666666666666666, + "mean_mask_iou": 0.8895522388059701, + "n_matched": 1 + } + }, + "overall": { + "tp": 160, + "fp": 31, + "fn": 25, + "precision": 0.837696335078534, + "recall": 0.8648648648648649, + "f1": 0.851063829787234, + "mean_mask_iou": 0.8779170915249036, + "n_matched": 160 + }, + "dataset": { + "gold_images": 66, + "pred_images": 120, + "missing_predictions": 0, + "iou_threshold": 0.5 + } + } + } +} \ No newline at end of file diff --git a/runs/2026-09-28_alc-v1-humanonly/metrics.json b/runs/2026-09-28_alc-v1-humanonly/metrics.json new file mode 100644 index 0000000..3cdb776 --- /dev/null +++ b/runs/2026-09-28_alc-v1-humanonly/metrics.json @@ -0,0 +1,38 @@ +{ + "overall": { + "tp": 310, + "fp": 69, + "fn": 67, + "precision": 0.8179419525065963, + "recall": 0.8222811671087533, + "f1": 0.8201058201058201, + "mean_mask_iou": 0.8774775517144151, + "n_matched": 310 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", + "f1_delta": -0.0004, + "mask_iou_delta": 0.0113, + "mask_score": 0.7215, + "mask_score_baseline": 0.7103, + "matched_only_iou_delta": -0.0033, + "class_f1_delta": { + "loop_all": 0.0292, + "pin": 0.0042 + }, + "pass": true + }, + "training": { + "epochs_run": 265, + "precision(B)": 0.7585, + "recall(B)": 0.6979, + "mAP50(B)": 0.70326, + "mAP50-95(B)": 0.53715, + "precision(M)": 0.74663, + "recall(M)": 0.68372, + "mAP50(M)": 0.69376, + "mAP50-95(M)": 0.51319 + }, + "version": "yolo26n-seg-alc-v1-humanonly-2026-09-28", + "measured_at": "2026-09-28T20:42:32" +} diff --git a/runs/2026-09-28_alc-v1-humanonly/run.json b/runs/2026-09-28_alc-v1-humanonly/run.json index f713bde..d9677c5 100644 --- a/runs/2026-09-28_alc-v1-humanonly/run.json +++ b/runs/2026-09-28_alc-v1-humanonly/run.json @@ -2,18 +2,65 @@ "id": "2026-09-28_alc-v1-humanonly", "dataset": "dataset/2026-09-28_alc-v1-humanonly", "base_weights": "/home/jungfrau/AareLC/models/yolo26n-seg.pt", - "status": "exported", + "status": "gate_passed", "created": "2026-09-28T20:01:45", "created_by": "jungfrau@mx-spark-01", - "hyperparams": {}, - "version": null, - "metrics": {}, + "hyperparams": { + "epochs": 400, + "patience": 50, + "imgsz": 640, + "batch": 16, + "device": "0", + "overlap_mask": false, + "scale": 0.7, + "translate": 0.15, + "mosaic": 0.5, + "close_mosaic": 10, + "fliplr": 0.5, + "flipud": 0.3, + "shear": 5.0, + "perspective": 0.0 + }, + "version": "yolo26n-seg-alc-v1-humanonly-2026-09-28", + "metrics": { + "f1": 0.8201058201058201, + "mean_mask_iou": 0.8774775517144151, + "gate_pass": true, + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", + "measured_at": "2026-09-28T20:42:32" + }, "history": [ { "status": "exported", "at": "2026-09-28T20:01:45", "by": "jungfrau@mx-spark-01", "note": "twin of 2026-09-28_alc-v1 without the 163 accepted-unchanged frames; to be trained on the cluster" + }, + { + "status": "training", + "at": "2026-09-28T20:07:22", + "by": "jungfrau@mx-spark-01", + "note": "train_run.py" + }, + { + "status": "measured", + "at": "2026-09-28T20:42:32", + "by": "jungfrau@mx-spark-01", + "note": "" + }, + { + "status": "gate_passed", + "at": "2026-09-28T20:42:32", + "by": "jungfrau@mx-spark-01", + "note": "{\"baseline\": \"/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json\", \"f1_delta\": -0.0004, \"mask_iou_delta\": 0.0113, \"mask_score\": 0.7215, \"mask_score_baseline\": 0.7103, \"matched_only_iou_delta\": -0.0033, \"class_f1_delta\": {\"loop_all\": 0.0292, \"pin\": 0.0042}, \"pass\": true}" + }, + { + "status": "gate_passed", + "at": "2026-09-28T20:44:27", + "by": "jungfrau@mx-spark-01", + "note": "gate passed vs the beamline baseline; not promoted: on the 66 clean frames B ties A on F1 (0.851 vs 0.853), mask IoU no tighter (0.878 vs 0.883), crystal F1 0.40 vs 0.62; A stays the candidate" } - ] + ], + "host": "mx-spark-01", + "started": "2026-09-28T20:07:22" } diff --git a/runs/README.md b/runs/README.md index 9e17a64..63ac62f 100644 --- a/runs/README.md +++ b/runs/README.md @@ -5,6 +5,7 @@ Generated by `python tools/ledger.py render`; do not edit by hand. | Run | Status | Dataset | Base | Version | F1 | Mask IoU | Gate | Last change | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 2026-09-28_alc-v1 | promoted | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-2026-09-28 | 0.821 | 0.881 | yes | 2026-09-28T19:17 | +| 2026-09-28_alc-v1-humanonly | gate_passed | dataset/2026-09-28_alc-v1-humanonly | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-humanonly-2026-09-28 | 0.820 | 0.877 | yes | 2026-09-28T20:44 | States: exported → queued → training → measured → gate_passed → gate_failed → promoted → deployed (or aborted). @@ -18,3 +19,11 @@ States: exported → queued → training → measured → gate_passed → gate_f - 2026-09-28T19:17:49 · measured · jungfrau@mx-spark-01 - 2026-09-28T19:17:49 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-overlap-false-2026-04-12/gold_report.json", "f1_delta": 0.0452, "mask_iou_delta": 0.0327, "mask_score": 0.7103, "mask_score_baseline": 0.6775, "matched_only_iou_delta": -0.0217, "class_f1_delta": {"loop_all": 0.0786, "pin": 0.0339}, "pass": true} - 2026-09-28T19:17:49 · promoted · jungfrau@mx-spark-01 — by the gate + +## 2026-09-28_alc-v1-humanonly + +- 2026-09-28T20:01:45 · exported · jungfrau@mx-spark-01 — twin of 2026-09-28_alc-v1 without the 163 accepted-unchanged frames; to be trained on the cluster +- 2026-09-28T20:07:22 · training · jungfrau@mx-spark-01 — train_run.py +- 2026-09-28T20:42:32 · measured · jungfrau@mx-spark-01 +- 2026-09-28T20:42:32 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", "f1_delta": -0.0004, "mask_iou_delta": 0.0113, "mask_score": 0.7215, "mask_score_baseline": 0.7103, "matched_only_iou_delta": -0.0033, "class_f1_delta": {"loop_all": 0.0292, "pin": 0.0042}, "pass": true} +- 2026-09-28T20:44:27 · gate_passed · jungfrau@mx-spark-01 — gate passed vs the beamline baseline; not promoted: on the 66 clean frames B ties A on F1 (0.851 vs 0.853), mask IoU no tighter (0.878 vs 0.883), crystal F1 0.40 vs 0.62; A stays the candidate