我正在使用在Mac OS X 10.7.5上通过python 2.7.5通过macports安装的opencv 2.4.4。
我想训练一个层叠来寻找男性额叶。但是我收到了terminate called throwing an exceptionAbort trap: 6
错误。我要求SO社区帮助我找出可能出问题的地方。
负(背景)图像取自google:googleImages_noFaces(293个图像)
正面图像来自Karolinska数据库:trainingSet(70张图像)
我创建了一个文本文件,该文件指示背景图像的相对位置:bgDesc.txt
我还创建了一个文本文件,指示相对位置,图像中正实例的数量(始终为1)和对象的边界区域(即整个图像):maleDesc.txt
所有这些文件都可以从here下载。
文件的组织形式如下:
/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算法的行为。
任何帮助深表感谢 :)
最佳答案
terminate called throwing an exceptionAbort trap: 6
错误是由于输入错误造成的。我设法复制了行为并在下面的代码中进行了验证
opencv_traincascade-数据级联文件-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的两倍
请参阅此SO答案以进一步了解haar和lbp训练过程:https://stackoverflow.com/a/16834901/1463143
两个星期和50个声誉奖励因一次错字而浪费掉了:|
关于Python,OpenCV : unable to make custom LBP cascade using opencv_traincascade,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19464834/