win7利用opencv训练自己的xml文件

参考:

https://www.jianshu.com/p/0afa9712c6d5

https://www.jianshu.com/p/e35260f7cbf0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

https://blog.csdn.net/roslei/article/details/65444719

        首先,opencv目前仅支持三种特征的训练检测, HAAR、LBP、HOG,选择哪个特征就去补充哪个吧。opencv的这个训练算法是基于adaboost而来的,所以需要先对adaboost进行基础知识补充啊,网上一大堆资料,同志们速度去查阅。我的资源里也有,大家去下载吧,这些我想都不是大家能直接拿来用的,我下面将直接手把手告诉大家训练怎么操作,以及要注意哪些细节。

一、前期准备

正样本:300张

负样本:1000张

注意:正负样本的比例网上说是1:3,量越多越好),正样本采集越多,识别的时候越准确,同时负样本也要更多,本人300张正样本识别不是很准,但还行

opencv_createsamples.exe 版本3.2

opencv_createsamples.exe  版本3.2

刚开始网上下载的2.x的版本,老报错不行,后来重新下载3.2的版本就可以正常训练生成xml

 

二、关于正样本的准备

1、采集正样本图片

用python摄像头截图人脸,并且统一全部缩放成50px*50px的图片,因为刚开始用500px*500px,生成pos.vec时会报错。

2、获取正样本路径列表

进入到正样本图片的文件夹,打开cmd命令行,输入

dir /b >pos.txt

生成pos.txt文件,删除最后一行不是图片的路径

然后用notepad++等文本工具,批量修改路径数据,格式如下

1 :该样本数目为1;

0 0 :表示样本起始坐标x,y;

500 500 : 表示样本宽w高h

最后,把修改好的pos.txt文件,拷贝到opencv_createsamples.exe同目录下

3、获取供训练的vec文件

这里,我们得利用opencv里的一个程序叫opencv_createsamples.exe,可以把它拷贝出来。针对它的命令输入也是写成bat文件啦,因为cascade训练的时候用的是vec。如下:

编写bat文件

opencv_createsamples.exe -vec pos.vec -info pos.txt -num 300 -bg neg.txt -w 50 -h 50 pause

 

-vec : 输出生成的文件路径

-info : 正样本的路径txt文件

-num : 正样本的数量

-w -h : 样本宽高

运行bat,就在我们得pos文件夹里生成了如下vec文件:

就此有关正样本的东西准备结束。

运行时报错提示少了opencv_world320.dll,网上下载,放到同一目录下就行了

(vec中其实就是保存的每一个sample图,并且已经统一w、h大小了,如果你想看所有的sample,也可以通过调用opencv_createsamples.exe)

三、关于负样本的准备

这个特别简单,直接拿原始图,不需要裁剪抠图(不裁剪还能保证样本的多样性),也不需要保存框(网上说只要保证比正样本大小大哈,大家就保证吧),只要把路径保存下来。同正样本类似,步骤图如下:

同样生成路径文件,格式跟之前的不太一样

四、开始训练

编写bat文件执行开始训练

opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 100 -numNeg 1000 -numStages 20 -w 50 -h 50 -minHitRate 0.9999 -precalcValBufSize 1024 -maxFalseAlarmRate 0.5 -mode ALL

-data : 存放xml文件的目录

-vec : 正样本vec文件源

-bg : 负样本路径txt文件

-numPos : 正样本数量

-numNeg : 负样本数量

numStages:训练分类器的级数

-w -h : 样本宽高

-minHitRate :分类器的每一级希望得到最小检测率(即正样本被判断有效的比例)

-maxFalseAlarmRate:分类器的每一级希望的最大误检率(负样本判定为正样本的概率)

-mode: 选择训练中使用的Haar特征类型。BASIC只使用右上特征,ALL使用所有右上特征及45度旋转特征


其中-numPos不能设置太大,不然也会报错

Traincascade Error: Bad argument (Can not get new positive sample. Themost possible reason is insufficient count of samples in given vec-file.

这个帖子里面说的:https://blog.csdn.net/xiao_lxl/article/details/40429363

 

可能我的样本集不多,训练到第二层级就已经提示识别度已达到了

Required leaf false alarm rate achieved. Branch training terminated.

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值