釋出報告 · 火焰煙霧

fire_smoke_v20260805(R11)— 補 L1 弱訊號後首次全面超越現役

2026-08-06 · session:模型訓練 · MobileNetV3-Large 2-binary(smoke / fire)· 整張畫面分類 · 範圍:ISMS「PM 視角:🧠 訓練 / 驗證 (172 隻)」內火煙 21 支

結論:建議上版 — 這是第一個「偵測贏過現役、誤報只剩現役 1/25」的版本

同一組 test 集四版對照(正 714 / 真實負 4,584)。前幾版一路在「誤報砍很兇但偵測退步」的取捨上打轉, R11 把取捨打掉了:偵測 90%(現役 88%)、誤報 2.2%(現役 53.0%)。

最關鍵的是 L1 悶燒初期弱訊號 82% —— 現役 69%、上一版 R10 只有 68%。 L1 是最該抓到也最難抓的一級,過去四輪都拿它沒辦法,這次只補了 3 支鏡頭、共 240 張 L1 生成正樣本就解決了。

ISMS 21 支裡 18 支逐支調 conf 後可上版(前一版 v20260804 是 16 支)。

總覽

四版同一組 test 集對照

v610(現役)

53.0%
誤報率
偵測 88% · L1 69%

R5

2.6%
誤報率
偵測 78% · L1 46%

R10

3.0%
誤報率
偵測 83% · L1 68%

R11(本版)

2.2%
誤報率
偵測 90% · L1 82%
模型偵測誤報L1 極難L2 中等L3 明顯
v610 現役631/714 = 88%2,429/4,584 = 53.0%127/185 = 69%219/235 = 93%177/186 = 95%
R5554/714 = 78%118/4,584 = 2.6%86/185 = 46%196/235 = 83%173/186 = 93%
R10594/714 = 83%136/4,584 = 3.0%126/185 = 68%191/235 = 81%177/186 = 95%
R11 本版642/714 = 90% ▲2pp99/4,584 = 2.2% ▼50.8pp151/185 = 82% ▲13pp208/235 = 89% ▼4pp181/186 = 97% ▲2pp

箭頭是 R11 相對 v610 現役。上表全部用固定 conf 0.5;逐支調 conf 的結果見第四節。 L1 / L2 / L3 是合成正樣本的難度分級(L1 悶燒初期、不透明度 10–20%、面積 <5%;L2 成長期;L3 明顯期)。

因果驗證

只補了 3 支鏡頭的 L1,那 3 支就是進步最多的

R11 = R10 的設定原封不動 + 對 新東陽 ch2 / 興農 151-16 / 興農 153-15 各補約 60 張 L1 生成正樣本 (train 的 L1 從 465 張增為 705 張)。其餘一律沒動。

鏡頭補了幾張 L1R10 偵測R11 偵測變化
新東陽 ch2+6032/50 = 64%50/50 = 100%▲36pp
興農 151-16+6024/50 = 48%46/50 = 92%▲44pp
興農 153-15+12044/50 = 88%49/50 = 98%▲10pp
這是本次最重要的結論。 「零星補幾張新標註多半持平或退步」在過去六次重訓都成立,但那些是隨機補資料。 這次是先用逐鏡頭 eval 找出 recall 封頂的鏡頭,再針對那幾支補它缺的那個難度級別 —— 240 張圖、成本約 $18,換到 L1 全體 +14pp。補資料要先定位再補,不是補總量。

代價很小但要記錄:沒補資料的鏡頭裡只有華周 CH12 退了 12pp(50/50 → 44/50),其餘持平或進步。 CH12 在 conf 0.05 下仍是 R 98% / FP 1.5%,實務上不受影響。

逐鏡頭

ISMS 21 支 + 彰化清潔隊 2 支(固定 conf 0.5)

每格是 偵測數 / 誤報數。「正」= 該鏡頭 test 合成正樣本數,「負」= 真實負樣本張數。 只有負樣本的鏡頭(思維 7 支)只能看誤報。

