Haar+AdaBoost分类器训练总结

上传人:206****923 文档编号:50895962 上传时间:2018-08-11 格式:PPT 页数:13 大小:2.15MB
返回 下载 相关 举报
Haar+AdaBoost分类器训练总结_第1页
第1页 / 共13页
Haar+AdaBoost分类器训练总结_第2页
第2页 / 共13页
Haar+AdaBoost分类器训练总结_第3页
第3页 / 共13页
Haar+AdaBoost分类器训练总结_第4页
第4页 / 共13页
Haar+AdaBoost分类器训练总结_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《Haar+AdaBoost分类器训练总结》由会员分享,可在线阅读,更多相关《Haar+AdaBoost分类器训练总结(13页珍藏版)》请在金锄头文库上搜索。

1、Haar+AdaBoost分类器训练总结Page 2目录Page 3准备阶段-样本收集正样本: 工具:Image Clipper-可以很方便地从视频或图像文件夹中读取当前帧或当前图像,并截取和保存所需的样本图像 负样本: 所有不包含待检测目标的图像都可以作为负样本一般正负样本需要几千上万张图像,所以正样本收集过程耗时比较长Page 4准备阶段-样本准备负样本可以是任意大小,只要不包括待检测目标即可。 简洁的方式是从视频或图像背景中直接划分出负样本,也可以利用现有的图像库,或 者可以从网上的图像素材库中下载建立保存负样本的文件夹(如:neg),并在neg目录下建立negdata.dat描述文件

2、Negdata.dat的内容如下:1.bmp 2.bmp 3.bmp 生成描述文件的方法:在命令行窗口中,变更到当前文件夹路径(neg),输入 dir /b negdata.dat就会在neg下生成描述文件,去掉其中对描述文件自身的描述 negdata.dat即可如果negdata.dat保存在neg外面,在每一行前面添加相对路径或绝对路径来指出样本 所在位置即可Page 5准备阶段-样本准备截取后的正样本要做两个改动: 1、正样本要缩放为统一size,可以使用Image resizer工具 2、截取后的默认格式为.png,使用批量重命名工具修改样本名为所需的名称和格式建立保存正样本的文件夹(

3、如:pos),并在pos目录下建立posdata.dat描述文件, 到这里与负样本的准备是一致的。不同之处在于正样本的描述中需要指出目标在图像 中的数量和位置比如1.bmp中包含一辆汽车,它的描述应写成1.bmp 1 x1 y1 x2 y2 其中(x1,y1,x2,y2)指出这个目标所在的矩形框由于所有正样本都是统一size,只要在记事本中编辑描述文件将bmp替换成bmp 1 0 0 width height 即可,width和height是图像的宽和高Page 6准备阶段-样本准备正样本还需要根据描述文件和样本图像生成.vec文件才是最后的正样本数据 生成程序为OpenCV1.0/bin/C

4、reateSamples.exe(在后期版本OpenCV中需自行编译 )可以使用批处理文件或命令行调用CreateSamples.exe 参数设置:-info posdata.dat 正样本描述文件-vec pos.vec 生成的.vec文件名-num 5323 正样本的数量-w 50 样本的宽度-h 50 样本的高度运行后,出现Done.Created 5323 samples 表明生成5323个样本成功Page 7准备阶段-训练准备训练可以使用批处理文件或命令行调用haartraining.exe 参数设置:-data 生成的分类器名称和路径,包括级联文件夹和.xml文件两部分,二者是相同

5、的;-vec 正样本的.vec文件路径-bg 负样本的描述文件路径-npos 正样本数量-nneg 负样本数量-nstages 级联分类器的层数-mem 分配的内存空间,越大训练过程越快-sym 目标是否对称-minhitrate 要达成的检测率-maxfalsealarm 要达成的虚警率-mode 选取的特征模式-w 正样本宽度-h 正样本高度 当级数达到nstages或者检测率、虚警率同时满足时,训练结束,程序退出Page 8准备阶段-结果检测样本数量越多,训练时间也就越长。最终将生成一个级联分类器的文件夹和一个.xml 文件,通过OpenCV中提供的convert_cascade.exe

6、(OpenCVsamplesc目录下)可以 将文件夹转换成.xml文件分类器检测 编写程序使用cvHaarDetectObjects()函数或者通过批处理文件/命令行调用 performance.exe(与haartraining.exe同路径)来检测分类器效果如何 如果使用performance.exe,还需要准备测试集,与负样本的准备相同,对size没有限 制,不同之处是要再文件描述中添加类似正样本描述中的目标位置信息。如果一个测 试图像中有两个目标,可以这样描述:1.bmp 2 x1 y1 x2 y2 x1 y1 x2 y2 其中(x1,y1,x2,y2)(x1,y1,x2,y2)分别是

7、两个目标的位置,当有更多目标时往后罗列 即可。 Performance.exe中会对检测到的候选目标作如下判断: If(候选矩形框与真实目标矩形框中心的距离 width * maxPosDiff &width / maxSizeDiff候选矩形框宽度 width * maxSizeDiff) e.g:width是真实目标框 宽度 如果满足,计一个hit,否则为falsealarm,最后根据hit计算出Missed。Page 9可能遇到的问题1. 负样本收集负样本的数量理论上是无穷大,因而收集负样本时应注意样本的数量和多样性 如果数量太少或者多样性不好,很容易陷入训练过程中无法继续下去。 解决办

8、法:增加负样本数量,可以不必局限于背景图像作为负样本。训练中止,增 加负样本后,程序将从已经训练过的stage处为节点继续训练过程,并不会浪费 很多时间2. 正样本收集正样本收集中应当尽量密集,尽管两个时刻的目标之间看不出什么差异,但是 最后可能在有样本的地方能够检测到,而在没有样本的地方出现漏检 如下图:Page 10可能遇到的问题3. 内存不足该提示指出有参数超出范围在cvAlloc中,可以修改-mem参数,检查是否有足 够的内存空间,建议关闭不需要的程序和进程释放内存。4. 负样本描述文件有误有可能会出现找不到负样本的情况,negdata.dat描述的路径找不到响应文件。 正样本因为存储

9、在.vec文件中很少出现这种情况Page 11经验总结1. 分类器训练过程时间比较长,尤其正样本的增加对时间增加的贡献率大于负样 本 2. 训练过程中可以中止训练,替换或者增加、删除样本都是可以的(Ctrl+C退出训 练过程),重新开始后将读取级联文件夹中的当前分类器然后继续训练 3. Performance.exe检验分类器效果不是很一目了然,最好在窗口中显示检测结果 来检验 4. 负样本的选择很关键,最好在size、内容、来源上体现出多样,同时以实际应用 中的背景为负样本主要部分。另外size的变化有助于解决前面提到的可能遇到的 问题1 5. 训练机器的内存空间尽量大,举例:两次样本数量相差不多(200/6000)的训 练过程中分别分配空间为10G和800M,时间相差大概三倍左右 6. 分类器训练是一个工程性的工作,在样本准备上花费多一些时间是值得的,实 际上优化分类器就是优化样本空间的过程Page 12相关资料推荐: http:/ 原理分析http:/ 操作指导http:/ 官方指导工具: Page 13结束Thank You ! 谢谢 !

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号