级联分类器无法训练。检查使用的训练参数

时间:2015-07-29 13:08:14

标签: opencv computer-vision cascade-classifier

我需要在扫描文档中检测特殊图像(类似符号+)。我将使用opencv_traincascade程序(opencv 3.0)

训练级联

这是我的文件结构:

C:\imgs\learn1
    Bad
       1.bmp
       .... 
    Good
       1.bmp
       ....
    Bad.dat
    Good.dat

这是我的Bad.dat:

 Bad\1.bmp
 ...
 Bad\53.bmp
 Bad\img001.jpg
 ...
 Bad\img146.jpg 

这是我的Good.dat(每个好文件完全包含特殊图像,仅此而已)

Good\1.bmp 1 0 0 60 59
...
Good\100.bmp 1 0 0 27 28

我已经成功创建了vec文件。

C:\opencv\build\x64\vc12\bin>opencv_createsamples.exe 
-info C:\imgs\learn1\Good.dat 
-vec samples.vec
-w 10 -h 10

Info file name: C:\imgs\learn1\Good.dat
Img file name: (NULL)
Vec file name: samples.vec
BG  file name: (NULL)
Num: 1000
BG color: 0
BG threshold: 80
Invert: FALSE
Max intensity deviation: 40
Max x angle: 1.1
Max y angle: 1.1
Max z angle: 0.5
Show samples: FALSE
Width: 10
Height: 10
Create training samples from images collection...
C:\imgs\learn1\Good.dat(101) : parse errorDone. Created 100 samples

这是opencv_traincascade的调用和结果

 C:\opencv\build\x64\vc12\bin>
-opencv_traincascade.exe 
-data haarcascade 
-vec C:\opencv\build\x64\vc12\bin\samples.vec 
-bg C:\imgs\learn1\Bad.dat 
-numStages 16 
-minhiteate 0.99
-maxFalseAlarmRate 0.5 
-numPos 80 
-numNeg 199 
-w 10 
-h 10 
-mode ALL 
-precalcValBufSize 1024 
-precalcIdxBufSize 1024

PARAMETERS:
cascadeDirName: haarcascade
vecFileName: C:\opencv\build\x64\vc12\bin\samples.vec
bgFileName: C:\imgs\learn1\Bad.dat
numPos: 80
numNeg: 199
numStages: 16
precalcValBufSize[Mb] : 1024
precalcIdxBufSize[Mb] : 1024
acceptanceRatioBreakValue : -1
stageType: BOOST
featureType: HAAR
sampleWidth: 10
sampleHeight: 10
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: ALL

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   80 : 80
Train dataset for temp stage can not be filled. Branch training terminated.
Cascade classifier can't be trained. Check the used training parameters.

如您所见,有一些错误。你能帮我解决什么是错的吗? “检查使用过的训练参数”是非常通用的短语。

(文件夹C:\ opencv \ build \ x64 \ vc12 \ bin \ haarcascade存在)

1 个答案:

答案 0 :(得分:1)

我不知道出了什么问题,但我已经做到了。

1)我将正面例子的数量增加到400

2)我将负面例子的数量增加到398

3)我发现如果图像尺寸为61 x 60,我应该写在Good.dat

Good\1.bmp 1 0 0 60 59

(图像坐标从0开始,以宽度-1和高度-1值结束)

4)我发现了类型错误:minhiteate - &gt; minHitRate

并没有任何帮助...

5)我尝试在openvc 2.4中训练并且我已经获得了我的cascade.xml文件

但是由于其他错误,现在我无法使用它,但它是offtopic。 (现在我,谷歌搜索)