参考博文:

1、http://blog.csdn.net/wuxiaoyao12/article/details/39227189

2、http://www.cnblogs.com/easymind223/archive/2012/07/03/2574826.html

3、http://blog.csdn.net/liulina603/article/details/8197889

使用的经验总结:

1 正负样本比例问题:1:4或者1:5训练出来的分类器要优于1:1或者1:10
正负样本比例接近的时候1:1,对负样本的看中程度很低,在实际的生活中负样本肯定远远多于正样本
正负样本比例较大的时候1:10,对负样本多于看中而忽略了正样本的统计特性,造成正样本权重总和很小,当权重小于一定程度的时候可能很大一部分正样本都不参与训练了(在weightTrimRate=0.95时),那么假设没有正样本参与训练了,只有负样本参与后续训练,训练出来的分类器会是什么样子的呢?
不管是目标检测问题与单纯数据分类问题我们都不可以专门针对负样本进行训练,这样的训练是无意义的
因此我们只能尽可能保证不过分看中负样本的情况下尽量增加负样本的个数,对于正样本的个数,比如人脸检测至少需要上万或者几十万的正样本吧,这个没有较好的结论,如果有人知道OpenCV公开的haarcascade_frontalface_alt.xml的参数请指教一下。
 
2 minHitRate:影响每个强分类器阈值,当设置为0.95时如果正训练样本个数为10000个,那么其中的500个就很可能背叛别为负样本,第二次选择的时候必须多选择后面的500个,按照这种规律我们为后面的每级多增加numPos*minHitRate个正样本,根据训练的级数可以得到如下公式
numPos+(numStages-1)*numPos*(1-minHitRate)《=准备的训练样本
以上式子也只是根据训练级数和准备的正样本总和设置一个参与训练的正样本个数,只能作为估算,小于计算出来的数可能没有问题,但是大于那个数肯定有问题
现在解释下”可能有问题“是如何理解的:因为我们总是默认每次添加固定个数的正训练样本,但是有时候后面的固定个数的正训练样本中也可能存在不满足条件的样本,这些样本跟我们排除的样本类似,所以比如我们打算添加500个样本就够了,但是实际需要添加600个,这时候就出现问题了。
从上面例子的结果中可以看出,每级我们允许丢掉12000*0.001个正样本=12,需要注意的是万一第11个或者第10个跟第12个的阈值是一样的,那么我们之丢掉了前面的10个或者9个而已,因此每次增加的个数可能要小于12个,大于12个的情况就是上面所说的”可能有问题“
 
3 maxFalseAlarm:影响每个强分类器中弱分类器的个数,设置较大,每级可以滤除负样本的比例就较小,这样在测试过程中虚警率就较高;设置较小,每级强分类器中弱分类器的个数就较多,检测时间就会相对要长,在可以接受的检测时间下尽量降低maxFalseAlarm是我们要追求的目标
关于负样本的选择,因为每级剩下的负样本个数低于numNeg*maxFalseAlarm,在第二轮选择的时候从之前选择的负样本后面继续选择,而不是重头开始将选择过的负样本也包含进来,只有当遍历完一遍负样本列表后才重头在扫描一遍
 
4 weightTrimWeight:影响参与训练的样本,不管是正样本还是负样本,当更新完样本权重之后,将样本权重按照从小到大的顺序排列,当从后累加样本权重不小于weightTrimWeight时前面的样本就不参与后面的训练了,这里有一个优化是等于该阈值的样本还是参与训练的,这样可以在保证训练精度的基础上缩短检测时间,因为我们认为是样本权重很小的时候表示该样本被正确分类了,而忽略了样本很多的时候,尽管样本没有被正确分类,也可能被排除在外了。还有一种情况就是正样本比例悬殊的时候,例如1:20,当正样本完全分类正确了,那么正样本比例总和仅占4.8%,后续参与训练的正样本可能就没有了
 
5 maxWeakCount:决定每级强分类器中弱分类器的最大个数,当FA降不到指定的maxFalseAlarm时可以通过指定最大弱分类器个数停止单个强分类器
 
6 boost参数(maxDepth、bt):影响决策树构建的法则以及权重更新策略
至于Gentle AdaBoost.考虑到(AdaBoost对”不像”的正样本权值调整很高,而导致了分类器的效率下降),而产生的变种算法.它较少地强调难以分类的样本.

