2016-07-28 57 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仅

问候