6

我在 mac os x 10.7.5 上使用通过 macports 安装的 opencv 2.4.4 和 python 2.7.5。

我想训练一个级联来寻找男性的正面。但我得到了terminate called throwing an exceptionAbort trap: 6错误。我请求 SO 社区帮助我找出可能出了什么问题。

负片(背景)图片取自谷歌:googleImages_noFaces(293 张图片)

正面图像取自 Karolinska 数据库:trainingSet(70 张图像)

我创建了一个文本文件,指示背景图像的相对位置:bgDesc.txt

我还创建了一个文本文件,指示图像中的相对位置、正实例数(始终为 1)和对象的边界区域(即整个图像):maleDesc.txt

所有这些文件都可以从这里下载。

文件的组织形式如下:

/trainingSet
    image1.jpg
    image2.jpg
    .
    .
    .

/googleImages_noFaces
    image1.jpg
    image2.jpg
    .
    .
    .

/cascadeFiles

maleDesc.txt
bgDesc.txt

当我使用 opencv_createsamples 时,使用maleDesc.vec以下行成功创建了一个文件:

opencv_createsamples -vec maleDesc.vec -info maleDesc.txt -bg bgDesc.txt -num 70 -w 24 -h 24

如果我使用-show参数,我可以看到创建了 24x24 像素的图像。

然后我尝试

opencv_traincascade -data cascadeFiles -vec maleDesc.vec -bg bgDesc.txt -numPos 70 - numNeg 293 -numStages 1 -precalcValBufSize 500 -precalcIdxBufSize 500 -featureType LBP -w 24 -h 24

这给了我一个错误。

我尝试了不同的值,-numPos例如 10、20 等等,直到 70 以及不同的值,-numNeg例如 30、60 等等,直到 293。我尝试使用小于 numNeg 值的 numPos 值,甚至那些大于。我也尝试了不同的-numStages值,如 1、5、10、20 和 100,但在所有这些尝试中,我得到了相同的错误。

我没有尝试过 -minHitRate、-maxFalseAlarmRate、-weightTrimRate、-maxDepth、-maxWeakCount 的不同值,因为我不太了解它们如何影响 opencv_traincascade 算法的行为。

任何帮助深表感谢 :)

4

2 回答 2

2

错误是terminate called throwing an exceptionAbort trap: 6由于拼写错误。我设法复制行为并在下面的代码中验证它

opencv_traincascade -data cascadeFiles -vec maleDesc.vec -bg bgDesc.txt -numPos 70 - numNeg 293 -numStages 1 -precalcValBufSize 500 -precalcIdxBufSize 500 -featureType LBP -w 24 -h 24

之间有一个空间-numNeg应该是-numNeg

此外,即使样本非常少,训练也会继续进行,但 numPos 必须是 numNeg 的两倍

有关 haar 和 lbp 培训过程的更多说明,请参阅此 SO 答案:https ://stackoverflow.com/a/16834901/1463143

两周和 50 名赏金的声望因为一个错字而被浪费了:|

于 2013-11-08T02:03:03.453 回答
-4

我帮助编译 OpenCV 一个函数 TBB如何在 Ubuntu 上做 opencv_traincascade

大小负图像(宽度和高度)> 正样本

于 2013-10-22T06:15:48.650 回答