HaarAdaBoost分类器训练总结.ppt_第1页
HaarAdaBoost分类器训练总结.ppt_第2页
HaarAdaBoost分类器训练总结.ppt_第3页
HaarAdaBoost分类器训练总结.ppt_第4页
HaarAdaBoost分类器训练总结.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Haar+AdaBoost分类器训练总结,Page 2,目录,Page 3,准备阶段-样本收集,正样本: 工具:Image Clipper-可以很方便地从视频或图像文件夹中读取当前帧或当前图像, 并截取和保存所需的样本图像 负样本: 所有不包含待检测目标的图像都可以作为负样本 一般正负样本需要几千上万张图像,所以正样本收集过程耗时比较长,Page 4,准备阶段-样本准备,负样本可以是任意大小,只要不包括待检测目标即可。 简洁的方式是从视频或图像背景中直接划分出负样本,也可以利用现有的图像库,或者可以从网上的图像素材库中下载 建立保存负样本的文件夹(如:neg),并在neg目录下建立negdata.dat描述文件 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,使用批量重命名工具修改样本名为所需的名称和格式 建立保存正样本的文件夹(如: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/CreateSamples.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文件两部分, 二者是相同的; -vec 正样本的.vec文件路径 -bg 负样本的描述文件路径 -npos 正样本数量 -nneg 负样本数量 -nstages 级联分类器的层数 -mem 分配的内存空间,越大训练过程越快 -sym 目标是否对称 -minhitrate 要达成的检测率 -maxfalsealarm 要达成的虚警率 -mode 选取的特征模式 -w 正样本宽度 -h 正样本高度 当级数达到nstages或者检测率、虚警率同时满足时,训练结束,程序退出,Page 8,准备阶段-结果检测,样本数量越多,训练时间也就越长。最终将生成一个级联分类器的文件夹和一个.xml文件,通过OpenCV中提供的convert_cascade.exe(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)分别是两个目标的位置,当有更多目标时往后罗列即可。 Performance.exe中会对检测到的候选目标作如下判断: If(候选矩形框与真实目标矩形框中心的距离 width * maxPosDiff & width / maxSizeDiff候选矩形框宽度 width * maxSizeDiff) e.g:width是真实目标框宽度 如果满足,计一个hit,否则为falsealarm,最后根据hit计算出Missed。,Page 9,可能遇到的问题,负样本收集 负样本的数量理论上是无穷大,因而收集负样本时应注意样本的数量和多样性 如果数量太少或者多样性不好,很容易陷入训练过程中无法继续下去。 解决办法:增加负样本数量,可以不必局限于背景图像作为负样本。训练中止,增加负样本后,程序将从已经训练过的stage处为节点继续训练过程,并不会浪费很多时间 2. 正样本收集 正样本收集中应当尽量密集,尽管两个时刻的目标之间看不出什么差异,但是最后可能在有样本的地方能够检测到,而在没有样本的地方出现漏检 如下图:,Page 10,可能遇到的问题,3. 内存不足 该提示指出有参数超出范围在cvAlloc中,可以修改-mem参数,检查是否有足够的内存空间,建议关闭不需要的程序和进程释放内存。 4. 负样本描述文件有误 有可能会出现找不到负样本的情况,negdata.dat描述的路径找不到响应文件。 正样本因为存储在.vec文件中很少出现这种情况,Page 11,经验总结,分类器训练过程时间比较长,尤其正样本的增加对时间增加的贡献率大于负样本 训练过程中可以中止训练,替换或者增加、删除样本都是可以的(Ctrl+C退出训练过程),重新开始后将读取级联文件夹中的当前分类器然后继续训练 Performance.exe检验分类器效果不是很一目了然,最好在窗口中显示检测结果来检验 负样本的选择很关键,最好在size、内容、来源上体现出多样,同时以实际应用中的背景为负样本主要部分。另外size的变化有助于解决前面提到的可能遇到的问题1 训练机器的内存空间尽量大,举例:两次样本数量相差不多(200/6000)的训练过程中分别分配空间为10G和800M,时间相差大概三倍左右 分类器训练是一个工程性的工作,在样本准备上花费多一些时间是值得的,实际上优化分类器就是优化样本空间的过程,Page 12,相关资料,推荐: /ello/archive/2012/04/28/2475419.html 原理分析 http:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论