如何运行opencv_traincascade?

时间:2018-08-22 15:31:49

标签: python-3.x opencv object-detection image-recognition haar-classifier

我在opencv_traincascade上遇到了一些麻烦,这可能可以追溯到早期的方法调用,但是我不确定100%。

opencv_traincascade -data classifier -vec samples.vec -bg 
negatives.txt -numStages 20 -minHitRate - 0.999 -maxFalseAlarmRate 0.5 
-numPos 4000 -numNeg 200000 -w 17 -h 23 -mode ALL 
-precalcValBufSize 1024 -precalcIdxBufSize 1024

error:

terminate called after throwing an instance of 'std::logic_error'
what():  basic_string::_M_construct null not valid
Aborted (core dumped)

我正在跟着这个tutorial。但是,我有5000张正像和200000张负像可以使用。因此,取而代之的是我遵循了link,并且我正在使用该方法从某些方法创建训练样本,而不是使单个图像失真。

创建示例:

opencv_createsamples -info positives.dat -vec samples.vec -w 17 -h 23 
-num 5000

Output:

    Info file name: positives.dat
    Img file name: (NULL)
    Vec file name: samples.vec
    BG  file name: (NULL)
    Num: 5000
    BG color: 0
    BG threshold: 80
    Invert: FALSE
    Max intensity deviation: 40
    Max x angle: 1.1
    Max y angle: 1.1
    Max z angle: 0.5
    Show samples: FALSE
    Width: 17
    Height: 23
    Max Scale: -1

我已经通过vec文件查看了示例图像,

opencv_createsamples -vec samples.vec -w 17 -h 23

如果需要的话,可以部分捕获positives.dat

    positive_images/0/18693.png 1 0 0 17 23
    positive_images/0/18501.png 1 0 0 17 23
    positive_images/0/19998.png 1 0 0 17 23
    positive_images/0/18224.png 1 0 0 17 23
    positive_images/0/19527.png 1 0 0 17 23
    positive_images/0/18739.png 1 0 0 17 23
    positive_images/0/6926.png 1 0 0 17 23
    positive_images/0/19520.png 1 0 0 17 23
    positive_images/0/7982.png 1 0 0 17 23
    positive_images/0/17458.png 1 0 0 17 23
    positive_images/0/17312.png 1 0 0 17 23
    positive_images/0/8497.png 1 0 0 17 23

我在Stack Overflow上搜索了一些不同的帖子,但问题与我的稍有不同。

thread1

thread2

thread3

我将Windows机器移到了双引导程序,该引导程序正在运行最新的Ubuntu lts发行版。

1 个答案:

答案 0 :(得分:1)

我解决了我的问题!我错误地创建了negatives.dat文件,因此1个问题是找不到负文件。另外,我使用opencv_traincascade实现here重新运行。仅调整样本量以及图像的宽度和高度。

链接代码

opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt\
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 4500\
-numNeg 600 -w 17 -h 23 -mode ALL -precalcValBufSize 1024\
-precalcIdxBufSize 1024

输入此内容时,我刚弹出一条消息,提示

Required leaf false alarm rate achieved. Branch training terminated.

是时候解决了。哦,这不是错误,它说它按照我的要求做了。是时候测试一下了。