鏡頭stagev610 現役R5R10R11
天銳國際 測試1VALIDATING517549 / 4233 / 028 / 031 / 0
天銳國際 測試2VALIDATING5426753 / 22729 / 024 / 029 / 0
新東陽 ch16VALIDATING5628442 / 056 / 055 / 056 / 0
新東陽 ch2VALIDATING508721 / 225 / 032 / 050 / 0
新東陽 ch9VALIDATING5328343 / 1253 / 053 / 053 / 0
興農 151-16TRAINING5024041 / 1335 / 024 / 046 / 0
興農 153-1TRAINING5026143 / 6030 / 050 / 450 / 3
興農 153-14TRAINING508750 / 8734 / 050 / 748 / 0
興農 153-15TRAINING507250 / 2737 / 044 / 049 / 0
華周工業 CH1VALIDATING5010043 / 3850 / 9950 / 9050 / 73
華周工業 CH10VALIDATING5077246 / 72441 / 345 / 1746 / 4
華周工業 CH11VALIDATING5029350 / 25641 / 145 / 145 / 0
華周工業 CH12VALIDATING5047650 / 47646 / 050 / 044 / 0
華周工業 CH9VALIDATING5045650 / 41044 / 044 / 145 / 0
思維 吳濁流TRAINING105— / 6— / 0— / 0— / 0
思維 嘉義福容飯店TRAINING235— / 0— / 0— / 0— / 4
思維 塭內23號TRAINING149— / 25— / 0— / 0— / 0
思維 宣王宮TRAINING53— / 0— / 0— / 0— / 0
思維 山柑社區TRAINING83— / 0— / 0— / 1— / 0
思維 易利養雞場TRAINING15— / 15— / 15— / 15— / 15
思維 石墻活動中心TRAINING191— / 9— / 0— / 0— / 0

彰化清潔隊 2 支不在 ISMS 172 內,但資料乾淨、一併評估:一號 10 正 / 94 負、二號 11 正 / 39 負, R11 在兩支都是 conf 調整後 R 100% / FP 0%。

誤報根因分析 · SOP 3.5

99 個誤報裡有 88 個來自兩支鏡頭

1 · 固定 recall 下的 precision 與 FP 絕對數

全體固定 conf 0.5:偵測 642/714(89.9%)、誤報 99/4,584(2.16%)。 現役 v610 在同一點是 631/714 與 2,429/4,584 —— R11 多抓 11 張、少誤報 2,330 張

2 · 按場景拆 FP

鏡頭FP 數佔全部 FP該鏡頭 FP 率研判
華周工業 CH17373.7%73.0%訓練期真實負樣本 train / val 各只有 1 張,模型沒看過這個場景長什麼樣
思維 易利養雞場1515.2%100%四個版本全部 100% 誤報(含現役)→ 場景本身的問題,不是模型退步
華周工業 CH1044.0%0.5%可接受
思維 嘉義福容飯店44.0%1.7%可接受
興農 153-133.0%1.1%可接受
其餘 16 支00%0%
扣掉 CH1 與易利養雞場,R11 在其餘 19 支的誤報是 11 / 4,469 = 0.25%。 換句話說整體 2.2% 這個數字幾乎全部由兩支「訓練資料有洞」的鏡頭撐起來 —— 要再往下降,該做的是補那兩支的負樣本,不是再調模型。

3 · train / test gap

val mAP 0.9745、test 逐鏡頭偵測 90% —— 沒有「train 背起來、test 崩掉」的型態。 補 L1 後 L1 分層直接 +14pp 也說明先前是欠資料不是過擬合,所以這次補資料才有效。 (若是泛化問題,補資料照 SOP 是無效的,該走 aug / ensemble。)

4 · shortcut 機制

CH1 的 FP 型態與 R5 / R10 一致(99 → 90 → 73 逐版下降但仍高)。 該鏡頭是室內強光 + 白色蒸氣背景,而模型在訓練期幾乎沒看過這支的負樣本, 等於把「這個視角的正常畫面」歸到未知區。這不是 shortcut,是資料缺口, 補真實負樣本就會掉下來 —— 但目前取樣器抓不到這支的 RTSP(見待辦)。

5 · ensemble vs 單一 aug

本輪沒有做 ensemble 評估。R11 是單一模型。 依 safety_rope 的經驗,兩個 decorrelated model 平均可再降 FP 約 19%, 但目前 FP 已集中在兩支資料有洞的鏡頭,ensemble 的期望效益低於直接補那兩支的資料,故不排入。

6 · 標註模糊場景

思維 易利養雞場:只有 15 張負樣本、四版全 100% 誤報。雞舍粉塵 / 水氣在畫面上與薄煙難以區分, 這很可能是標註本身的模糊上限而非模型可解的問題。建議人工複核這 15 張後再決定是否列入 KPI。

部署設定

逐鏡頭 conf 建議 — 21 支裡 18 支可上版