如何用OpenCV自带的adaboost程序训练并检测目标的更多相关文章

  1. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

  2. 利用opencv源代码和vs编程序训练分类器haartraining.cpp

    如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1 ...

  3. OpenCV探索之路(二十七):皮肤检测技术

    好久没写博客了,因为最近都忙着赶项目和打比赛==| 好吧,今天我打算写一篇关于使用opencv做皮肤检测的技术总结.那首先列一些现在主流的皮肤检测的方法都有哪些: RGB color space Yc ...

  4. 【计算机视觉】如何使用opencv自带工具训练人脸检测分类器

    前言 使用opencv自带的分类器效果并不是很好,由此想要训练自己的分类器,正好opencv有自带的工具进行训练.本文就对此进行展开. 步骤 1.查找工具文件: 2.准备样本数据: 3.训练分类器: ...

  5. OpenCV原则解读HAAR+Adaboost

    因为人脸检测项目.用途OpenCV在旧分类中的训练效果.因此该检测方法中所使用的分类归纳.加上自己的一些理解.重印一些好文章记录. 文章http://www.61ic.com/Article/DaVi ...

  6. Opencv——级联分类器(AdaBoost)

    API说明: cv::CascadeClassifier::detectMultiScale(InputArray image,//输入灰度图像 CV_OUT std::vector<Rect& ...

  7. 基于Opencv自带BP网络的车标简易识别

    代码地址如下:http://www.demodashi.com/demo/12966.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和测 ...

  8. OpenCV学习笔记(2)——如何用OpenCV处理视频

    如何用OpenCV处理视频 读取视频文件,显示视频,保存视频文件 从摄像头获取并显示视频 1.用摄像头捕获视频 为了获取视频,需要创建一个VideoCapature对象.其参数可以是设备的索引号,也可 ...

  9. DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版原创发布-带官方示例程序版

    关于 DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版------------- ...

随机推荐

  1. Linux Process/Thread Creation、Linux Process Principle、sys_fork、sys_execve、glibc fork/execve api sourcecode

    相关学习资料 linux内核设计与实现+原书第3版.pdf(.3章) 深入linux内核架构(中文版).pdf 深入理解linux内核中文第三版.pdf <独辟蹊径品内核Linux内核源代码导读 ...

  2. Android 系统属性SystemProperty分析

     http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html Android System Property 一 System Pro ...

  3. Ubuntu学习总结-01 用VMware 8安装Ubuntu 12.04详细过程

    1 Ubuntu 下载地址 http://www.ubuntu.com/download/desktop 2 安装Ubuntu 转载用VMware 8安装Ubuntu 12.04详细过程 http:/ ...

  4. php返回json数据简单实例

    <?php include './include/conn.php'; //数据库链接文件 $sql_notice = mysql_query('SELECT * FROM gg_notice ...

  5. jQuery插件开发教程

    jQuery插件开发教程  ——让你的jQuery水平提升一个台阶 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台 ...

  6. 【2011图灵奖得主】我眼中的Judea Pearl

    [2011图灵奖得主]我眼中的Judea Pearl 来源: 叶星遥的日志 2011年的图灵奖花落UCLA计算机系的Judea Pearl教授.图灵奖是计算领域的最高奖,由于近年来这个领域的兴盛也算是 ...

  7. Clion = C/C++ 和 Python 共享的 IDE

    Clion + Tdmgcc + Winpython(Python)

  8. 织梦dedecms调用子栏目的方法

    织梦调用子栏目名称在栏目.文章页及首页的方法是有区别的.首页的调用方法和在栏目的调用基本是一样的,如下: {dede:channel typeid=''} <li><h3>&l ...

  9. ubuntu12.04配置静态IP及设置DNS

    静态IP配置方法: 编辑/etc/network/interfaces,删掉内容,并输入以下几行(假设你的网卡是eth0) sudo gedit /etc/network/interfaces aut ...

  10. golang社工库数据扫描程序

    https://github.com/xiaojiong/scanfile 演示站点: http://www.weigongkai.com/   7G数据 2s完成扫描 package scanfil ...