哈尔级联结果文件太小

时间:2017-11-08 10:43:22

标签: opencv computer-vision haar-classifier

我正在尝试训练级联以检测具有特定结构化文本(MRZ)的区域。 我收集了200份阳性样本和572份阴性样本。

Trainig如下:

opencv_traincascade.exe -data cascades -vec vector/vector.vec -bg bg.txt -numPos 200 -numNeg 572 -numStages 3 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -featureType LBP -mode ALL -w 400 -h 45 -maxFalseAlarmRate 0.8 -minHitRate 0.9988

PARAMETERS: 
cascadeDirName: cascades 
vecFileName: vector/vector.vec 
bgFileName: bg.txt 
numPos: 199
numNeg: 572 numStages: 3 precalcValBufSize[Mb] : 2048 precalcIdxBufSize[Mb] : 2048 acceptanceRatioBreakValue : -1 stageType: BOOST featureType: LBP sampleWidth: 400 sampleHeight: 45 boostType: GAB minHitRate: 0.9988 maxFalseAlarmRate: 0.8 weightTrimRate: 0.95 maxDepth: 1 maxWeakCount: 100 Number of unique features given windowSize [400,45] : 8778000

===== TRAINING 0-stage ===== <BEGIN POS count : consumed   199 : 199 NEG count : acceptanceRatio    572 : 1 Precalculation time: 26.994
+----+---------+---------+ |  N |    HR   |    FA   |
+----+---------+---------+ |   1|        1|        1|
+----+---------+---------+ |   2|        1|0.0244755|
+----+---------+---------+ END> 
Training until now has taken 0 days 0 hours 36 minutes 35 seconds.

===== TRAINING 1-stage ===== <BEGIN POS count : consumed   199 : 199 NEG count : acceptanceRatio    
0 : 0 Required leaf false alarm rate achieved. 
Branch training terminated.

该过程运行约35分钟,产生一个2kB的文件,只有45行,对于良好的级联来说似乎太小了。 不用说,它没有检测到所需的区域。

我试图调整参数但无济于事。

我知道最好使用一组更大的样本,但我认为这个样本数的结果也应该产生一些合理的结果,但不是那么准确。

haar级联是否是检测特定文本区域(MRZ)的好方法? 如果是这样,如何更好地实现准确性?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您希望以最大误报率3 stages生成0.8 per stage,这意味着在3个阶段后,分类器的最大值为0.8^3 false alarm rate = 0.512,但在第一阶段之后,分类器已达到0.0244755的误报率比你的最终目标(0.512)要好得多,所以分类器已经足够好,不再需要任何阶段。

如果这对您不适合,请增加numStages或将maxFalseAlarmRate降低到您未达到的最终质量&#34;在你的第一阶段。

您可能需要收集更多代表环境的样本和样本,达到如此低的误报率通常是不良训练数据的标志(太简单或太相似?)。

我无法告诉你,haar级联是否适合解决你的任务。