如何利用特征来区分目标,进行阈值判决。adaboost分类器它的优点在于前一个基本分类器分出的样本,在下一个分类器中会得到加强。加强后全体的样本那么再次进行整个训练。加强后的全体样本再次被用来训练下一个基本的分类器。

我们正确的样本它的系数逐渐地减小,而我们的负样本得到了加强。这就是adaboost它的优点。它的优点就是能够自适应这种过程。它能够把每一次检测中出错的负样本进行加强,那么再把整个结果算到下一个基本的分类器中。那么一轮一轮不停地循环。所以这里还有一个问题,叫循环的终止条件或者叫训练的终止条件。迭代的最大次数也就是我们循环的最大次数,如果最大次数大于某一个值,那么这个时候迭代终止。第二,每一次迭代完之后它有一个检测概率,比如说这一次训练完之后,三个苹果已经检测出来,而香蕉检测出来的是错误的。那么这个时候正确的检测概率就是75%。所以它有一个最小的检测概率。如果当这个训练过程大于这个最小的检测概率,那么整个训练就结束。这是训练的终止条件。

分类器的结构。就是我们训练完之后如何来用这个分类器。opencv自带的人脸识别的adaboost训练分类器它的文件结构。

Haar特征计算完之后,需要对Haar特征进行阈值判决。因此它实际上就是一个个的判决过程。有的时候通过一级分类器并不能把这个目标给区分出来。多级级联,每一级都通过这个阈值判决。两级分类器的阈值,分别是T1和T2。

每一个强分类器它会计算出一个独立的特征点。使用这个独立的特征来对每一个强分类器进行阈值判决。每一个强分类器也有一个自己的阈值判决。

这是3个强分类器级联以及三个强分类器它的阈值。三个强分类器全部通过之后,那么就认为是我们的目标。三个强分类器只要有任何一个不通过,那么这个时候它就认为是非苹果。所以这是强分类器的概念。那么这个阈值如何得到呢?阈值就是通过我们刚刚的训练。每一级训练的话它会产生一系列的阈值。训练的数据就来源于我们之前的样本。终止条件可以通过for循环循环次数或者是误差概率小于一定的值的时候,就会终止当前的循环。

可以看到,一个级联的adaboost分类器,它是由若干个强分类器组成。其实每一个强分类器,它又由若干个弱分类器组成。一个强分类器又可以分解成为若干个弱分类器。而一个弱分类器又可以分解成为若干个Node结点。所以它是层层的结点结构,总共有三层结构。

强分类器它的作用是用来判决当前的阈值与当前的特征是否吻合来达到目标判决的效果。弱分类器的作用是用来计算强分类器的特征。注意,这里有个本质的区别,强分类器是通过强分类器中计算的结果,然后阈值进行判决,最后得到当前的目标是否是苹果。而弱分类器它的作用是来计算强分类器的特征。所以当前的强分类器它的x1、x2、x3特征,是由弱分类器计算得到。

在opencv中,一个弱分类器最高支持三个Haar特征。而在三个Haar特征中,每一个Haar特征构成了一个Node结点。所以三个Haar特征分别对应的是3个Node结点。每一个特征都看做是一个结点。

每一个Node结点对应一个Haar特征,这是我们的最底层。opencv中,最多规定有3个Haar特征。所以最多有3个Node结点。每一个Node结点计算出来的Haar特征,与当前的Node结点的阈值进行比较判决。无论是大于它还是小于它,都会得到一个z1。z1就是我们经过计算得到的Node结点。

如果当前我们的Z值与某一个阈值判决明显进行比较,这个时候就会计算出一个y值。y1、y2、y3表明的是弱分类器的计算特征。

强分类器再和强分类器的阈值判决明显进行比较。如果连续通过三个强分类器的阈值判决明显,那么我们就认为是目标。我们目标就是要判决出苹果。

#haar 1 什么是haar? 特征 = 像素 运算 -》结果 (具体值 向量 矩阵 多维)
# 2 如何利用特征 区分目标? 阈值判决
# 3 得到判决? 机器学习
# 1 特征 2 判决 3 得到判决 # 公式推导 1 -2
# 特征 = 整个区域*权重1 + 黑色*权重2 = (黑+白) * 1 +黑* (-2) =
# = 黑+白-2黑 = 白-黑 # 1 haar模板 上下 左右 image size 模板 size 100*100 10*10 100次 step = 10
# 1 100*100 2 10*10 3 step 10 4 模板1
# 模板 滑动 缩放 10*10 11*11 20级
# 举例 10808720 step2 10*10
# 计算量 = 14模板*20缩放* (1080/2*720/2) * (100点+- ) = 50-100亿
# (50-100) *15 = 1000亿次 # A 1 B 1 2 C 1 3 D 1 2 3 4
# 4 = A-B-C+D = 1+1+2+3+4-1-2-1-3 = 4 (3+-) #haar + adaboost face
# 苹果 苹果 苹果 香蕉
# 0.1 0.1 0.1 0.5
# 训练终止条件: 1 for count 2 p
# 1 分类器的结构 2 adaboost 计算过程 3 xml 文件结构
# haar> T1 and haar>T2 2个强分类器15-20 # 1 分类器的结构
# 3个强分类器 1 x1(特征) t1 2 x2(特征) t2 3 x3(特征) t3
# x1>t1 and x2>t2 and x3>t3 目标-》苹果
# 作用: 判决
# 弱分类器结构
# 作用: 计算强分类器特征x1 x2 x3
# x2 = sum(y1,y2,y3) # y1 弱分类器特征
# node
# 3个haar-》node
# 1node haar1 > nodeT1 z1 = a1
# 1node haar1 < nodeT1 z1 = a2
# Z = sum(z1,z2,z3)>T y1 = AA
# Z = sum(z1,z2,z3)<T y1 = BB # haar->Node z1 z2 z3 Z = sum(z1,z2,z3)
# Z>T y1 y2 y3
# x = sum(y1,y2,y3) > T1 obj