固定 conf 0.5 對大多數鏡頭都不是好工作點。逐支掃 conf 0.05–0.99 後的結果如下。 三種模式:高準度(recall ≥ 95% 前提下取最高 conf)、低誤報(FP ≤ 2% 前提下取最低 conf)、 單一平衡(同一個 conf 同時滿足 recall ≥ 90% 且 FP ≤ 5%,作為可上版判定)。

鏡頭stage高準度低誤報建議單一 conf判定
新東陽 ch2VALIDATING50870.95 → R 96% / FP 0.0%0.05 → R 100% / FP 0.0%0.05 → R 100% / FP 0.0%
新東陽 ch9VALIDATING532830.97 → R 96% / FP 0.0%0.05 → R 100% / FP 0.7%0.05 → R 100% / FP 0.7%
新東陽 ch16VALIDATING562840.94 → R 96% / FP 0.0%0.05 → R 100% / FP 1.1%0.05 → R 100% / FP 1.1%
興農 151-16TRAINING502400.44 → R 96% / FP 0.0%0.05 → R 98% / FP 0.4%0.05 → R 98% / FP 0.4%
興農 153-1TRAINING502610.80 → R 98% / FP 0.8%0.23 → R 100% / FP 1.9%0.13 → R 100% / FP 4.6%
興農 153-14TRAINING50870.57 → R 96% / FP 0.0%0.13 → R 100% / FP 1.1%0.12 → R 100% / FP 3.4%
興農 153-15TRAINING50720.96 → R 96% / FP 0.0%0.19 → R 98% / FP 1.4%0.18 → R 98% / FP 4.2%
華周工業 CH1VALIDATING501000.89 → R 98% / FP 6.0%0.93 → R 92% / FP 0.0%0.90 → R 94% / FP 5.0%
華周工業 CH9VALIDATING504560.33 → R 96% / FP 0.0%0.05 → R 100% / FP 0.9%0.05 → R 100% / FP 0.9%
華周工業 CH10VALIDATING507720.38 → R 96% / FP 0.6%0.18 → R 96% / FP 1.9%0.12 → R 98% / FP 4.5%
華周工業 CH11VALIDATING502930.05 → R 94% / FP 0.7%0.05 → R 94% / FP 0.7%0.05 → R 94% / FP 0.7%
華周工業 CH12VALIDATING504760.05 → R 98% / FP 1.5%0.05 → R 98% / FP 1.5%0.05 → R 98% / FP 1.5%
思維 吳濁流TRAINING105無正樣本0.05 → FP 1.9%0.05 → FP 1.9%
思維 嘉義福容飯店TRAINING235無正樣本0.28 → FP 1.7%0.23 → FP 4.3%
思維 塭內23號TRAINING149無正樣本0.35 → FP 1.3%0.29 → FP 4.7%
思維 宣王宮TRAINING53無正樣本0.05 → FP 0.0%0.05 → FP 0.0%
思維 山柑社區TRAINING83無正樣本0.11 → FP 1.2%0.10 → FP 3.6%
思維 石墻活動中心TRAINING191無正樣本0.05 → FP 0.0%0.05 → FP 0.0%
天銳國際 測試1VALIDATING51750.05 → R 82% / FP 0.0%0.05 → R 82% / FP 0.0%不存在
天銳國際 測試2VALIDATING542670.05 → R 89% / FP 15.4%0.10 → R 69% / FP 1.1%不存在
思維 易利養雞場TRAINING15無正樣本0.99 → FP 13.3%不存在
彰化清潔隊 一號(範圍外)10940.98 → R 100% / FP 0.0%0.06 → R 100% / FP 0.0%0.05 → R 100% / FP 2.1%
彰化清潔隊 二號(範圍外)11390.99 → R 100% / FP 0.0%0.25 → R 100% / FP 0.0%0.13 → R 100% / FP 2.6%
天銳測試 1 / 測試 2 這次重新納入評估了。 8/4 清掉 5,935 張 RTSP 掉線的空白灰畫面之後,這兩支的負樣本已經可信,所以不再標「暫不評估」。 結果是誤報 0(現役 42 / 227)但 recall 封頂 82% / 89% 上不去 —— 與華周 CH11 當初的型態相同, 要靠補該鏡頭的 L1 正樣本,不是調門檻。

⚠️ conf 是 sigmoid 機率、不是 YOLO 置信度,0.05 是正常工作值,不要當成異常。

規格

模型與推論方式

