簡體   English   中英

haar培訓OpenCV斷言失敗

[英]haar training OpenCV assertion failed

我正在嘗試使用3340正面圖像和1224個負面圖像為OpenCV中的行人訓練一個類似於haar的分類器。 (在.txt文件中我保留負圖像名稱,即負數(1).bmp,並在txt文件中保留正數,即圖片(1).bmp 1 0 0 64 128.實際上正面的例子已經是裁剪圖像行人所以我只需要為每個圖像指定一個正樣本。

在培訓過程中的某個時刻,它停止並說:

“Opencv錯誤:斷言失敗(elements_read == 1)在未知函數中,文件c:\\ path \\ cvhaartraining.cpp,第1858行”

關於是什么導致這個的任何想法?

這個問題在2012年6月由OpenCV DevZone網站上的實用程序創建者回答

引用瑪麗亞:

問題是你的vec文件與你在命令行-numPos 979中傳遞的樣本數完全相同。訓練應用程序使用vec文件中的所有樣本訓練0階段,它不能獲得新的正樣本用於下一個階段訓練因為vec文件結束了。 traincascade的錯誤在於它在這種情況下有assert(),但它必須為用戶拋出一個帶有錯誤消息的異常。 它在r8913中修復。 -numPose是用於訓練每個階段的樣本計數。 一些已經使用的樣本可以被每個前一階段(即被識別為背景)過濾,但每個階段不超過(1 - minHitRate)* numPose。 因此vec文件必須包含> =(numPose +(numStages-1)*(1 - minHitRate)* numPose)+ S,其中S是來自vec文件的樣本計數,可立即識別為背景。 我希望它可以幫助您創建正確大小的vec文件並選擇正確的numPos值。

它對我有用。 我也有同樣的問題,我正在關注HAAR培訓着名教程,但想嘗試使用-npos 7000 -nneg 2973的新訓練實用程序

所以我做了以下計算:

vec文件必須包含> =(numPos +(numStages-1)*(1 - minHitRate)* numPos)+ S

7000> =(numPos +(20-1)*(1 - 0.999)* numPos)+ 2973

(7000 - 2973)/(1 + 19 * 0.001)> = numPos

numPos <= 4027 / 1.019

numPos <= 3951 ~~ 3950

和使用:

-npos 3950 -nneg 2973

有用。 我也注意到其他人也在減少numPos方面取得了成功: 這里

暫無
暫無

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

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