我一直在摆弄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时,它看起来像一个巨大的水平扭曲的黑色像素斑点,甚至没有一些独特的功能可见。
答案 0 :(得分:0)
我打赌问题在于样本量。 更大的尺寸需要更大的内存缓冲区和更多的时间。检测功能是一项非常困难的操作。
您必须尽量减少样本(不要忘记重新评估cv_createsamples(...)
)。样品不应该是正方形,可能是25 * 15(确保比例保存,最大的一侧约为30px)。
您使用的是featureType LBP,它本身比Haar快。