🦺 Factory PPE 19-attr — v20260427 報告

partial-label BCE / 19 binary heads / per-attr mask(unknown→mask=0 不算 loss/metric)
資料:cvat2 project 5(6 sources, 106,958 person crops)+ CPPE-5(1,444 person crops via YOLO mapping)= 108,402 total。 2026-04-26 過夜訓練。

🏆 推薦 deploy

val_mAP
0.7729
test_mAP
0.979*
params
4.2M
train time
19min

v20260427_mobilenetv3l_cppe5 — 6 個版本中 三冠王(最高 val_mAP + 最少 params + 最快訓練)

checkpoint: 5090-2:~/factory_ppe/runs/factory_ppe_v20260427_mobilenetv3l_cppe5/best.pt

* test_mAP 只反映 raicvat_p2 part07,跨 source generalization 沒被測(見已知議題)。

6 版本完整對照

versionbackbonedataval_mAPtest_mAPmacro_f1paramsepochstime
v20260426_mobilenetv3lMobileNetV3-Lbase 6src0.66550.98500.95324.2M21 (best=13)22 min
v20260426_efficientnetb0EfficientNet-B0base 6src0.65120.98300.96114.0M33 (best=25)37 min
v20260426_convnexttinyConvNeXt-Tinybase 6src0.69740.98800.960527.9M22 (best=16)68 min
v20260427_efficientnetb0_cppe5EfficientNet-B0+CPPE-50.76400.98290.95374.0M17 (best=9)19 min
v20260427_convnexttiny_cppe5ConvNeXt-Tiny+CPPE-50.76020.98050.942127.9M11 (best=5)35 min
v20260427_mobilenetv3l_cppe5 ⭐MobileNetV3-L+CPPE-50.77290.97880.94804.2M18 (best=10)19 min

觀察:CPPE-5 整合普遍提升 +6~10% val_mAP;MobileNetV3-L 在 CPPE-5 環境下意外超越 ConvNeXt-Tiny。

訓練曲線

6-version val_mAP curves

虛線 = baseline (v20260426)、實線 = +CPPE-5 (v20260427);顏色對應 backbone。

CPPE-5 補強效果(MobileNetV3-L v426 → v427)

Final epoch val_AP per attribute:

attributev426 (base)v427 (+CPPE-5)delta
hard_hat
安全帽
0.96980.9484-0.0214
no_head_protection
無護頭
0.99740.9973-0.0000
full_face_mask
全面罩
0.17730.4242+0.2469
face_mask
口罩
0.07110.9192+0.8481
no_gloves
無手套
0.98360.9840+0.0004
cotton_gloves
棉手套
0.00000.0000+0.0000
rubber_gloves
橡膠手套
0.00000.0000+0.0000
no_protective_clothing
無防護衣
0.00000.0000+0.0000
cleanroom_suit
無塵衣
1.00001.0000+0.0000
splash_proof_gown
防潑罩袍
1.00001.0000+0.0000
safety_vest
反光背心
0.97300.9603-0.0127
safety_shoes
安全鞋
0.00000.0000+0.0000
no_safety_shoes
無安全鞋
0.21570.1586-0.0571
no_sleeves
無絕緣袖
0.00000.0000+0.0000
heartbeat
生命徵象器
0.00000.0000+0.0000
sleeves
絕緣袖
0.00000.0000+0.0000
safety_glasses
護目鏡
0.67500.7219+0.0468
hair_cover
髮帽
0.00000.0000+0.0000
helmet_goggles
頭盔護目
0.00001.0000+1.0000

關鍵突破:face_mask AP 從 0.07 → 0.92(+0.85);helmet_goggles 從 0 → 1.00(+1.0); full_face_mask 從 0.18 → 0.42(CPPE-5 沒直接補卻 transfer learning +0.25)。

Best Model Per-attribute Test Metrics

v20260427_mobilenetv3l_cppe5 在 test split (raicvat_p2 part07, 6459 samples):

attributeAPF1PRbest_thr
hard_hat
安全帽
0.9840.9640.9530.9760.47
no_head_protection
無護頭
0.9790.9460.9590.9330.51
full_face_mask
全面罩
val 無 mask=1 sample(無法評估)
face_mask
口罩
val 無 mask=1 sample(無法評估)
no_gloves
無手套
val 無 mask=1 sample(無法評估)
cotton_gloves
棉手套
val 無 mask=1 sample(無法評估)
rubber_gloves
橡膠手套
val 無 mask=1 sample(無法評估)
no_protective_clothing
無防護衣
val 無 mask=1 sample(無法評估)
cleanroom_suit
無塵衣
val 無 mask=1 sample(無法評估)
splash_proof_gown
防潑罩袍
val 無 mask=1 sample(無法評估)
safety_vest
反光背心
0.9730.9340.9350.9330.58
safety_shoes
安全鞋
val 無 mask=1 sample(無法評估)
no_safety_shoes
無安全鞋
val 無 mask=1 sample(無法評估)
no_sleeves
無絕緣袖
val 無 mask=1 sample(無法評估)
heartbeat
生命徵象器
val 無 mask=1 sample(無法評估)
sleeves
絕緣袖
val 無 mask=1 sample(無法評估)
safety_glasses
護目鏡
val 無 mask=1 sample(無法評估)
hair_cover
髮帽
val 無 mask=1 sample(無法評估)
helmet_goggles
頭盔護目
val 無 mask=1 sample(無法評估)
已知議題

Inference 範例

5090-2:~/factory_ppe/scripts/infer_ppe_v427.py 對 GUANXI 商場路人 (task1639 frame 0 person 0) 預測:

# task1639_f000000_p0.jpg
attribute                 prob    pred
no_protective_clothing    0.9999  yes ←
no_gloves                 0.9996  yes ←
no_sleeves                0.9993  yes ←
no_safety_shoes           0.9991  yes ←
no_head_protection        0.9930  yes ←
hard_hat                  0.0078  no
safety_vest               0.0039  no
helmet_goggles            0.0003  no
... (其他 14 個 PPE positive 都是 no)

對「全裸路人」negative 預測完美,與 user 手動 review 結果一致。

下一步候選

Pipeline 重現

所有 script 在 5090-2:~/factory_ppe/scripts/

報告生成時間:2026-04-26|過夜自動訓練(/loop dynamic mode)
詳細 markdown:5090-2:~/factory_ppe/v20260427_complete.md