0

我一直在摆弄 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 文件。

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

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

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

4

1 回答 1

0

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

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

于 2017-06-29T07:36:28.177 回答