OPENCV培训级联"超出范围"

时间:2015-05-31 17:10:54

标签: c++ opencv

我试图通过使用OpenCV 3.0 traincascade来训练我自己的探测器。 我有82个阳性和188个阴性样本,并且有以下

 opencv_traincascade -data data -vec signals.vec -bg negative.txt -numPos 82 -numNeg 188 -numStages 20 -w 50 -h 50 -featureType LBP

我能够达到第8阶段。在第9阶段我有以下错误

    ===== TRAINING 9-stage =====
<BEGIN
POS count : consumed   82 : 82
NEG cterminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr
Aborted (core dumped)149

有人知道为什么吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

简短的回答是 - 您没有为选定的maxFalseAlarmnumStages参数提供足够的负样本。所以你有3个选择(从最好的开始):

  • 提供更多的负面样本(imho它是最好的选择 - 它并不难,会给你最好的结果)
  • 减少maxFalseAlarm参数的值(您可以找到它here
  • 减少阶段数

如果我记得正确(更好地检查它......)你应该至少有(1-maxFalseAlarm)^(numStages-1)(其中'^'是力量,而不是xor)负样品来完成训练。