我的目标是训练一个级联来识别骰子的某个面。
dice1.vec
我有 106 个未生成的样本由 opencv_createsamples转换为 vec 文件(名为),并带有 params -w 32 -h32
。此外,我有一个文本文件negTxt1.txt
,其中大约 420 行涉及其他骰子面(32x32 .png 文件),大约 600 行涉及其他任意 640x480 大小的 bg 文件。
我尝试在opencv_traincacade.exe
具有 16GB 内存的 Windows 计算机上使用以下参数运行:
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 和这里的建议(即这里,这里),但建议的修复似乎没有帮助。尝试将 -numPos 减小到 80 并不能防止崩溃,并且缓冲区大小参数足够大。尝试将 -numNeg 减少到 < 427 在第一阶段有效,但在下一阶段崩溃,在训练的同一点(当它说NEG current samples: ...
)在另一个数字上。
我可以采取哪些步骤来防止此崩溃并成功创建分类器?