💧 積水偵測 water_tags_v20260714 訓練報告

日期 2026-07-14 | MobileNetV3-L binary 影像分類 | cvat2 #40 water_tags | v1 baseline,未上版

任務:CCTV 畫面判斷是否有積水(binary 有水/無水)。資料來源 WRA_[flood] 淹水攝影機。
test water AP = 0.9997 | 訓練 imgsz 384 / 推論 imgsz 384(規則18)

模型 / 訓練設定

項目
架構MobileNetV3-L (timm mobilenetv3_large_100.ra_in1k), binary 影像分類, 4.2M params
訓練 imgsz / 推論 imgsz384 / 384
batch / epochs / lr / patience64 / 20(ep7 early stop) / 5e-4 / 5
aug / pos_weightcamaug(CCTV 相機增強)/ 0.622(正例多數自動平衡)
訓練時間75s(GPU1 RTX5090)
pipeline沿用 fire_smoke train_fs(water=head[0],head[1] 為 dummy)

資料分布(cvat2 #40, 37 tasks, image-mode)

subset總 frame有水無水(負例)
Train23571453904 (38%)
Validation37033040 (11%)
Test40136140 (10%)

subset 用 cvat task.subset 切(不同 task 分不同 split,無同幀 leak)。data_id 拼 disk path、過濾 deleted_frames、image-mode 無 video-mode 坑。

誤報分析(SOP 3.5:固定 recall 的 P + FP 絕對數)

操作點thresholdPrecisionTPFP(無水誤報)FN(有水漏)
@0.50.5000.9923543/407/361
R≥0.990.3130.9893584/403
R≥0.950.9580.9973431/4018
R≥0.900.9951.0003250/4036

Test 預測範例

water 預測範例

綠=判對,紅=判錯。FP(誤報)多是濕路面/雨天FN(漏)是輕微積水/雨景。這條 wet↔積水 模糊帶正是 level 分級該解決的。

⚠️ 限制與數據誠實

  1. AP 0.9997 偏樂觀:val/test 無水負例各只 40 張(~10%),且多為同批淹水攝影機的乾燥 frame,非多樣化乾燥場景 → 真實誤報率量不準(FP 3-4/40 小樣本 noise 大)。要可靠 precision 需補多樣化乾燥/雨天負例
  2. level 4 級未做:schema 有 wet/puddle/flood,但標註全填 no_set → 目前只能 binary。要嚴重度分級須先補標 level(也能解 wet↔積水 模糊帶)。
  3. acceptance 放寬:#40 全 task status=annotation(新專案無驗收流程),本次按 subset 收未過 acceptance 過濾。

建議下一步

  1. 多樣化無積水負例(不同地點/天氣/濕路面)→ 重評真實誤報率再考慮上版
  2. 要嚴重度 → 補標 level(wet/puddle/flood)→ 改多級
  3. 可先上 ppe-demo / iseek-river 並列,用實際影片看 FP 表現

ckpt: ~/factory_ppe/runs/water_v20260714/best.pt(water=head[0])。未上版,待 operator 決定。