diff --git a/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/gold_report.json b/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/gold_report.json new file mode 100644 index 00000000..8ff8e76e --- /dev/null +++ b/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/gold_report.json @@ -0,0 +1,108 @@ +{ + "per_class": { + "loop_all": { + "tp": 184, + "fp": 16, + "fn": 5, + "precision": 0.92, + "recall": 0.9735449735449735, + "f1": 0.9460154241645244, + "mean_mask_iou": 0.9104356318325801, + "n_matched": 184 + }, + "pin": { + "tp": 79, + "fp": 11, + "fn": 8, + "precision": 0.8777777777777778, + "recall": 0.9080459770114943, + "f1": 0.8926553672316384, + "mean_mask_iou": 0.9139989863322003, + "n_matched": 79 + }, + "crystal": { + "tp": 104, + "fp": 58, + "fn": 63, + "precision": 0.6419753086419753, + "recall": 0.6227544910179641, + "f1": 0.6322188449848024, + "mean_mask_iou": 0.7683694649440311, + "n_matched": 104 + }, + "loop_face": { + "tp": 156, + "fp": 43, + "fn": 25, + "precision": 0.7839195979899497, + "recall": 0.861878453038674, + "f1": 0.8210526315789475, + "mean_mask_iou": 0.8823672026709337, + "n_matched": 156 + }, + "ice": { + "tp": 2, + "fp": 3, + "fn": 45, + "precision": 0.4, + "recall": 0.0425531914893617, + "f1": 0.07692307692307691, + "mean_mask_iou": 0.8628987026452706, + "n_matched": 2 + } + }, + "overall": { + "tp": 525, + "fp": 131, + "fn": 146, + "precision": 0.8003048780487805, + "recall": 0.7824143070044709, + "f1": 0.7912584777694047, + "mean_mask_iou": 0.8743077743877599, + "n_matched": 525 + }, + "dataset": { + "gold_images": 288, + "pred_images": 288, + "missing_predictions": 0, + "iou_threshold": 0.5, + "ignored_objects": 242 + }, + "environment": { + "host": "mx-spark-01", + "ultralytics": "8.4.160", + "torch": "2.14.0+cu130" + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json", + "f1_delta": -0.0018, + "mask_iou_delta": -0.0071, + "mask_score": 0.6841, + "mask_score_baseline": 0.6912, + "matched_only_iou_delta": -0.0024, + "class_f1_delta": { + "loop_all": 0.0103, + "pin": -0.0124 + }, + "pass_point_rule": false, + "rule": "paired bootstrap", + "bootstrap": { + "frames": 288, + "mounts": 260, + "draws": 2000, + "f1": { + "delta": -0.0018, + "lo": -0.0234, + "hi": 0.0205, + "win": 0.422 + }, + "mask_score": { + "delta": -0.0071, + "lo": -0.0228, + "hi": 0.0075, + "win": 0.172 + } + }, + "pass": false + } +} diff --git a/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/metadata.json b/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/metadata.json new file mode 100644 index 00000000..9f680a26 --- /dev/null +++ b/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/metadata.json @@ -0,0 +1,71 @@ +{ + "model_id": "yolo26s-seg-v6-s-noflip-mask1-2026-10-31", + "family": "yolo26s", + "task": "segmentation", + "training_date": "2026-10-31", + "run": "2026-10-31_v6-s-noflip-mask1", + "dataset": "dataset/2026-10-30_v6", + "base_weights": "models/base/yolo26s-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, + "flipud": 0.3, + "shear": 5.0, + "perspective": 0.0, + "mask_ratio": 1 + }, + "export_formats": [ + "pt" + ], + "metrics": { + "tp": 525, + "fp": 131, + "fn": 146, + "precision": 0.8003048780487805, + "recall": 0.7824143070044709, + "f1": 0.7912584777694047, + "mean_mask_iou": 0.8743077743877599, + "n_matched": 525 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json", + "f1_delta": -0.0018, + "mask_iou_delta": -0.0071, + "mask_score": 0.6841, + "mask_score_baseline": 0.6912, + "matched_only_iou_delta": -0.0024, + "class_f1_delta": { + "loop_all": 0.0103, + "pin": -0.0124 + }, + "pass_point_rule": false, + "rule": "paired bootstrap", + "bootstrap": { + "frames": 288, + "mounts": 260, + "draws": 2000, + "f1": { + "delta": -0.0018, + "lo": -0.0234, + "hi": 0.0205, + "win": 0.422 + }, + "mask_score": { + "delta": -0.0071, + "lo": -0.0228, + "hi": 0.0075, + "win": 0.172 + } + }, + "pass": false + } +} diff --git a/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/weights.pt b/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/weights.pt new file mode 100644 index 00000000..20b5c5d9 --- /dev/null +++ b/models/registry/yolo26s-seg-v6-s-noflip-mask1-2026-10-31/weights.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5092b1d0034f88dd4dd57e7ca87b29dc505c3a9fc5e3e3d8557e91bbc910adc +size 23378525 diff --git a/runs/2026-10-31_v6-s-noflip-mask1/latency.json b/runs/2026-10-31_v6-s-noflip-mask1/latency.json new file mode 100644 index 00000000..116e38f2 --- /dev/null +++ b/runs/2026-10-31_v6-s-noflip-mask1/latency.json @@ -0,0 +1 @@ +{"weights": "runs/2026-10-31_v6-s-noflip-mask1/ultralytics/train/weights/best.pt", "frames": 150, "imgsz": 640, "infer_scale": 0.5, "half": true, "ms_median": 4.88, "ms_p90": 5.02, "ms_max": 8.18, "fps_median": 205.1, "device": "0", "backend": "pytorch", "gpu": "NVIDIA GB10", "ultralytics": "8.4.160", "torch": "2.14.0+cu130"} diff --git a/runs/2026-10-31_v6-s-noflip-mask1/metrics.json b/runs/2026-10-31_v6-s-noflip-mask1/metrics.json new file mode 100644 index 00000000..60b518e6 --- /dev/null +++ b/runs/2026-10-31_v6-s-noflip-mask1/metrics.json @@ -0,0 +1,57 @@ +{ + "overall": { + "tp": 525, + "fp": 131, + "fn": 146, + "precision": 0.8003048780487805, + "recall": 0.7824143070044709, + "f1": 0.7912584777694047, + "mean_mask_iou": 0.8743077743877599, + "n_matched": 525 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json", + "f1_delta": -0.0018, + "mask_iou_delta": -0.0071, + "mask_score": 0.6841, + "mask_score_baseline": 0.6912, + "matched_only_iou_delta": -0.0024, + "class_f1_delta": { + "loop_all": 0.0103, + "pin": -0.0124 + }, + "pass_point_rule": false, + "rule": "paired bootstrap", + "bootstrap": { + "frames": 288, + "mounts": 260, + "draws": 2000, + "f1": { + "delta": -0.0018, + "lo": -0.0234, + "hi": 0.0205, + "win": 0.422 + }, + "mask_score": { + "delta": -0.0071, + "lo": -0.0228, + "hi": 0.0075, + "win": 0.172 + } + }, + "pass": false + }, + "training": { + "epochs_run": 157, + "precision(B)": 0.74827, + "recall(B)": 0.73232, + "mAP50(B)": 0.7509, + "mAP50-95(B)": 0.59359, + "precision(M)": 0.72586, + "recall(M)": 0.73897, + "mAP50(M)": 0.74424, + "mAP50-95(M)": 0.57663 + }, + "version": "yolo26s-seg-v6-s-noflip-mask1-2026-10-31", + "measured_at": "2026-10-31T12:29:06" +} diff --git a/runs/2026-10-31_v6-s-noflip-mask1/run.json b/runs/2026-10-31_v6-s-noflip-mask1/run.json index 01651096..d9cd79d5 100644 --- a/runs/2026-10-31_v6-s-noflip-mask1/run.json +++ b/runs/2026-10-31_v6-s-noflip-mask1/run.json @@ -2,18 +2,60 @@ "id": "2026-10-31_v6-s-noflip-mask1", "dataset": "dataset/2026-10-30_v6", "base_weights": "models/base/yolo26s-seg.pt", - "status": "exported", + "status": "gate_failed", "created": "2026-10-31T02:12:23", "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, + "flipud": 0.3, + "shear": 5.0, + "perspective": 0.0, + "mask_ratio": 1 + }, + "version": "yolo26s-seg-v6-s-noflip-mask1-2026-10-31", + "metrics": { + "f1": 0.7912584777694047, + "mean_mask_iou": 0.8743077743877599, + "gate_pass": false, + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json", + "measured_at": "2026-10-31T12:29:06" + }, "history": [ { "status": "exported", "at": "2026-10-31T02:12:23", "by": "jungfrau@mx-spark-01", "note": "promoted recipe (fliplr 0, mask_ratio 1) with yolo26s on dataset v6: gate only until its beamline speed is known, Spark" + }, + { + "status": "training", + "at": "2026-10-31T02:12:23", + "by": "jungfrau@mx-spark-01", + "note": "train_run.py" + }, + { + "status": "measured", + "at": "2026-10-31T12:29:06", + "by": "jungfrau@mx-spark-01", + "note": "" + }, + { + "status": "gate_failed", + "at": "2026-10-31T12:29:06", + "by": "jungfrau@mx-spark-01", + "note": "{\"baseline\": \"/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json\", \"f1_delta\": -0.0018, \"mask_iou_delta\": -0.0071, \"mask_score\": 0.6841, \"mask_score_baseline\": 0.6912, \"matched_only_iou_delta\": -0.0024, \"class_f1_delta\": {\"loop_all\": 0.0103, \"pin\": -0.0124}, \"pass_point_rule\": false, \"rule\": \"paired bootstrap\", \"bootstrap\": {\"frames\": 288, \"mounts\": 260, \"draws\": 2000, \"f1\": {\"delta\": -0.0018, \"lo\": -0.0234, \"hi\": 0.0205, \"win\": 0.422}, \"mask_score\": {\"delta\": -0.0071, \"lo\": -0.0228, \"hi\": 0.0075, \"win\": 0.172}}, \"pass\": false}" } - ] + ], + "host": "mx-spark-01", + "started": "2026-10-31T02:12:23" } diff --git a/runs/README.md b/runs/README.md index 2285699f..11b87403 100644 --- a/runs/README.md +++ b/runs/README.md @@ -28,6 +28,7 @@ Generated by `python tools/ledger.py render`; do not edit by hand. | 2026-10-25_v5-warm | gate_failed | dataset/2026-10-22_v5 | models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/weights.pt | weights-seg-v5-warm-2026-10-26 | 0.757 | 0.861 | no | 2026-10-26T01:43 | | 2026-10-26_v5h-noflip-mask1 | gate_failed | dataset/2026-10-26_v5h | models/base/yolo26n-seg.pt | yolo26n-seg-v5h-noflip-mask1-2026-10-26 | 0.716 | 0.866 | no | 2026-10-26T09:16 | | 2026-10-30_v6-noflip-mask1 | gate_failed | dataset/2026-10-30_v6 | models/base/yolo26n-seg.pt | yolo26n-seg-v6-noflip-mask1-2026-10-31 | 0.775 | 0.873 | no | 2026-10-31T02:12 | +| 2026-10-31_v6-s-noflip-mask1 | gate_failed | dataset/2026-10-30_v6 | models/base/yolo26s-seg.pt | yolo26s-seg-v6-s-noflip-mask1-2026-10-31 | 0.791 | 0.874 | no | 2026-10-31T12:29 | States: exported → queued → training → measured → gate_passed → gate_failed → promoted → deployed (or aborted). @@ -229,3 +230,10 @@ States: exported → queued → training → measured → gate_passed → gate_f - 2026-10-30T16:52:13 · training · jungfrau@mx-spark-01 — train_run.py - 2026-10-31T02:12:12 · measured · jungfrau@mx-spark-01 - 2026-10-31T02:12:12 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json", "f1_delta": -0.0179, "mask_iou_delta": -0.0252, "mask_score": 0.666, "mask_score_baseline": 0.6912, "matched_only_iou_delta": -0.0039, "class_f1_delta": {"loop_all": -0.0003, "pin": -0.0321}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 288, "mounts": 260, "draws": 2000, "f1": {"delta": -0.0179, "lo": -0.0412, "hi": 0.0051, "win": 0.066}, "mask_score": {"delta": -0.0252, "lo": -0.043, "hi": -0.0077, "win": 0.002}}, "pass": false} + +## 2026-10-31_v6-s-noflip-mask1 + +- 2026-10-31T02:12:23 · exported · jungfrau@mx-spark-01 — promoted recipe (fliplr 0, mask_ratio 1) with yolo26s on dataset v6: gate only until its beamline speed is known, Spark +- 2026-10-31T02:12:23 · training · jungfrau@mx-spark-01 — train_run.py +- 2026-10-31T12:29:06 · measured · jungfrau@mx-spark-01 +- 2026-10-31T12:29:06 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json", "f1_delta": -0.0018, "mask_iou_delta": -0.0071, "mask_score": 0.6841, "mask_score_baseline": 0.6912, "matched_only_iou_delta": -0.0024, "class_f1_delta": {"loop_all": 0.0103, "pin": -0.0124}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 288, "mounts": 260, "draws": 2000, "f1": {"delta": -0.0018, "lo": -0.0234, "hi": 0.0205, "win": 0.422}, "mask_score": {"delta": -0.0071, "lo": -0.0228, "hi": 0.0075, "win": 0.172}}, "pass": false}