YOLOv3訓練過程中出現過擬合現象的解決方法
遇到問題:用YOLO訓練自己的資料集,在訓練集圖片上,測試效果很好,換成測試集圖片或者其他圖片,測試效果極差。而且10000次就開始收斂了,然後又繼續訓練到50000次,這個過程Loss值一直穩定0.1左右,不再下降——經過查閱資料,最大可能性就是過擬合了。
(一)過擬合現象
有時我們發現,模型在訓練集上效果很好,但是在測試集上效果不好,這種現象稱為過擬合
(二)解決辦法
1.增加樣本資料量
2.資料增強,人為擴充套件資料量
3.正則化: 正則化之所以能夠降低過擬合的原因在於,正則化是結構風險最小化的一種策略實現。 給loss function加上正則化項,能使得新得到的優化目標函式h = f+normal,需要在f和normal中做一個權衡,如果還像原來只優化f的情況下,那可能得到一組解比較複雜,使得正則項normal比較大,那麼h就不是最優的,因此可以看出加正則項能讓解更加簡單,通過降低模型複雜度,得到更小的泛化誤差,降低過擬合程度。
4.Dropout: 在前向傳播時,某個神經元的啟用值以一定的概率p停止工作,隨機地刪除網路中的一般隱藏的神經元,這樣可以使模型泛化性更強,因為它不會太依賴某些區域性的特徵,從而解決過擬合問題 一般取值為0.3或0.5 。
5.early stopping 在訓練中計算模型在驗證集上的表現,當模型在驗證集上的表現開始下降的時候,停止訓練,這樣就能避免繼續訓練導致過擬合的問題 。
既然出現過擬合,嘗試用前幾次儲存下來的權重測試一下,不用最終的權重。是不是前面儲存的權重效果可能會好點呢?
驗證一下:發現測試效果並不好。
(三)經驗之談
不能檢測出自己的資料集,是指訓練集還是測試集,一般理解肯定是自己的測試集,那麼有兩種可能,一種是你的網路過擬合了,第二種是訓練集和測試集幾乎沒有關聯性。
假設1:用訓練集A訓練,之後檢測訓練集A中的資料,發現不能檢測。演算法完全沒有學習,甚至都沒有出現過擬合,可能是訓練資料不足、學習率過大等問題導致的。
假設2:用訓練集A訓練,之後檢測測試集B中的資料,發現不能檢測。可能性1:訓練集A和測試集B中的資料關聯性不強,YOLO沒能很好的將從訓練集A中的學習到的檢測能力擴充套件到測試集B上。可能性2:假設1中提到的問題。可能性3:需要檢測的目標在圖片中佔據區域較小,因為YOLO是將圖片分成13*13(應該是吧)個格子,每個格子進行預測的,每個格子對應預測影像中一定區域內是某個目標的可能性。當目標只佔據一個格子的很小區域時,預測的可信度不高,也就預測不出來。
相關文章
- Adobe 系列安裝過程中出現錯誤程式碼107解決方法
- Adobe 2022安裝過程中出現錯誤程式碼107解決方法
- nuxtjs 安裝過程中出現問題UXJS
- 從模型複雜度角度來理解過擬合現象模型複雜度
- 海外郵件收發過程中出現的各種阻礙怎麼解決
- MGR測試過程中出現的問題彙總
- bert訓練過程3
- ROS 安裝過程中出現“hash校驗和不符”報錯解決辦法ROS
- OpenPose訓練過程解析(2)
- 使用XBIM過程中出現的“未能載入檔案或程式”
- 降低過擬合和欠擬合的方法
- 視覺化 Keras 訓練過程視覺化Keras
- PCIe鏈路層訓練過程
- 【Tensorflow_DL_Note17】CIFAR10程式碼使用過程中出現的錯誤及其解決辦法
- 過擬合和欠擬合以及相對應的解決辦法
- mysql中出現Unit mysql.service could not be found 的解決方法MySql
- 解決線上Oracle連線耗時過長的問題現象RPYBOracle
- 深度學習訓練過程中的學習率衰減策略及pytorch實現深度學習PyTorch
- 淺析大促備戰過程中出現的fullGc,我們能做什麼?GC
- Jmeter json格式 unicode亂碼現象解決方法JMeterJSONUnicode
- 每日一練(20):陣列中出現次數超過一半的數字陣列
- 【Node】詳解模組的實現過程
- 如何解決過度擬合
- 透過現象看本質,圖解支援向量機圖解
- MicroPython TPYBoard v201 簡易家庭氣象站的實現過程Python
- 防止或減輕過擬合的方法
- 深度學習中“過擬合”的產生原因和解決方法深度學習
- 儲存過程效能低的解決方法之一儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- promise實現過程Promise
- MySQL 中出現報錯提示: ‘Variable ‘XXX‘ is a read only variable‘的解決方法MySql
- 在pytorch框架下,訓練model過程中,loss=nan問題時該怎麼解決?PyTorch框架NaN
- BERT預訓練模型的演進過程!(附程式碼)模型
- JVM系列(四):java方法的查詢過程實現JVMJava
- 死鎖問題排查過程-間隙鎖的復現以及解決
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- Mac 右鍵選單中出現多個 Edge 版本解決方法Mac
- 過擬合與欠擬合