Windows OpenCV 3.1:无法填写临时阶段的列车数据集。关于一阶段

Windows OpenCV 3.1:无法填写临时阶段的列车数据集。关于一阶段,windows,opencv,opencv3.1,Windows,Opencv,Opencv3.1,这是一个常见的错误,但我已经找到了答案,并尝试了许多建议,但没有任何效果。我在windows(10)系统上使用opencv 3.1,希望训练一个识别playmobil图形的系统。 我有118张不同playmo人物的正面照片,还有近3000张负面照片。全部转换为pgm格式。正片为64x128,负片最大尺寸为256x256。(我也有原始文件) 我开始使用以下参数进行培训: opencv_traincascade.exe -data classifier -vec playmobil.vec -bg

这是一个常见的错误,但我已经找到了答案,并尝试了许多建议,但没有任何效果。我在windows(10)系统上使用opencv 3.1,希望训练一个识别playmobil图形的系统。 我有118张不同playmo人物的正面照片,还有近3000张负面照片。全部转换为pgm格式。正片为64x128,负片最大尺寸为256x256。(我也有原始文件) 我开始使用以下参数进行培训:

opencv_traincascade.exe -data classifier -vec playmobil.vec -bg negative.txt -numPos 110 -numNeg 1000 -numStages 3 -w 24 -h 48 -minHitRate 0.999 -maxFalseAlarmRate 0.5
0-Stage的作品如charm,输出如下:

E:\temp\train>..\opencv3\build\x64\vc14\bin\opencv_traincascade.exe -data classifier -vec playmobil.vec -bg negative.txt -numPos 110 -numNeg 1000 -numStages 3 -w 24 -h 48 -minHitRate 0.999 -maxFalseAlarmRate 0.5
PARAMETERS:
cascadeDirName: classifier
vecFileName: playmobil.vec
bgFileName: negative.txt
numPos: 110
numNeg: 1000
numStages: 3
precalcValBufSize[Mb] : 1024
precalcIdxBufSize[Mb] : 1024
acceptanceRatioBreakValue : -1
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 48
boostType: GAB
minHitRate: 0.999
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   110 : 110
NEG count : acceptanceRatio    1000 : 1
Precalculation time: 20.522
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        0|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 32 seconds.
E:\temp\train>。\opencv3\build\x64\vc14\bin\opencv\u traincascade.exe-数据分类器-vec playmobil.vec-bg negative.txt-numPos 110-numNeg 1000-numStages 3-w 24-h 48-minHitRate 0.999-maxfalsalarmrate 0.5
参数:
名称:分类器
vecFileName:playmobil.vec
bgFileName:negative.txt
numPos:110
数字:1000
numStages:3
预制尺寸[Mb]:1024
precalcIdxBufSize[Mb]:1024
可接受性目标值:-1
舞台类型:助推
特征类型:哈尔
样本宽度:24
样本高度:48
boostType:GAB
最低税率:0.999
最大错误报警率:0.5
重量比率:0.95
最大深度:1
最大值:100
模式:基本
====培训0级=====
到目前为止,训练时间为0天0小时1分32秒。
但在一个阶段的培训结束时,会显示以下信息:

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   110 : 110
Train dataset for temp stage can not be filled. Branch training terminated.
====培训1阶段=====

你的问题似乎与你的训练参数有关

在训练级联时,可能会丢弃一个阳性样本进行进一步处理(以及阴性样本)。现在的问题是,您将numPos指定为110,即所有阳性样本

当上述情况发生,且正样本无法用于进一步处理时,级联分类器尝试用新样本替换掉的样本。由于您已将所有阳性样本输入管道,因此无法替换掉的样本和出口

因此,您应该尝试使用较低的numPos值重新运行训练

有关更详细的解释,请查看