Python | OpenCV YOLOv8 訓練進階設定
📚 前言
在上一篇 YOLOv8 模型訓練 中,我們完成了基本的訓練流程設定。
但「能訓練」和「訓練得好」是兩回事。
這一篇將介紹兩個非常重要的進階主題:
- 資料增強:讓模型看到更多變化,幫助它學得更好
- 防止過擬合:避免模型死背訓練資料,真正具備泛化能力
掌握這些設定後,你的模型訓練效果會明顯提升。
💻 內建資料增強設定
YOLOv8 在訓練時內建了豐富的資料增強,預設已自動啟用,不需要額外撰寫增強程式碼。
一般情況下預設值已夠用,不需要動。但以下幾種情況可能需要調整:
- 資料集很小(< 100 張):可以加強增強強度,讓模型看到更多變化,減少過擬合
- 物件方向固定(如俯視圖):可以關閉
fliplr、flipud,避免產生現實中不存在的翻轉角度 - 室內固定光源場景:
hsv_s、hsv_v可以調低,不需要大幅模擬色彩變化 - 訓練結果不穩定或 mAP 很低:可以嘗試設
mosaic=0.0,有時過強的增強反而干擾學習
可透過參數調整增強強度:
1 | # augmentation_params.py |
💡 Mosaic 增強是 YOLO 的招牌技術,將 4 張圖片拼接在一起,讓模型學習更多背景多樣性,對偵測小物件特別有效。
💻 防止過擬合設定
過擬合是指模型在訓練集表現很好,但在驗證集表現變差。
YOLOv8 提供了以下常見防過擬合機制
1 | # anti_overfit_example.py |
💡 如何判斷是否過擬合、怎麼讀懂訓練曲線,將在 YOLOv8 訓練結果分析 中完整說明。
💻 完整訓練範例
整合基本參數、資料增強與防過擬合設定:
1 | # train_full.py |

圖:完整訓練範例,整合資料增強、Early Stopping、定期儲存等設定並輸出最佳模型路徑
⚠️ 注意事項
patience不要設太小:YOLOv8 訓練初期的 mAP 可能波動較大,patience=10可能會太早停止。建議至少設 20~30。- 增強設定需配合資料集特性:並非增強越強越好,過強的增強(例如對方向固定的物件開啟翻轉)反而會讓模型學到錯誤的模式。
- 先用小 epochs 測試:正式訓練前,建議先用
epochs=10跑一次,確認參數設定合理後再調高。
🎯 結語
資料增強與防過擬合是讓模型從「能跑」進化到「訓練得好」的關鍵設定。
適當調整這些參數,能讓你的模型在資料量有限的情況下,仍然獲得不錯的泛化能力。
下一步是 YOLOv8 訓練結果分析,學習如何看懂訓練過程產生的各種圖表與指標,判斷模型是否真的學好了。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
Ultralytics YOLOv8 官方文件 — Train
Ultralytics YOLOv8 官方文件 — Configuration
Ultralytics YOLOv8 官方文件 — Augmentation
