diff --git a/data/gold/prelabel.json b/data/gold/prelabel.json new file mode 100644 index 0000000..9f6e29c --- /dev/null +++ b/data/gold/prelabel.json @@ -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 +} diff --git a/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/gold_report.json b/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/gold_report.json index dd4d917..9c7cb70 100644 --- a/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/gold_report.json +++ b/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/gold_report.json @@ -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 diff --git a/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/metadata.json b/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/metadata.json index c95c277..246492d 100644 --- a/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/metadata.json +++ b/models/registry/yolo26n-seg-v5-n-1024px-2026-10-25/metadata.json @@ -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 diff --git a/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/gold_report.json b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/gold_report.json new file mode 100644 index 0000000..16a779c --- /dev/null +++ b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/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": 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 + } +} diff --git a/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/metadata.json b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/metadata.json new file mode 100644 index 0000000..ad1b3ee --- /dev/null +++ b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/metadata.json @@ -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 + } +} diff --git a/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/weights.pt b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/weights.pt new file mode 100644 index 0000000..8ea476e --- /dev/null +++ b/models/registry/yolo26n-seg-v5-noflip-mask1-2026-10-25/weights.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daa3e0317ab40006016d33ce3a02edda45d494eec48c31ebd94d316c6c01011a +size 6606749 diff --git a/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json b/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json new file mode 100644 index 0000000..bcabf9d --- /dev/null +++ b/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/gold_report.json @@ -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 + } +} diff --git a/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/metadata.json b/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/metadata.json new file mode 100644 index 0000000..583db8b --- /dev/null +++ b/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/metadata.json @@ -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 + } +} diff --git a/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/weights.pt b/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/weights.pt new file mode 100644 index 0000000..78a849c --- /dev/null +++ b/models/registry/yolo26s-seg-v5-s-noflip-mask1-2026-10-25/weights.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d311d4814e9020d72890762136c0abf60e54834f3684f8fb6747f20a2631d93d +size 23397149 diff --git a/runs/2026-10-22_v5-noflip-mask1/metrics.json b/runs/2026-10-22_v5-noflip-mask1/metrics.json index 2999e71..7e82884 100644 --- a/runs/2026-10-22_v5-noflip-mask1/metrics.json +++ b/runs/2026-10-22_v5-noflip-mask1/metrics.json @@ -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" } diff --git a/runs/2026-10-22_v5-noflip-mask1/run.json b/runs/2026-10-22_v5-noflip-mask1/run.json index 6274ce0..3020e62 100644 --- a/runs/2026-10-22_v5-noflip-mask1/run.json +++ b/runs/2026-10-22_v5-noflip-mask1/run.json @@ -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" } diff --git a/runs/2026-10-23_v5-n-1024px/metrics.json b/runs/2026-10-23_v5-n-1024px/metrics.json index 494cc72..14b52e3 100644 --- a/runs/2026-10-23_v5-n-1024px/metrics.json +++ b/runs/2026-10-23_v5-n-1024px/metrics.json @@ -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" } diff --git a/runs/2026-10-23_v5-n-1024px/run.json b/runs/2026-10-23_v5-n-1024px/run.json index 958f8bb..7665c3b 100644 --- a/runs/2026-10-23_v5-n-1024px/run.json +++ b/runs/2026-10-23_v5-n-1024px/run.json @@ -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" } diff --git a/runs/2026-10-23_v5-s-noflip-mask1/metrics.json b/runs/2026-10-23_v5-s-noflip-mask1/metrics.json index 5ee49aa..1d63a91 100644 --- a/runs/2026-10-23_v5-s-noflip-mask1/metrics.json +++ b/runs/2026-10-23_v5-s-noflip-mask1/metrics.json @@ -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" } diff --git a/runs/2026-10-23_v5-s-noflip-mask1/run.json b/runs/2026-10-23_v5-s-noflip-mask1/run.json index 773c2bd..5f84ab4 100644 --- a/runs/2026-10-23_v5-s-noflip-mask1/run.json +++ b/runs/2026-10-23_v5-s-noflip-mask1/run.json @@ -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" } diff --git a/runs/README.md b/runs/README.md index c248950..7272dd7 100644 --- a/runs/README.md +++ b/runs/README.md @@ -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} diff --git a/runs/clean_gold_comparison.json b/runs/clean_gold_comparison.json index ff9e8bd..73318c8 100644 --- a/runs/clean_gold_comparison.json +++ b/runs/clean_gold_comparison.json @@ -4,68 +4,68 @@ "beamline yolo26n-seg-overlap-false-2026-04-12": { "per_class": { "loop_all": { - "tp": 218, - "fp": 34, - "fn": 46, - "precision": 0.8650793650793651, - "recall": 0.8257575757575758, - "f1": 0.8449612403100776, - "mean_mask_iou": 0.9183915172669866, - "n_matched": 218 + "tp": 154, + "fp": 20, + "fn": 14, + "precision": 0.8850574712643678, + "recall": 0.9166666666666666, + "f1": 0.9005847953216374, + "mean_mask_iou": 0.9231380783734185, + "n_matched": 154 }, "pin": { - "tp": 164, - "fp": 38, - "fn": 30, - "precision": 0.8118811881188119, - "recall": 0.845360824742268, - "f1": 0.8282828282828284, - "mean_mask_iou": 0.9449884667212329, - "n_matched": 164 + "tp": 97, + "fp": 23, + "fn": 13, + "precision": 0.8083333333333333, + "recall": 0.8818181818181818, + "f1": 0.8434782608695653, + "mean_mask_iou": 0.927907791248477, + "n_matched": 97 }, "crystal": { - "tp": 40, - "fp": 86, - "fn": 83, - "precision": 0.31746031746031744, - "recall": 0.3252032520325203, - "f1": 0.321285140562249, - "mean_mask_iou": 0.7281942214752503, - "n_matched": 40 + "tp": 32, + "fp": 57, + "fn": 75, + "precision": 0.3595505617977528, + "recall": 0.29906542056074764, + "f1": 0.32653061224489793, + "mean_mask_iou": 0.7251954787416872, + "n_matched": 32 }, "loop_face": { - "tp": 184, - "fp": 69, - "fn": 59, - "precision": 0.7272727272727273, - "recall": 0.757201646090535, - "f1": 0.7419354838709679, - "mean_mask_iou": 0.930131750718674, - "n_matched": 184 + "tp": 135, + "fp": 51, + "fn": 31, + "precision": 0.7258064516129032, + "recall": 0.8132530120481928, + "f1": 0.7670454545454545, + "mean_mask_iou": 0.9273452333862002, + "n_matched": 135 }, "ice": { - "tp": 2, - "fp": 14, - "fn": 11, - "precision": 0.125, - "recall": 0.15384615384615385, - "f1": 0.13793103448275862, - "mean_mask_iou": 0.944649552595864, - "n_matched": 2 + "tp": 1, + "fp": 6, + "fn": 4, + "precision": 0.14285714285714285, + "recall": 0.2, + "f1": 0.16666666666666666, + "mean_mask_iou": 0.8931750741839762, + "n_matched": 1 } }, "overall": { - "tp": 608, - "fp": 241, - "fn": 229, - "precision": 0.7161366313309776, - "recall": 0.7264038231780168, - "f1": 0.7212336892052195, - "mean_mask_iou": 0.916692054939018, - "n_matched": 608 + "tp": 419, + "fp": 157, + "fn": 137, + "precision": 0.7274305555555556, + "recall": 0.7535971223021583, + "f1": 0.7402826855123674, + "mean_mask_iou": 0.9104089659228258, + "n_matched": 419 }, "dataset": { - "gold_images": 281 + "gold_images": 175 } }, "2026-09-28_alc-v1": { @@ -406,68 +406,68 @@ "2026-09-29_alc-v1-noflip-mask1": { "per_class": { "loop_all": { - "tp": 246, - "fp": 35, + "tp": 220, + "fp": 31, "fn": 18, - "precision": 0.8754448398576512, - "recall": 0.9318181818181818, - "f1": 0.9027522935779816, - "mean_mask_iou": 0.9187634867207419, - "n_matched": 246 + "precision": 0.8764940239043825, + "recall": 0.9243697478991597, + "f1": 0.899795501022495, + "mean_mask_iou": 0.9228669094549258, + "n_matched": 220 }, "pin": { - "tp": 181, - "fp": 21, - "fn": 13, - "precision": 0.8960396039603961, - "recall": 0.9329896907216495, - "f1": 0.914141414141414, - "mean_mask_iou": 0.941242647441362, - "n_matched": 181 + "tp": 167, + "fp": 19, + "fn": 12, + "precision": 0.8978494623655914, + "recall": 0.9329608938547486, + "f1": 0.915068493150685, + "mean_mask_iou": 0.9365134811689726, + "n_matched": 167 }, "crystal": { - "tp": 54, - "fp": 73, - "fn": 69, - "precision": 0.4251968503937008, - "recall": 0.43902439024390244, - "f1": 0.43199999999999994, - "mean_mask_iou": 0.7413464057874255, - "n_matched": 54 + "tp": 47, + "fp": 59, + "fn": 57, + "precision": 0.44339622641509435, + "recall": 0.4519230769230769, + "f1": 0.44761904761904764, + "mean_mask_iou": 0.7290479444134937, + "n_matched": 47 }, "loop_face": { - "tp": 206, - "fp": 60, - "fn": 37, - "precision": 0.7744360902255639, - "recall": 0.8477366255144033, - "f1": 0.8094302554027505, - "mean_mask_iou": 0.913591640576318, - "n_matched": 206 + "tp": 185, + "fp": 52, + "fn": 32, + "precision": 0.7805907172995781, + "recall": 0.8525345622119815, + "f1": 0.8149779735682819, + "mean_mask_iou": 0.9177584074810119, + "n_matched": 185 }, "ice": { "tp": 1, - "fp": 5, + "fp": 4, "fn": 12, - "precision": 0.16666666666666666, + "precision": 0.2, "recall": 0.07692307692307693, - "f1": 0.10526315789473684, + "f1": 0.1111111111111111, "mean_mask_iou": 0.901840490797546, "n_matched": 1 } }, "overall": { - "tp": 688, - "fp": 194, - "fn": 149, - "precision": 0.780045351473923, - "recall": 0.8219832735961768, - "f1": 0.8004653868528213, - "mean_mask_iou": 0.9091790134916127, - "n_matched": 688 + "tp": 620, + "fp": 165, + "fn": 131, + "precision": 0.7898089171974523, + "recall": 0.8255659121171771, + "f1": 0.8072916666666666, + "mean_mask_iou": 0.9102917269314864, + "n_matched": 620 }, "dataset": { - "gold_images": 281 + "gold_images": 255 } }, "2026-09-29_v2-recipeA": { @@ -540,68 +540,68 @@ "2026-09-29_v3-noflip-mask1": { "per_class": { "loop_all": { - "tp": 255, - "fp": 30, - "fn": 9, - "precision": 0.8947368421052632, - "recall": 0.9659090909090909, - "f1": 0.9289617486338798, - "mean_mask_iou": 0.9332806161441184, - "n_matched": 255 + "tp": 177, + "fp": 24, + "fn": 7, + "precision": 0.8805970149253731, + "recall": 0.9619565217391305, + "f1": 0.9194805194805195, + "mean_mask_iou": 0.9093068166305329, + "n_matched": 177 }, "pin": { - "tp": 185, - "fp": 13, - "fn": 9, - "precision": 0.9343434343434344, - "recall": 0.9536082474226805, - "f1": 0.9438775510204083, - "mean_mask_iou": 0.9454246238879194, - "n_matched": 185 + "tp": 133, + "fp": 8, + "fn": 8, + "precision": 0.9432624113475178, + "recall": 0.9432624113475178, + "f1": 0.9432624113475178, + "mean_mask_iou": 0.9273714724580228, + "n_matched": 133 }, "crystal": { - "tp": 57, - "fp": 45, - "fn": 66, - "precision": 0.5588235294117647, - "recall": 0.4634146341463415, - "f1": 0.5066666666666667, - "mean_mask_iou": 0.7467687656079699, - "n_matched": 57 + "tp": 38, + "fp": 28, + "fn": 42, + "precision": 0.5757575757575758, + "recall": 0.475, + "f1": 0.5205479452054794, + "mean_mask_iou": 0.7674767907087415, + "n_matched": 38 }, "loop_face": { - "tp": 220, - "fp": 49, - "fn": 23, - "precision": 0.8178438661710037, - "recall": 0.9053497942386831, - "f1": 0.859375, - "mean_mask_iou": 0.9195894751912227, - "n_matched": 220 + "tp": 157, + "fp": 30, + "fn": 12, + "precision": 0.839572192513369, + "recall": 0.9289940828402367, + "f1": 0.8820224719101124, + "mean_mask_iou": 0.8893289116505536, + "n_matched": 157 }, "ice": { "tp": 1, - "fp": 7, - "fn": 12, - "precision": 0.125, - "recall": 0.07692307692307693, - "f1": 0.09523809523809525, + "fp": 3, + "fn": 9, + "precision": 0.25, + "recall": 0.1, + "f1": 0.14285714285714288, "mean_mask_iou": 0.8753799392097265, "n_matched": 1 } }, "overall": { - "tp": 718, - "fp": 144, - "fn": 119, - "precision": 0.8329466357308585, - "recall": 0.8578255675029869, - "f1": 0.8452030606238965, - "mean_mask_iou": 0.9173272933940786, - "n_matched": 718 + "tp": 506, + "fp": 93, + "fn": 78, + "precision": 0.8447412353923205, + "recall": 0.8664383561643836, + "f1": 0.8554522400676247, + "mean_mask_iou": 0.8971380424818188, + "n_matched": 506 }, "dataset": { - "gold_images": 281 + "gold_images": 198 } }, "2026-09-29_v3-recipeA": { @@ -751,44 +751,44 @@ "2026-10-01_v4-noflip-mask1": { "per_class": { "loop_all": { - "tp": 256, - "fp": 16, - "fn": 8, - "precision": 0.9411764705882353, - "recall": 0.9696969696969697, - "f1": 0.955223880597015, - "mean_mask_iou": 0.9335722893688293, - "n_matched": 256 + "tp": 211, + "fp": 11, + "fn": 7, + "precision": 0.9504504504504504, + "recall": 0.9678899082568807, + "f1": 0.9590909090909091, + "mean_mask_iou": 0.9206661897480345, + "n_matched": 211 }, "pin": { - "tp": 186, - "fp": 20, + "tp": 160, + "fp": 18, "fn": 8, - "precision": 0.9029126213592233, - "recall": 0.9587628865979382, - "f1": 0.9299999999999999, - "mean_mask_iou": 0.9402202683221472, - "n_matched": 186 + "precision": 0.898876404494382, + "recall": 0.9523809523809523, + "f1": 0.9248554913294796, + "mean_mask_iou": 0.933556637400468, + "n_matched": 160 }, "crystal": { - "tp": 80, - "fp": 71, - "fn": 43, - "precision": 0.5298013245033113, - "recall": 0.6504065040650406, - "f1": 0.583941605839416, - "mean_mask_iou": 0.8047452782311604, - "n_matched": 80 + "tp": 49, + "fp": 41, + "fn": 33, + "precision": 0.5444444444444444, + "recall": 0.5975609756097561, + "f1": 0.569767441860465, + "mean_mask_iou": 0.7753470612653858, + "n_matched": 49 }, "loop_face": { - "tp": 222, - "fp": 47, + "tp": 172, + "fp": 45, "fn": 21, - "precision": 0.8252788104089219, - "recall": 0.9135802469135802, - "f1": 0.8671875000000001, - "mean_mask_iou": 0.915814646963328, - "n_matched": 222 + "precision": 0.7926267281105991, + "recall": 0.8911917098445595, + "f1": 0.8390243902439024, + "mean_mask_iou": 0.8967733433768024, + "n_matched": 172 }, "ice": { "tp": 2, @@ -802,17 +802,17 @@ } }, "overall": { - "tp": 746, - "fp": 160, - "fn": 91, - "precision": 0.8233995584988962, - "recall": 0.8912783751493429, - "f1": 0.8559954102122777, - "mean_mask_iou": 0.9158708657946052, - "n_matched": 746 + "tp": 594, + "fp": 121, + "fn": 80, + "precision": 0.8307692307692308, + "recall": 0.8813056379821959, + "f1": 0.8552915766738661, + "mean_mask_iou": 0.9049501095889037, + "n_matched": 594 }, "dataset": { - "gold_images": 281 + "gold_images": 231 } }, "2026-10-01_v4-recipeA": { @@ -1090,68 +1090,68 @@ "beamline yolo26n-seg-overlap-false-2026-04-12": { "per_class": { "loop_all": { - "tp": 103, - "fp": 20, - "fn": 35, - "precision": 0.8373983739837398, - "recall": 0.7463768115942029, - "f1": 0.789272030651341, - "mean_mask_iou": 0.8930604509504741, - "n_matched": 103 + "tp": 39, + "fp": 6, + "fn": 3, + "precision": 0.8666666666666667, + "recall": 0.9285714285714286, + "f1": 0.896551724137931, + "mean_mask_iou": 0.8702343526462095, + "n_matched": 39 }, "pin": { - "tp": 94, - "fp": 21, - "fn": 21, - "precision": 0.8173913043478261, - "recall": 0.8173913043478261, - "f1": 0.817391304347826, - "mean_mask_iou": 0.954785130910283, - "n_matched": 94 + "tp": 27, + "fp": 6, + "fn": 4, + "precision": 0.8181818181818182, + "recall": 0.8709677419354839, + "f1": 0.84375, + "mean_mask_iou": 0.9177314634958049, + "n_matched": 27 }, "crystal": { - "tp": 15, - "fp": 39, - "fn": 24, - "precision": 0.2777777777777778, - "recall": 0.38461538461538464, - "f1": 0.3225806451612903, - "mean_mask_iou": 0.7672677057932032, - "n_matched": 15 + "tp": 7, + "fp": 10, + "fn": 16, + "precision": 0.4117647058823529, + "recall": 0.30434782608695654, + "f1": 0.35, + "mean_mask_iou": 0.7982145782317175, + "n_matched": 7 }, "loop_face": { - "tp": 79, - "fp": 31, - "fn": 40, - "precision": 0.7181818181818181, - "recall": 0.6638655462184874, - "f1": 0.6899563318777292, - "mean_mask_iou": 0.9132148462630715, - "n_matched": 79 + "tp": 30, + "fp": 13, + "fn": 12, + "precision": 0.6976744186046512, + "recall": 0.7142857142857143, + "f1": 0.7058823529411765, + "mean_mask_iou": 0.8730445743227884, + "n_matched": 30 }, "ice": { - "tp": 2, - "fp": 8, - "fn": 8, - "precision": 0.2, - "recall": 0.2, - "f1": 0.20000000000000004, - "mean_mask_iou": 0.944649552595864, - "n_matched": 2 + "tp": 1, + "fp": 0, + "fn": 1, + "precision": 1.0, + "recall": 0.5, + "f1": 0.6666666666666666, + "mean_mask_iou": 0.8931750741839762, + "n_matched": 1 } }, "overall": { - "tp": 293, - "fp": 119, - "fn": 128, - "precision": 0.7111650485436893, - "recall": 0.6959619952494062, - "f1": 0.7034813925570228, - "mean_mask_iou": 0.9122092706496175, - "n_matched": 293 + "tp": 104, + "fp": 35, + "fn": 36, + "precision": 0.7482014388489209, + "recall": 0.7428571428571429, + "f1": 0.7455197132616488, + "mean_mask_iou": 0.8787490732603704, + "n_matched": 104 }, "dataset": { - "gold_images": 148 + "gold_images": 42 } }, "2026-09-28_alc-v1": { @@ -1492,68 +1492,68 @@ "2026-09-29_alc-v1-noflip-mask1": { "per_class": { "loop_all": { - "tp": 129, - "fp": 20, + "tp": 103, + "fp": 16, "fn": 9, - "precision": 0.8657718120805369, - "recall": 0.9347826086956522, - "f1": 0.8989547038327527, - "mean_mask_iou": 0.8845319901568669, - "n_matched": 129 + "precision": 0.865546218487395, + "recall": 0.9196428571428571, + "f1": 0.8917748917748918, + "mean_mask_iou": 0.8846556221069606, + "n_matched": 103 }, "pin": { - "tp": 104, - "fp": 10, - "fn": 11, - "precision": 0.9122807017543859, - "recall": 0.9043478260869565, - "f1": 0.9082969432314411, - "mean_mask_iou": 0.9315857836730854, - "n_matched": 104 + "tp": 90, + "fp": 8, + "fn": 10, + "precision": 0.9183673469387755, + "recall": 0.9, + "f1": 0.9090909090909091, + "mean_mask_iou": 0.921308374114809, + "n_matched": 90 }, "crystal": { - "tp": 21, - "fp": 31, - "fn": 18, - "precision": 0.40384615384615385, - "recall": 0.5384615384615384, - "f1": 0.46153846153846156, - "mean_mask_iou": 0.7718891071431425, - "n_matched": 21 + "tp": 14, + "fp": 17, + "fn": 6, + "precision": 0.45161290322580644, + "recall": 0.7, + "f1": 0.5490196078431372, + "mean_mask_iou": 0.7458727660656601, + "n_matched": 14 }, "loop_face": { - "tp": 97, - "fp": 32, - "fn": 22, - "precision": 0.751937984496124, - "recall": 0.8151260504201681, - "f1": 0.782258064516129, - "mean_mask_iou": 0.8748953575810755, - "n_matched": 97 + "tp": 76, + "fp": 24, + "fn": 17, + "precision": 0.76, + "recall": 0.8172043010752689, + "f1": 0.7875647668393783, + "mean_mask_iou": 0.8743457514556575, + "n_matched": 76 }, "ice": { "tp": 1, - "fp": 1, + "fp": 0, "fn": 9, - "precision": 0.5, + "precision": 1.0, "recall": 0.1, - "f1": 0.16666666666666669, + "f1": 0.18181818181818182, "mean_mask_iou": 0.901840490797546, "n_matched": 1 } }, "overall": { - "tp": 352, - "fp": 94, - "fn": 69, - "precision": 0.7892376681614349, - "recall": 0.836104513064133, - "f1": 0.81199538638985, - "mean_mask_iou": 0.889107697893195, - "n_matched": 352 + "tp": 284, + "fp": 65, + "fn": 51, + "precision": 0.8137535816618912, + "recall": 0.8477611940298507, + "f1": 0.8304093567251463, + "mean_mask_iou": 0.8867310530763962, + "n_matched": 284 }, "dataset": { - "gold_images": 148 + "gold_images": 122 } }, "2026-09-29_v2-recipeA": { @@ -2163,496 +2163,496 @@ "active": "yolo26n-seg-v4-noflip-mask1-2026-10-02", "bootstrap_vs_active": { "beamline yolo26n-seg-overlap-false-2026-04-12": { - "frames": 281, - "mounts": 249, + "frames": 125, + "mounts": 116, "draws": 2000, "f1": { - "delta": -0.1348, - "lo": -0.1632, - "hi": -0.1083, + "delta": -0.1124, + "lo": -0.1478, + "hi": -0.0759, "win": 0.0 }, "mask_score": { - "delta": -0.1504, - "lo": -0.1776, - "hi": -0.123, + "delta": -0.1155, + "lo": -0.147, + "hi": -0.0866, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.2627, - "lo": -0.3473, - "hi": -0.182, + "delta": -0.232, + "lo": -0.3568, + "hi": -0.1125, "win": 0.0 }, "mask_score": { - "delta": -0.2866, - "lo": -0.3721, - "hi": -0.2095, + "delta": -0.206, + "lo": -0.3082, + "hi": -0.1081, "win": 0.0 } } } }, "2026-09-28_alc-v1": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0526, - "lo": -0.0753, - "hi": -0.031, + "delta": -0.0556, + "lo": -0.0822, + "hi": -0.0314, "win": 0.0 }, "mask_score": { - "delta": -0.0998, - "lo": -0.121, - "hi": -0.0791, + "delta": -0.0845, + "lo": -0.1094, + "hi": -0.0621, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1547, - "lo": -0.2465, - "hi": -0.0654, - "win": 0.002 + "delta": -0.1542, + "lo": -0.2682, + "hi": -0.0369, + "win": 0.004 }, "mask_score": { - "delta": -0.251, - "lo": -0.3303, - "hi": -0.1756, - "win": 0.0 + "delta": -0.1767, + "lo": -0.2687, + "hi": -0.0848, + "win": 0.001 } } } }, "2026-09-28_alc-v1-800px": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0665, - "lo": -0.0879, - "hi": -0.0444, + "delta": -0.0654, + "lo": -0.0895, + "hi": -0.0428, "win": 0.0 }, "mask_score": { - "delta": -0.1038, - "lo": -0.1239, - "hi": -0.0843, + "delta": -0.0889, + "lo": -0.1112, + "hi": -0.0675, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1589, - "lo": -0.2489, - "hi": -0.0783, - "win": 0.0 + "delta": -0.1158, + "lo": -0.2154, + "hi": -0.0144, + "win": 0.013 }, "mask_score": { - "delta": -0.2224, - "lo": -0.3036, - "hi": -0.1448, - "win": 0.0 + "delta": -0.1299, + "lo": -0.2095, + "hi": -0.0432, + "win": 0.001 } } } }, "2026-09-28_alc-v1-humanonly": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0454, - "lo": -0.0668, - "hi": -0.0242, + "delta": -0.0434, + "lo": -0.0671, + "hi": -0.022, "win": 0.0 }, "mask_score": { - "delta": -0.0938, - "lo": -0.1158, - "hi": -0.0727, + "delta": -0.0788, + "lo": -0.1024, + "hi": -0.0566, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1249, - "lo": -0.2127, - "hi": -0.0367, - "win": 0.001 + "delta": -0.1055, + "lo": -0.2073, + "hi": -0.0024, + "win": 0.022 }, "mask_score": { - "delta": -0.1981, - "lo": -0.2777, - "hi": -0.121, - "win": 0.0 + "delta": -0.1218, + "lo": -0.2044, + "hi": -0.0383, + "win": 0.002 } } } }, "2026-09-28_alc-v1-mask1": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0441, - "lo": -0.0641, - "hi": -0.0244, + "delta": -0.0487, + "lo": -0.0706, + "hi": -0.0276, "win": 0.0 }, "mask_score": { - "delta": -0.0911, - "lo": -0.1081, - "hi": -0.0731, + "delta": -0.075, + "lo": -0.0954, + "hi": -0.0558, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.19, - "lo": -0.2804, - "hi": -0.1022, - "win": 0.0 + "delta": -0.2021, + "lo": -0.3142, + "hi": -0.0883, + "win": 0.001 }, "mask_score": { - "delta": -0.2906, - "lo": -0.3676, - "hi": -0.2165, + "delta": -0.2372, + "lo": -0.3295, + "hi": -0.1481, "win": 0.0 } } } }, "2026-09-28_alc-v1-noflip": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0476, - "lo": -0.0686, - "hi": -0.0279, - "win": 0.0 + "delta": -0.0417, + "lo": -0.0638, + "hi": -0.0201, + "win": 0.001 }, "mask_score": { - "delta": -0.0882, - "lo": -0.1081, - "hi": -0.0704, + "delta": -0.0685, + "lo": -0.0896, + "hi": -0.0498, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1896, - "lo": -0.2787, - "hi": -0.1061, - "win": 0.0 + "delta": -0.1268, + "lo": -0.2231, + "hi": -0.0227, + "win": 0.006 }, "mask_score": { - "delta": -0.2752, - "lo": -0.351, - "hi": -0.2017, + "delta": -0.1713, + "lo": -0.2544, + "hi": -0.0859, "win": 0.0 } } } }, "2026-09-29_alc-v1-noflip-mask1": { - "frames": 281, - "mounts": 249, + "frames": 205, + "mounts": 175, "draws": 2000, "f1": { - "delta": -0.0555, - "lo": -0.0755, - "hi": -0.0366, + "delta": -0.0496, + "lo": -0.0731, + "hi": -0.0276, "win": 0.0 }, "mask_score": { - "delta": -0.069, - "lo": -0.0893, - "hi": -0.0514, + "delta": -0.0557, + "lo": -0.0776, + "hi": -0.0354, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1519, - "lo": -0.2288, - "hi": -0.0749, - "win": 0.0 + "delta": -0.1075, + "lo": -0.2091, + "hi": -0.0078, + "win": 0.018 }, "mask_score": { - "delta": -0.1979, - "lo": -0.2752, - "hi": -0.1223, - "win": 0.0 + "delta": -0.1243, + "lo": -0.2198, + "hi": -0.0265, + "win": 0.007 } } } }, "2026-09-29_v2-recipeA": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0553, - "lo": -0.0777, - "hi": -0.0346, + "delta": -0.0559, + "lo": -0.0806, + "hi": -0.033, "win": 0.0 }, "mask_score": { - "delta": -0.0859, - "lo": -0.1061, - "hi": -0.0673, + "delta": -0.0687, + "lo": -0.0921, + "hi": -0.0489, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1878, - "lo": -0.2776, - "hi": -0.1027, - "win": 0.0 + "delta": -0.1531, + "lo": -0.2622, + "hi": -0.0444, + "win": 0.003 }, "mask_score": { - "delta": -0.2776, - "lo": -0.3567, - "hi": -0.2033, + "delta": -0.1983, + "lo": -0.2899, + "hi": -0.1077, "win": 0.0 } } } }, "2026-09-29_v3-noflip-mask1": { - "frames": 281, - "mounts": 249, + "frames": 148, + "mounts": 121, "draws": 2000, "f1": { - "delta": -0.0108, - "lo": -0.0294, - "hi": 0.0066, - "win": 0.108 + "delta": -0.0077, + "lo": -0.0295, + "hi": 0.0134, + "win": 0.249 }, "mask_score": { - "delta": -0.0294, - "lo": -0.0444, - "hi": -0.0143, - "win": 0.0 + "delta": -0.0091, + "lo": -0.0243, + "hi": 0.0062, + "win": 0.103 }, "per_class": { "crystal": { "f1": { - "delta": -0.0773, - "lo": -0.1503, - "hi": -0.0088, - "win": 0.016 + "delta": 0.0374, + "lo": -0.0708, + "hi": 0.1422, + "win": 0.74 }, "mask_score": { - "delta": -0.1773, - "lo": -0.2457, - "hi": -0.1106, - "win": 0.0 + "delta": -0.0119, + "lo": -0.094, + "hi": 0.0709, + "win": 0.372 } } } }, "2026-09-29_v3-recipeA": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0212, - "lo": -0.0411, - "hi": -0.0018, - "win": 0.015 + "delta": -0.0187, + "lo": -0.0387, + "hi": 0.0022, + "win": 0.039 }, "mask_score": { - "delta": -0.0563, - "lo": -0.0722, - "hi": -0.0407, + "delta": -0.038, + "lo": -0.0534, + "hi": -0.0229, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1203, - "lo": -0.2096, - "hi": -0.0407, - "win": 0.001 + "delta": -0.1, + "lo": -0.1933, + "hi": 0.0008, + "win": 0.025 }, "mask_score": { - "delta": -0.2147, - "lo": -0.2904, - "hi": -0.1485, + "delta": -0.1479, + "lo": -0.228, + "hi": -0.0702, "win": 0.0 } } } }, "2026-09-30_v3-s-640px": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0087, - "lo": -0.027, - "hi": 0.0097, - "win": 0.172 + "delta": -0.0013, + "lo": -0.0209, + "hi": 0.0174, + "win": 0.457 }, "mask_score": { - "delta": -0.0385, - "lo": -0.0528, - "hi": -0.0245, + "delta": -0.0208, + "lo": -0.035, + "hi": -0.0084, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.1012, - "lo": -0.1864, - "hi": -0.0154, - "win": 0.008 + "delta": -0.0826, + "lo": -0.1837, + "hi": 0.0103, + "win": 0.044 }, "mask_score": { - "delta": -0.1733, - "lo": -0.2461, - "hi": -0.1046, - "win": 0.0 + "delta": -0.106, + "lo": -0.1851, + "hi": -0.0332, + "win": 0.003 } } } }, "2026-10-01_v4-recipeA": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": -0.0146, - "lo": -0.0298, - "hi": 0.001, - "win": 0.031 + "delta": -0.0206, + "lo": -0.0373, + "hi": -0.0036, + "win": 0.006 }, "mask_score": { - "delta": -0.0309, - "lo": -0.0427, - "hi": -0.0189, + "delta": -0.0264, + "lo": -0.0398, + "hi": -0.0139, "win": 0.0 }, "per_class": { "crystal": { "f1": { - "delta": -0.0078, - "lo": -0.0736, - "hi": 0.0523, - "win": 0.42 + "delta": -0.0508, + "lo": -0.1195, + "hi": 0.0216, + "win": 0.077 }, "mask_score": { - "delta": -0.0787, - "lo": -0.1316, - "hi": -0.0284, + "delta": -0.0792, + "lo": -0.1367, + "hi": -0.0252, "win": 0.001 } } } }, "2026-10-22_v5-noflip-mask1": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": 0.0031, - "lo": -0.0139, - "hi": 0.0189, - "win": 0.632 + "delta": -0.0015, + "lo": -0.0204, + "hi": 0.0164, + "win": 0.432 }, "mask_score": { - "delta": -0.0147, - "lo": -0.0275, - "hi": -0.0029, - "win": 0.009 + "delta": -0.0064, + "lo": -0.0196, + "hi": 0.0073, + "win": 0.172 }, "per_class": { "crystal": { "f1": { - "delta": 0.0121, - "lo": -0.0606, - "hi": 0.0802, - "win": 0.607 + "delta": -0.0051, + "lo": -0.0894, + "hi": 0.0808, + "win": 0.454 }, "mask_score": { - "delta": -0.0422, - "lo": -0.0993, - "hi": 0.0126, - "win": 0.065 + "delta": -0.0141, + "lo": -0.0785, + "hi": 0.0487, + "win": 0.346 } } } }, "2026-10-23_v5-n-1024px": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": 0.0045, - "lo": -0.0138, - "hi": 0.0215, - "win": 0.679 + "delta": 0.0051, + "lo": -0.015, + "hi": 0.0261, + "win": 0.692 }, "mask_score": { - "delta": -0.0121, - "lo": -0.0274, - "hi": 0.0027, - "win": 0.051 + "delta": 0.0013, + "lo": -0.0148, + "hi": 0.0175, + "win": 0.551 }, "per_class": { "crystal": { "f1": { - "delta": -0.0069, - "lo": -0.0814, - "hi": 0.0609, - "win": 0.427 + "delta": 0.0101, + "lo": -0.0839, + "hi": 0.11, + "win": 0.59 }, "mask_score": { - "delta": -0.0646, - "lo": -0.126, - "hi": -0.0034, - "win": 0.02 + "delta": -0.0055, + "lo": -0.0809, + "hi": 0.0699, + "win": 0.454 } } } }, "2026-10-23_v5-s-noflip-mask1": { - "frames": 281, - "mounts": 249, + "frames": 231, + "mounts": 199, "draws": 2000, "f1": { - "delta": 0.0056, - "lo": -0.0123, - "hi": 0.0221, - "win": 0.729 + "delta": 0.0064, + "lo": -0.014, + "hi": 0.0266, + "win": 0.742 }, "mask_score": { - "delta": -0.0122, - "lo": -0.0263, - "hi": 0.0011, - "win": 0.037 + "delta": -0.0005, + "lo": -0.016, + "hi": 0.0155, + "win": 0.473 }, "per_class": { "crystal": { "f1": { - "delta": 0.0201, - "lo": -0.0572, - "hi": 0.0943, - "win": 0.713 + "delta": 0.0378, + "lo": -0.0573, + "hi": 0.1337, + "win": 0.794 }, "mask_score": { - "delta": -0.0574, - "lo": -0.1232, - "hi": 0.0061, - "win": 0.04 + "delta": -0.0112, + "lo": -0.0829, + "hi": 0.0664, + "win": 0.383 } } } @@ -2662,68 +2662,68 @@ "beamline yolo26n-seg-overlap-false-2026-04-12": { "per_class": { "loop_all": { - "tp": 101, - "fp": 20, - "fn": 35, - "precision": 0.8347107438016529, - "recall": 0.7426470588235294, - "f1": 0.7859922178988327, - "mean_mask_iou": 0.8909532120842629, - "n_matched": 101 + "tp": 39, + "fp": 6, + "fn": 3, + "precision": 0.8666666666666667, + "recall": 0.9285714285714286, + "f1": 0.896551724137931, + "mean_mask_iou": 0.8702343526462095, + "n_matched": 39 }, "pin": { - "tp": 93, - "fp": 21, - "fn": 17, - "precision": 0.8157894736842105, - "recall": 0.8454545454545455, - "f1": 0.8303571428571429, - "mean_mask_iou": 0.9543431523246791, - "n_matched": 93 + "tp": 27, + "fp": 6, + "fn": 4, + "precision": 0.8181818181818182, + "recall": 0.8709677419354839, + "f1": 0.84375, + "mean_mask_iou": 0.9177314634958049, + "n_matched": 27 }, "crystal": { - "tp": 15, - "fp": 39, - "fn": 24, - "precision": 0.2777777777777778, - "recall": 0.38461538461538464, - "f1": 0.3225806451612903, - "mean_mask_iou": 0.7672677057932032, - "n_matched": 15 + "tp": 7, + "fp": 10, + "fn": 16, + "precision": 0.4117647058823529, + "recall": 0.30434782608695654, + "f1": 0.35, + "mean_mask_iou": 0.7982145782317175, + "n_matched": 7 }, "loop_face": { - "tp": 78, - "fp": 29, - "fn": 40, - "precision": 0.7289719626168224, - "recall": 0.6610169491525424, - "f1": 0.6933333333333334, - "mean_mask_iou": 0.912102216086957, - "n_matched": 78 + "tp": 30, + "fp": 13, + "fn": 12, + "precision": 0.6976744186046512, + "recall": 0.7142857142857143, + "f1": 0.7058823529411765, + "mean_mask_iou": 0.8730445743227884, + "n_matched": 30 }, "ice": { - "tp": 2, - "fp": 8, - "fn": 8, - "precision": 0.2, - "recall": 0.2, - "f1": 0.20000000000000004, - "mean_mask_iou": 0.944649552595864, - "n_matched": 2 + "tp": 1, + "fp": 0, + "fn": 1, + "precision": 1.0, + "recall": 0.5, + "f1": 0.6666666666666666, + "mean_mask_iou": 0.8931750741839762, + "n_matched": 1 } }, "overall": { - "tp": 289, - "fp": 117, - "fn": 124, - "precision": 0.7118226600985221, - "recall": 0.6997578692493946, - "f1": 0.7057387057387057, - "mean_mask_iou": 0.9110120246836618, - "n_matched": 289 + "tp": 104, + "fp": 35, + "fn": 36, + "precision": 0.7482014388489209, + "recall": 0.7428571428571429, + "f1": 0.7455197132616488, + "mean_mask_iou": 0.8787490732603704, + "n_matched": 104 }, "dataset": { - "gold_images": 142 + "gold_images": 42 } }, "2026-09-28_alc-v1": { @@ -3064,68 +3064,68 @@ "2026-09-29_alc-v1-noflip-mask1": { "per_class": { "loop_all": { - "tp": 127, - "fp": 20, + "tp": 101, + "fp": 16, "fn": 9, - "precision": 0.8639455782312925, - "recall": 0.9338235294117647, - "f1": 0.8975265017667844, - "mean_mask_iou": 0.8833302880865872, - "n_matched": 127 + "precision": 0.8632478632478633, + "recall": 0.9181818181818182, + "f1": 0.8898678414096917, + "mean_mask_iou": 0.8831470191463137, + "n_matched": 101 }, "pin": { - "tp": 103, - "fp": 10, - "fn": 7, - "precision": 0.911504424778761, - "recall": 0.9363636363636364, - "f1": 0.9237668161434978, - "mean_mask_iou": 0.9320950533471772, - "n_matched": 103 + "tp": 89, + "fp": 8, + "fn": 6, + "precision": 0.9175257731958762, + "recall": 0.9368421052631579, + "f1": 0.9270833333333333, + "mean_mask_iou": 0.9217822771133841, + "n_matched": 89 }, "crystal": { - "tp": 21, - "fp": 30, - "fn": 18, - "precision": 0.4117647058823529, - "recall": 0.5384615384615384, - "f1": 0.4666666666666667, - "mean_mask_iou": 0.7718891071431425, - "n_matched": 21 + "tp": 14, + "fp": 16, + "fn": 6, + "precision": 0.4666666666666667, + "recall": 0.7, + "f1": 0.56, + "mean_mask_iou": 0.7458727660656601, + "n_matched": 14 }, "loop_face": { - "tp": 96, - "fp": 32, - "fn": 22, - "precision": 0.75, - "recall": 0.8135593220338984, - "f1": 0.7804878048780488, - "mean_mask_iou": 0.8750844595034439, - "n_matched": 96 + "tp": 75, + "fp": 24, + "fn": 17, + "precision": 0.7575757575757576, + "recall": 0.8152173913043478, + "f1": 0.7853403141361256, + "mean_mask_iou": 0.8745804738346167, + "n_matched": 75 }, "ice": { "tp": 1, - "fp": 1, + "fp": 0, "fn": 9, - "precision": 0.5, + "precision": 1.0, "recall": 0.1, - "f1": 0.16666666666666669, + "f1": 0.18181818181818182, "mean_mask_iou": 0.901840490797546, "n_matched": 1 } }, "overall": { - "tp": 348, - "fp": 93, - "fn": 65, - "precision": 0.7891156462585034, - "recall": 0.8426150121065376, - "f1": 0.8149882903981266, - "mean_mask_iou": 0.8888171176289944, - "n_matched": 348 + "tp": 280, + "fp": 64, + "fn": 47, + "precision": 0.813953488372093, + "recall": 0.8562691131498471, + "f1": 0.8345752608047691, + "mean_mask_iou": 0.8863359512506499, + "n_matched": 280 }, "dataset": { - "gold_images": 142 + "gold_images": 116 } }, "2026-09-29_v2-recipeA": { diff --git a/tools/compare_unseen.py b/tools/compare_unseen.py index a014dae..d5ce3b1 100644 --- a/tools/compare_unseen.py +++ b/tools/compare_unseen.py @@ -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): diff --git a/tools/gate_stats.py b/tools/gate_stats.py index b9dbd79..ae8b758 100644 --- a/tools/gate_stats.py +++ b/tools/gate_stats.py @@ -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. diff --git a/tools/gold_prelabel.py b/tools/gold_prelabel.py new file mode 100644 index 0000000..7a85cd1 --- /dev/null +++ b/tools/gold_prelabel.py @@ -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()) diff --git a/tools/train_run.py b/tools/train_run.py index f5225c2..acb8b7d 100644 --- a/tools/train_run.py +++ b/tools/train_run.py @@ -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")