使用 LBP 训练 Haar 级联的问题

Troubles on training Haar cascade with LBP

我正在尝试使用 haar_cascade 训练一些分支徽标。我所做的是,我拍摄了 2500 张 500 x 500 的方形照片来填充 opencv_createsamples 的样本。然后我将它们生成为:

opencv_createsamples -info 'logo.info' -vec '../logo.vec' -bg '../Negatives/bg.txt' -w 24 -h 24 -num 2500

在我的logo.info中,我有对应每张图片的相对路径的行,1 0 0 500 500表示"there's one object between (0,0) and (500, 500)"

然后我将级联训练为:

opencv_traincascade -data 'cascade/' -vec '../logo.vec' -bg '../Negatives/bg.txt' -numPos 2500 -numNeg 3019 -numStages 25 -featureType LBP -w 24 -h 24

使用这些参数:

PARAMETERS:

cascadeDirName: cascade/

vecFileName: ../logo.vec

bgFileName: ../Negatives/bg.txt

numPos: 2500

numNeg: 3019

numStages: 25

precalcValBufSize[Mb] : 256

precalcIdxBufSize[Mb] : 256

stageType: BOOST

featureType: LBP

sampleWidth: 24

sampleHeight: 24

boostType: GAB

minHitRate: 0.995

maxFalseAlarmRate: 0.5

weightTrimRate: 0.95

maxDepth: 1

maxWeakCount: 100

我有两种错误:

  1. OpenCV 错误:cvPreprocessIndexArray 文件 /tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp,第 432 行中的一个参数值超出范围(未选择 components/input_variables!) 在抛出 'cv::Exception' 的实例后调用终止 what(): /tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp:432: error: (-211) 没有选择 components/input_variables!在函数 cvPreprocessIndexArray

...

当您在 图像数量 -num 参数之间没有给出显着差异时,通常会发生此错误。所以,让我们尽量少给100!!

好吧,当我将参数调整为不从数组中退出时,我得到了与图像相同类型的输出,但是我得到了这个错误:

OpenCV Error: Assertion failed (tempNode->left) in write, file /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp, line 628 terminate called after throwing an instance of 'cv::Exception' what(): /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp:628: error: (-215) tempNode->left in function write

Aborted

我试过:

我必须做的是使用 LBP(不是 HAAR)进行强制性训练。有人知道吗?

提前致谢。

卸载并重建 OpenCV 解决了问题。