釋出報告 · 火焰煙霧
2026-08-06 · session:模型訓練 · MobileNetV3-Large 2-binary(smoke / fire)· 整張畫面分類 · 範圍:ISMS「PM 視角:🧠 訓練 / 驗證 (172 隻)」內火煙 21 支
同一組 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 支)。
總覽
| 模型 | 偵測 | 誤報 | L1 極難 | L2 中等 | L3 明顯 |
|---|---|---|---|---|---|
| v610 現役 | 631/714 = 88% | 2,429/4,584 = 53.0% | 127/185 = 69% | 219/235 = 93% | 177/186 = 95% |
| R5 | 554/714 = 78% | 118/4,584 = 2.6% | 86/185 = 46% | 196/235 = 83% | 173/186 = 93% |
| R10 | 594/714 = 83% | 136/4,584 = 3.0% | 126/185 = 68% | 191/235 = 81% | 177/186 = 95% |
| R11 本版 | 642/714 = 90% ▲2pp | 99/4,584 = 2.2% ▼50.8pp | 151/185 = 82% ▲13pp | 208/235 = 89% ▼4pp | 181/186 = 97% ▲2pp |
箭頭是 R11 相對 v610 現役。上表全部用固定 conf 0.5;逐支調 conf 的結果見第四節。 L1 / L2 / L3 是合成正樣本的難度分級(L1 悶燒初期、不透明度 10–20%、面積 <5%;L2 成長期;L3 明顯期)。
因果驗證
R11 = R10 的設定原封不動 + 對 新東陽 ch2 / 興農 151-16 / 興農 153-15 各補約 60 張 L1 生成正樣本 (train 的 L1 從 465 張增為 705 張)。其餘一律沒動。
| 鏡頭 | 補了幾張 L1 | R10 偵測 | R11 偵測 | 變化 |
|---|---|---|---|---|
| 新東陽 ch2 | +60 | 32/50 = 64% | 50/50 = 100% | ▲36pp |
| 興農 151-16 | +60 | 24/50 = 48% | 46/50 = 92% | ▲44pp |
| 興農 153-15 | +120 | 44/50 = 88% | 49/50 = 98% | ▲10pp |
代價很小但要記錄:沒補資料的鏡頭裡只有華周 CH12 退了 12pp(50/50 → 44/50),其餘持平或進步。 CH12 在 conf 0.05 下仍是 R 98% / FP 1.5%,實務上不受影響。
逐鏡頭
每格是 偵測數 / 誤報數。「正」= 該鏡頭 test 合成正樣本數,「負」= 真實負樣本張數。 只有負樣本的鏡頭(思維 7 支)只能看誤報。
| 鏡頭 | stage | 正 | 負 | v610 現役 | R5 | R10 | R11 |
|---|---|---|---|---|---|---|---|
| 天銳國際 測試1 | VALIDATING | 51 | 75 | 49 / 42 | 33 / 0 | 28 / 0 | 31 / 0 |
| 天銳國際 測試2 | VALIDATING | 54 | 267 | 53 / 227 | 29 / 0 | 24 / 0 | 29 / 0 |
| 新東陽 ch16 | VALIDATING | 56 | 284 | 42 / 0 | 56 / 0 | 55 / 0 | 56 / 0 |
| 新東陽 ch2 | VALIDATING | 50 | 87 | 21 / 2 | 25 / 0 | 32 / 0 | 50 / 0 |
| 新東陽 ch9 | VALIDATING | 53 | 283 | 43 / 12 | 53 / 0 | 53 / 0 | 53 / 0 |
| 興農 151-16 | TRAINING | 50 | 240 | 41 / 13 | 35 / 0 | 24 / 0 | 46 / 0 |
| 興農 153-1 | TRAINING | 50 | 261 | 43 / 60 | 30 / 0 | 50 / 4 | 50 / 3 |
| 興農 153-14 | TRAINING | 50 | 87 | 50 / 87 | 34 / 0 | 50 / 7 | 48 / 0 |
| 興農 153-15 | TRAINING | 50 | 72 | 50 / 27 | 37 / 0 | 44 / 0 | 49 / 0 |
| 華周工業 CH1 | VALIDATING | 50 | 100 | 43 / 38 | 50 / 99 | 50 / 90 | 50 / 73 |
| 華周工業 CH10 | VALIDATING | 50 | 772 | 46 / 724 | 41 / 3 | 45 / 17 | 46 / 4 |
| 華周工業 CH11 | VALIDATING | 50 | 293 | 50 / 256 | 41 / 1 | 45 / 1 | 45 / 0 |
| 華周工業 CH12 | VALIDATING | 50 | 476 | 50 / 476 | 46 / 0 | 50 / 0 | 44 ▼ / 0 |
| 華周工業 CH9 | VALIDATING | 50 | 456 | 50 / 410 | 44 / 0 | 44 / 1 | 45 / 0 |
| 思維 吳濁流 | TRAINING | — | 105 | — / 6 | — / 0 | — / 0 | — / 0 |
| 思維 嘉義福容飯店 | TRAINING | — | 235 | — / 0 | — / 0 | — / 0 | — / 4 |
| 思維 塭內23號 | TRAINING | — | 149 | — / 25 | — / 0 | — / 0 | — / 0 |
| 思維 宣王宮 | TRAINING | — | 53 | — / 0 | — / 0 | — / 0 | — / 0 |
| 思維 山柑社區 | TRAINING | — | 83 | — / 0 | — / 0 | — / 1 | — / 0 |
| 思維 易利養雞場 | TRAINING | — | 15 | — / 15 | — / 15 | — / 15 | — / 15 |
| 思維 石墻活動中心 | TRAINING | — | 191 | — / 9 | — / 0 | — / 0 | — / 0 |
彰化清潔隊 2 支不在 ISMS 172 內,但資料乾淨、一併評估:一號 10 正 / 94 負、二號 11 正 / 39 負, R11 在兩支都是 conf 調整後 R 100% / FP 0%。
誤報根因分析 · SOP 3.5
全體固定 conf 0.5:偵測 642/714(89.9%)、誤報 99/4,584(2.16%)。 現役 v610 在同一點是 631/714 與 2,429/4,584 —— R11 多抓 11 張、少誤報 2,330 張。
| 鏡頭 | FP 數 | 佔全部 FP | 該鏡頭 FP 率 | 研判 |
|---|---|---|---|---|
| 華周工業 CH1 | 73 | 73.7% | 73.0% | 訓練期真實負樣本 train / val 各只有 1 張,模型沒看過這個場景長什麼樣 |
| 思維 易利養雞場 | 15 | 15.2% | 100% | 四個版本全部 100% 誤報(含現役)→ 場景本身的問題,不是模型退步 |
| 華周工業 CH10 | 4 | 4.0% | 0.5% | 可接受 |
| 思維 嘉義福容飯店 | 4 | 4.0% | 1.7% | 可接受 |
| 興農 153-1 | 3 | 3.0% | 1.1% | 可接受 |
| 其餘 16 支 | 0 | 0% | 0% | — |
val mAP 0.9745、test 逐鏡頭偵測 90% —— 沒有「train 背起來、test 崩掉」的型態。 補 L1 後 L1 分層直接 +14pp 也說明先前是欠資料不是過擬合,所以這次補資料才有效。 (若是泛化問題,補資料照 SOP 是無效的,該走 aug / ensemble。)
CH1 的 FP 型態與 R5 / R10 一致(99 → 90 → 73 逐版下降但仍高)。 該鏡頭是室內強光 + 白色蒸氣背景,而模型在訓練期幾乎沒看過這支的負樣本, 等於把「這個視角的正常畫面」歸到未知區。這不是 shortcut,是資料缺口, 補真實負樣本就會掉下來 —— 但目前取樣器抓不到這支的 RTSP(見待辦)。
本輪沒有做 ensemble 評估。R11 是單一模型。 依 safety_rope 的經驗,兩個 decorrelated model 平均可再降 FP 約 19%, 但目前 FP 已集中在兩支資料有洞的鏡頭,ensemble 的期望效益低於直接補那兩支的資料,故不排入。
思維 易利養雞場:只有 15 張負樣本、四版全 100% 誤報。雞舍粉塵 / 水氣在畫面上與薄煙難以區分, 這很可能是標註本身的模糊上限而非模型可解的問題。建議人工複核這 15 張後再決定是否列入 KPI。
部署設定
固定 conf 0.5 對大多數鏡頭都不是好工作點。逐支掃 conf 0.05–0.99 後的結果如下。 三種模式:高準度(recall ≥ 95% 前提下取最高 conf)、低誤報(FP ≤ 2% 前提下取最低 conf)、 單一平衡(同一個 conf 同時滿足 recall ≥ 90% 且 FP ≤ 5%,作為可上版判定)。
| 鏡頭 | stage | 正 | 負 | 高準度 | 低誤報 | 建議單一 conf | 判定 |
|---|---|---|---|---|---|---|---|
| 新東陽 ch2 | VALIDATING | 50 | 87 | 0.95 → R 96% / FP 0.0% | 0.05 → R 100% / FP 0.0% | 0.05 → R 100% / FP 0.0% | ✅ |
| 新東陽 ch9 | VALIDATING | 53 | 283 | 0.97 → R 96% / FP 0.0% | 0.05 → R 100% / FP 0.7% | 0.05 → R 100% / FP 0.7% | ✅ |
| 新東陽 ch16 | VALIDATING | 56 | 284 | 0.94 → R 96% / FP 0.0% | 0.05 → R 100% / FP 1.1% | 0.05 → R 100% / FP 1.1% | ✅ |
| 興農 151-16 | TRAINING | 50 | 240 | 0.44 → R 96% / FP 0.0% | 0.05 → R 98% / FP 0.4% | 0.05 → R 98% / FP 0.4% | ✅ |
| 興農 153-1 | TRAINING | 50 | 261 | 0.80 → R 98% / FP 0.8% | 0.23 → R 100% / FP 1.9% | 0.13 → R 100% / FP 4.6% | ✅ |
| 興農 153-14 | TRAINING | 50 | 87 | 0.57 → R 96% / FP 0.0% | 0.13 → R 100% / FP 1.1% | 0.12 → R 100% / FP 3.4% | ✅ |
| 興農 153-15 | TRAINING | 50 | 72 | 0.96 → R 96% / FP 0.0% | 0.19 → R 98% / FP 1.4% | 0.18 → R 98% / FP 4.2% | ✅ |
| 華周工業 CH1 | VALIDATING | 50 | 100 | 0.89 → R 98% / FP 6.0% | 0.93 → R 92% / FP 0.0% | 0.90 → R 94% / FP 5.0% | ✅ |
| 華周工業 CH9 | VALIDATING | 50 | 456 | 0.33 → R 96% / FP 0.0% | 0.05 → R 100% / FP 0.9% | 0.05 → R 100% / FP 0.9% | ✅ |
| 華周工業 CH10 | VALIDATING | 50 | 772 | 0.38 → R 96% / FP 0.6% | 0.18 → R 96% / FP 1.9% | 0.12 → R 98% / FP 4.5% | ✅ |
| 華周工業 CH11 | VALIDATING | 50 | 293 | 0.05 → R 94% / FP 0.7% | 0.05 → R 94% / FP 0.7% | 0.05 → R 94% / FP 0.7% | ✅ |
| 華周工業 CH12 | VALIDATING | 50 | 476 | 0.05 → R 98% / FP 1.5% | 0.05 → R 98% / FP 1.5% | 0.05 → R 98% / FP 1.5% | ✅ |
| 思維 吳濁流 | TRAINING | — | 105 | 無正樣本 | 0.05 → FP 1.9% | 0.05 → FP 1.9% | ✅ |
| 思維 嘉義福容飯店 | TRAINING | — | 235 | 無正樣本 | 0.28 → FP 1.7% | 0.23 → FP 4.3% | ✅ |
| 思維 塭內23號 | TRAINING | — | 149 | 無正樣本 | 0.35 → FP 1.3% | 0.29 → FP 4.7% | ✅ |
| 思維 宣王宮 | TRAINING | — | 53 | 無正樣本 | 0.05 → FP 0.0% | 0.05 → FP 0.0% | ✅ |
| 思維 山柑社區 | TRAINING | — | 83 | 無正樣本 | 0.11 → FP 1.2% | 0.10 → FP 3.6% | ✅ |
| 思維 石墻活動中心 | TRAINING | — | 191 | 無正樣本 | 0.05 → FP 0.0% | 0.05 → FP 0.0% | ✅ |
| 天銳國際 測試1 | VALIDATING | 51 | 75 | 0.05 → R 82% / FP 0.0% | 0.05 → R 82% / FP 0.0% | 不存在 | ❌ |
| 天銳國際 測試2 | VALIDATING | 54 | 267 | 0.05 → R 89% / FP 15.4% | 0.10 → R 69% / FP 1.1% | 不存在 | ❌ |
| 思維 易利養雞場 | TRAINING | — | 15 | 無正樣本 | 0.99 → FP 13.3% | 不存在 | ❌ |
| 彰化清潔隊 一號(範圍外) | — | 10 | 94 | 0.98 → R 100% / FP 0.0% | 0.06 → R 100% / FP 0.0% | 0.05 → R 100% / FP 2.1% | ✅ |
| 彰化清潔隊 二號(範圍外) | — | 11 | 39 | 0.99 → R 100% / FP 0.0% | 0.25 → R 100% / FP 0.0% | 0.13 → R 100% / FP 2.6% | ✅ |
⚠️ conf 是 sigmoid 機率、不是 YOLO 置信度,0.05 是正常工作值,不要當成異常。
規格
這是整張畫面的分類,不做 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])}
與 R10 的差異只有訓練資料:新東陽 ch2 / 興農 151-16 各 +60 張 L1、興農 153-15 +120 張 L1。 超參數、aug、oversample 倍率全部沿用 R10,未做任何調整。
下一步
位置
# 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 集