diff --git a/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/gold_report.json b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/gold_report.json new file mode 100644 index 0000000..0123cde --- /dev/null +++ b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/gold_report.json @@ -0,0 +1,117 @@ +{ + "per_class": { + "loop_all": { + "tp": 309, + "fp": 25, + "fn": 8, + "precision": 0.9251497005988024, + "recall": 0.9747634069400631, + "f1": 0.9493087557603687, + "mean_mask_iou": 0.9252735800942133, + "n_matched": 309 + }, + "pin": { + "tp": 214, + "fp": 15, + "fn": 10, + "precision": 0.9344978165938864, + "recall": 0.9553571428571429, + "f1": 0.944812362030905, + "mean_mask_iou": 0.9373156284625324, + "n_matched": 214 + }, + "crystal": { + "tp": 96, + "fp": 67, + "fn": 53, + "precision": 0.588957055214724, + "recall": 0.6442953020134228, + "f1": 0.6153846153846153, + "mean_mask_iou": 0.7870228886885559, + "n_matched": 96 + }, + "loop_face": { + "tp": 269, + "fp": 53, + "fn": 26, + "precision": 0.8354037267080745, + "recall": 0.911864406779661, + "f1": 0.8719611021069691, + "mean_mask_iou": 0.9008181510928498, + "n_matched": 269 + }, + "ice": { + "tp": 3, + "fp": 10, + "fn": 40, + "precision": 0.23076923076923078, + "recall": 0.06976744186046512, + "f1": 0.10714285714285714, + "mean_mask_iou": 0.8444813717997576, + "n_matched": 3 + }, + "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": 891, + "fp": 170, + "fn": 138, + "precision": 0.8397737983034873, + "recall": 0.8658892128279884, + "f1": 0.8526315789473684, + "mean_mask_iou": 0.9056148202172515, + "n_matched": 891 + }, + "dataset": { + "gold_images": 335, + "pred_images": 335, + "missing_predictions": 0, + "iou_threshold": 0.5 + }, + "environment": { + "host": "mx-spark-01", + "ultralytics": "8.4.160", + "torch": "2.14.0+cu130" + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json", + "f1_delta": 0.0049, + "mask_iou_delta": -0.0125, + "mask_score": 0.7842, + "mask_score_baseline": 0.7967, + "matched_only_iou_delta": -0.0063, + "class_f1_delta": { + "loop_all": -0.0133, + "pin": 0.0121 + }, + "pass_point_rule": false, + "rule": "paired bootstrap", + "bootstrap": { + "frames": 335, + "mounts": 300, + "draws": 2000, + "f1": { + "delta": 0.0049, + "lo": -0.009, + "hi": 0.0203, + "win": 0.761 + }, + "mask_score": { + "delta": -0.0125, + "lo": -0.0235, + "hi": -0.0014, + "win": 0.009 + } + }, + "pass": false + } +} diff --git a/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/metadata.json b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/metadata.json new file mode 100644 index 0000000..a2ed0a5 --- /dev/null +++ b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/metadata.json @@ -0,0 +1,71 @@ +{ + "model_id": "yolo26n-seg-v5-noflip-mask1-2026-10-23", + "family": "yolo26n", + "task": "segmentation", + "training_date": "2026-10-23", + "run": "2026-10-22_v5-noflip-mask1", + "dataset": "dataset/2026-10-22_v5", + "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, + "flipud": 0.3, + "shear": 5.0, + "perspective": 0.0, + "mask_ratio": 1 + }, + "export_formats": [ + "pt" + ], + "metrics": { + "tp": 891, + "fp": 170, + "fn": 138, + "precision": 0.8397737983034873, + "recall": 0.8658892128279884, + "f1": 0.8526315789473684, + "mean_mask_iou": 0.9056148202172515, + "n_matched": 891 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json", + "f1_delta": 0.0049, + "mask_iou_delta": -0.0125, + "mask_score": 0.7842, + "mask_score_baseline": 0.7967, + "matched_only_iou_delta": -0.0063, + "class_f1_delta": { + "loop_all": -0.0133, + "pin": 0.0121 + }, + "pass_point_rule": false, + "rule": "paired bootstrap", + "bootstrap": { + "frames": 335, + "mounts": 300, + "draws": 2000, + "f1": { + "delta": 0.0049, + "lo": -0.009, + "hi": 0.0203, + "win": 0.761 + }, + "mask_score": { + "delta": -0.0125, + "lo": -0.0235, + "hi": -0.0014, + "win": 0.009 + } + }, + "pass": false + } +} diff --git a/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/weights.pt b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/weights.pt new file mode 100644 index 0000000..8ea476e --- /dev/null +++ b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-23/weights.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daa3e0317ab40006016d33ce3a02edda45d494eec48c31ebd94d316c6c01011a +size 6606749 diff --git a/runs/2026-10-22_v5-noflip-mask1/latency.json b/runs/2026-10-22_v5-noflip-mask1/latency.json new file mode 100644 index 0000000..3a0f4e4 --- /dev/null +++ b/runs/2026-10-22_v5-noflip-mask1/latency.json @@ -0,0 +1 @@ +{"weights": "runs/2026-10-22_v5-noflip-mask1/ultralytics/train/weights/best.pt", "frames": 150, "imgsz": 640, "infer_scale": 0.5, "half": true, "ms_median": 4.32, "ms_p90": 4.42, "ms_max": 7.05, "fps_median": 231.6, "device": "0", "backend": "pytorch", "gpu": "NVIDIA GB10", "ultralytics": "8.4.160", "torch": "2.14.0+cu130"} diff --git a/runs/2026-10-22_v5-noflip-mask1/metrics.json b/runs/2026-10-22_v5-noflip-mask1/metrics.json new file mode 100644 index 0000000..2999e71 --- /dev/null +++ b/runs/2026-10-22_v5-noflip-mask1/metrics.json @@ -0,0 +1,57 @@ +{ + "overall": { + "tp": 891, + "fp": 170, + "fn": 138, + "precision": 0.8397737983034873, + "recall": 0.8658892128279884, + "f1": 0.8526315789473684, + "mean_mask_iou": 0.9056148202172515, + "n_matched": 891 + }, + "gate": { + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json", + "f1_delta": 0.0049, + "mask_iou_delta": -0.0125, + "mask_score": 0.7842, + "mask_score_baseline": 0.7967, + "matched_only_iou_delta": -0.0063, + "class_f1_delta": { + "loop_all": -0.0133, + "pin": 0.0121 + }, + "pass_point_rule": false, + "rule": "paired bootstrap", + "bootstrap": { + "frames": 335, + "mounts": 300, + "draws": 2000, + "f1": { + "delta": 0.0049, + "lo": -0.009, + "hi": 0.0203, + "win": 0.761 + }, + "mask_score": { + "delta": -0.0125, + "lo": -0.0235, + "hi": -0.0014, + "win": 0.009 + } + }, + "pass": false + }, + "training": { + "epochs_run": 295, + "precision(B)": 0.76685, + "recall(B)": 0.71781, + "mAP50(B)": 0.75711, + "mAP50-95(B)": 0.62861, + "precision(M)": 0.75832, + "recall(M)": 0.72382, + "mAP50(M)": 0.76038, + "mAP50-95(M)": 0.60896 + }, + "version": "yolo26n-seg-v5-noflip-mask1-2026-10-23", + "measured_at": "2026-10-23T03:53:38" +} diff --git a/runs/2026-10-22_v5-noflip-mask1/run.json b/runs/2026-10-22_v5-noflip-mask1/run.json index ab21aaf..6274ce0 100644 --- a/runs/2026-10-22_v5-noflip-mask1/run.json +++ b/runs/2026-10-22_v5-noflip-mask1/run.json @@ -2,18 +2,60 @@ "id": "2026-10-22_v5-noflip-mask1", "dataset": "dataset/2026-10-22_v5", "base_weights": "models/base/yolo26n-seg.pt", - "status": "exported", + "status": "gate_failed", "created": "2026-10-22T11:40:13", "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": "yolo26n-seg-v5-noflip-mask1-2026-10-23", + "metrics": { + "f1": 0.8526315789473684, + "mean_mask_iou": 0.9056148202172515, + "gate_pass": false, + "baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json", + "measured_at": "2026-10-23T03:53:38" + }, "history": [ { "status": "exported", "at": "2026-10-22T11:40:13", "by": "jungfrau@mx-spark-01", "note": "promoted recipe (fliplr 0, mask_ratio 1) on dataset v5: candidate for the beamlines, Spark" + }, + { + "status": "training", + "at": "2026-10-22T11:40:13", + "by": "jungfrau@mx-spark-01", + "note": "train_run.py" + }, + { + "status": "measured", + "at": "2026-10-23T03:53:38", + "by": "jungfrau@mx-spark-01", + "note": "" + }, + { + "status": "gate_failed", + "at": "2026-10-23T03:53:38", + "by": "jungfrau@mx-spark-01", + "note": "{\"baseline\": \"/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json\", \"f1_delta\": 0.0049, \"mask_iou_delta\": -0.0125, \"mask_score\": 0.7842, \"mask_score_baseline\": 0.7967, \"matched_only_iou_delta\": -0.0063, \"class_f1_delta\": {\"loop_all\": -0.0133, \"pin\": 0.0121}, \"pass_point_rule\": false, \"rule\": \"paired bootstrap\", \"bootstrap\": {\"frames\": 335, \"mounts\": 300, \"draws\": 2000, \"f1\": {\"delta\": 0.0049, \"lo\": -0.009, \"hi\": 0.0203, \"win\": 0.761}, \"mask_score\": {\"delta\": -0.0125, \"lo\": -0.0235, \"hi\": -0.0014, \"win\": 0.009}}, \"pass\": false}" } - ] + ], + "host": "mx-spark-01", + "started": "2026-10-22T11:40:13" } diff --git a/runs/README.md b/runs/README.md index 7b9dc8d..5732779 100644 --- a/runs/README.md +++ b/runs/README.md @@ -20,6 +20,7 @@ Generated by `python tools/ledger.py render`; do not edit by hand. | 2026-09-30_v3-s-640px | gate_passed | dataset/2026-09-29_v3 | models/base/yolo26s-seg.pt | yolo26s-seg-v3-s-640px-2026-10-01 | 0.861 | 0.886 | yes | 2026-10-02T13:29 | | 2026-10-01_v4-noflip-mask1 | promoted | dataset/2026-10-01_v4 | models/base/yolo26n-seg.pt | yolo26n-seg-v4-noflip-mask1-2026-10-02 | 0.852 | 0.891 | yes | 2026-10-02T13:25 | | 2026-10-01_v4-recipeA | gate_failed | dataset/2026-10-01_v4 | models/base/yolo26n-seg.pt | yolo26n-seg-v4-recipeA-2026-10-02 | 0.832 | 0.884 | no | 2026-10-02T04:12 | +| 2026-10-22_v5-noflip-mask1 | gate_failed | dataset/2026-10-22_v5 | models/base/yolo26n-seg.pt | yolo26n-seg-v5-noflip-mask1-2026-10-23 | 0.853 | 0.906 | no | 2026-10-23T03:53 | States: exported → queued → training → measured → gate_passed → gate_failed → promoted → deployed (or aborted). @@ -143,3 +144,10 @@ States: exported → queued → training → measured → gate_passed → gate_f - 2026-10-02T02:05:55 · training · jungfrau@mx-spark-01 — train_run.py - 2026-10-02T04:12:20 · measured · jungfrau@mx-spark-01 - 2026-10-02T04:12:20 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v3-noflip-mask1-2026-09-30/gold_report.json", "f1_delta": -0.0057, "mask_iou_delta": -0.0083, "mask_score": 0.7464, "mask_score_baseline": 0.7547, "matched_only_iou_delta": -0.0031, "class_f1_delta": {"loop_all": 0.0095, "pin": -0.0036}, "pass": false} + +## 2026-10-22_v5-noflip-mask1 + +- 2026-10-22T11:40:13 · exported · jungfrau@mx-spark-01 — promoted recipe (fliplr 0, mask_ratio 1) on dataset v5: candidate for the beamlines, Spark +- 2026-10-22T11:40:13 · training · jungfrau@mx-spark-01 — train_run.py +- 2026-10-23T03:53:38 · measured · jungfrau@mx-spark-01 +- 2026-10-23T03:53:38 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json", "f1_delta": 0.0049, "mask_iou_delta": -0.0125, "mask_score": 0.7842, "mask_score_baseline": 0.7967, "matched_only_iou_delta": -0.0063, "class_f1_delta": {"loop_all": -0.0133, "pin": 0.0121}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 335, "mounts": 300, "draws": 2000, "f1": {"delta": 0.0049, "lo": -0.009, "hi": 0.0203, "win": 0.761}, "mask_score": {"delta": -0.0125, "lo": -0.0235, "hi": -0.0014, "win": 0.009}}, "pass": false}