opencv: 训练分类器
博客专区 > e_s 的博客 > 博客详情
opencv: 训练分类器
e_s 发表于1年前
opencv: 训练分类器
  • 发表于 1年前
  • 阅读 25
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

opencv的分类器表示是一个.xml文件,里面相当于包含了传统意义上的weights文件。

过程:

1-准备负样本,产生negative_sample_description.dat

$ find <path of negative samples> -name '*.jpg' >negative.dat

*经验表明,negative samples所在路径必须在当前工作目录 ‘.’下

 

2-准备正样本,产生positive_sample_description.dat, 以及positive_samples.vec

$ find <path of positive> -name ’*.jpg‘ -exec identity -format '%i 1 0 0 %w %h' \{\} \; >positive.dat

$ opencv_createsamples -info positive.dat -vec positive_samples.vec -w 20 -h 20

 

3-准备test samples,用于训练完以后opencv_performance的衡量。

$ opencv_createsamples -img <one random positive image> -num <number of negative images you want to use as background> -bg negative.dat -info test.dat -maxxangle <distortion angle at x-axis> -maxyangle ... -maxzangle ... -maxidev ... -bgcolor ... -bgthresh ...

此时在工作目录下的文件分布应该如下

 

4-开始训练

$ opencv_haartraining  -data <dest of trained-files> -vec positive_samples.vec -bg negative.dat -nstages 20 -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5 -npos ... -nneg ... -w 20 -h 20 -nonsym -mem 512 -mode ALL

 

5-获得.xml类型分类器后,进行 opencv_performance测试,即用test.dat进行accuracy测试

 

×××× 补充 ××××:

1. 关于opencv_haartraining中 -nPos 参数的选取是有讲究的,这是每一级训练时放入的正样本数,尤其是在正样本数不够大的情况下,除了要保证不能超过正样本vec向量的总数,还需控制在一定数量内,否则会导致在训练到较高级时出现error,因为所有正样本都用完了。

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 26
码字总数 23852
×
e_s
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: