我已经开始训练Cascade但它非常慢......是交换内存的问题吗?

时间:2015-10-28 14:45:46

标签: opencv training-data haar-classifier

我已经开始训练一个具有~600个负像和~120个阳性的级联(扭曲和转化以使~1500个阳性)。我正在使用opencv_traincascade,我已经设置了这样的参数:

numPos: 1000
numNeg: 609
numStages: 20
preCalcValBufSize: 4096 (mb)
preCalcIdxBufSize: 4096 (mb)
stageType: BOOST
featureType: Haar
sampleWidth: 80
sampleHeight: 80
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: All

我的电脑是带有16 GB内存的mac mini,它运行的是四核i7。它还有硬盘而不是SSD。它已经运行了大约1天8小时,正处于训练阶段3。

我想知道是否有任何理由让培训花了这么长时间。按此速度,培训需要6-7天才能完成。我注意到的一件事是我通常使用1-2 GB的交换内存,它偶尔会说我的内存有“压力”。我对交换内存了解不多,但我认为这可能会减慢我的训练速度。这是如何运作的?我还应该重新开始训练,为了时间的原因,将Buf尺寸的内存使用量降低到2048 mb吗?

1 个答案:

答案 0 :(得分:0)

我知道我迟到了,但也许有人仍然需要回答这个问题 很可能你的问题是使用相当大的图像 - 我记得运行一些训练(我花了大概一两个),sampleWidth和sampleHeight设置为20.在上面提到的文章中,宽度是80,高度是40,但是数量是样品要小得多,物体形状也很简单 你提到的参数(preCalcValBufSize和preCalcIdxBufSize)设置了最大的ram使用率 - 所以它就像是说“你可以使用我的RAM的x MB用于preCalcValBufSize而ybb用于preCalcIdxBufSize,甚至不用看我剩下的内存 - 我需要这个其他的东西。“只要preCalcValBufSize + preCalcIdxBufSize < avaible ram size不需要使用swap(因此操作系统不会使用它)。