👤 Person 偵測器升級決策報告

2026-06-02 · 新 detector person_yolo26s@1280(test mAP50 0.825 / -95 0.637,遠景小目標 +60~90% vs v527)已驗證 · 本報告供決定「還有哪些 cascade 要換上去」

⭐ 一句話結論

偵測主導的 cascade(person / ppe22 / forklift_ppe)已全部升 yolo26s@1280(+ imgsz 自動讀根治)。剩下的是 ROI 裁切類(safety_rope / age_gender / ppe_color),它們 person 框只拿來定位裁圖餵下游分類器。其中 safety_rope 最值得換(場域 audit:78% FP / 97% 漏報都源自 person 偵測器本身),但必須先場域驗證;age_gender / ppe_color 低風險低優先。

1️⃣ 兩種 person 用法 — 決策的核心分野

類型person 框的角色換偵測器影響什麼換的風險
偵測主導
(detection-primary)
person 的數量/位置就是輸出,或每個 person 都要被檢查(漏一個=漏一次安全檢查)recall 直接決定安全覆蓋率;遠景小人漏偵測 = 漏檢低(偵測更準=更好),只要 conf/imgsz 對
ROI 裁切
(roi-crop)
person 框只拿來定位裁一塊 ROI 餵下游分類器(安全繩/年齡/顏色)① 偵測到的 person 才會被分類(recall 仍重要)② 框的鬆緊/位置變了 → ROI 外擴後的構圖變 → 下游分類器看到不同畫面中(下游分類器對 ROI 構圖敏感,需重新驗證)

2️⃣ 全部用到 person 偵測的 cascade(現況)

✅ 偵測主導 — 已升 yolo26s@1280(今天完成)

register keyhandlerperson 模型推論 imgszperson conf用法
person_s1280 ⭐NEWPersonDetHandleryolo26s@12801280 (自動讀)0.25純偵測
ppe22_s1280 ⭐NEWPPE21Handleryolo26s@12801280 (自動讀)0.25person→裁→22-attr
forklift_ppe_s1280 ⭐NEWForkliftPPEHandleryolo26s@12801280 (自動讀)0.25forklift+person 關聯
— 既有並列(person 仍 yolo26n,但 imgsz bug 已修為 1280):person/person_v527ppe22_v521/v529/v601bforklift_ppe_v530 等 —

🔧 順手修掉的 bugPPE21Handler 的 person 偵測原本寫死 imgsz=640(所有 ppe22 都中),今天改成自動讀=1280。所以即使 ppe22_v521 等還用 yolo26n,現在也正確跑 1280 了。

⏳ ROI 裁切 — 尚未升(person 偵測仍 imgsz=640 hardcode + 舊模型)

register keyhandlerperson 模型imgszconf下游分類器狀態
safety_rope_ensembleproductionEnsembleSafetyRopeyolo26n_v5276400.35DINOv3-S ×2 平均 (wrong/correct)建議換·須驗證
safety_rope / _v519 / _v519_p527 / _v529SafetyRope / ViTyolo11n_v501 ~ yolo26n_v5276400.35DINOv3 / RoI Align同上
age_genderAgeGenderHandleryolo11n_v501(舊)6400.35age/gender 估計低優先
ppe_colorPPEColorHandleryolo11n_v501(舊)6400.35顏色分類 (v20260415)低優先·疑 legacy

3️⃣ 逐一分析 — 該不該換

🪢 safety_rope(安全繩)— 高價值,但必須先驗證 建議換

用法:person YOLO 偵測 → 框外擴(expand_x / expand_y_top=1.0 / expand_y_bot=1.5)→ RoI Align HD 1280×720 → DINOv3-S 判 wrong/correct。目前 person 偵測跑 imgsz 640

為什麼值得換(強論點):

為什麼必須先驗證(風險):

建議做法:建一個 safety_rope_ensemble_s1280 並列(person 換 yolo26s@1280、imgsz 自動 1280、conf 0.25),對代表場域影片(含遠景/轉場 task_2907 類)跑 e2e,比 FP/漏報 vs 現 production,數據好再切。零重訓(只換偵測器)。

🧒 age_gender(年齡性別)— 低優先 可選

用法:person → 裁切 → 年齡/性別估計。person 仍用舊 yolo11n_v20260501(5/01)+ imgsz 640。

非安全關鍵,漏一個遠景人的後果遠小於 PPE/安全繩。換上去能讓遠景人也被估計,但下游 age/gender 對小臉本就不準。建議:要換就一起換(順手),但不急、不需單獨驗證太細

🎨 ppe_color(顏色分類)— 低優先,疑 legacy 先確認還用不用

用法:person → 裁切 → 顏色分類。person 用舊 yolo11n_v501,分類器 ppe_color_v20260415(4 月舊版)。

版本很舊、可能已被 PPE 22-attr 取代。建議:先確認這個 demo 還有沒有人在用,沒用就直接從 register 移除(清掉而非升級);還在用再順手換 person。

4️⃣ imgsz 自動讀方案(已上線,根治「每次手動確認」)

YOLO ckpt 存得到訓練 imgsz(yolo.overrides["imgsz"]),所以新 helper:

cascade_det_imgsz(yolo, floor) = max(ckpt 訓練 imgsz, floor)

三個偵測 handler 的 load() 都用它。以後換 person/forklift 模型只要丟 ckpt,imgsz 自動對,不用再人工確認,也不會重蹈 v530「自動讀成 640 漏遠景人」。若 ROI 裁切類也要換,會一併套用同 helper。

✅ 建議決策(勾選後告訴我)

模型建議動作需驗證?
safety_rope_ensemble換(高價值)safety_rope_ensemble_s1280 並列 → 場域 e2e 比 FP/漏報 → 數據好再切 production(剛上 production)
safety_rope 其它並列版跟著換同上一起換 person隨主版
age_gender順手換person → yolo26s@1280,imgsz 自動否(非安全關鍵)
ppe_color先確認用途還在用→換;沒用→移除 register

註:以上全是零重訓(只換 cascade 內的 person 偵測器 + imgsz/conf)。safety_rope 我建議先做並列 + 場域驗證再切;其餘可直接換。

📦 新 person 偵測器下載

person_yolo26s_v20260601_1280/best.pt ⬇(20.4 MB,訓練 imgsz 1280)· 訓練報告

← 訓練報告目錄