您的位置:首页 > 大数据 > 人工智能

opencv_traincascade训练haar时Error: Insufficient memory等问题

2016-04-24 23:08 344 查看
使用opencv自带的traincascade训练haar+adaboost分类器时,容易出现下面两个问题。不得不说,国内的论坛博客中解释的都很牵强,解决方案也然并卵....

结合stackoverflow和opencv的问答,给出解决方案,本人实测有效,这两个问题我都出现了

1. Train dataset for temp stage can not be filled. Branch training terminated.问题

这个问题的原因主要是在于负样本不足导致(我理解不上来),但简单理解为输入的-bg参数的负样本文件出现问题就行了。-bg参数后跟样本文件名,注意:只能跟文件名,不能

跟路径。

-bg negative.txt // OK

-bg /data/negative.txt // ERROR

也就是说,负样本描述文件和traincascade.exe文件在同一目录下,所以我们需要构造合适的负样本文件,满足要求。

2. OpenCV Error: Insufficient memory (Failed to allocate *****bytes)

我个人觉得这个问题的出现,纯粹是国内论坛的环环误导。

首先,这个错误提示很明显,大家都知道是内存分配不足....也都知道和两个参数有关:

-precalcValBufSize 和-precalcIdxBufSize

大家也都知道这两个是预置的计算buffer和索引buffer

重点来了!!!国内论坛动不动设置这个参数为200, 1024等等。这真的是纯粹误导!因为这两个参数针对的是每一个采样sample.....而不是总体!!!

强烈建议,图片小的,直接设置为1或者更小,亲测可以运行!

最后,但愿少一点误导,多一点真诚,让我们这些新手少走弯路.....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: