專案

一般

配置概況

動作

Feature #202

已結束
SC SC

模型訓練流程(Baseline + 優化版)

Feature #202: 模型訓練流程(Baseline + 優化版)

是由 Sashiba Chou約 2 個月 前加入. 於 約 2 個月 前更新.

狀態:
Closed
優先權:
Normal
被分派者:
開始日期:
2026-04-07
完成日期:
2026-04-07
完成比例:

100%

預估工時:
1:00 小時
耗用工時:

概述

描述

背景

本專案使用 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
動作

匯出至 PDF Atom