📦 模型下載https://pub-478929a98a5c440cb22c2241c0bde314.r2.dev/fire_smoke_v20260610/best.pt

🔥 fire_smoke v20260610(hard-neg mining)

2026-06-10 16h 準度研究產出 · cvat #2 · 資料 = v20260608 manifest + 1,534 乾淨難負樣本 ×3 oversample(無新標註)

TL;DR:用 v608 自己在 train split 上的 FP 挖難負樣本(只取 smoke=0 且 fire=0 的「乾淨負樣本」)oversample ×3 重訓。同 test 集乾淨視角 smoke FP@R90 275 → 176(−36%)、AP 持平;seed2 重跑 −28% 方向重現。

Hyperparams(規則 18)

項目
Backbonemobilenetv3_large_100.ra_in1k(timm, num_classes=2: smoke/fire, sigmoid multi-label)
訓練 imgsz224
推論 imgsz224(train/infer 一致)
配方= v608 全沿用:variant camaug / batch 96 / epochs 25 (early stop ep19, best ep11) / lr 5e-4 / wd 0.05 / drop 0.3 / mixup 0.2 / patience 8 / seed 42
唯一變因hard-neg manifest:v608 在 train split 的 FP(p≥0.3)中取 smoke=0 且 fire=0 者 1,534 張(smoke-FP 1,245 / fire-FP 289),manifest 內複製 ×3
Datasettrain 133,171(130,103 + 3,068 dup)/ val 9,478 / test 17,649 — test 與 v608 完全相同
訓練 scripttrain_fs.py --tag r16h_hardneg --manifest r16h_fs_hardneg_manifest.csv --variant camaug(5090-2, ~70 min)

同 test 集對照(frame-level n=17,649, sklearn AP)

乾淨視角(smoke 評分排除 fire=1&smoke=0 的標註模糊 frame, 見下節):

modelsmoke APR90: P / FPR95: P / FPFP@0.5
v20260608(production)0.98370.962 / 2750.937 / 493323
v20260610 hardneg(本版)0.98420.975 / 176(−36%)0.949 / 390197(−39%)
ens(v608+本版)0.98560.973 / 1910.954 / 353271

全 test 視角(含模糊 frame):

modelsmoke APsmoke R90 FPfire APfire R90 FPfire R95 FP
v202606080.96495040.9802217440
v20260610 hardneg0.95884570.9750227570
ens(v608+本版)0.96524270.9814140499

誤報分析(SOP 3.5)+ 重要標註發現

v608 殘餘 smoke FP 的 56–60% 其實是 fire=1 的 frame(R95 工作點 179 個 FP 中 100 個)。目視抽查:task 613 = 漫天濃煙的野火畫面但 smoke=0(明確標註缺漏);task 1341 = 盆火弱煙(邊界)。集中在 task 1341/636/613/1338 約 100 clip。

部署

項目
ckptfire_smoke_v20260610.pt(R2 fire_smoke_v20260610/best.pt · 5090-2 ~/factory_ppe/runs/fire_smoke_r16h_hardneg/best.pt
ppe-demo registerfire_smoke_v610(與 fire_smoke_v608 並列觀察)
建議並列觀察期間以 smoke 誤報場景(髒鏡頭/雲)實測對比 v608;fire 高敏感場域注意 R95 端取捨

出處:16h 自主準度研究 2026-06-10(accuracy_research_v20260610_report)· dump/分析腳本 5090-2 ~/factory_ppe/scripts/r16h/