下載
pub-478929a98a5c440cb22c2241c0bde314.r2.dev/fire_smoke_v20260805/best.pt
檔案大小
17,011,861 bytes
Backbone
mobilenetv3_large_100.ra_in1k
參數量
4.20 M
輸出
2 logits(smoke / fire)→ sigmoid
訓練 imgsz
224 × 224
推論 imgsz
224 × 224
前段偵測器
無 — 整張畫面分類

這是整張畫面的分類,不做 crop、不接 person / 物件偵測器。 判定是 max(smoke, fire) ≥ conf,門檻逐鏡頭設(見上一節)。

import torch, timm
import torchvision.transforms as T
from PIL import Image

ck = torch.load("best.pt", map_location="cpu", weights_only=False)
sd = {k.replace("module.", ""): v for k, v in (ck.get("model_state") or ck).items()}
m = timm.create_model(ck.get("model_name", "mobilenetv3_large_100.ra_in1k"),
                      pretrained=False, num_classes=sd["classifier.weight"].shape[0])
m.load_state_dict(sd, strict=False); m.eval().cuda()

sz = int(ck.get("img_size") or 224)          # 224,不要改
tf = T.Compose([T.Resize((sz, sz)), T.ToTensor(),
                T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])

def has_fire_smoke(img_path, conf):
    x = tf(Image.open(img_path).convert("RGB")).unsqueeze(0).cuda()
    with torch.no_grad():
        p = torch.sigmoid(m(x))[0].cpu().numpy()   # [smoke, fire]
    return float(p.max()) >= conf, {"smoke": float(p[0]), "fire": float(p[1])}

訓練設定

tag
R11_l1x3
variant
camaug
epochs / patience
25 / 14
batch
96(單卡 GPU1)
lr / wd
5e-4 / 0.05
mixup / drop
0.2 / 0.3
pos_weight
smoke 1.317 · fire 3.108
best val mAP
0.9745 @ ep14
train / val
186,679 / 15,752
訓練時間
15,730 s(4.4 h)
seed
42
oversample
合成正樣本 ×8

與 R10 的差異只有訓練資料:新東陽 ch2 / 興農 151-16 各 +60 張 L1、興農 153-15 +120 張 L1。 超參數、aug、oversample 倍率全部沿用 R10,未做任何調整。

下一步

建議與待辦

  1. 建議上版 R11 取代 v610 —— 偵測、誤報、L1/L3 四項全贏,L2 退 4pp 是唯一代價。 上版時務必逐鏡頭套 conf,套單一 0.5 會浪費掉這個模型(18 支可用會掉到約 10 支)。
  2. 華周 CH1 補真實負樣本 —— 全體 74% 的誤報來自這一支,成因明確(train / val 各只有 1 張負樣本)。 阻塞在取樣器抓不到該支 RTSP,要先修串流。這件事的效益大於任何模型調整。
  3. 天銳測試 1 / 測試 2 補 L1 正樣本 —— 誤報已是 0,卡在 recall 82% / 89% 封頂。 依 ch2 這次的實證(+60 張 L1 → 64%→100%),兩支各補 60 張、約 $9
  4. 思維 易利養雞場人工複核那 15 張 —— 四版全 100% 誤報,先確認是不是標註本身模糊,再決定是否列入 KPI。
  5. 華周 CH12 退 12pp 觀察即可,conf 0.05 下仍 R 98% / FP 1.5%。

位置

檔案

# 5090-2
~/factory_ppe/runs/fire_smoke_R11_l1x3/best.pt      ckpt(= R2 的 fire_smoke_v20260805)
~/runs_new/round_R11.log                            訓練 log
~/runs_new/fire_smoke_R11_os8/manifest.csv          訓練用 manifest(oversample ×8)
~/runs_new/fire_smoke_R11/manifest.csv              unique manifest
~/runs_new/r11_eval.log                             四版逐鏡頭對照(本報告第三節)
~/runs_new/r11_conf.log                             逐鏡頭 conf 掃描
~/runs_new/r11_excl.log                             天銳 ×2 + 新東陽 ch2 補掃
/tmp/eval_fire21_R11.py  /tmp/conf_R11.py           評估腳本
/tmp/eval_fire21_R11.json  /tmp/conf_R11.json       評估結果

# R2
https://pub-478929a98a5c440cb22c2241c0bde314.r2.dev/fire_smoke_v20260805/best.pt

session:模型訓練 · 2026-08-06 · 評估資料來自 cvat2 project #2 · 對照 ckpt:v610 / R5 / R10 / R11 同一組 test 集