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

时间:2014-08-25 01:11:49

标签: 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

在我的桌面上,我有:

在cars.info文件夹中包含相对文件路径和信息(1 0 0 100 40)的pos文件夹;
一个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

然后我运行以下命令:

opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -featureType LBP

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

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

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

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

1 个答案:

答案 0 :(得分:2)

我之前遇到过这样的问题。我解决它的方法是将precalcValBufSize和precalcIdxBufSize的值设置为0和0.似乎预先计算不能用于LBP。但是,它们设置为0后效果很好.LBP的训练过程比哈尔快得多。