📊 v20260518–19 訓練 batch 報告
2026-05-19 · 6 個 model 同 batch 重訓 + cvat #2/#9/#11/#12 force acceptance + (empty) 分配
整體:6 個 model 全部完成 — person / safety_rope / door / forklift / fire_smoke / PPE 22-attr。
觀察:3 個 detection-based 退步(person/safety_rope/forklift)· 3 個非 det model 持平到大進步(door 持平、fire_smoke +6pp、PPE v519 對 aluminized_apron + cotton_gloves 大幅進步)。
退步共通因素:detection model 都有加 HONCHUAN 場域 task 進 Test → Test distribution shift。
🎯 主表 — 5 個 model 對比 baseline
| Model | Baseline | v20260518 | 主指標 baseline | 主指標 v518 | Δ | 狀態 |
| person YOLO11n | v20260501 | cvat #1 +28 task (含 HONCHUAN) | mAP50=0.92 | mAP50=0.696 | −22pp | 退步 |
| safety_rope | v20260514 | cvat #10 +17 task acceptance/completed | val_AP=0.957 | test_AP=0.902 | −5pp | 略退 |
| forklift YOLO11n | v20260514 | cvat #9 +20 task HONCHUAN | mAP50≈0.988 | mAP50=0.449 | −54pp ❗ | 大退 |
| door_state | v20260515 | cvat #11 force acceptance, 跳 11 SIEMENS 未標 | val_mAP=0.994 | test_mAP=0.990 | −0.4pp | 持平 |
| fire_smoke | v20260507E SK | cvat #2 全量 311k frame | smoke AP=0.91 (SK) | val_mAP=0.983 (ep7) | +7pp | 進步 |
| PPE 22-attr | v20260515b | cvat #12 標記師補 +5 attr 大幅補強 | val_mAP=0.981 / aluminized 不可評 | test_mAP=0.951 / aluminized AP=1.000 | 真實 attr 解鎖 | 解鎖弱點 |
🧍 1. person YOLO11n v20260518
| 項目 | 值 |
| Backbone | YOLO11n (yolo11n.pt) |
| Hyperparams | 100 ep / batch=64 / imgsz=640 / device=0,1 / MuSGD lr=0.01 mom=0.9 |
| Dataset | cvat2 #1, 25,429 train / 3,712 val / 5,706 test img · 158,546 bbox |
| 新加 task | +28(HONCHUAN 場域: 13 train / 5 val / 10 test) |
| Best (ep100) | P=0.862 / R=0.599 / mAP50=0.696 / mAP50-95=0.474 |
| vs baseline v20260501 | mAP50 0.92→0.696(−22pp), R 0.86→0.60(−26pp) |
| ckpt | ~/runs_new/person_v20260518/run/weights/best.pt(5090-2) |
退步推測:HONCHUAN 場域監視器 person 多半小、遠、模糊;polygon→bbox 轉換可能跟 baseline 不一致;baseline 可能還用了 cvat #1 以外的 source。
🦺 2. safety_rope v20260518
| 項目 | 值 |
| Backbone | DINOv3-S (vit_small_patch16_dinov3) 22.47M params |
| Stack | RoIAlign HD 1280×720 + 外擴 1.0/0.2/1.5 + photometric + random_erase + camaug |
| Hyperparams | 30 ep / batch=8 / lr=1e-4 / class_weights wrong=1.5 correct=1.0 |
| Dataset | cvat2 #10 + #8: 28,531 rows manifest(vs baseline 16,170 +12k) |
| 新加 task | +17 acceptance/completed(11 SIEMENS_*_20260427 跳過待 review) |
| Best | val_AP=0.932 @ ep3(early stop ep11/30) |
| Test | AP=0.902 / F1=0.846 / P=0.814 / R=0.881 / acc=0.880 |
| FP / FN | 395 / 233(TP=1728 / TN=2883) |
| vs baseline v20260514 | val_AP 0.957→0.932(−2.5pp) |
| ckpt | ~/runs_new/safety_rope_v20260518/best.pt |
退步推測:新增 17 task 中 8 個 SIEMENS 場域 + 9 個 JUJIA 補強,distribution shift 比 v20260514 batch(10 SIEMENS)變化更大。Early stop ep11 表示 model 沒抓到新場域特徵。
🚜 3. forklift YOLO11n v20260518
| 項目 | 值 |
| Backbone | YOLO11n |
| Hyperparams | 100 ep / batch=64 / imgsz=640 / device=0,1(baseline 同) |
| Dataset | cvat #9, 11,226 train / 1,171 val / 2,264 test img · 4,017 bbox |
| 新加 task | +20 HONCHUAN_UNKNOWN_CH00 全進 Train |
| Best (ep37) | P=0.970 / R=0.404 / mAP50=0.449 / mAP50-95=0.293 |
| Final (ep91 EarlyStop) | P=0.881 / R=0.288 / mAP50=0.385 |
| vs baseline v20260514 | mAP50 0.988→0.449(−54pp ❗) |
| ckpt | ~/runs_new/forklift_v20260518/run/weights/best.pt |
退步推測:val 只 104 bbox 數字噪音大;HONCHUAN 場域全進 Train,Val/Test 仍是舊場域 → Train/Test distribution mismatch;P=0.97 但 R=0.40 表示 model 學保守(很少 detect)。需 ablation 確認是 metric 噪音還是 model 真的退步。
🚪 4. door_state v20260518
| 項目 | 值 |
| Backbone | MobileNetV3-L (4.2M params) |
| Stack | 2 binary heads (has_open, has_close) + partial-label BCE + SWA-4 |
| Hyperparams | 20 ep / batch=64 / imgsz=384 / AdamW + OneCycleLR / cam_erase aug |
| Dataset | cvat #11: 5,668 train / 2,319 val / 1,949 test row(unknown filtered 45) |
| 跳過 | 11 個 SIEMENS_*_20260427 shapes=0 真未標 |
| Best (ep4) | val_mAP=0.998 (open_AP=0.998 close_AP=0.999, F1=0.984) |
| Test (best.pt) | mAP=0.9897 macro_F1=0.9634 |
| Test (SWA-4) | mAP=0.9817 macro_F1=0.9616(略低但比較穩) |
| vs baseline v20260515 | val_mAP 0.994→0.998(接近持平) |
| ckpt | ~/runs_new/door_state_v20260518/run/best.pt |
結論:door 任務已飽和(0.99+),新加 cvat #11 已 acceptance task 沒帶入明顯難度。可直接部署但效益不大。
🔥 5. fire_smoke v20260518(完成)
| 項目 | 值 |
| Backbone | MobileNetV3-L (4.2M params) |
| Stack | 2 binary heads (smoke, fire) + BCE + EMA + camaug |
| Hyperparams | 15 ep / batch=96 / imgsz=224 / AdamW lr=5e-4 wd=0.05 drop=0.3 |
| Dataset | cvat #2 force acceptance: 265,320 train / 16,637 val / 28,483 test(vs SK baseline 4k, 66× 規模) |
| tag 分布 | smoke only 119k / fire only 80k / both 42k / neither 69k |
| pos_weight | smoke=1.04 / fire=1.81 |
| 訓練 | 49 min(ep1-11 early stop, best ep7) |
| Best | val_mAP=0.9827 · smoke AP=0.975 / fire AP=0.991(EMA: smoke=0.971 / fire=0.992) |
| vs baseline v20260507E SK | smoke AP 0.91 → 0.97(+7pp 進步 ✅) |
| ckpt | ~/runs_new/fire_smoke/v20260518/best.pt + best_ema.pt |
進步原因:SK baseline 訓練只 4k frame(單一場域),v20260518 用 cvat #2 全量含 PUBLIC dataset (FASDD/FORESTFIRESMOKE/HUSSAIN) + INTERNAL 多場域,model 訊號豐富。注意:per-channel performance 仍可能有 SK report 提過的 domain shift 問題,部署前要 per-channel/per-source 拆開算 + 加 N-frame sliding mean 降 flip rate。
👷 6. PPE 22-attr v20260519(cvat #12 標記師補強後重訓)
| 項目 | 值 |
| Backbone | MobileNetV3-L (4.23M params) |
| Stack | Multi-head 22 binary + partial-label BCE + camaug + mixup + attr-specific neg-weight |
| Hyperparams | 40 ep / patience 8 / batch=128 / imgsz=[384,192] / AdamW lr=3e-4 wd=0.01 / mixup=0.2 |
| Neg-weight 對齊 v504 | harness=2.0 / hard_hat=1.3 / safety_vest=1.3(壓 FP) |
| Dataset | cvat #12 + 外部 5 source: 99,812 train / 11,580 val / 12,514 test |
| 5/19 標記師補的 attr | aluminized_apron 0→1012 / sleeves 67→520 / helmet_goggles 15→2346 / hair_cover 35→184 / rubber_gloves 137→6199 (含外部) / safety_glasses |
| 訓練 | 20 min(ep1-18 early stop, best ep10) |
| Test | test_mAP=0.9505 macro_F1=0.9214 |
| vs baseline v515b | val_mAP 0.981→0.950(−3pp),但 test set 變難(含新 attr)所以不能直接比 |
| ckpt | ~/factory_ppe/runs/factory_ppe_v20260519/best.pt |
Per-attr 詳細(test set)
| attr | AP | F1 | 變化 vs v515b |
| aluminized_apron | 1.000 | 1.000 | v515b 完全不可評估(0 yes)→ v519 ceiling ✅ |
| cotton_gloves | 0.860 | 0.827 | v515b R@P95=0.13 真實弱點 → AP 0.86 大幅改善 ✅ |
| helmet_goggles | 0.986 | 0.951 | v515 樣本 15 → v519 2,346 大幅進步 |
| hair_cover | 0.921 | 0.841 | v515 35 yes → 184,數字終於可信 |
| rubber_gloves | 1.000 | 0.999 | ceiling |
| cleanroom_suit / splash_proof_gown | 1.000 | 1.000 | ceiling |
| hard_hat / no_gloves / no_protective_clothing | 0.99+ | 0.96+ | 持平 |
| full_face_mask / face_mask | 0.99 | 0.95 | 持平 |
| no_head_protection / fall / safety_glasses | 0.96-0.97 | 0.92-0.95 | 持平 |
| safety_vest / safety_shoes / no_sleeves | 0.95-0.96 | 0.92 | 持平 |
| harness | 0.925 | 0.850 | 持平 |
| heartbeat / no_safety_shoes | 0.87-0.88 | 0.85-0.86 | 持平 |
| sleeves | 0.712 | 0.703 | 仍是瓶頸(資料 649 yes 但 distribution 廣) |
核心收益:
- aluminized_apron 從不可評估 → ceiling(標記師補的 1,012 yes 真的 work,這次 v519 訓練最重要產出)
- cotton_gloves 真實弱點明顯改善(F1 0.83,之前 R@P95 卡 0.13)
- helmet_goggles / hair_cover / sleeves / rubber_gloves 補資料後可信
- sleeves 仍是新瓶頸(distribution 廣需要 hard sample)
🔧 cvat 標準化動作(同 batch 一起做)
| 動作 | 項目 |
|------|------|
| Force acceptance/completed | cvat #2 (1096 jobs) + cvat #9 (0) + cvat #11 (~30) + cvat #12 (112 jobs)|
| (empty) subset 分配 | cvat #2 (129) + cvat #9 (20) + cvat #12 (20) 按 CH 平衡分到 Train/Val/Test |
| 跳過真未標 | cvat #10 (11 SIEMENS rope, jobs annotation/new) + cvat #11 (11 SIEMENS door, shapes=0 真空) |
## 🚫 共通退步原因 / 反思
- polygon → bbox 轉換:我的 export 用 polygon min/max xy;baseline 可能不同方式(tight bbox 或 segment-aware)→ Val/Test 是 cvat 切的 polygon-based,若 GT/pred 框法不一致 IoU 會偏低
- HONCHUAN 場域 distribution shift:person / forklift 都把 HONCHUAN 多數放進 Train,但 Val/Test 留 HONCHUAN 也偏少 → 還是 distribution 不一致
- val 樣本不足:forklift val 104 bbox 數字噪音極大
- baseline 訓練可能用多 source 整合:v20260501 person dataset 可能包含 cvat #1 以外的(如 Mapillary 公開資料),我 export 只拉 cvat #1 → train data 真實少
📦 ckpt 下載(R2)
🎯 下一步建議
| 動作 | ROI |
| 1. ppe-demo 全 6 個新版部署(人工評估用,不影響 production) | 讓 user 在 ppe-demo 直接視覺對比新舊版差異 |
| 2. cross-eval baseline ckpt 在 v20260518 test set 上 | 確認是 model 退步還是 test distribution shift |
| 3. 退步的 3 個 model 不上 production(iSeek 通報) | person / safety_rope / forklift 維持 v501/v514 production |
| 4. PPE v519 對 aluminized_apron / cotton_gloves 有真實改善,可考慮 production 部署 | 跟 v515b 共存對照 |
| 5. sleeves 仍是新瓶頸,通知標記師補 hard negative | +150 hard sample 預期 AP 0.71→0.85 |