diff --git a/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/gold_report.json b/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/gold_report.json new file mode 100644 index 0000000..0d6d26e --- /dev/null +++ b/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/gold_report.json @@ -0,0 +1,93 @@ +{ + "per_class": { + "loop_all": { + "tp": 187, + "fp": 10, + "fn": 5, + "precision": 0.949238578680203, + "recall": 0.9739583333333334, + "f1": 0.961439588688946, + "mean_mask_iou": 0.8866836247364087, + "n_matched": 187 + }, + "pin": { + "tp": 137, + "fp": 21, + "fn": 9, + "precision": 0.8670886075949367, + "recall": 0.9383561643835616, + "f1": 0.9013157894736841, + "mean_mask_iou": 0.9153409492266953, + "n_matched": 137 + }, + "crystal": { + "tp": 35, + "fp": 29, + "fn": 31, + "precision": 0.546875, + "recall": 0.5303030303030303, + "f1": 0.5384615384615384, + "mean_mask_iou": 0.8090764369083178, + "n_matched": 35 + }, + "loop_face": { + "tp": 154, + "fp": 37, + "fn": 18, + "precision": 0.806282722513089, + "recall": 0.8953488372093024, + "f1": 0.8484848484848484, + "mean_mask_iou": 0.8631176500734146, + "n_matched": 154 + }, + "ice": { + "tp": 6, + "fp": 16, + "fn": 34, + "precision": 0.2727272727272727, + "recall": 0.15, + "f1": 0.19354838709677416, + "mean_mask_iou": 0.7961226947704595, + "n_matched": 6 + }, + "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": 519, + "fp": 113, + "fn": 98, + "precision": 0.8212025316455697, + "recall": 0.8411669367909238, + "f1": 0.8310648518815051, + "mean_mask_iou": 0.8809751010433245, + "n_matched": 519 + }, + "dataset": { + "gold_images": 203, + "pred_images": 203, + "missing_predictions": 0, + "iou_threshold": 0.5 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", + "f1_delta": 0.0221, + "mask_iou_delta": 0.0074, + "mask_score": 0.741, + "mask_score_baseline": 0.7337, + "matched_only_iou_delta": -0.0101, + "class_f1_delta": { + "loop_all": 0.0446, + "pin": 0.0057 + }, + "pass": true + } +} diff --git a/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/metadata.json b/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/metadata.json new file mode 100644 index 0000000..9cd3eea --- /dev/null +++ b/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/metadata.json @@ -0,0 +1,52 @@ +{ + "model_id": "yolo26n-seg-v3-recipeA-2026-09-29", + "family": "yolo26n", + "task": "segmentation", + "training_date": "2026-09-29", + "run": "2026-09-29_v3-recipeA", + "dataset": "dataset/2026-09-29_v3", + "base_weights": "models/base/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, + "mask_ratio": 4 + }, + "export_formats": [ + "pt" + ], + "metrics": { + "tp": 519, + "fp": 113, + "fn": 98, + "precision": 0.8212025316455697, + "recall": 0.8411669367909238, + "f1": 0.8310648518815051, + "mean_mask_iou": 0.8809751010433245, + "n_matched": 519 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", + "f1_delta": 0.0221, + "mask_iou_delta": 0.0074, + "mask_score": 0.741, + "mask_score_baseline": 0.7337, + "matched_only_iou_delta": -0.0101, + "class_f1_delta": { + "loop_all": 0.0446, + "pin": 0.0057 + }, + "pass": true + } +} diff --git a/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/weights.pt b/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/weights.pt new file mode 100644 index 0000000..5fe66f0 --- /dev/null +++ b/models/registry/yolo26n-seg-v3-recipeA-2026-09-29/weights.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8460389beec4b19f46e7cf390eee9af3231d3204f06a17c03a002550e72fecb +size 6568413 diff --git a/runs/2026-09-29_v3-recipeA/metrics.json b/runs/2026-09-29_v3-recipeA/metrics.json new file mode 100644 index 0000000..814f0ac --- /dev/null +++ b/runs/2026-09-29_v3-recipeA/metrics.json @@ -0,0 +1,38 @@ +{ + "overall": { + "tp": 519, + "fp": 113, + "fn": 98, + "precision": 0.8212025316455697, + "recall": 0.8411669367909238, + "f1": 0.8310648518815051, + "mean_mask_iou": 0.8809751010433245, + "n_matched": 519 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", + "f1_delta": 0.0221, + "mask_iou_delta": 0.0074, + "mask_score": 0.741, + "mask_score_baseline": 0.7337, + "matched_only_iou_delta": -0.0101, + "class_f1_delta": { + "loop_all": 0.0446, + "pin": 0.0057 + }, + "pass": true + }, + "training": { + "epochs_run": 166, + "precision(B)": 0.6693, + "recall(B)": 0.62086, + "mAP50(B)": 0.66052, + "mAP50-95(B)": 0.51515, + "precision(M)": 0.6918, + "recall(M)": 0.62098, + "mAP50(M)": 0.67208, + "mAP50-95(M)": 0.50582 + }, + "version": "yolo26n-seg-v3-recipeA-2026-09-29", + "measured_at": "2026-09-29T23:42:37" +} diff --git a/runs/2026-09-29_v3-recipeA/run.json b/runs/2026-09-29_v3-recipeA/run.json index 5372ff7..13f214d 100644 --- a/runs/2026-09-29_v3-recipeA/run.json +++ b/runs/2026-09-29_v3-recipeA/run.json @@ -2,18 +2,72 @@ "id": "2026-09-29_v3-recipeA", "dataset": "dataset/2026-09-29_v3", "base_weights": "models/base/yolo26n-seg.pt", - "status": "exported", + "status": "gate_passed", "created": "2026-09-29T22:41:12", "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, + "mask_ratio": 4 + }, + "version": "yolo26n-seg-v3-recipeA-2026-09-29", + "metrics": { + "f1": 0.8310648518815051, + "mean_mask_iou": 0.8809751010433245, + "gate_pass": true, + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", + "measured_at": "2026-09-29T23:42:37" + }, "history": [ { "status": "exported", "at": "2026-09-29T22:41:12", "by": "jungfrau@mx-spark-01", "note": "settings A (fliplr 0.5, mask_ratio 4) on dataset v3: quick signal, gate only, Spark" + }, + { + "status": "training", + "at": "2026-09-29T22:41:13", + "by": "jungfrau@mx-spark-01", + "note": "train_run.py" + }, + { + "status": "training", + "at": "2026-09-29T22:46:24", + "by": "jungfrau@mx-spark-01", + "note": "train_run.py" + }, + { + "status": "training", + "at": "2026-09-29T22:48:37", + "by": "jungfrau@mx-spark-01", + "note": "train_run.py" + }, + { + "status": "measured", + "at": "2026-09-29T23:42:37", + "by": "jungfrau@mx-spark-01", + "note": "" + }, + { + "status": "gate_passed", + "at": "2026-09-29T23:42:37", + "by": "jungfrau@mx-spark-01", + "note": "{\"baseline\": \"/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json\", \"f1_delta\": 0.0221, \"mask_iou_delta\": 0.0074, \"mask_score\": 0.741, \"mask_score_baseline\": 0.7337, \"matched_only_iou_delta\": -0.0101, \"class_f1_delta\": {\"loop_all\": 0.0446, \"pin\": 0.0057}, \"pass\": true}" } - ] + ], + "host": "mx-spark-01", + "started": "2026-09-29T22:48:37" } diff --git a/runs/README.md b/runs/README.md index 73a0312..a5c85c2 100644 --- a/runs/README.md +++ b/runs/README.md @@ -10,9 +10,11 @@ Generated by `python tools/ledger.py render`; do not edit by hand. | 2026-09-28_alc-v1-mask1 | gate_failed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-mask1-2026-09-28 | 0.820 | 0.888 | no | 2026-09-28T23:54 | | 2026-09-28_alc-v1-noflip | gate_passed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-noflip-2026-09-28 | 0.835 | 0.881 | yes | 2026-09-28T21:30 | | 2026-09-28_alc-v1-overlap | aborted | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | - | - | - | - | 2026-09-28T23:55 | -| 2026-09-29_alc-v1-noflip-mask1 | promoted | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-noflip-mask1-2026-09-29 | 0.827 | 0.894 | yes | 2026-09-29T11:13 | +| 2026-09-29_alc-v1-noflip-mask1 | deployed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-noflip-mask1-2026-09-29 | 0.827 | 0.894 | yes | 2026-09-29T20:47 | | 2026-09-29_v2-noflip-mask1 | exported | dataset/2026-09-29_v2 | models/base/yolo26n-seg.pt | - | - | - | - | 2026-09-29T17:06 | | 2026-09-29_v2-recipeA | gate_failed | dataset/2026-09-29_v2 | models/base/yolo26n-seg.pt | yolo26n-seg-v2-recipeA-2026-09-29 | 0.797 | 0.874 | no | 2026-09-29T17:56 | +| 2026-09-29_v3-noflip-mask1 | exported | dataset/2026-09-29_v3 | models/base/yolo26n-seg.pt | - | - | - | - | 2026-09-29T22:41 | +| 2026-09-29_v3-recipeA | gate_passed | dataset/2026-09-29_v3 | models/base/yolo26n-seg.pt | yolo26n-seg-v3-recipeA-2026-09-29 | 0.831 | 0.881 | yes | 2026-09-29T23:42 | States: exported → queued → training → measured → gate_passed → gate_failed → promoted → deployed (or aborted). @@ -69,6 +71,7 @@ States: exported → queued → training → measured → gate_passed → gate_f - 2026-09-29T10:36:12 · measured · jungfrau@mx-spark-01 - 2026-09-29T10:36:12 · 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.0062, "mask_iou_delta": 0.0249, "mask_score": 0.7352, "mask_score_baseline": 0.7103, "matched_only_iou_delta": 0.0133, "class_f1_delta": {"loop_all": 0.0084, "pin": -0.0167}, "pass": true} - 2026-09-29T11:13:44 · promoted · jungfrau@mx-spark-01 — by decision after the A/B comparison on the unseen frames (gate had passed vs A) +- 2026-09-29T20:47:16 · deployed · jungfrau@mx-spark-01 ## 2026-09-29_v2-noflip-mask1 @@ -80,3 +83,16 @@ States: exported → queued → training → measured → gate_passed → gate_f - 2026-09-29T17:06:19 · training · jungfrau@mx-spark-01 — train_run.py - 2026-09-29T17:56:27 · measured · jungfrau@mx-spark-01 - 2026-09-29T17:56:27 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", "f1_delta": -0.0123, "mask_iou_delta": -0.0039, "mask_score": 0.7298, "mask_score_baseline": 0.7337, "matched_only_iou_delta": -0.0168, "class_f1_delta": {"loop_all": 0.0089, "pin": 0.0021}, "pass": false} + +## 2026-09-29_v3-noflip-mask1 + +- 2026-09-29T22:41:13 · exported · jungfrau@mx-spark-01 — promoted recipe (fliplr 0, mask_ratio 1) on dataset v3: candidate for the beamlines, Spark + +## 2026-09-29_v3-recipeA + +- 2026-09-29T22:41:12 · exported · jungfrau@mx-spark-01 — settings A (fliplr 0.5, mask_ratio 4) on dataset v3: quick signal, gate only, Spark +- 2026-09-29T22:41:13 · training · jungfrau@mx-spark-01 — train_run.py +- 2026-09-29T22:46:24 · training · jungfrau@mx-spark-01 — train_run.py +- 2026-09-29T22:48:37 · training · jungfrau@mx-spark-01 — train_run.py +- 2026-09-29T23:42:37 · measured · jungfrau@mx-spark-01 +- 2026-09-29T23:42:37 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", "f1_delta": 0.0221, "mask_iou_delta": 0.0074, "mask_score": 0.741, "mask_score_baseline": 0.7337, "matched_only_iou_delta": -0.0101, "class_f1_delta": {"loop_all": 0.0446, "pin": 0.0057}, "pass": true}