📊 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

ModelBaselinev20260518主指標 baseline主指標 v518Δ狀態
person YOLO11nv20260501cvat #1 +28 task (含 HONCHUAN)mAP50=0.92mAP50=0.696−22pp退步
safety_ropev20260514cvat #10 +17 task acceptance/completedval_AP=0.957test_AP=0.902−5pp略退
forklift YOLO11nv20260514cvat #9 +20 task HONCHUANmAP50≈0.988mAP50=0.449−54pp ❗大退
door_statev20260515cvat #11 force acceptance, 跳 11 SIEMENS 未標val_mAP=0.994test_mAP=0.990−0.4pp持平
fire_smokev20260507E SKcvat #2 全量 311k framesmoke AP=0.91 (SK)val_mAP=0.983 (ep7)+7pp進步
PPE 22-attrv20260515bcvat #12 標記師補 +5 attr 大幅補強val_mAP=0.981 / aluminized 不可評test_mAP=0.951 / aluminized AP=1.000真實 attr 解鎖解鎖弱點

🧍 1. person YOLO11n v20260518

項目
BackboneYOLO11n (yolo11n.pt)
Hyperparams100 ep / batch=64 / imgsz=640 / device=0,1 / MuSGD lr=0.01 mom=0.9
Datasetcvat2 #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 v20260501mAP50 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

項目
BackboneDINOv3-S (vit_small_patch16_dinov3) 22.47M params
StackRoIAlign HD 1280×720 + 外擴 1.0/0.2/1.5 + photometric + random_erase + camaug
Hyperparams30 ep / batch=8 / lr=1e-4 / class_weights wrong=1.5 correct=1.0
Datasetcvat2 #10 + #8: 28,531 rows manifest(vs baseline 16,170 +12k)
新加 task+17 acceptance/completed(11 SIEMENS_*_20260427 跳過待 review)
Bestval_AP=0.932 @ ep3(early stop ep11/30)
TestAP=0.902 / F1=0.846 / P=0.814 / R=0.881 / acc=0.880
FP / FN395 / 233(TP=1728 / TN=2883)
vs baseline v20260514val_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

項目
BackboneYOLO11n
Hyperparams100 ep / batch=64 / imgsz=640 / device=0,1(baseline 同)
Datasetcvat #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 v20260514mAP50 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

項目
BackboneMobileNetV3-L (4.2M params)
Stack2 binary heads (has_open, has_close) + partial-label BCE + SWA-4
Hyperparams20 ep / batch=64 / imgsz=384 / AdamW + OneCycleLR / cam_erase aug
Datasetcvat #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 v20260515val_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(完成)

項目
BackboneMobileNetV3-L (4.2M params)
Stack2 binary heads (smoke, fire) + BCE + EMA + camaug
Hyperparams15 ep / batch=96 / imgsz=224 / AdamW lr=5e-4 wd=0.05 drop=0.3
Datasetcvat #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_weightsmoke=1.04 / fire=1.81
訓練49 min(ep1-11 early stop, best ep7)
Bestval_mAP=0.9827 · smoke AP=0.975 / fire AP=0.991(EMA: smoke=0.971 / fire=0.992)
vs baseline v20260507E SKsmoke 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 標記師補強後重訓)

項目
BackboneMobileNetV3-L (4.23M params)
StackMulti-head 22 binary + partial-label BCE + camaug + mixup + attr-specific neg-weight
Hyperparams40 ep / patience 8 / batch=128 / imgsz=[384,192] / AdamW lr=3e-4 wd=0.01 / mixup=0.2
Neg-weight 對齊 v504harness=2.0 / hard_hat=1.3 / safety_vest=1.3(壓 FP)
Datasetcvat #12 + 外部 5 source: 99,812 train / 11,580 val / 12,514 test
5/19 標記師補的 attraluminized_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)
Testtest_mAP=0.9505 macro_F1=0.9214
vs baseline v515bval_mAP 0.981→0.950(−3pp),但 test set 變難(含新 attr)所以不能直接比
ckpt~/factory_ppe/runs/factory_ppe_v20260519/best.pt

Per-attr 詳細(test set)

attrAPF1變化 vs v515b
aluminized_apron1.0001.000v515b 完全不可評估(0 yes)→ v519 ceiling ✅
cotton_gloves0.8600.827v515b R@P95=0.13 真實弱點 → AP 0.86 大幅改善 ✅
helmet_goggles0.9860.951v515 樣本 15 → v519 2,346 大幅進步
hair_cover0.9210.841v515 35 yes → 184,數字終於可信
rubber_gloves1.0000.999ceiling
cleanroom_suit / splash_proof_gown1.0001.000ceiling
hard_hat / no_gloves / no_protective_clothing0.99+0.96+持平
full_face_mask / face_mask0.990.95持平
no_head_protection / fall / safety_glasses0.96-0.970.92-0.95持平
safety_vest / safety_shoes / no_sleeves0.95-0.960.92持平
harness0.9250.850持平
heartbeat / no_safety_shoes0.87-0.880.85-0.86持平
sleeves0.7120.703仍是瓶頸(資料 649 yes 但 distribution 廣)
核心收益:
  1. aluminized_apron 從不可評估 → ceiling(標記師補的 1,012 yes 真的 work,這次 v519 訓練最重要產出)
  2. cotton_gloves 真實弱點明顯改善(F1 0.83,之前 R@P95 卡 0.13)
  3. helmet_goggles / hair_cover / sleeves / rubber_gloves 補資料後可信
  4. 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 真空) | ## 🚫 共通退步原因 / 反思
  1. polygon → bbox 轉換:我的 export 用 polygon min/max xy;baseline 可能不同方式(tight bbox 或 segment-aware)→ Val/Test 是 cvat 切的 polygon-based,若 GT/pred 框法不一致 IoU 會偏低
  2. HONCHUAN 場域 distribution shift:person / forklift 都把 HONCHUAN 多數放進 Train,但 Val/Test 留 HONCHUAN 也偏少 → 還是 distribution 不一致
  3. val 樣本不足:forklift val 104 bbox 數字噪音極大
  4. baseline 訓練可能用多 source 整合:v20260501 person dataset 可能包含 cvat #1 以外的(如 Mapillary 公開資料),我 export 只拉 cvat #1 → train data 真實少

📦 ckpt 下載(R2)

Model大小R2 下載連結
safety_rope v2026051890 MBsafety_rope_v20260518/best.pt
door_state v2026051817 MBdoor_state_v20260518/best.pt
forklift YOLO11n v202605185.5 MBforklift_yolo11n_v20260518/best.pt
fire_smoke v2026051817 MBfire_smoke_v20260518/best.pt
PPE 22-attr v2026051917 MBfactory_ppe_v20260519/best.pt
person YOLO11n v202605185.5 MBperson_yolo11n_v20260518/best.pt

🎯 下一步建議

動作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
→ 模型訓練 SOP · → Temporal Smoothing 設計 · → 所有報告目錄