0

这是一个常见错误,但我已经搜索了答案并尝试了许多建议,但没有任何效果。我在我的 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 像魅力一样工作,将其作为输出:

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.

但是在 1-stage 训练停止时会显示以下信息:

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

我尝试了许多不同的参数。带有或多或少的负面图像。没有任何效果。还有其他想法吗?

4

1 回答 1

0

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

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

当上述情况发生并且正样本不能用于进一步处理时,级联分类器会尝试用新样本替换丢弃的样本。由于您已经将所有正样本输入管道,因此它无法替换丢弃的样本并退出。

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

有关更详细的说明,请查看此链接

于 2016-02-20T21:33:50.580 回答