opencv haar训练--训练样本(4)

1.海尔训练
现在,我们使用haartraining.exe来训练我们自己的分类器。训练语句如下:

Usage: ./haartraining
  -data <dir_name>
  -vec <vec_file_name>
  -bg <background_file_name>
  [-npos <number_of_positive_samples = 2000>]
  [-nneg <number_of_negative_samples = 2000>]
  [-nstages <number_of_stages = 14>]
  [-nsplits <number_of_splits = 1>]
  [-mem <memory_in_MB = 200>]
  [-sym (default)] [-nonsym]
  [-minhitrate <min_hit_rate = 0.995000>]
  [-maxfalsealarm <max_false_alarm_rate = 0.500000>]
  [-weighttrimming <weight_trimming = 0.950000>]
  [-eqw]
  [-mode <BASIC (default) | CORE | ALL>]
  [-w <sample_width = 24>]
  [-h <sample_height = 24>]
  [-bt <DAB | RAB | LB | GAB (default)>]
  [-err <misclass (default) | gini | entropy>]
  [-maxtreesplits <max_number_of_splits_in_tree_cascade = 0>]
  [-minpos <min_number_of_positive_samples_per_cluster = 500>]


Kuranov et. al. 指出,20*20的样本识别的正确率最高。另外,对于18*18的尺寸,四分裂节点表现最好。而对于20*20的样本,两节点显然更好。分裂节点数分别是2、3或4的弱树分类器间的差小于它们的中间节点。
此外,关于20阶训练有个说法。假设我的测试集合代表了学习任务,我可以期望一个报错率是0.5^20≈9.6e-07,识对率是0.999^20≈0.98。
所以,使用20*20的样本大小,并且Nsplit=2, Nstages=20, MINhitrate=0.9999(default: 0.995), MAXfalsealarm=0.5(default: 0.5), weighttrimming=0.95(default: 0.95)是比较优的组合。

$ haartraining -data haarcascade -vec samples.vec -bg negatives.dat -nstages 20 -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5 -npos 7000 -nneg 3019 -w 20 -h 20 -nonsym -mem 512 -mode ALL


"-nonsym"选项用于没有垂直(左-右)对称的对象类。如果对象类是垂直对称的,例如正脸,则用"-sym (default)"。这样会增大运算速度,因为类海尔特征只有一半投入使用。
"-mode ALL"使用了类海尔特征的扩展集。默认只使用竖直特征,ALL除了能使用竖直特征,还能使用转角为45°的特征集合。
"-mem 512"是以MB为单位的预计算可使用的内存大小。默认是200MB。
另外还有一些选项没有用到:

[-bt <DAB | RAB | LB | GAB (default)>]
[-err <misclass (default) | gini | entropy>]
[-maxtreesplits <max_number_of_splits_in_tree_cascade = 0>]
[-minpos <min_number_of_positive_samples_per_cluster = 500>]


#你可以使用OpenMP(multi-processing).
#一次训练持续三天。

2.生成XML文件
当海尔训练过程完全结束,它将会生成一个xml文件。
如果你想要将一个中级海尔训练输出目录树转化为一个xml文件,在目录OpenCV/samples/c/convert_cascade.c下有个程序可供使用。
输入的格式为:

$ convert_cascade --size="<sample_width>x<sampe_height>" <haartraining_ouput_dir> <ouput_file>


举例:

$ convert_cascade --size="20x20" haarcascade haarcascade.xml
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值