我的目标是训练一个级联来识别骰子的某个面部。
我有106个未生成的样本被opencv_createsamples转换为vec文件(名为dice1.vec
),并带有参数-w 32 -h32
。另外,我有一个文本文件negTxt1.txt
,大约420行引用其他骰子面(32x32 .png文件),大约600行引用其他任意的640x480大小的bg文件。
我试图在Windows计算机上使用以下参数运行opencv_traincacade.exe
,其内存为16GB:
tools\opencv_traincascade.exe -data positives/testclassifier -vec positives/1/dice.vec -bg positives/negTxt1.txt -numStages 20 -numPos 100 -numNeg 1000 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -acceptanceRatioBreakValue .0001 -w 32 -h 32 -mode ALL
但是,在使用负样本时,程序会在尝试使用负样本时崩溃,而崩溃前的最后一行是NEG current samples: 427
。然后错误窗口" opencv_traincascade已停止工作......"出现,没有错误消息。
我已经查看了SO和此处的建议(例如here,here),但建议的修复似乎没有帮助。尝试将-numPos减少到80并不能防止崩溃,并且缓冲区大小参数足够大。试图将-numNeg减少到< 427适用于第一阶段,但在下一阶段崩溃,在训练的同一点(当它显示NEG current samples: ...
时)在另一个阶段崩溃。
我可以采取哪些措施来防止此次崩溃,并成功创建分类器?
答案 0 :(得分:1)
似乎更新和使用OpenCV的3.1.0工具和库(来自他们的网站)解决了这个问题。