a model is not measured on the gold frames it pre-labelled itself
CI / ledger-and-tools (push) Successful in 21s
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>
This commit is contained in:
1 parent
0ed13a361c
commit
845bd87bb3
21 files changed
+1515
-680
No files matched your search
@@ -0,0 +1,273 @@
|
||||
{
|
||||
"built": "2026-10-25T02:46:41",
|
||||
"frames": {
|
||||
"tpi_10130": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_10697": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_14689": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_14698": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_14711": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_14715": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16092": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_16223": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16235": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16252": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16321": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16325": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16361": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16747": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16766": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16770": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_16956": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_17889": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_20221": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_21693": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_24512": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_2869": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_31669": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_31928": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_31929": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_32422": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_32690": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_32762": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_33849": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_34038": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_34389": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_36563": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_3943": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_4053": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_44119": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_45649": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_46469": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_48284": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_48572": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_48994": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_49016": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_49039": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_50822": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_51387": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_51699": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_51773": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_52248": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_52402": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_53961": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_5421": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_54266": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_54621": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_55277": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_55303": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55371": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_55383": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55408": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55416": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55565": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55896": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_55912": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55941": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_55958": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_56012": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_56096": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_56104": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_56715": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_56717": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_56840": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57070": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57071": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_57300": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57342": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57654": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57684": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57702": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_57833": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_57991": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_58097": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_58229": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_58417": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_58588": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_58595": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_58842": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59004": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59011": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59080": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_59120": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59182": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59312": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59412": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59496": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59564": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59570": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59868": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_59911": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_59935": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_59988": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_60052": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_60116": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_60129": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_60568": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_60625": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_60637": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_61066": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61069": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61087": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61136": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_61317": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61327": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61334": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61340": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61343": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61344": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61350": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61358": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61361": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61364": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61372": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61374": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61379": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61380": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61381": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61385": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61392": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61411": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61419": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61428": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61430": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61436": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61437": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61439": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61441": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61442": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61443": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61445": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61447": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61449": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61450": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61452": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61457": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_61565": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61572": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61579": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61581": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61594": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61610": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61613": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61618": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61627": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61629": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61633": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61635": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61651": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61653": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61658": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61670": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61686": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61702": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61769": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61834": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61839": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_61865": "yolo26n-seg-alc-v1-noflip-mask1-2026-09-29",
|
||||
"tpi_62017": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62033": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62361": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_62413": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62598": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62617": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62621": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62622": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62623": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62631": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62634": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62640": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62645": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62646": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62649": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62656": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62669": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62678": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62682": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62687": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62692": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62697": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62700": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62703": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62711": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62717": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62718": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62719": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62720": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62739": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62740": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62742": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62745": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62746": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62747": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62749": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62751": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62754": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62755": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62756": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62757": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62758": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62759": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62760": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62761": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62762": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62763": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62764": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62766": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62767": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62768": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62769": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62772": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62773": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62775": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62776": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62779": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_62910": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_62927": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_62928": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_62965": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63041": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63088": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63105": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63202": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63206": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63207": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63223": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63226": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63228": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63234": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63239": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63376": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63389": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63390": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63416": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63417": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63420": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63426": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63434": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63436": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63461": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63463": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63479": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63481": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63484": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63490": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63492": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63516": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63517": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63518": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63520": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63522": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63535": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63540": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63546": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63548": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_63554": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_8285": "yolo26n-seg-v4-noflip-mask1-2026-10-02",
|
||||
"tpi_8378": "yolo26n-seg-v3-noflip-mask1-2026-09-30",
|
||||
"tpi_8507": "yolo26n-seg-overlap-false-2026-04-12",
|
||||
"tpi_8744": "yolo26n-seg-overlap-false-2026-04-12"
|
||||
},
|
||||
"gold_frames": 335,
|
||||
"source": "/home/jungfrau/AareLC_studio/data/pipeline_prod",
|
||||
"with_a_proposal": 265
|
||||
}
|
||||
@@ -96,20 +96,20 @@
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 335,
|
||||
"mounts": 300,
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0022,
|
||||
"lo": -0.0127,
|
||||
"hi": 0.0176,
|
||||
"win": 0.604
|
||||
"delta": 0.0024,
|
||||
"lo": -0.0143,
|
||||
"hi": 0.0204,
|
||||
"win": 0.595
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0099,
|
||||
"lo": -0.0222,
|
||||
"hi": 0.0033,
|
||||
"win": 0.063
|
||||
"delta": 0.0009,
|
||||
"lo": -0.0127,
|
||||
"hi": 0.0145,
|
||||
"win": 0.553
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
"epochs": 400,
|
||||
"patience": 50,
|
||||
"imgsz": 1024,
|
||||
"batch": 8,
|
||||
"batch": 16,
|
||||
"device": "0",
|
||||
"overlap_mask": false,
|
||||
"scale": 0.7,
|
||||
"translate": 0.15,
|
||||
"mosaic": 0.5,
|
||||
"close_mosaic": 10,
|
||||
"fliplr": 0,
|
||||
"fliplr": 0.0,
|
||||
"flipud": 0.3,
|
||||
"shear": 5.0,
|
||||
"perspective": 0.0,
|
||||
@@ -50,20 +50,20 @@
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 335,
|
||||
"mounts": 300,
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0022,
|
||||
"lo": -0.0127,
|
||||
"hi": 0.0176,
|
||||
"win": 0.604
|
||||
"delta": 0.0024,
|
||||
"lo": -0.0143,
|
||||
"hi": 0.0204,
|
||||
"win": 0.595
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0099,
|
||||
"lo": -0.0222,
|
||||
"hi": 0.0033,
|
||||
"win": 0.063
|
||||
"delta": 0.0009,
|
||||
"lo": -0.0127,
|
||||
"hi": 0.0145,
|
||||
"win": 0.553
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
|
||||
@@ -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": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0017,
|
||||
"lo": -0.0137,
|
||||
"hi": 0.0179,
|
||||
"win": 0.592
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0056,
|
||||
"lo": -0.0174,
|
||||
"hi": 0.0056,
|
||||
"win": 0.174
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"model_id": "yolo26n-seg-v5-noflip-mask1-2026-10-25",
|
||||
"family": "yolo26n",
|
||||
"task": "segmentation",
|
||||
"training_date": "2026-10-25",
|
||||
"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.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": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0017,
|
||||
"lo": -0.0137,
|
||||
"hi": 0.0179,
|
||||
"win": 0.592
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0056,
|
||||
"lo": -0.0174,
|
||||
"hi": 0.0056,
|
||||
"win": 0.174
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"per_class": {
|
||||
"loop_all": {
|
||||
"tp": 308,
|
||||
"fp": 19,
|
||||
"fn": 9,
|
||||
"precision": 0.9418960244648318,
|
||||
"recall": 0.9716088328075709,
|
||||
"f1": 0.9565217391304348,
|
||||
"mean_mask_iou": 0.9229619481348076,
|
||||
"n_matched": 308
|
||||
},
|
||||
"pin": {
|
||||
"tp": 214,
|
||||
"fp": 23,
|
||||
"fn": 10,
|
||||
"precision": 0.9029535864978903,
|
||||
"recall": 0.9553571428571429,
|
||||
"f1": 0.9284164859002169,
|
||||
"mean_mask_iou": 0.9392434589975192,
|
||||
"n_matched": 214
|
||||
},
|
||||
"crystal": {
|
||||
"tp": 93,
|
||||
"fp": 61,
|
||||
"fn": 56,
|
||||
"precision": 0.6038961038961039,
|
||||
"recall": 0.6241610738255033,
|
||||
"f1": 0.6138613861386139,
|
||||
"mean_mask_iou": 0.7860551169622239,
|
||||
"n_matched": 93
|
||||
},
|
||||
"loop_face": {
|
||||
"tp": 274,
|
||||
"fp": 52,
|
||||
"fn": 21,
|
||||
"precision": 0.8404907975460123,
|
||||
"recall": 0.9288135593220339,
|
||||
"f1": 0.8824476650563607,
|
||||
"mean_mask_iou": 0.9017649910336784,
|
||||
"n_matched": 274
|
||||
},
|
||||
"ice": {
|
||||
"tp": 5,
|
||||
"fp": 18,
|
||||
"fn": 38,
|
||||
"precision": 0.21739130434782608,
|
||||
"recall": 0.11627906976744186,
|
||||
"f1": 0.15151515151515152,
|
||||
"mean_mask_iou": 0.8077960211591213,
|
||||
"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": 894,
|
||||
"fp": 173,
|
||||
"fn": 135,
|
||||
"precision": 0.837863167760075,
|
||||
"recall": 0.8688046647230321,
|
||||
"f1": 0.8530534351145038,
|
||||
"mean_mask_iou": 0.9054766149636467,
|
||||
"n_matched": 894
|
||||
},
|
||||
"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.0053,
|
||||
"mask_iou_delta": -0.01,
|
||||
"mask_score": 0.7867,
|
||||
"mask_score_baseline": 0.7967,
|
||||
"matched_only_iou_delta": -0.0064,
|
||||
"class_f1_delta": {
|
||||
"loop_all": -0.0061,
|
||||
"pin": -0.0043
|
||||
},
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.006,
|
||||
"lo": -0.0112,
|
||||
"hi": 0.0239,
|
||||
"win": 0.771
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0004,
|
||||
"lo": -0.0133,
|
||||
"hi": 0.0122,
|
||||
"win": 0.494
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"model_id": "yolo26s-seg-v5-s-noflip-mask1-2026-10-25",
|
||||
"family": "yolo26s",
|
||||
"task": "segmentation",
|
||||
"training_date": "2026-10-25",
|
||||
"run": "2026-10-23_v5-s-noflip-mask1",
|
||||
"dataset": "dataset/2026-10-22_v5",
|
||||
"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.0,
|
||||
"flipud": 0.3,
|
||||
"shear": 5.0,
|
||||
"perspective": 0.0,
|
||||
"mask_ratio": 1
|
||||
},
|
||||
"export_formats": [
|
||||
"pt"
|
||||
],
|
||||
"metrics": {
|
||||
"tp": 894,
|
||||
"fp": 173,
|
||||
"fn": 135,
|
||||
"precision": 0.837863167760075,
|
||||
"recall": 0.8688046647230321,
|
||||
"f1": 0.8530534351145038,
|
||||
"mean_mask_iou": 0.9054766149636467,
|
||||
"n_matched": 894
|
||||
},
|
||||
"gate": {
|
||||
"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v4-noflip-mask1-2026-10-02/gold_report.json",
|
||||
"f1_delta": 0.0053,
|
||||
"mask_iou_delta": -0.01,
|
||||
"mask_score": 0.7867,
|
||||
"mask_score_baseline": 0.7967,
|
||||
"matched_only_iou_delta": -0.0064,
|
||||
"class_f1_delta": {
|
||||
"loop_all": -0.0061,
|
||||
"pin": -0.0043
|
||||
},
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.006,
|
||||
"lo": -0.0112,
|
||||
"hi": 0.0239,
|
||||
"win": 0.771
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0004,
|
||||
"lo": -0.0133,
|
||||
"hi": 0.0122,
|
||||
"win": 0.494
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -23,20 +23,20 @@
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 335,
|
||||
"mounts": 300,
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0049,
|
||||
"lo": -0.009,
|
||||
"hi": 0.0203,
|
||||
"win": 0.761
|
||||
"delta": 0.0017,
|
||||
"lo": -0.0137,
|
||||
"hi": 0.0179,
|
||||
"win": 0.592
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0125,
|
||||
"lo": -0.0235,
|
||||
"hi": -0.0014,
|
||||
"win": 0.009
|
||||
"delta": -0.0056,
|
||||
"lo": -0.0174,
|
||||
"hi": 0.0056,
|
||||
"win": 0.174
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
@@ -52,6 +52,6 @@
|
||||
"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"
|
||||
"version": "yolo26n-seg-v5-noflip-mask1-2026-10-25",
|
||||
"measured_at": "2026-10-25T02:47:47"
|
||||
}
|
||||
@@ -16,19 +16,19 @@
|
||||
"translate": 0.15,
|
||||
"mosaic": 0.5,
|
||||
"close_mosaic": 10,
|
||||
"fliplr": 0,
|
||||
"fliplr": 0.0,
|
||||
"flipud": 0.3,
|
||||
"shear": 5.0,
|
||||
"perspective": 0.0,
|
||||
"mask_ratio": 1
|
||||
},
|
||||
"version": "yolo26n-seg-v5-noflip-mask1-2026-10-23",
|
||||
"version": "yolo26n-seg-v5-noflip-mask1-2026-10-25",
|
||||
"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"
|
||||
"measured_at": "2026-10-25T02:47:47"
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
@@ -54,8 +54,26 @@
|
||||
"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}"
|
||||
},
|
||||
{
|
||||
"status": "training",
|
||||
"at": "2026-10-25T02:47:39",
|
||||
"by": "jungfrau@mx-spark-01",
|
||||
"note": "train_run.py"
|
||||
},
|
||||
{
|
||||
"status": "measured",
|
||||
"at": "2026-10-25T02:47:47",
|
||||
"by": "jungfrau@mx-spark-01",
|
||||
"note": ""
|
||||
},
|
||||
{
|
||||
"status": "gate_failed",
|
||||
"at": "2026-10-25T02:47:47",
|
||||
"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\": 285, \"mounts\": 250, \"draws\": 2000, \"f1\": {\"delta\": 0.0017, \"lo\": -0.0137, \"hi\": 0.0179, \"win\": 0.592}, \"mask_score\": {\"delta\": -0.0056, \"lo\": -0.0174, \"hi\": 0.0056, \"win\": 0.174}}, \"pass\": false}"
|
||||
}
|
||||
],
|
||||
"host": "mx-spark-01",
|
||||
"started": "2026-10-22T11:40:13"
|
||||
"started": "2026-10-25T02:47:39"
|
||||
}
|
||||
@@ -23,20 +23,20 @@
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 335,
|
||||
"mounts": 300,
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0022,
|
||||
"lo": -0.0127,
|
||||
"hi": 0.0176,
|
||||
"win": 0.604
|
||||
"delta": 0.0024,
|
||||
"lo": -0.0143,
|
||||
"hi": 0.0204,
|
||||
"win": 0.595
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.0099,
|
||||
"lo": -0.0222,
|
||||
"hi": 0.0033,
|
||||
"win": 0.063
|
||||
"delta": 0.0009,
|
||||
"lo": -0.0127,
|
||||
"hi": 0.0145,
|
||||
"win": 0.553
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
@@ -53,5 +53,5 @@
|
||||
"mAP50-95(M)": 0.62865
|
||||
},
|
||||
"version": "yolo26n-seg-v5-n-1024px-2026-10-25",
|
||||
"measured_at": "2026-10-25T02:13:24"
|
||||
"measured_at": "2026-10-25T02:48:09"
|
||||
}
|
||||
@@ -9,14 +9,14 @@
|
||||
"epochs": 400,
|
||||
"patience": 50,
|
||||
"imgsz": 1024,
|
||||
"batch": 8,
|
||||
"batch": 16,
|
||||
"device": "0",
|
||||
"overlap_mask": false,
|
||||
"scale": 0.7,
|
||||
"translate": 0.15,
|
||||
"mosaic": 0.5,
|
||||
"close_mosaic": 10,
|
||||
"fliplr": 0,
|
||||
"fliplr": 0.0,
|
||||
"flipud": 0.3,
|
||||
"shear": 5.0,
|
||||
"perspective": 0.0,
|
||||
@@ -28,7 +28,7 @@
|
||||
"mean_mask_iou": 0.9045394224676367,
|
||||
"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-25T02:13:24"
|
||||
"measured_at": "2026-10-25T02:48:09"
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
@@ -54,11 +54,29 @@
|
||||
"at": "2026-10-25T02:13:24",
|
||||
"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.0022, \"mask_iou_delta\": -0.0099, \"mask_score\": 0.7867, \"mask_score_baseline\": 0.7967, \"matched_only_iou_delta\": -0.0073, \"class_f1_delta\": {\"loop_all\": -0.0115, \"pin\": 0.0066}, \"pass_point_rule\": false, \"rule\": \"paired bootstrap\", \"bootstrap\": {\"frames\": 335, \"mounts\": 300, \"draws\": 2000, \"f1\": {\"delta\": 0.0022, \"lo\": -0.0127, \"hi\": 0.0176, \"win\": 0.604}, \"mask_score\": {\"delta\": -0.0099, \"lo\": -0.0222, \"hi\": 0.0033, \"win\": 0.063}}, \"pass\": false}"
|
||||
},
|
||||
{
|
||||
"status": "training",
|
||||
"at": "2026-10-25T02:47:59",
|
||||
"by": "jungfrau@mx-spark-01",
|
||||
"note": "train_run.py"
|
||||
},
|
||||
{
|
||||
"status": "measured",
|
||||
"at": "2026-10-25T02:48:09",
|
||||
"by": "jungfrau@mx-spark-01",
|
||||
"note": ""
|
||||
},
|
||||
{
|
||||
"status": "gate_failed",
|
||||
"at": "2026-10-25T02:48:09",
|
||||
"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.0022, \"mask_iou_delta\": -0.0099, \"mask_score\": 0.7867, \"mask_score_baseline\": 0.7967, \"matched_only_iou_delta\": -0.0073, \"class_f1_delta\": {\"loop_all\": -0.0115, \"pin\": 0.0066}, \"pass_point_rule\": false, \"rule\": \"paired bootstrap\", \"bootstrap\": {\"frames\": 285, \"mounts\": 250, \"draws\": 2000, \"f1\": {\"delta\": 0.0024, \"lo\": -0.0143, \"hi\": 0.0204, \"win\": 0.595}, \"mask_score\": {\"delta\": 0.0009, \"lo\": -0.0127, \"hi\": 0.0145, \"win\": 0.553}}, \"pass\": false}"
|
||||
}
|
||||
],
|
||||
"train_args": {
|
||||
"imgsz": 1024
|
||||
},
|
||||
"host": "mx-spark-01",
|
||||
"started": "2026-10-23T18:54:46"
|
||||
"started": "2026-10-25T02:47:59"
|
||||
}
|
||||
@@ -23,20 +23,20 @@
|
||||
"pass_point_rule": false,
|
||||
"rule": "paired bootstrap",
|
||||
"bootstrap": {
|
||||
"frames": 335,
|
||||
"mounts": 300,
|
||||
"frames": 285,
|
||||
"mounts": 250,
|
||||
"draws": 2000,
|
||||
"f1": {
|
||||
"delta": 0.0053,
|
||||
"lo": -0.0099,
|
||||
"hi": 0.0204,
|
||||
"win": 0.753
|
||||
"delta": 0.006,
|
||||
"lo": -0.0112,
|
||||
"hi": 0.0239,
|
||||
"win": 0.771
|
||||
},
|
||||
"mask_score": {
|
||||
"delta": -0.01,
|
||||
"lo": -0.0217,
|
||||
"hi": 0.0014,
|
||||
"win": 0.053
|
||||
"delta": -0.0004,
|
||||
"lo": -0.0133,
|
||||
"hi": 0.0122,
|
||||
"win": 0.494
|
||||
}
|
||||
},
|
||||
"pass": false
|
||||
@@ -52,6 +52,6 @@
|
||||
"mAP50(M)": 0.78928,
|
||||
"mAP50-95(M)": 0.64104
|
||||
},
|
||||
"version": "yolo26s-seg-v5-s-noflip-mask1-2026-10-23",
|
||||
"measured_at": "2026-10-23T18:53:02"
|
||||
"version": "yolo26s-seg-v5-s-noflip-mask1-2026-10-25",
|
||||
"measured_at": "2026-10-25T02:47:58"
|
||||
}
|
||||
@@ -16,19 +16,19 @@
|
||||
"translate": 0.15,
|
||||
"mosaic": 0.5,
|
||||
"close_mosaic": 10,
|
||||
"fliplr": 0,
|
||||
"fliplr": 0.0,
|
||||
"flipud": 0.3,
|
||||
"shear": 5.0,
|
||||
"perspective": 0.0,
|
||||
"mask_ratio": 1
|
||||
},
|
||||
"version": "yolo26s-seg-v5-s-noflip-mask1-2026-10-23",
|
||||
"version": "yolo26s-seg-v5-s-noflip-mask1-2026-10-25",
|
||||
"metrics": {
|
||||
"f1": 0.8530534351145038,
|
||||
"mean_mask_iou": 0.9054766149636467,
|
||||
"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-23T18:53:02"
|
||||
"measured_at": "2026-10-25T02:47:58"
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
@@ -54,8 +54,26 @@
|
||||
"at": "2026-10-23T18:53:02",
|
||||
"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.0053, \"mask_iou_delta\": -0.01, \"mask_score\": 0.7867, \"mask_score_baseline\": 0.7967, \"matched_only_iou_delta\": -0.0064, \"class_f1_delta\": {\"loop_all\": -0.0061, \"pin\": -0.0043}, \"pass_point_rule\": false, \"rule\": \"paired bootstrap\", \"bootstrap\": {\"frames\": 335, \"mounts\": 300, \"draws\": 2000, \"f1\": {\"delta\": 0.0053, \"lo\": -0.0099, \"hi\": 0.0204, \"win\": 0.753}, \"mask_score\": {\"delta\": -0.01, \"lo\": -0.0217, \"hi\": 0.0014, \"win\": 0.053}}, \"pass\": false}"
|
||||
},
|
||||
{
|
||||
"status": "training",
|
||||
"at": "2026-10-25T02:47:48",
|
||||
"by": "jungfrau@mx-spark-01",
|
||||
"note": "train_run.py"
|
||||
},
|
||||
{
|
||||
"status": "measured",
|
||||
"at": "2026-10-25T02:47:58",
|
||||
"by": "jungfrau@mx-spark-01",
|
||||
"note": ""
|
||||
},
|
||||
{
|
||||
"status": "gate_failed",
|
||||
"at": "2026-10-25T02:47:58",
|
||||
"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.0053, \"mask_iou_delta\": -0.01, \"mask_score\": 0.7867, \"mask_score_baseline\": 0.7967, \"matched_only_iou_delta\": -0.0064, \"class_f1_delta\": {\"loop_all\": -0.0061, \"pin\": -0.0043}, \"pass_point_rule\": false, \"rule\": \"paired bootstrap\", \"bootstrap\": {\"frames\": 285, \"mounts\": 250, \"draws\": 2000, \"f1\": {\"delta\": 0.006, \"lo\": -0.0112, \"hi\": 0.0239, \"win\": 0.771}, \"mask_score\": {\"delta\": -0.0004, \"lo\": -0.0133, \"hi\": 0.0122, \"win\": 0.494}}, \"pass\": false}"
|
||||
}
|
||||
],
|
||||
"host": "mx-spark-01",
|
||||
"started": "2026-10-23T03:53:49"
|
||||
"started": "2026-10-25T02:47:48"
|
||||
}
|
||||
+12
-3
@@ -20,10 +20,10 @@ 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 |
|
||||
| 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-25 | 0.853 | 0.906 | no | 2026-10-25T02:47 |
|
||||
| 2026-10-23_v5-m-noflip-mask1 | aborted | dataset/2026-10-22_v5 | models/base/yolo26m-seg.pt | - | - | - | - | 2026-10-23T18:53 |
|
||||
| 2026-10-23_v5-n-1024px | gate_failed | dataset/2026-10-22_v5 | models/base/yolo26n-seg.pt | yolo26n-seg-v5-n-1024px-2026-10-25 | 0.850 | 0.905 | no | 2026-10-25T02:13 |
|
||||
| 2026-10-23_v5-s-noflip-mask1 | gate_failed | dataset/2026-10-22_v5 | models/base/yolo26s-seg.pt | yolo26s-seg-v5-s-noflip-mask1-2026-10-23 | 0.853 | 0.905 | no | 2026-10-23T18:53 |
|
||||
| 2026-10-23_v5-n-1024px | gate_failed | dataset/2026-10-22_v5 | models/base/yolo26n-seg.pt | yolo26n-seg-v5-n-1024px-2026-10-25 | 0.850 | 0.905 | no | 2026-10-25T02:48 |
|
||||
| 2026-10-23_v5-s-noflip-mask1 | gate_failed | dataset/2026-10-22_v5 | models/base/yolo26s-seg.pt | yolo26s-seg-v5-s-noflip-mask1-2026-10-25 | 0.853 | 0.905 | no | 2026-10-25T02:47 |
|
||||
|
||||
States: exported → queued → training → measured → gate_passed → gate_failed → promoted → deployed (or aborted).
|
||||
|
||||
@@ -154,6 +154,9 @@ States: exported → queued → training → measured → gate_passed → gate_f
|
||||
- 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}
|
||||
- 2026-10-25T02:47:39 · training · jungfrau@mx-spark-01 — train_run.py
|
||||
- 2026-10-25T02:47:47 · measured · jungfrau@mx-spark-01
|
||||
- 2026-10-25T02:47:47 · 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": 285, "mounts": 250, "draws": 2000, "f1": {"delta": 0.0017, "lo": -0.0137, "hi": 0.0179, "win": 0.592}, "mask_score": {"delta": -0.0056, "lo": -0.0174, "hi": 0.0056, "win": 0.174}}, "pass": false}
|
||||
|
||||
## 2026-10-23_v5-m-noflip-mask1
|
||||
|
||||
@@ -167,6 +170,9 @@ States: exported → queued → training → measured → gate_passed → gate_f
|
||||
- 2026-10-23T18:54:46 · training · jungfrau@mx-spark-01 — train_run.py
|
||||
- 2026-10-25T02:13:24 · measured · jungfrau@mx-spark-01
|
||||
- 2026-10-25T02:13:24 · 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.0022, "mask_iou_delta": -0.0099, "mask_score": 0.7867, "mask_score_baseline": 0.7967, "matched_only_iou_delta": -0.0073, "class_f1_delta": {"loop_all": -0.0115, "pin": 0.0066}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 335, "mounts": 300, "draws": 2000, "f1": {"delta": 0.0022, "lo": -0.0127, "hi": 0.0176, "win": 0.604}, "mask_score": {"delta": -0.0099, "lo": -0.0222, "hi": 0.0033, "win": 0.063}}, "pass": false}
|
||||
- 2026-10-25T02:47:59 · training · jungfrau@mx-spark-01 — train_run.py
|
||||
- 2026-10-25T02:48:09 · measured · jungfrau@mx-spark-01
|
||||
- 2026-10-25T02:48:09 · 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.0022, "mask_iou_delta": -0.0099, "mask_score": 0.7867, "mask_score_baseline": 0.7967, "matched_only_iou_delta": -0.0073, "class_f1_delta": {"loop_all": -0.0115, "pin": 0.0066}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 285, "mounts": 250, "draws": 2000, "f1": {"delta": 0.0024, "lo": -0.0143, "hi": 0.0204, "win": 0.595}, "mask_score": {"delta": 0.0009, "lo": -0.0127, "hi": 0.0145, "win": 0.553}}, "pass": false}
|
||||
|
||||
## 2026-10-23_v5-s-noflip-mask1
|
||||
|
||||
@@ -174,3 +180,6 @@ States: exported → queued → training → measured → gate_passed → gate_f
|
||||
- 2026-10-23T03:53:49 · training · jungfrau@mx-spark-01 — train_run.py
|
||||
- 2026-10-23T18:53:02 · measured · jungfrau@mx-spark-01
|
||||
- 2026-10-23T18:53:02 · 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.0053, "mask_iou_delta": -0.01, "mask_score": 0.7867, "mask_score_baseline": 0.7967, "matched_only_iou_delta": -0.0064, "class_f1_delta": {"loop_all": -0.0061, "pin": -0.0043}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 335, "mounts": 300, "draws": 2000, "f1": {"delta": 0.0053, "lo": -0.0099, "hi": 0.0204, "win": 0.753}, "mask_score": {"delta": -0.01, "lo": -0.0217, "hi": 0.0014, "win": 0.053}}, "pass": false}
|
||||
- 2026-10-25T02:47:48 · training · jungfrau@mx-spark-01 — train_run.py
|
||||
- 2026-10-25T02:47:58 · measured · jungfrau@mx-spark-01
|
||||
- 2026-10-25T02:47:58 · 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.0053, "mask_iou_delta": -0.01, "mask_score": 0.7867, "mask_score_baseline": 0.7967, "matched_only_iou_delta": -0.0064, "class_f1_delta": {"loop_all": -0.0061, "pin": -0.0043}, "pass_point_rule": false, "rule": "paired bootstrap", "bootstrap": {"frames": 285, "mounts": 250, "draws": 2000, "f1": {"delta": 0.006, "lo": -0.0112, "hi": 0.0239, "win": 0.771}, "mask_score": {"delta": -0.0004, "lo": -0.0133, "hi": 0.0122, "win": 0.494}}, "pass": false}
|
||||
+606
-606
File diff suppressed because it is too large.
Load diff
+17
-2
@@ -9,6 +9,10 @@ Two sets of frames:
|
||||
(``data/gold/unseen_core.json``). It never changes, so the progression of the models over time
|
||||
stays comparable;
|
||||
* **all unseen** frames: the core plus every gold frame added since that no dataset has used.
|
||||
|
||||
A frame a model pre-labelled (``data/gold/prelabel.json``) is unseen by every other model but not
|
||||
by that one: where the reviewer kept a proposed outline, the gold holds the model's own mask. It is
|
||||
left out of that model's measure, and a pair is compared on the frames neither of them touched.
|
||||
It grows with the gold set and is the one to judge a candidate on.
|
||||
|
||||
A model is listed when its predictions on the current gold set exist under
|
||||
@@ -107,10 +111,16 @@ def main(argv: Optional[List[str]] = None) -> int:
|
||||
|
||||
frames: Dict[str, Dict[str, gate_stats.FrameCounts]] = {}
|
||||
label_of: Dict[str, str] = {}
|
||||
prelabel = gate_stats.load_prelabel(gold.parent)
|
||||
own: Dict[str, int] = {}
|
||||
for d in sorted((root / "runs").glob("_measure_*/gold_predictions")):
|
||||
ver = d.parent.name[len("_measure_"):]
|
||||
label = ("beamline " + ver) if ver.startswith(BEAMLINE_PREFIX) else ver2run.get(ver, ver)
|
||||
frames[label] = gate_stats.per_frame(d, gold, stems=unseen)
|
||||
measured = gate_stats.per_frame(d, gold, stems=unseen)
|
||||
# a frame the model pre-labelled holds its own outlines wherever the reviewer kept them:
|
||||
# it is "seen" by that model and leaves its measure (gate_stats.without_own_proposals)
|
||||
frames[label] = gate_stats.without_own_proposals(measured, ver, prelabel)
|
||||
own[label] = len(measured) - len(frames[label])
|
||||
label_of[ver] = label
|
||||
order = sorted(frames, key=lambda k: (not k.startswith("beamline"), k))
|
||||
reps = {k: report(frames[k]) for k in order}
|
||||
@@ -121,8 +131,13 @@ def main(argv: Optional[List[str]] = None) -> int:
|
||||
usable_reps = {k: report({s: f for s, f in frames[k].items() if s in core and s not in bad_light}) for k in order}
|
||||
|
||||
print(f"clean gold frames: {len(unseen)}" + (f" (core {len(core_now)})" if len(unseen) != len(core_now) else ""))
|
||||
if any(own.values()):
|
||||
print("frames a model pre-labelled itself, left out of its own measure: "
|
||||
+ ", ".join(f"{k} {n}" for k, n in own.items() if n))
|
||||
elif not prelabel:
|
||||
print("!! data/gold/prelabel.json is missing (tools/gold_prelabel.py): a model is measured on frames it pre-labelled")
|
||||
table("", reps)
|
||||
short = [k for k in order if reps[k]["dataset"]["gold_images"] < len(unseen)]
|
||||
short = [k for k in order if reps[k]["dataset"]["gold_images"] + own.get(k, 0) < len(unseen)]
|
||||
if short:
|
||||
print(f"!! measured on fewer frames than the current unseen set (re-measure them): {', '.join(short)}")
|
||||
if len(unseen) != len(core_now):
|
||||
|
||||
@@ -33,6 +33,26 @@ def load_groups(gold_root) -> Dict[str, Dict[str, str]]:
|
||||
return {"mount": dict(g.get("mount") or {}), "light": dict(g.get("light") or {}), "excluded": dict(g.get("excluded") or {})}
|
||||
|
||||
|
||||
def load_prelabel(gold_root) -> Dict[str, str]:
|
||||
"""``data/gold/prelabel.json`` (tools/gold_prelabel.py): frame -> version of the model that
|
||||
proposed its labels before a reviewer saw them. Empty when the file is missing."""
|
||||
p = Path(gold_root) / "prelabel.json"
|
||||
if not p.exists():
|
||||
return {}
|
||||
return dict(json.loads(p.read_text(encoding="utf-8")).get("frames") or {})
|
||||
|
||||
|
||||
def without_own_proposals(frames: Dict[str, FrameCounts], version: Optional[str],
|
||||
prelabel: Mapping[str, str]) -> Dict[str, FrameCounts]:
|
||||
"""The frames a model did not pre-label. Where a reviewer kept an outline the model proposed,
|
||||
the gold holds the model's own mask, which overlaps itself perfectly: on the 50 frames v4 had
|
||||
pre-labelled it scored a matched IoU of 0.959 against 0.905 elsewhere, and every other model
|
||||
0.93. Such a frame says nothing about that model and is left out of its measure."""
|
||||
if not version or not prelabel:
|
||||
return frames
|
||||
return {s: f for s, f in frames.items() if prelabel.get(s) != version}
|
||||
|
||||
|
||||
def per_frame(pred_dir, gold_dir, iou_thr: float = 0.5, stems: Optional[Iterable[str]] = None) -> Dict[str, FrameCounts]:
|
||||
"""Per gold frame and class: tp, fp, fn and the summed mask IoU of the matches.
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
"""Which model proposed each gold frame's labels before a reviewer saw them.
|
||||
|
||||
Written to ``data/gold/prelabel.json`` as ``{"frames": {stem: version}}`` from the studio's
|
||||
batch annotations (``models.yolo`` of the frame's proposal). A frame with no batch annotation
|
||||
(labelled before the loop) is absent: no model is excluded on it. The comparison and the gate
|
||||
leave a frame out of the measure of the model that pre-labelled it (gate_stats.without_own_proposals).
|
||||
|
||||
python tools/gold_prelabel.py [--studio ~/AareLC_studio/data/pipeline_prod]
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
from collections import Counter
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
HERE = Path(__file__).resolve().parent
|
||||
|
||||
|
||||
def version_of(weights_name: str) -> str:
|
||||
"""``best_yolo26n-seg-overlap-false_2026-04-12.pt`` and ``yolo26n-seg-v4-noflip-mask1-2026-10-02.pt``
|
||||
both name a registry version."""
|
||||
v = Path(weights_name).name
|
||||
v = v[:-3] if v.endswith(".pt") else v
|
||||
v = v[len("best_"):] if v.startswith("best_") else v
|
||||
return re.sub(r"_(\d{4}-\d{2}-\d{2})$", r"-\1", v)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
ap.add_argument("--root", default=str(HERE.parent))
|
||||
ap.add_argument("--studio", default=str(Path.home() / "AareLC_studio" / "data" / "pipeline_prod"))
|
||||
args = ap.parse_args()
|
||||
root, studio = Path(args.root).expanduser(), Path(args.studio).expanduser()
|
||||
gold = root / "data" / "gold" / "labels"
|
||||
stems = sorted(p.stem for p in gold.glob("*.txt"))
|
||||
wanted = {}
|
||||
for s in stems:
|
||||
m = re.search(r"tpi_(\d+)", s)
|
||||
if m:
|
||||
wanted.setdefault("tpi_" + m.group(1), s)
|
||||
frames, by_version, by_batch = {}, Counter(), Counter()
|
||||
for f in sorted(studio.glob("20*/annotations/tpi_*.json")):
|
||||
key = f.stem
|
||||
if key not in wanted:
|
||||
continue
|
||||
try:
|
||||
a = json.loads(f.read_text(encoding="utf-8"))
|
||||
except (OSError, ValueError):
|
||||
continue
|
||||
w = (a.get("models") or {}).get("yolo")
|
||||
if not w:
|
||||
continue
|
||||
v = version_of(str(w))
|
||||
frames[wanted[key]] = v
|
||||
by_version[v] += 1
|
||||
by_batch[f.parent.parent.name] += 1
|
||||
out = {"built": datetime.now().isoformat(timespec="seconds"), "source": str(studio),
|
||||
"gold_frames": len(stems), "with_a_proposal": len(frames), "frames": frames}
|
||||
dest = root / "data" / "gold" / "prelabel.json"
|
||||
dest.write_text(json.dumps(out, indent=1, sort_keys=True) + "\n", encoding="utf-8")
|
||||
print(f"{len(frames)} of {len(stems)} gold frames were pre-labelled by a model -> {dest}")
|
||||
for v, n in by_version.most_common():
|
||||
print(f" {n:4} {v}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -237,6 +237,17 @@ def paired_with_baseline(run_dir: Path, baseline: Optional[Path]) -> Optional[Di
|
||||
gold = ROOT / "data" / "gold" / "labels"
|
||||
cand = gate_stats.per_frame(run_dir / "gold_predictions", gold)
|
||||
base = gate_stats.per_frame(base_pred, gold)
|
||||
# neither model is judged on frames it pre-labelled: the gold there holds its own outlines
|
||||
prelabel = gate_stats.load_prelabel(gold.parent)
|
||||
cand_version = (json.loads((run_dir / "run.json").read_text(encoding="utf-8")).get("version") if (run_dir / "run.json").exists() else None)
|
||||
base_version = Path(baseline).parent.name
|
||||
if base_version.startswith("_measure_"):
|
||||
base_version = base_version[len("_measure_"):]
|
||||
cand, base = (gate_stats.without_own_proposals(cand, cand_version, prelabel),
|
||||
gate_stats.without_own_proposals(base, base_version, prelabel))
|
||||
own = sum(1 for s in prelabel if prelabel[s] in (cand_version, base_version))
|
||||
if own:
|
||||
print(f"gate: {own} gold frames were pre-labelled by one of the two models and are left out of the pairing")
|
||||
missing = len(cand) - len(set(cand) & set(base))
|
||||
if missing:
|
||||
print(f"gate: the baseline has no prediction for {missing} gold frames (gold grew since it was measured); pairing on the rest")
|
||||
|
||||
Reference in new issue
Block a user