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(應該是吧)個格子,每個格子進行預測的,每個格子對應預測影像中一定區域內是某個目標的可能性。當目標只佔據一個格子的很小區域時,預測的可信度不高,也就預測不出來。
相關文章
- 安裝過程中出現PKG_CONFIG_PATH的問題解決方法
- 從模型複雜度角度來理解過擬合現象模型複雜度
- 解決svn遷移過程中出現:SVN Error: is not the same repository as的問題Error
- DROP USER過程中出現的奇怪的物件資訊物件
- Adobe 系列安裝過程中出現錯誤程式碼107解決方法
- 遷移過程中出現的open failed錯誤AI
- 海外郵件收發過程中出現的各種阻礙怎麼解決
- nuxtjs 安裝過程中出現問題UXJS
- 搭建ORACLE 10g RAC過程中出現 OUI-25031 的解決辦法Oracle 10gUI
- OpenPose訓練過程解析(2)
- ROS 安裝過程中出現“hash校驗和不符”報錯解決辦法ROS
- Adobe 2022安裝過程中出現錯誤程式碼107解決方法
- MySQL複製過程中出現的從庫無法連線主庫的解決辦法MySql
- 視覺化 Keras 訓練過程視覺化Keras
- 安裝Qt過程中出現g++: command not foundQT
- 過擬合和欠擬合以及相對應的解決辦法
- JN專案-幫同事搭建環境過程中出現的問題
- PHP 協程實現過程詳解PHP
- xPetStore醒置過程中出現找不到users.properties檔案
- PHP5.2.4安裝中出現問題及處理過程PHP
- 解決線上Oracle連線耗時過長的問題現象RPYBOracle
- 【Node】詳解模組的實現過程
- 虛擬機器實現dataguard配置過程虛擬機
- 【Tensorflow_DL_Note17】CIFAR10程式碼使用過程中出現的錯誤及其解決辦法
- mysql中出現Unit mysql.service could not be found 的解決方法MySql
- 如何解決過度擬合
- 深度學習訓練過程中的學習率衰減策略及pytorch實現深度學習PyTorch
- 每日一練(20):陣列中出現次數超過一半的數字陣列
- 透過現象看本質,圖解支援向量機圖解
- 淺析大促備戰過程中出現的fullGc,我們能做什麼?GC
- 深度學習中“過擬合”的產生原因和解決方法深度學習
- php中出現Strict Standards: Only variables should be passed by reference in的解決方法PHP
- android 專案中出現紅色感嘆號的解決方法Android
- ETL通用解決方案---oracle+儲存過程 實現Oracle儲存過程
- BERT預訓練模型的演進過程!(附程式碼)模型
- promise實現過程Promise
- WinXP上安裝office2000過程中出現內部錯誤2343的解決及可能引起的原因
- yolov3訓練自己資料教程YOLO