2016-07-28 60 views
9

我正在使用opencv_traincascade進行對象檢測。我試圖在照片上找到眼鏡。爲此,我已經下載了830張照片,如下所示: http://pi1.lmcdn.ru/product/V/I/VI060DWIHZ27_1_v2.jpg計算1天后的OpenCV異常

然後我下載了許多帶有模型的照片或照片,1799張照片。

然後我已經開始opencv_traincascade與參數: opencv_traincascade -data功能/分類-vec samples.vec -bg negatives.txt -numStages 10 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 830 -numNeg 1799 -w 60 -h 90 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024

但是在步驟4之後,我收到一條消息: 無法填充臨時舞臺的列車數據集。分支培訓已終止。

完整的堆棧跟蹤是:

➜ pictureFeature opencv_traincascade -data Feature/classifier -vec samples.vec -bg negatives.txt -numStages 10 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 830 -numNeg 1799 -w 60 -h 90 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024 

PARAMETERS: 
cascadeDirName: Feature/classifier 
vecFileName: samples.vec 
bgFileName: negatives.txt 
numPos: 830 
numNeg: 1799 
numStages: 10 
precalcValBufSize[Mb] : 1024 
precalcIdxBufSize[Mb] : 1024 
acceptanceRatioBreakValue : -1 
stageType: BOOST 
featureType: HAAR 
sampleWidth: 60 
sampleHeight: 90 
boostType: GAB 
minHitRate: 0.999 
maxFalseAlarmRate: 0.5 
weightTrimRate: 0.95 
maxDepth: 1 
maxWeakCount: 100 
mode: ALL 



===== TRAINING 0-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 1 
Precalculation time: 26 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1| 0.145636| 
+----+---------+---------+ 

END> 
Training until now has taken 0 days 5 hours 22 minutes 10 seconds. 

===== TRAINING 1-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.145715 
Precalculation time: 24 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1|  1| 
+----+---------+---------+ 
| 4|  1| 0.762646| 
+----+---------+---------+ 
| 5|  1| 0.432462| 
+----+---------+---------+ 

END> 
Training until now has taken 0 days 14 hours 38 minutes 28 seconds. 

===== TRAINING 2-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.062696 
Precalculation time: 28 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1|  1| 
+----+---------+---------+ 
| 4|  1| 0.590328| 
+----+---------+---------+ 
| 5|  1| 0.187326| 
+----+---------+---------+ 

END> 
Training until now has taken 0 days 23 hours 21 minutes 4 seconds. 

===== TRAINING 3-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.0117929 
Precalculation time: 21 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1|0.0944969| 
+----+---------+---------+ 

END> 
Training until now has taken 1 days 3 hours 47 minutes 34 seconds. 

===== TRAINING 4-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
NEG count : acceptanceRatio 1799 : 0.00112161 
Precalculation time: 18 

+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  0| 
+----+---------+---------+ 

END> 
Training until now has taken 1 days 5 hours 4 minutes 35 seconds. 

===== TRAINING 5-stage ===== 
<BEGIN 
POS count : consumed 830 : 830 
Train dataset for temp stage can not be filled. Branch training terminated. 

我試圖使用對象的搜索cascade.xml,但結果卻是完全失敗。

enter image description here

有人能與我的問題幫助嗎?

+0

要進行分類,你需要收集正面和負面的訓練圖像(正:頭+墨鏡和負:頭只)在你的IMG樣品上只有太陽鏡的圖像 –

+0

bg.txt是否在Windows上生成? –

回答

3

如果你看看這個錯誤,你會發現它在'NEG count'處停止,這意味着在階段5閱讀負面訓練數據集圖像時存在問題。所以你需要修復負面訓練樣本的路徑以使其工作。

這裏是在這個問題上可能會有幫助的詳細討論:Cascade Training Error OpenCV 2.4.4

它也可以是與bg.txt文件中的問題,這裏是另一個答案:error in train casacde

另一篇文章有​​類似error: Train dataset for temp stage can not be filled.

如果沒有問題,請嘗試使用不同版本的開放簡歷:http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download

3

這是一個很常見的錯誤。關於這個錯誤的知識並不多,我只能猜測一個解決方案,因爲這個錯誤有很多可能的原因。

這可能是相對於目錄結構(只注意到負例子路徑應該是相對於當前目錄)

,或者因爲在BG文件中的換行符(negatives.txt你的情況)是編碼不良。 請仔細檢查'negatives.txt'文件中每行的最後一個字符是'\ n'而不是'\ r'嗎?

也一直試圖保持積極的約25%-30%的負樣本比例

而且finaly確保您所有的正面和負面的圖像包含的頭面部:

在樣品圖片(其中一個830)只有一個太陽鏡可見(無頭,沒有聽到,沒有頭髮)只有白色的背景,所以你的分類器將最終訓練,只在白色背景上識別太陽鏡,所以沒有機會識別任何太陽鏡,當面部可見時;

儘量尊重:

  • 正面圖片= headface太陽鏡

  • 負圖象= headface僅

問候