xml分类器训练
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分类:数据库/DB2/文章
第一步采集样本
1、将正负样本分别放在两个不同的文件夹下面
分别取名pos和neg,其中pos用来存放正样本图像,neg用来存放负样本
注意事项:1、正样本要统一切成24*24像素(或者其他)的格式,建议保存成灰度图,节省空间
2、正样本的数目越多,训练的时间也将越长,训练出来的效果也就越好
3、负样本的数量想对于正样本一定要足够的多,很多朋友在训练的时候,往往出现了CPU占用率达到了100%,但是训练只是停留在一个分类器长达几小时没有相应,问题出现在取负样本的那个函数icvGetHaarTrainingDataFromBG中; 当剩下所有的negtive样本在临时的cascade Classifier中,evaluate的结果都是0(也就是拒绝了),随机取样本的数目到几百万都是找不到误检测的neg样本了,因而没法跳出循环
2、建立正负样本的说明文件
这里我们假定根目录在D:\boost下面。
在cmd下面进入pos目录,输入dir /b > pos.txt
这个时候会在pos文件加下面生成一个pos.txt文件,打开pos.txt
我们对它进行如下编辑:
(1)、将BMP 替换成为BMP 1 0 0 24 24
注意:1代表此图片出现的目标个数后面的0 0 24 24代表目标矩形框(0,0)到(24,24),用户可以根据自身需要调整数值(2)、删除文本中最后一行的“pos.txt”
2、对负样本进行编辑
在CMD下输入dir /b > neg.txt
同理,打开neg目录下的neg.txt文件,只需要删除最后一行的neg.txt这一句
注意:1、负样本说明文件不能含有目标物体
2、负样本图像尺寸不受到限制,但是尺寸越大,训练所用的时间越长,
3、负样本图像可以是灰度图,也可以不是,笔者建议使用灰度图,这样处理起来可能更有效率
4、负样本图像一定不要重复,增大负样本图像的差异性,可以增加分类器的使用范围,笔者建议可以使用网上的素材库,将1000多张不含目标的图片灰度处理后用来训练,效果更佳
二、使用opencv_createsamples.exe创立样本VEC文件
1、首先我们将要用的的2个程序opencv_createsamples.exe和opencv_haartraining.exe拷到根目录下
在CMD下输入如下命令:
opencv_createsamples.exe -vec pos.vec -info pos\pos.txt -bg neg\neg.txt -w 40 -h 40 -num 142
以上参数的含义如下:
-vec
训练好的正样本的输出文件名。
-img
源目标图片(例如:一个公司图标)
-bg
背景描述文件。
-num
要产生的正样本的数量,和正样本图片数目相同。
-bgcolor
背景色(假定当前图片为灰度图)。背景色制定了透明色。对于压缩图片,颜色方差量由bgthresh 参数来指定。则在bgcolor-bgthresh 和bgcolor+bgthresh 中间的像素被认为是透明的。
-bgthresh
-inv
如果指定,颜色会反色
-randinv
如果指定,颜色会任意反色
-maxidev
背景色最大的偏离度。
-maxangel
-maxangle
-maxzangle
最大旋转角度,以弧度为单位。
-show
如果指定,每个样本会被显示出来,按下"esc"会关闭这一开关,即不显示样本图片,而创建过程
继续。这是个有用的debug 选项。
-w
输出样本的宽度(以像素为单位)
-h《sample_height》
输出样本的高度,以像素为单位。
按下回车后我们的正样本
三、使用opencv_haartraing.exe进行训练
参数说明如下:
Haartraining 的命令行参数如下:
-data
-vec
-bg
-npos
-nneg
-nPos = 7000;nNeg = 3000-nstages
-nsplits
如果1,则一个简单的stump classifier 被使用。如果是2 或者更多,则带有number_of_splits 个内部节点的CART 分类器被使用。-mem
-minhitrate《min_hit_rate》每个阶段分类器需要的最小的命中率。总的命中率为min_hit_rate 的number_of_stages 次方。
-maxfalsealarm
-weighttrimming
-mode
在CMD下输入opencv_haartraining.exe -data xml -vec pos.vec -bg neg\neg.txt -w 40 -h 40 -mem 800