【OpenCV3】级联分类器训练
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【OpenCV3】级联分类器训练
上一篇(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