訓練日期 2026-05-19 · 5090-2 雙卡 · base = yolo26n.pt
v518 export 寫 if type != "polygon": continue 丟掉 72% 的 rectangle annotation,訓練只用 4,017 bbox。
v519 修 export 把 10,625 rectangle + 4,109 polygon 全部納入,訓練資料量 4.15× 增加,
完整 test set mAP50 從 v518 的 0.752 提升到 0.994(+0.242)。
v518 自己評估報 mAP50=0.995 是因為 test set 也用同樣的 polygon-only export,只測試模型「在自己缺資料的子集」的能力。一旦用完整含 rectangle 的 test 集評估,v518 ckpt mAP50 掉到 0.752(-0.243,完全沒看過 rectangle 標注的物件)。
| Ckpt | Test set | P | R | mAP50 | mAP50-95 | 備註 |
|---|---|---|---|---|---|---|
| v518 | v518 (polygon only) | 0.995 | 0.986 | 0.995 | 0.882 | 誤導性高分 |
| v518 | v519 (完整) | 0.995 | 0.523 | 0.752 | 0.668 | 真實水準 |
| v519 | v519 (完整) | 0.994 | 0.970 | 0.994 | 0.877 | 正確訓練 |
| v519 | v518 (polygon only) | 0.664 | 0.939 | 0.927 | 0.817 | P 掉是因 v519 也 detect 沒標的 rectangle 物件 |
用同一份 v519 完整 dataset(含 rectangle),把 base weight 換回 yolo11n.pt 訓 100 ep(forklift_yolo11n_v20260519_ctrl),結論:YOLO26 vs YOLO11n 持平,所有改進 100% 來自 rectangle bug 修復。
| Ckpt | Dataset | P | R | mAP50 | mAP50-95 |
|---|---|---|---|---|---|
| YOLO11n v518 | v519 test (完整) | 0.995 | 0.523 | 0.752 | 0.668 |
| YOLO11n + v519 data (ctrl) | v519 test (完整) | 0.991 | 0.988 | 0.9944 | 0.878 |
| YOLO26n + v519 data | v519 test (完整) | 0.994 | 0.970 | 0.9938 | 0.877 |
分解 +24.2pp mAP50 進步:
→ 未來資料修復優先級遠高於換 backbone;person v519 也驗證 YOLO26 對 cvat #1 (全 polygon) 持平。
| Subset | Rectangle | Polygon | Polyline |
|---|---|---|---|
| Train | 8,514 | 2,815 | 0 |
| Validation | 1,060 | 104 | 0 |
| Test | 1,051 | 1,190 | 1 |
| Total | 10,625 (72%) | 4,109 (28%) | 1 (忽略) |
| Split | v518 img / bbox | v519 img / bbox | 變化 |
|---|---|---|---|
| train | 11,226 / 2,724 | 11,360 / 11,317 | +4.15× bbox + 5 個新 HONCHUAN task |
| val | 1,171 / 104 | 1,171 / 1,164 | +11× |
| test | 2,264 / 1,189 | 2,264 / 2,240 | +1.9× |
必守規則(2026-05-19 新增):訓練前必掃 cvat shape type 分布;含 rectangle 強制 bbox YOLO det,不准只取 polygon。
詳見 訓練 SOP v20260518 與 fail table 教訓 row。
https://pub-478929a98a5c440cb22c2241c0bde314.r2.dev/forklift_yolo26n_v20260519/best.pt ⬇
task: detect, model: yolo26n.pt, epochs: 100, patience: 30
batch: 64, imgsz: 640, device: 0,1, cache: ram, workers: 8
optimizer: auto, lr0: 0.01, lrf: 0.01, momentum: 0.937, weight_decay: 0.0005
cos_lr: False, close_mosaic: 10, warmup_epochs: 3.0
hsv_h: 0.015, hsv_s: 0.7, hsv_v: 0.4
mosaic: 1.0, fliplr: 0.5, translate: 0.1, scale: 0.5
iou: 0.7, max_det: 300, seed: 0, deterministic: True
# Export shape filter(v519 修復點)
# v518: if sh["type"] != "polygon": continue ← BUG,丟 72% annotation
# v519: if sh["type"] in ("polygon", "rectangle") ← 全部納入