我一直在摆弄 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 的分辨率下,它看起来像是一个巨大的水平扭曲的黑色像素斑点,甚至看不到它的一些独特特征。