動作
Feature #202
已結束
SC
SC
模型訓練流程(Baseline + 優化版)
Feature #202:
模型訓練流程(Baseline + 優化版)
概述
描述¶
背景¶
本專案使用 YOLOv11 Nano(yolo11n.pt,約 2.6M 參數)作為基礎模型,在僅有 33 張喉鏡影像的極小資料集上,透過遷移學習進行微調。由於資料量極少,訓練策略的設計是決定模型效能的關鍵因素。
實作內容¶
1. 訓練腳本 train.py¶
- 支援命令列參數:
--model,--epochs,--imgsz,--batch,--device,--name - 內建小資料集優化參數(凍結 Backbone、低學習率、多種資料增強)
- 訓練結束後自動執行驗證並輸出 mAP50 / mAP50-95
- 自動儲存訓練過程的曲線圖、混淆矩陣、PR 曲線等視覺化圖表
2. 第一次訓練(Baseline)— runs/detect/vocal_cord/¶
使用 YOLO 預設超參數建立基線,觀察模型在此資料集上的學習行為:
- 參數:
epochs=100,batch=16,patience=20,lr0=0.01, 不凍結 Backbone, 無額外增強 - 模型在第 38 epoch 被早停終止
- 結果:mAP50=0.445, Precision=0.700, Recall=0.240
- 發現問題:
- Recall 僅 0.240(漏掉 76% 的目標)
- Epoch 20→30 Recall 從 0.794 驟降至 0.264,訓練嚴重震盪
- 學習率 0.01 過高,預訓練特徵被破壞
- 26 張訓練圖缺乏增強,過擬合嚴重
3. 問題診斷與優化策略¶
| 診斷問題 | 優化策略 | 具體調整 |
|---|---|---|
| 預訓練特徵被全層更新覆寫 | 凍結 Backbone | freeze: 無 → 10 |
| 學習率過高導致訓練震盪 | 降低學習率 | lr0: 0.01 → 0.001(降低 10 倍) |
| 資料太少導致過擬合 | 大幅強化資料增強 | mixup=0.3, copy_paste=0.3, degrees=15.0, flipud=0.2 |
| 收斂時間不足 | 延長訓練與早停容忍 | epochs: 100→300, patience: 20→50 |
| 梯度更新過於粗糙 | 減小 batch size | batch: 16→8(每 epoch 從 2 步增為 ~4 步) |
4. 第二次訓練(優化版)— runs/detect/vocal_cord_v2/¶
套用全部優化策略後重新訓練:
- 參數:
epochs=300,batch=8,patience=50,lr0=0.001,freeze=10, augment=true, mosaic=1.0, mixup=0.3, copy_paste=0.3, degrees=15.0, scale=0.5, fliplr=0.5, flipud=0.2 - 模型在第 195 epoch 被早停終止,最佳表現出現在第 147 epoch
- 學習曲線四個階段:
- Epoch 1-25:初始學習,mAP50 從 0.01 升至 0.30(凍結 Backbone,慢但穩定)
- Epoch 25-75:快速提升,mAP50 從 0.30 升至 0.58
- Epoch 75-147:穩定優化,mAP50 從 0.58 緩慢爬升至 0.786(最佳)
- Epoch 147-195:過擬合跡象,指標開始下降,觸發早停
- 最終結果:mAP50=0.786, mAP50-95=0.423, Precision=0.900, Recall=0.619
5. 兩次訓練成果對比¶
| 指標 | Baseline | 優化版 | 提升 |
|---|---|---|---|
| mAP50 | 0.445 | 0.786 | +76.6% |
| mAP50-95 | 0.239 | 0.423 | +77.0% |
| Precision | 0.700 | 0.900 | +28.6% |
| Recall | 0.240 | 0.619 | +157.9% |
| 訓練時間 | ~497 秒 | ~2,376 秒 | — |
6. 輸出成品¶
-
runs/detect/vocal_cord/weights/best.pt:Baseline 最佳模型 -
runs/detect/vocal_cord_v2/weights/best.pt:優化版最佳模型(5.3MB,正式模型) - 每次訓練包含完整視覺化:
results.png,confusion_matrix.png,BoxPR_curve.png,BoxF1_curve.png,val_batch0_pred.jpg等
SC 是由 Sashiba Chou 於 約 2 個月 前更新
- 狀態 從 New 變更為 Closed
動作