【问题标题】:OPENCV training cascade "out of range"OPENCV 训练级联“超出范围”
【发布时间】:2015-06-01 01:45:30
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

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

    • 提供更多负样本(恕我直言,这是最好的选择 - 这并不难,而且会给你最好的结果)
    • 减小maxFalseAlarm参数的值(可以找到here
    • 减少阶段数

    如果我没记错(最好检查一下..)你应该至少有(1-maxFalseAlarm)^(numStages-1)(其中“^”是幂,而不是异或)负样本来完成训练。

    【讨论】:

    • 我在想负数,现在你证实了我的想法。谢谢!
    猜你喜欢
    • 2014-04-30
    • 2019-01-21
    • 2012-12-05
    • 2017-11-21
    • 2015-12-16
    • 2015-01-27
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多