opencv_traincascade总是卡住了

时间:2013-01-27 20:54:20

标签: opencv cascade

我正在尝试使用OpenCV的opencv_traincascade来生成Haar Cascade。到目前为止,我有87个独特的阳性样本和39个阴性样本用于测试目的。我用opencv_createsamples生成了.vec文件,效果很好。当我运行opencv_traincascade时,无论我如何更改参数,它都会在几个阶段后卡住。我的电话看起来像这样:

opencv_traincascade -data /opencvimgs/haarcascades/data/ -vec /opencvimgs/haarcascades/out.vec -bg /opencvimgs/haarcascades/neg.txt -numPos 87 -numNeg 39

我尝试增加和减少minHitRate和maxFalseAlarmRate以及numPos和numNeg但没有成功。它可能会运行几个阶段,但它似乎再次挂在一个infine循环中。我该如何解决这个问题?

以下输出是程序写入控制台的内容:

opencv_traincascade -data /opencvimgs/haarcascades/data/ -vec 
/opencvimgs/haarcascades/out.vec -bg /opencvimgs/haarcascades/neg.txt -numPos 87 -numNeg 39
PARAMETERS:
cascadeDirName: /opencvimgs/haarcascades/data/
vecFileName: /opencvimgs/haarcascades/out.vec
bgFileName: /opencvimgs/haarcascades/neg.txt
numPos: 87
numNeg: 39
numStages: 20
precalcValBufSize[Mb] : 256
precalcIdxBufSize[Mb] : 256
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 24
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 1
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 0.0697674
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 2-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 0.00945455
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 3-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 0.000326907
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 4-stage =====
<BEGIN
POS count : consumed   87 : 87

1 个答案:

答案 0 :(得分:2)

一个可能的答案是你使用的负片样本太少了。 阅读OpenCV文档中的说明以及Viola和Jones的参考文献。 他们使用级联分类器,通过每次消除部分负样本来实现高精度和低误报。如果您使用的负片样本太少,则首先会破坏级联分类器的用途。 请注意,对于实际使用,系统中没有面部的图像比面部更多。