簡體   English   中英

過度擬合時,OpenCV haar訓練無限循環的解決方案是什么?

[英]What is the solution for OpenCV haar training infinite loop when overfitting?

我在openCV 2.4.3中運行Haar培訓。

  1. 我有10個負面圖像和大約30個正面(我知道它是少量的)。
  2. 正樣本在'vec'文件中組織,負(背景)圖像由文本文件描述,該文件存儲圖像的路徑。
  3. 如此少量的圖像存在完美的解決方案(所有背景圖像分類為假,真實樣本為真)。

當找到這個完美的解決方案時,openCV在icvGetHaarTrainingData()函數內進入無限循環。

它想要找到級聯失敗的背景圖像,但是沒有更多這樣的圖像,所以這個函數永遠停留在for(;;)循環中。

icvGetBackgroundImage()函數,在此循環中調用,只是從硬盤加載相同的圖像,這些圖像被級聯拒絕。

有人知道補丁,或者我可以應用錯誤修復來解決這個問題嗎?

我想出的一個可能的解決方法是讓icvGetBackgroundImage()只加載一次文件,因為一旦它被拒絕,它會被級聯拒絕。 但這是一個錯誤的調整,因為這個相同的函數用於在cvCreateSamples()生成'vec'文件,在這種情況下,我們希望它幾次加載相同的文件。

第二種可能的解決方法 - 在vec文件中使用負面示例(如正面示例)而不是信息路徑格式。 這是一種通過不激活有問題的回調來克服無限循環的方法,但結果是導致崩潰的openCV錯誤。 當負'vec'文件達到EOF時會發生這種情況。

同時我通過直接更改openCV的源代碼並重新編譯二進制文件來解決這兩個錯誤(無限循環和崩潰)。 我很快就會向openCV委員會提交更改。 但我無法相信我是唯一一個遇到這種問題的人......

在這里發布固定代碼。 請注意,原始的openCV許可證也適用於它。 https://github.com/DanielHsH/OpenCV-HaarTraining-BugFix

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM