已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
很好的 opencv haartraining 学习资料 最近要做一个性别识别的项目,在人脸检测与五官定位上我采用 OPENCV 的 haartraining 进行定位,这里介绍下这两天我学习的如何用 opencv 训练自己的分类器。在这两天的学 习里,我遇到了不少问题,不过我遇到了几个好心的大侠帮我解决了不少问题,特别是无 忌,在这里我再次感谢他的帮助。 一、简介 目标检测方法最初由 Paul Viola Viola01提出,并由 Rainer Lienhart Lienhart02对这一 方法进行了改善。该方法的基本步骤为: 首先,利用样本(大约几百幅样本图片)的 harr 特征进行分类器训练,得到一个级联的 boosted 分类器。 分类器中的“级联 “是指最终的分类器是由几个简单分类器级联组成。在图像检测中,被检 窗口依次通过每一级分类器, 这样在前面几层的检测中大部分的候选区域就被排除了,全 部通过每一级分类器检测的区域即为目标区域。 分类器训练完以后,就可以应用于输入图像中的感兴趣区域的检测。检测到目标区域分类 器输出为 1,否则输出为 0。为了检测整副图像,可以在图像中移动搜索窗口,检测每一 个位置来确定可能的目标。 为了搜索不同大小的目标物体,分类器被设计为可以进行尺寸 改变,这样比改变待检图像的尺寸大小更为有效。所以,为了在图像中检测未知大小的目 标物体,扫描程序通常需要用不同比例大小的搜索窗口对图片进行几次扫描。 目前支持这种分类器的 boosting 技术有四种: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。 “boosted“ 即指级联分类器的每一层都可以从中选取一个 boosting 算法(权重投票) ,并利 用基础分类器的自我训练得到。 根据上面的分析,目标检测分为三个步骤: 1、 样本的创建 2、 训练分类器 3、 利用训练好的分类器进行目标检测。 二、样本创建 训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本,反例样本指其它任 意图片。 负样本 负样本可以来自于任意的图片,但这些图片不能包含目标特征。负样本由背景描述文件来 描述。背景描述文件是一个文本文件,每一行包含了一个负样本图片的文件名(基于描述 文件的相对路径)。该文件创建方法如下: 采用 Dos 命令生成样本描述文件。具体方法是在 Dos 下的进入你的图片目录,比如我的 图片放在 D:faceposdata 下,则: 按 Ctrl+R 打开 Windows 运行程序,输入 cmd 打开 DOS 命令窗口,输入 d:回车,再输 入 cd D:facenegdata 进入图片路径,再次输入 dir /b negdata.dat,则会图片路径下 生成一个 negdata.dat 文件,打开该文件将最后一行的 negdata.dat 删除,这样就生成了 负样本描述文件。dos 命令窗口结果如下图: 正样本 对于正样本,通常的做法是先把所有正样本裁切好,并对尺寸做规整(即缩放至指定大小) ,如下图所示: 由于 HaarTraining 训练时输入的正样本是 vec 文件,所以需要使用 OpenCV 自带的 CreateSamples 程序(在你所按照的 opencvbin 下,如果没有需要编译 opencvappsHaarTrainingmake 下的.dsw 文件,注意要编译 release 版的)将准备好的 正样本转换为 vec 文件。转换的步骤如下: 1) 制作一个正样本描述文件,用于描述正样本文件名(包括绝对路径或相对路径),正样 本数目以及各正样本在图片中的位置和大小。典型的正样本描述文件如下: posdata/1(10).bmp 1 1 1 23 23 posdata/1(11).bmp 1 1 1 23 23 posdata/1(12).bmp 1 1 1 23 23 不过你可以把描述文件放在你的 posdata 路径(即正样本路径)下,这样你就不需要加前 面的相对路径了。同样它的生成方式可以用负样本描述文件的生成方法,最后用 txt 的替 换工具将“bmp”全部替换成“bmp 1 1 1 23 23 ”就可以了,如果你的样本图片多,用 txt 替换会导致程序未响应,你可以将内容拷到 word 下替换,然后再拷回来。bmp 后面那五个数字分别表示图片个数,目标的起始位置及其宽 高。这样就生成了正样本描述文件 posdata.dat。 2) 运行 CreateSamples 程序。如果直接在 VC 环境下运行,可以在 ProjectSettingsDebug 属性页的 Program arguments 栏设置运行参数。下面是一个运行 参数示例: -info D:faceposdataposdata.dat -vec D:facepos.vec -num 50 -w 20 -h 20 表示有 50 个样本,样本宽 20,高 20,正样本描述文件为 posdata.dat,结果输出到 pos.vec。 或者在 dos 下输入: “D:Program FilesOpenCVbincreatesamples.exe“ -info “posdataposdata.dat“ -vec datapos.vec -num 50 -w 20 -h 20 运行完了会 d:facedata 下生成一个*.vec 的文件。该文件包含正样本数目,宽高以及所有 样本图像数据。结果入下图: Createsamples 程序的命令行参数: 命令行参数: vec 训练好的正样本的输出文件名。 img 源目标图片(例如:一个公司图标) bg 背景描述文件。 num 要产生的正样本的数量,和正样本图片数目相同。 bgcolor 背景色(假定当前图片为灰度图)。背景色制定了透明色。对于压缩图片,颜色方差量由 bgthresh 参数来指定。则在 bgcolorbgthresh 和 bgcolorbgthresh 中间的像素被认为是 透明的。 bgthresh inv 如果指定,颜色会反色 randinv 如果指定,颜色会任意反色 maxidev 背景色最大的偏离度。 maxangel maxangle, maxzangle 最大旋转角度,以弧度为单位。 show 如果指定,每个样本会被显示出来,按下“esc“会关闭这一开关,即不显示样本图片,而创 建过程继续。这是个有用的 debug 选项。 w 输出样本的宽度(以像素为单位) hsample_height 输出样本的高度,以像素为单位。 到此第一步样本训练就完成了。恭喜你,你已经学会训练分类器的五成功力了,我自己学 这个的时候花了我一天的时间,估计你几分钟就学会了吧。 三、训练分类器 样本创建之后,接下来要训练分类器,这个过程是由 haartraining 程序来实现的。该程序 源码由 OpenCV 自带,且可执行程序在 OpenCV 安装目录的 bin 目录下。 Haartraining 的命令行参数如下: data 存放训练好的分类器的路径名。 vec 正样本文件名(由 trainingssamples 程序或者由其他的方法创建的) bg 背景描述文件。 npos, nneg 用来训练每一个分类器阶段的正/负样本。合理的值是:nPos = 7000;nNeg = 3000 nstages 训练的阶段数。 nsplits 决定用于阶段分类器的弱分类器。如果 1,则一个简单的 stump classifier 被使用。如果是 2 或者更多,则带有 number_of_splits 个内部节点的 CART 分类器被使用。 mem 预先计算的以 MB 为单位的可用内存。内存越大则训练的速度越快。 sym(default) nonsym 指定训练的目标对象是否垂直对称。垂直对称提高目标的训练速度。例如,正面部是垂直 对称的。 minhitrate min_hit_rate 每个阶段分类器需要的最小的命中率。总的命中率为 min_hit_rate 的 number_of_stages 次方。 maxfalsealarm 没有阶段分类器的最大错误报警率。总的错误警告率为 max_false_alarm_rate 的 number_of_stages 次方。 weighttrimming 指定是否使用权修正和使用多大的权修正。一个基本的选择是 0.9 eqw mode 选择用来训练的 haar 特征集的种类。basic 仅仅使用垂直特征。 all 使用垂直和 45 度角旋 转特征。 wsample_width hsample_height 训练样本的尺寸,(以像素为单位)。必须和训练样本创建的尺寸相同。 一个训练分类器的例子: “D:Program FilesOpenCVbinhaartraining.exe“ -data datacascade -vec datapos.vec - bg negdatanegdata.dat -npos 49 -nneg 49 -mem 200 -mode ALL -w 20 -h 20 训练结束后,会在目录 data 下生成一些子目录,即为训练好的分类器。 训练结果如下: 恭喜你,你已经学会训练分类器的九成功力了。 四:利用训练好的分类器进行目标检测。 这一步需要用到 performance.exe,该程序源码由 OpenCV 自带,且可执行程序在 OpenCV 安装目录的 bin 目录下。 performance.exe -data data/cascade -info posdata/test.dat -w 20 -h 20 -rs 30 performance 的命令行参数如下: Usage: ./performance -data -info -maxSizeDiff -maxPosDiff -sf -ni -nos -rs -w -h 也可以用 opencv 的 cvHaarDetectObjects 函数进行检测: CvSeq* faces = cvHaarDetectObjects( img, cascade, s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广西柳州融安县专业森林消防大队面向社会招聘森林消防员1人笔试考试参考试题及答案解析
- 2025年榆林职业技术学院高层次人才招聘(23人)笔试考试备考题库及答案解析
- 2025进口食品电商平台运营模式及市场前景分析报告
- 2025调味品行业市场发展分析及前景趋势与消费行为研究报告
- 2025裁断机行业海外市场拓展策略与本土化运营研究报告
- 2025药用植物种植与采收环节质量控制与药材品质研究分析报告
- 2025药品研发领域创新药临床试验投资回报评估规划分析报告
- 2025药品研发行业创新药物及市场需求与产业政策影响研究报告
- 2025药品研发企业市场研究与发展路径与投资需求研究报告
- 2025药品临床试验行业市场供需特点及投资资源规划分析研究报告
- 汇款业务知识培训内容课件
- 2025年执法记录仪行业当前市场规模及未来五到十年发展趋势报告
- 女性胸针培训课件
- 2025-2030中国压缩空气泡沫灭火装置行业应用状况与需求规模预测报告
- 支扩伴感染的护理查房
- 2025年工会专业知识考试题库及答案(真题版)
- 2025年海外游戏市场洞察报告-Sensor Tower
- 单位票据管理办法
- 【2025年】浙江省湖州市【辅警协警】笔试真题含答案
- 老年肿瘤护理与风险防范
- 图木舒克市供热管理办法
评论
0/150
提交评论