OpenCV - LBP Traincascade在第0阶段无法通过预计算,但是HAAR工作正常吗?

Tro*_*oup 10 opencv

我运行opencv_traincascade,我从未达到第0阶段的预先计算时间.

编辑:我的问题似乎特定于LBP培训.我将featureType更改为HAAR,下面的分类器在几分钟内完成了训练

编辑:预计算时间以秒为单位,因此在第0阶段你应该看到它在10秒内达到预先计算,但我已经看到它高达40秒.预计时间可能会逐步增加,然后在后期突然大幅增加到半小时(甚至可能比你使用数千个样本的情况还要长,但我还没有那么远)

(我将继续更新这篇文章,填写我已经理解的事情,这使我无法理解预先计算,并且可能找出为什么HAAR培训可以工作而LBP没有.可能只需要查看源代码启动阶段周期)

问题

我运行opencv_traincascade,我从未达到第0阶段的预先计算时间.

我正在使用2014年购买的MacBook Air.

处理器1.3 GHz Intel Core i5
内存4 GB 1600 MHz DDR3
图形Intel HD Graphics 5000
软件OS X 10.9.4(13E28)

我的终端看起来像这样,并且在我的Activity Monitor中运行了大约390%(真的?)我的CPU和4个线程.

===== TRAINING 0-stage ===== <BEGIN POS count : consumed x : x NEG count : acceptanceRatio y : 1

虽然我已经尝试创建了许多分类器,为了分享我们都可以涉及的内容,我将参考一个汽车检测教程,因为我得到相同的结果无关紧要,如果它是我自己的训练.这个培训师已经出版,我见过其他人参考它,所以我认为它有效.

https://www.youtube.com/watch?v=WEzm7L5zoZE

在我的桌面上我有:

一个pos文件夹,其中包含cars.info文件夹中的相对文件路径和信息(1 0 0 100 40);
一个bg.txt文件,包含一个包含负样本的neg文件夹的相对路径;
一个名为"data"的空数据文件夹;
一个正面样本的cars.vec文件.我可以查看矢量文件,图像就在那里.

最初在100x40处有550个正样本,在使用createsamples创建vec文件之后有48x24个样本

100x40有500个负样本

这是createsamples命令,供参考:

opencv_createsamples -info cars.info -num 550 -w 48 -h 24 -vec cars.vec
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令:

opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -featureType LBP
Run Code Online (Sandbox Code Playgroud)

PARAMETERS: cascadeDirName: data vecFileName: cars.vec bgFileName: bg.txt numPos: 500 numNeg: 500 numStages: 2 precalcValBufSize[Mb] : 256 precalcIdxBufSize[Mb] : 256 stageType: BOOST featureType: LBP sampleWidth: 48 sampleHeight: 24 boostType: GAB minHitRate: 0.995 maxFalseAlarmRate: 0.5 weightTrimRate: 0.95 maxDepth: 1 maxWeakCount: 100

这是我的输出,我从来没有看到达到LBP的预先计算,无论我想要训练什么; 我是如何尝试更改样本大小,图像分辨率,minHitRate或降低numPos的.

===== TRAINING 0-stage ===== <BEGIN POS count : consumed 500 : 500 NEG count : acceptanceRatio 500 : 1

请询问我未能提供的任何信息.我道歉.

我已经读过关于训练器陷入无限循环,并修改所需的源代码.但是,我希望可以避免,因为这似乎适用于其他人(至少是作者).

感谢所有过去的问题和答案,这些问题和答案帮助我完成了各种编码项目.

小智 2

我以前遇到过这样的问题。我解决的方法是将precalcValBufSize和precalcIdxBufSize的值设置为0和0。看来预计算对于LBP不起作用。然而,当它们设置为0后,效果很好。LBP的训练过程比Haar快得多。