【问题标题】:OpenCV Haar Cascade training parameters and timeOpenCV Haar Cascade 训练参数和时间
【发布时间】:2017-12-02 01:30:57
【问题描述】:

我一直在摆弄 OpenCV 的级联训练器,试图训练我自己的分类器。问题是它现在已经训练了 25 小时以上,甚至还没有通过第 1 阶段。

最初,我使用以下命令运行它

nohup opencv_traincascade -data data -vec board.vec -bg bg.txt -numPos 580 -numNeg 1160 -numStages 2 -w 115 -h 153 -featureType LBP &

大约 24 小时后,它甚至无法通过第 1 阶段。查看nohup.out 文件,我意识到默认的precalcValBufSize 设置为1024Mb。我想也许将其增加到 4096Mb 将有助于处理,所以我继续使用以下命令重新开始训练

nohup opencv_traincascade -data data -vec board.vec -bg bg.txt -numPos 580 -numNeg 1160 -numStages 2 -w 115 -h 153 -featureType LBP -precalcIdxBufSize 4096 -precalcValBufSize 4096 &

培训已经进行了将近 25 个小时,甚至还没有生成阶段 0 的 XML 文件。

进程本身的look 表明它使用了 8284M 的虚拟内存,但使用了 930M 的物理内存,this 显示了进程当前正在使用的所有文件。它在燃烧我的核心方面做得很好,但没有产生任何结果,甚至没有让我知道它走了多远。

我的问题是,有没有办法让它使用更多我的实际物理内存来加速它?如果没有,我需要对我的训练数据集进行任何调整吗?

旁注: 我知道数据集大小的一般标准是 24x24,但我已经尝试过了,即使经过 10 个阶段,它也确实很糟糕。 在那个尺寸下,my object's 轮廓不再正确地获得其特征。在 24x24 甚至 48x48 的分辨率下,它看起来像一个巨大的水平扭曲的黑色像素块,甚至看不到它的一些独特特征。

【问题讨论】:

  • 是卡在收集/寻找负样本还是计算特征需要这么多时间?
  • 好的,chooseb 的尺寸确实大得惊人。
  • 从 nohup 结果来看,它似乎能够收集到所有的负样本。在查看other peoples results 之后,至少它会打印出 TRAINING 1-STAGE blah blah blah.. 但它甚至没有出现在我的教练身上
  • 顺便说一句,HAAR 使用的不是“形状”而是“纹理”,所以不确定 HAAR 级联(和 LBP)是否适合您。
  • 我不能发布实际的对象,所以轮廓是我能做的最接近的。但可以想象中间部分有一个屏幕和对象周围的一些徽标

标签: opencv haar-classifier cascade-classifier lbph-algorithm


【解决方案1】:

我敢打赌,问题在于样本量。 更大的尺寸需要更大的内存缓冲区和更多的时间。检测特征是一项相当困难的操作。

您必须尽量减少您的样本(不要忘记重复cv_createsamples(...))。样本不应该是方形的,它可能是 25*15(确保保存比例并且最大边约为 30px)。 您正在使用 featureType LBP,它本身比 Haar 更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2012-06-07
    • 2015-12-06
    • 2014-01-31
    • 2011-05-06
    • 2020-10-16
    相关资源
    最近更新 更多