🔍 forklift cascade v530 場域驗證問題診斷

2026-05-31 · operator 場域驗證回報 2 問題 · 已查證根因,問題 2 已修復部署

問題 2:v530 偵測不到人,v526b_p527 可以(兩版 person 都是 v527)

✅ 根因確認 + 已修復部署

兩版 person detector 都是 person_yolo26n_v20260527,但 推論 imgsz 不同

cascadeperson 推論 imgsz來源遠景人偵測
forklift_ppe_v526b_p5271280register hardcode✅ 抓得到
forklift_ppe_v530(修復前)640load() 自動讀 person v527 訓練值❌ 漏遠景人

機制

person v527 訓練 imgsz = 640。我先前(v528)把 cascade 改成「自動讀 ckpt 訓練 imgsz」修 forklift 的 train/infer mismatch——但這對 person 是盲點

person 雖訓 640,cascade 場域的遠景人是小目標,需要 1280 推論才抓得到。640 推論下遠景人被縮太小、偵測不到。person 的最佳推論 imgsz ≠ 訓練 imgsz(YOLO 全卷積可在更高解析度抓小物體)。v528 同樣有此 bug。

修復(已 commit 68bc3a8 + 部署兩台 ppe-demo)

ForkliftPPEHandler.load() 改為:forklift detector 自動讀訓練 imgsz(修 mismatch),person detector 固定 1280(cascade 場域小目標需求,不自動讀)。v528 + v530 都修正。

# 修復後
self.forklift_imgsz = forklift_yolo.overrides["imgsz"]  # 自動讀(訓 1280→推 1280)
self.person_imgsz = 1280  # 固定,person 訓 640 但場域遠景人需 1280

問題 1:v530 堆高機辨識不出(task 5179 IRODA 倉儲)

⚠️ 根因:v530 forklift confidence 偏低,conf=0.25 門檻把它濾掉

task 5179 = IRODA-AI_WAREHOUSE_CH05 倉儲遠景,subset=Validation(model 沒見過;訓練集有同場景其他 frame)。對它 forklift standalone 推論:

modelimgszconf 0.25 偵測數/frameconf 0.1
v5281280[0,0,1,1,1,1] 抓得到[0,1,1,1,1,2]
v5301280[1,0,0,0,0,0] 幾乎全漏[1,2,2,2,1,1] 降 conf 就抓到

機制:這是 v530「降誤報」的副作用

v530 為了降 FP 變保守(precision 0.961→0.988,+2.6pp),整體 confidence 分布壓低——倉儲遠景 forklift 的 conf 掉到 0.25 以下,被 cascade 的 conf=0.25 門檻濾掉。降到 conf 0.1 就抓得到(model 其實看到了,只是不夠自信)。v528 在這場景反而較好

呼應先前 fair eval:v530 mAP50-95 −2.2pp(recall 面退步)/ precision +2.6pp。場域實測證實了這個 trade-off——v530「框少但準」,對倉儲遠景難 case 會漏。

✅ 已修復(選 B:降 conf + 部署兩台 commit 0979ff2)

降 v530 default_forklift_conf 0.25 → 0.1,救回倉儲遠景偵測:

v530 conftask5179 偵測
0.25(舊)1/6 frame(漏)
0.152/6
0.123/6
0.1(新)6/6 frame ✅ 全抓到

選 0.1 因主訴是「辨識不出」,0.15/0.12 救不夠仍常漏;0.1 穩定救回。FP 增加由 v530 高 precision(0.988)本錢吸收。若場域 FP 過多可回調 0.12~0.15。長期根治建議補 IRODA 倉儲遠景樣本重訓(v530 對該場景 conf 偏低的本質是訓練樣本不足)。

📋 總結

問題根因狀態
2. v530 漏人person_imgsz 自動讀成 640(應 1280)✅ 已修復 + 部署兩台
1. v530 漏 forkliftv530 保守化 conf 偏低,0.25 門檻濾掉倉儲遠景✅ 已修復(conf 0.25→0.1)部署兩台

📌 已立規則防止再犯

  1. cascade person detector 推論 imgsz 固定 1280(場域遠景人小目標),不自動讀訓練值;只有偵測器本身的 train/infer mismatch 才自動讀。
  2. 換 forklift 模型後務必場域驗證 conf 門檻——precision 升的「保守化」model 需要更低 conf 才能維持 recall,不能沿用舊 conf。
  3. 所有釋出模型報告必列「訓練 imgsz / 推論 imgsz」,避免 cascade 拼裝時 imgsz 不一致漏偵測。

已寫入 CLAUDE.md / MODELS_INDEX 硬規則 + claude memory。

附帶教訓:cascade 的 detector 推論 imgsz,偵測器訓練尺度(修 mismatch)跟場域目標尺度(小目標需高解析度)是兩個不同考量——forklift 兩者一致(1280)、person 不一致(訓 640 但場域需 1280)。「自動讀 imgsz」只適用前者。