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

 

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

Usage: ./haartraining
  -data
  -vec
  -bg
  [-npos ]
  [-nneg ]
  [-nstages ]
  [-nsplits ]
  [-mem ]
  [-sym (default)] [-nonsym]
  [-minhitrate ]
  [-maxfalsealarm ]
  [-weighttrimming ]
  [-eqw]
  [-mode ]
  [-w ]
  [-h ]
  [-bt ]
  [-err ]
  [-maxtreesplits ]
  [-minpos ]


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 ]
[-err ]
[-maxtreesplits ]
[-minpos ]


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

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

$ convert_cascade --size="x"


举例:

$ convert_cascade --size="20x20" haarcascade haarcascade.xml

你可能感兴趣的:(opencv)