【OpenCV3】级联分类器训练——traincascade快速使用详解

来源:互联网 发布:乐乎公寓baidu 编辑:程序博客网 时间:2024/06/03 18:23

上一篇(OpenCV3中的级联分类器目标检测——cv::CascadeClassifier简介)介绍了如何使用级联分类器进行目标检测。这里,我们介绍一下如何训练自己的级联分类器。

至于原理这里就不再进行详细介绍了,直接说明如何进行训练。在opencv的安装目录中的bin文件夹下有两个可执行文件opencv_createsamples.exe和opencv_traincascade.exe。将这两个文件拷贝到训练文件夹下,并将正、负样本的文件夹和描述文件——positive_samples.txt和negative_samples.txt也拷贝到这个文件夹下。同时,新建两个.bat文件——create_positive_samples.bat和traincascade.bat,新建一个文件夹data。这样,训练目录如下:




1、制作正样本

首先是制作和收集正样本图片,并将正样本图像的大小进行统一缩放(如40*40),然后在正样本描述文件中,添加对正样本的描述,形式如下:


然后在create_positive_samples.bat文件中添加如下内容:


其中,-info字段填写正样本描述文件;-vec用于保存制作的正样本;-num制定正样本的数目;-w和-h分别指定正样本的宽和高。

保存,双击这个文件,开始制作正样本:


这样,正样本制作完成。


2、级联分类器训练

下面进行级联分类器的训练,在traincascade.bat中输入如下内容


字段说明如下:

-data:指定保存训练结果的文件夹;

-vec:指定正样本集;

-bg:指定负样本的描述文件夹;

-numPos:指定每一级参与训练的正样本的数目(要小于正样本总数);

-numNeg:指定每一级参与训练的负样本的数目(可以大于负样本图片的总数);

-numStage:训练的级数;

-w:正样本的宽;

-h:正样本的高;

-minHitRate:每一级需要达到的命中率(一般取值0.95-0.995);

-maxFalseAlarmRate:每一级所允许的最大误检率;

-mode:使用Haar-like特征时使用,可选BASIC、CORE或者ALL;

另外,还可指定以下字段:

-featureType:可选HAAR或LBP,默认为HAAR;

其他字段将不再说明。


保存,双击执行,开始漫长的训练过程(训练可中断,中断后再执行,会继续中断前的训练)


训练结束后,data文件夹下会生成如下训练结果:


cascade.xml文件即为最终的训练结果,即可拿来进行目标检测,参考OpenCV3中的级联分类器目标检测——cv::CascadeClassifier简介。


2017.04.15

2 0