🔬 16h 自主準度研究 — 5 主力模型(2026-06-10)

12:38–04:38 CST · 5090-2 雙卡 · 全程同 test 集對照 · 產物全留本機未部署(operator 決定上版)

TL;DR — 四個模型有可上版候選,一個(safety_rope)結論是「主槓桿在上游」:

🎯 0. 總表 — 上版建議(全部同 test 集對照)

模型production 基線本日最佳候選主指標Δ建議ckpt
door_statev20260608 (mAP 0.9817*)512aug 單模mAP 0.9929+0.011建議上版場域驗證 thr open 0.5 / close 0.7~/factory_ppe/runs/hatch_r16h_512aug/best.pt
PPE 22-attrv20260605 (mAP 0.9595)ens(v605+p16+p16nw)mAP 0.9633+0.004可選3× mobilenetv3 推論成本;或維持 v605runs/factory_ppe_r16h_p16{,nw}/best.pt + v605
fire_smokev20260608 (已上版)hardneg 單模 或 ens(v608+hardneg)smoke 乾淨FP@R90 −36%AP 持平建議上版(hardneg 單模) fire 高 recall 端略差見 §3~/factory_ppe/runs/fire_smoke_r16h_hardneg/best.pt
person26s v608 (test mAP50 0.918@1280)yolo26m@1280(截斷40ep)test mAP50 0.9271+0.009建議續訓全量後上版40ep 已全面超車;上版前須場域 conf 重掃(規則17)~/runs_new/person_yolo26m_r16h_1280/run/weights/best.pt
safety_ropev20260608 (AP 0.9099)ens(608+605+erase)AP 0.9162 / R86 FP −5.4%+0.006不建議單獨上主槓桿在 person gate(§5)

* 全文 AP 一律 sklearn average_precision_score 重算(同一份 dump、同一套程式),與各 run summary.json 內建數字可能有 ±0.005 出入;同表內數字保證可比。door_state mAP = (open+close)/2。

👷 1. PPE 22-attr — v608 退步根因 + 修復

1.1 根因鑑定(推翻「新場域 noisy」假設)

v608 (0.9413) vs v605 (0.9595) 的 −0.018 不是資料問題:

1.2 實驗(v608 資料、同 test 集)

run變因mAPsleevescotton_glhair_coverheartbeatsafety_shoes
v605(基線)0.95950.9100.7770.8190.9060.924
v608patience 80.94130.5990.6900.8820.8770.880
r16h_p16patience 16/40ep0.95160.8110.8580.6230.8850.940
r16h_p16nw+negweight 弱attr0.95480.7570.8230.8150.8790.934
ens(v605+p16+p16nw)3 模平均0.96330.8920.8280.7890.9040.940
ens(v605+v608)2 模平均0.95300.646v608 sleeves 0.599 是毒丸 — ensemble 也救不动
r16h_p16bp16 同配方重跑(變因=隨機性)0.93770.5690.8580.6590.8230.943

1.3 結論 / 建議

🔥 2. fire_smoke — temporal 收尾判決 + 標註缺漏 + hard-neg

2.1 temporal 頭收尾(4015 test clips 同集)

modelsmoke APP@R90 / FPP@R95 / FPFP@0.5
單幀 v6080.96940.950 / 840.903 / 179113
單幀 v6030.95840.919 / 1390.863 / 265145
時序頭(v602b bb)0.94430.877 / 2230.810 / 39380
ens(608+時序)0.96360.943 / 950.893 / 20172
ens(608+603)0.96900.947 / 890.901 / 183103
判決:temporal 路線正式關閉 — 舊版(v602b backbone)與本日重訓版(v608 backbone, val mAP 0.9553)都在固定 recall 下全面輸單幀 v608:重訓版 smoke R90 FP 153 vs 單幀 84,AP 0.9569 vs 0.9694;ens(單幀+時序) 0.9692 無增益(僅 R95 FP 179→163 邊際)。時序資訊在這個 task 上不帶來可部署的價值,後續資源不應再投入。

2.2 殘餘 FP 的真相:56–60% 是標註缺漏

v608 在 R95 工作點的 179 個 smoke FP 中 100 個(56%)其實 fire=1(thr 0.5 時 60%)。目視抽查:task 613 = 漫天濃煙的野火畫面但 smoke=0(明確標錯);task 1341 = 盆火弱煙(邊界)。 → 建議 operator 對 fire=1 & smoke=0 的 clip 做標註 audit(task 1341/636/613/1338,約 100 clip)— 這比任何訓練手段都直接

2.3 hard-neg 重訓(只挖 smoke=0 且 fire=0 的乾淨負樣本,1534 張 ×3 oversample)

視角modelsmoke APR90: P / FPR95: P / FPFP@0.5
乾淨(排除 fire1smoke0)v6080.98370.962 / 2750.937 / 493323
hardneg0.98420.975 / 176(−36%)0.949 / 390197(−39%)
ens(v608+hardneg)0.98560.973 / 1910.954 / 353271
全 test(fire AP)hardneg0.97500.954 / 2270.898 / 570776
ens(v608+hardneg)0.98140.971 / 1400.909 / 499671