6-7 adaboost分类器1的更多相关文章

  1. 使用OpenCV训练Haar like+Adaboost分类器的常见问题

    <FAQ:OpenCV Haartraining>——使用OpenCV训练Haar like+Adaboost分类器的常见问题 最近使用OpenCV训练Haar like+Adaboost ...

  2. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别 标签: 脸部识别opencv 2017-07-03 21:38 26人阅读

    上一篇文章中介绍了如何使用OpenCV自带的haar分类器进行人脸识别(点我打开). 这次我试着自己去训练一个haar分类器,前后花了两天,最后总算是训练完了.不过效果并不是特别理想,由于我是在自己的 ...

  3. 6-8 adaboost分类器2

    重点分析了Adaboost它的分类结构,以及如何使用Adaboost.这一节课讲解Adaboost分类器它训练的步骤以及训练好之后的XML文件的文件结构.所以这节课的核心是Adaboost分类器它的训 ...

  4. 关于adaboost分类器

    我花了将近一周的时间,才算搞懂了adaboost的原理.这根骨头终究还是被我啃下来了. Adaboost是boosting系的解决方案,类似的是bagging系,bagging系是另外一个话题,还没有 ...

  5. 使用 AdaBoost 元算法提高分类器性能

    前言 有人认为 AdaBoost 是最好的监督学习的方式. 某种程度上因为它是元算法,也就是说它会是几种分类器的组合.这就好比对于一个问题能够咨询多个 "专家" 的意见了. 组合的 ...

  6. 第九篇:使用 AdaBoost 元算法提高分类器性能

    前言 有人认为 AdaBoost 是最好的监督学习的方式. 某种程度上因为它是元算法,也就是说它会是几种分类器的组合.这就好比对于一个问题能够咨询多个 "专家" 的意见了. 组合的 ...

  7. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

  8. 【原】训练自己haar-like特征分类器并识别物体(2)

    在上一篇文章中,我介绍了<训练自己的haar-like特征分类器并识别物体>的前两个步骤: 1.准备训练样本图片,包括正例及反例样本 2.生成样本描述文件 3.训练样本 4.目标识别 == ...

  9. Real Adaboost总结

    Real Adaboost分类器是对经典Adaboost分类器的扩展和提升,经典Adaboost分类器的每个弱分类器仅输出{1,0}或{+1,-1},分类能力较弱,Real Adaboost的每个弱分 ...

随机推荐

  1. 【mac】mac上使用brew 安装速度慢/每次使用brew 都会卡在updating homebrew不动/更换homebrew的镜像源

    有没有出现一下这样的情况: 如果有,请继续往下走 1.打开mac的命令窗口,键入如下命令 cd /usr/local/Homebrew 2.更换homebrew的默认源[更换为中科大的镜像源] git ...

  2. BUPT复试专题—寻找i*j=m的个数(2016)

    题目描述 3*3的矩阵内容. 1 2 3 2 4 6 3 6 9 即a[i][j](1<=i<=n,1<=j<=n)=i*j. 问一个这样n*n的矩阵里面,里面m出现的次数. ...

  3. 【转】Code Your Own PHP MVC Framework in 1 Hour

      原文: https://www.codeproject.com/Articles/1080626/Code-Your-Own-PHP-MVC-Framework-in-Hour --------- ...

  4. 集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(三)

    通过组织结构能够对项目的岗位.部门.人员进行增删改操作. 加入新部门.并为新部门加入人员: 选中部门后,点击鼠标右键,能够选择加入平级部门或下属部门. 新建部门时,须要给部门设置部门编号.名称.与部门 ...

  5. 【LeetCode-面试算法经典-Java实现】【079-Word Search(单词搜索)】

    [079-Word Search(单词搜索)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a 2D board and a word, find if ...

  6. 聊聊高并发(二十四)解析java.util.concurrent各个组件(六) 深入理解AQS(四)

    近期总体过了下AQS的结构.也在网上看了一些讲AQS的文章,大部分的文章都是泛泛而谈.又一次看了下AQS的代码,把一些新的要点拿出来说一说. AQS是一个管程.提供了一个主要的同步器的能力,包括了一个 ...

  7. poj 3105 Expectation 按位统计

    题意: 给n,求sum(i^j)/(n^2),0<=i,j<n.n<10^9 分析: 暴力n^2算法肯定超时.这是logn按位统计算法:按位先算出0出现的个数x,则1出现的个数为n- ...

  8. javascript 总结(持续更新)

    1.jQuery对象转DOM对象. jQuery对象转DOM对象有两种方法,[index]和get(index). var $cr = $("#cr"); //jQuery对象 v ...

  9. Java多态性详解 (父类引用子类对象)

    面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...

  10. code[VS] 1297 硬币

    题目描写叙述 Description 我们知道即使是同一种面值的硬币,它们的重量也有可能不一样,由于它受到很多因素的影响,包含制造工艺和流程上的.可是不论什么一种面值的硬币的重量总是处于某个特定范围之 ...