生成用于训练的vec文件后,就可以开始cascade分类器训练。首先查看分类器训练工具opencv_traincascade的参数和用法:
-vec vec文件名;
-bg负样本描述文件名称,也就是负样本的说明文件(.dat);
-nstage 20指定训练层数,推荐15~20,层数越高,耗时越长;
-nsplits分裂子节点数目,选取默认值2;
-minhitrate最小命中率,即训练目标准确度;
-maxfalsealarm最大误检率,每一层训练到这个值小于0.5时训练结束,进入下一层训练;
-npos在每个阶段用来训练的正样本数目;
-nneg在每个阶段用来训练的负样本数目这个值可以设置大于真正的负样本图像数目,程序可以自动从负样本图像中切割出和正样本大小一致的,这个参数一半设置为正样本数目的1~3倍;-w,-h样本尺寸,与前面对应;(www.xing528.com)
-mem程序可使用的内存,这个设置为256即可,实际运行时根本就不怎么耗内存,以MB为单位;
-mode ALL指定haar特征的种类,BASIC仅仅使用垂直特征,ALL表示使用垂直以及45度旋转特征;
-w与-h表示样本的宽与高,必须跟vec中声明保持一致。
实际训练中,需要要把负样本和bg.txt文件复制到build/x64/vc14/bin目录下,还需要在data文件夹下新建文件HaarReslut来保存训练的结果,这样才能完成训练工作。实验中,输入以下参数启动分类器训练:
opencv_traincascade.exe-data C:\Users\Administrator\Desktop\data\Haar-Reslut-vec;C:\Users\Administrator\Desktop\data\mysamples_341.vec-bg bg.txt-numPos 170-numNeg 500-numStages 12-featureType HAAR-w 24-h 24-minHitRate 0.996-maxFalseAlarmRate 0.5-mode ALL
训练情况如下。训练结束后HaarReslut文件会告诉训练结果,cascade.xml是训练得到的模型参数,其他的是训练过程中的产生的文件,应用中并不需要。
E:\Program\OpenCV\opencv\build\x64\vc14\bin>opencv_traincascadedata;C:\Users\Administrator\Desktop\data-vec C:\Users\Administrator\Desktop\data\mysamples_1204.vec-bg bg.txt-numPos 170-numNeg 500-numStages 12-featureType LBP-w 24-h 24-minHitRate 0.997-maxFalseAlarmRate 0.5
因为数据集比较少,所以训练速度应该会很快,大概2 min左右即可训练完成。如果想要提高准确度,可以把-numNeg 500改为-numNeg 1000,扩大负样本的数据这样就可以提高准确率了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。