🚪 3. door_state — 校準病灶 + 一次到位的修復

3.1 根因

v608 的 has_close thr=0.0008(F1 最佳化選到病態近零值)表象下是兩個問題:

3.2 實驗(同 test 集, sklearn AP)

run變因has_open APhas_close APmAPthr 校準
v608384 / no aug0.99290.97040.9817close 病態 0.001
img5125120.99500.97330.9842正常 (0.4/0.5)
aug384 + strong aug0.97030.98780.9746
512aug512 + strong aug0.99560.99010.9929正常 (0.5/0.7, F1 0.967/0.952)
512aug seed2同上重跑(驗證)0.99180.99370.9928重現 +0.011 ✓(雙 seed ens 可再到 0.9952)

🦺 4. safety_rope — classifier 端到頂,主槓桿在上游

4.1 同集對照(manifest_v608 test, n=5904, pos=2232)

modelAPP@R86 / FPP@R90 / FP
v608(production)0.90990.825 / 4080.805 / 487
v6050.90670.807 / 4580.764 / 622
r16h_erase(erase0.4 變體)0.89090.811 / 4480.767 / 610
ens(608+605+erase)0.91620.833 / 386(−5.4%)0.812 / 464(−4.7%)
0530 研究的「ensemble FP −19%」在本 test 集重現不了(−5%),且 e2e audit 早已指出 78% FP 來自 person 假框、97% 漏報來自 person 漏框。safety_rope 準度問題的答案不在 classifier。

4.2 上游 person gate(本日量化)

👤 5. person — 26m@1280 升級實驗

5.1 基線(26s v608, test 5984 imgs @1280, conf .001)

5.2 yolo26m@1280(batch12, 40ep 排程, 23:00 截斷取 best.pt)

model訓練量val mAP50test mAP50test mAP50-95test P / R
26s v608100 ep0.82710.9180.7880.929 / 0.842
26m r16h40 ep(截斷)0.84470.92710.9271950.9305 / 0.8523

結論:26m@1280 僅 40ep 即全面超過 26s@100ep(mAP50 +0.009 / mAP50-95 +0.011 / R +0.010)。 per-task: conf .25 下 26m 多找回 206 人(FN 2337→2131)但 raw FP +322 — 大模型在同 conf 下更敢報,上版前必須場域 conf 重掃(規則17)。 t560 FN 719→714 幾乎不動 → 該場域是標註/可視性問題非模型容量, 補標優先。 建議:跑 26m 全量 100ep(~20h, 預期再 +0.005~0.01)後走正式上版流程;屆時 PPE/safety_rope cascade 全家受益。

注意(規則16/17):cascade 推論 imgsz 固定 1280;若換模上版,需對代表場域影片掃 conf 0.1/0.15/0.25 重驗門檻。訓練 imgsz=1280 / 推論 imgsz=1280。

📋 6. 標註問題清單(給標註團隊,比訓練更高 ROI)

#資料集問題範圍影響
1fire_smoke cvat #2有火沒標煙(fire=1, smoke=0)test task 1341/636/613/1338 約 100 clip;train 端未量化smoke 帳面 FP 高估 ~2×;hard-neg mining 會教壞模型(本日已繞開)
2safety_rope cvat #10+8FP-rate>0.4 場景標註模糊2490(71%)、task_2575(83%)、task_2554(62%)不可消除的 FP 上限
3door_state cvat #11鐵網安全閘門場景缺訓練樣本test task 1972/2878 同型場景close 結構性 FP(512aug 也只治一半)
4PPE cvat #12稀有 attr 正樣本不足sleeves 94 / hair_cover 78 / cotton_gloves 179(test pos)單 run AP 抽籤 ±0.1~0.3, 訓練端無解
5person cvat #1t560/t262/t532 三場域 FN/FP 集中66% FN 來自三 taskcascade 全家(PPE/rope)漏報上限

📦 模型下載(R2)

模型R2 連結狀態
door_state v20260610 (512aug)door_state_v20260610/best.pt✅ 已上版(ppe-demo door_state_v610 並列)
fire_smoke v20260610 (hard-neg seed1)fire_smoke_v20260610/best.pt✅ 已上版(fire_smoke_v610 並列)
PPE ens 成分 p16factory_ppe_v20260610_p16/best.pt✅ 已上版(三模 ensemble ppe22_ens610 並列;第三成分 = 既有 factory_ppe_v20260605
PPE ens 成分 p16nwfactory_ppe_v20260610_p16nw/best.pt
person yolo26m 40ep(截斷實驗版)留本機 ~/runs_new/person_yolo26m_r16h_1280/run/weights/best.pt(全量 100ep 訓練中, 完訓後走上版)
safety_rope erase 變體留本機 ~/runs_new/safety_rope_r16h_erase/best.pt(單獨無用, 僅 ensemble 研究材料)
fire_smoke hardneg seed2 / temporal r16h_t608 / PPE p16b / door img512 / door aug / door 512aug_s2留本機(消融/重現性驗證材料, 不上版)

🧪 7. 方法論注記

產出:16h 自主研究 session(Claude)· 2026-06-10 12:38 起 · 過程 log ~/runs_new/research_16h.log