opencv分类器训练方法

python+opencv实现人头检测

一、工具,样本数据准备;

分类器工具集下载

人头识别 分类器训练数据集

二、文件夹环境


下面8个工具在这里(分类器工具集下载

posdata中存放正样本 negdata 存放负样本下载地址:(人头识别 分类器训练数据集

三、开始训练:

dos命令下进入 这个目录;执行dir /b >posdata.dat生成posdata.dat文件

dos命令下进入 这个目录;执行dir /b >negdata.dat生成negdata.dat文件




这样正负样本的数据文件都在其各自目录下生成了,接下来进行修改数据文件。打开数据文件的编辑界面,删掉数据文件最后面的posdata.dat,同理删除负样本数据文件里面的negdata.dat。如图: 
这里写图片描述

接下里修改数据文件成我这样,posdata.dat: 
这里写图片描述

negdata.dat: 
这里写图片描述

解释下 1 0 0 20 20这个参数的意思,1代表文件,0 0 20 20,是这个目录下每一张图片的坐标,因为是二维的,而且我正样本所有图片全是20*20像素的,所以就是(0,0)点到(20,20)点,即是读取图片时,从左下角扫描到右上角。 
注意:在负样本的数据文件里面,要给每一个图片文件加上他的相对地址,因为默认我们训练时,是在negdata的父目录下进行,即是你创建的训练文件夹下进行。

3.准备工作已经完成,下面开始训练具体操作,首先用opecv_createsamples.exe生成样本描述文件pos.vec。命令如下:

opencv_createsamples.exe -info posdata\posdata.dat -vec data\pos.vec -num 3900 -w 20 -h 20
  • 1
  • 2

生成了正样本描述文件后,接下来就是用opencv_traincascade.exe进行分类器的生成。命令如下:

opencv_traincascade.exe -data data1 -vec data\pos.vec -bg negdata -numPos 3900 -numNeg 23000 -minHitRate 0.9999 -maxFalseAlarmRate 0.5 -featureType HAAR -numStages 20 -w 20 -h 20
  • 1
  • 2
  • 3

各个参数的意思我这里就不赘述了,给一篇大牛写的文章,大家自行参考。http://note.sonots.com/SciSoftware/haartraining.html#e134e74e

接着,等着他训练完成就行。这是个漫长的过程!


猜你喜欢

转载自blog.csdn.net/weixin_41799483/article/details/80567909