2.1 Boosting算法的基本原理
由于AdaBoost算法的人脸检测是在Boosting算法的基础上,结合分类器思想的来实现的,所以下面先介绍一下Boosting算法以及分类器的基本原理。
比较成熟的Boosting算法最初是由Schapire在1997年提出来的。Boosting算法利用了可能近似正确(probably approximately correct,PAC)模型作为学习的基本框架。而PAC是由Valiant提出的学习模型。该模型分别定义了两个概念:强学习和弱学习。Kearns和Valiant研究了PAC学习模型中强、弱学习算法之间的等价问题,试图寻求一种较好的能够简便平衡两算法之间的过度算法。针对这个问题,Schapire首次给出了肯定的答案。
人脸检测是一个只有两个类的分类问题,人脸与非人脸。假设X表示所有的研究实例的集合,C表示目标集合,人脸检测中,目标集合C有两个目标,即C={-1,+1}。其中,C中的每个个体目标c对应于实例X的一个等效布尔函数c:X ->{-1,+1}。若x是c的正实例,即人脸,则c(x) = +1;反之,若x是c的反实例,即非人脸,则c(x) = -1。
为了描述学习器输出的假设h对真实目标的逼近程度,定义假设h对应于目标c和分布D的误差率,即h的真实错误率为h到按分布D抽取的实例的期望错误率。
其中, 表示实例分布D上的概率。
Boosting算法的根本思想是:只要有足够多的和有效的学习样本,那么一系列比随机假设性能稍微好一些的学习器,可以被合并成一个性能比较优越的分类器。假设h1,h2hn是一系列假设,合成的总体假设是
其中, 表示假设 的系数, 和 同时在Boosting的过程中被学习。 和 的选取和更新方法的不同是区分不同的Boosting算法的主要依据。
2.2 分类器及级联分类器
人脸检测时首先要构造一个分类器[29]。分类器的输入是指待检子窗口中经过某种变换的人脸信息。子窗口会在整个待检图像上遍历的滑动,分类器通过判断每个子窗口中是否存在人脸来判断并进行检测。在整个检测过程中,绝大多数的窗口会被滤除掉,只有少量的窗口剩下,这些剩下的少量的窗口就是包含人脸信息的子窗口。
对于单个分类器,其分类性能都是有限的,因此,AdaBoost算法的基本思想是构造级联的分类器,以提高分类器性能,而且保证分类器的结构不是特别复杂。图2.1是一个典型的含有n个结点的级联分类器,每个分类器串行的级联在一起。这样的每一个单独的分类器称作弱分类器(weak classifier),级联系统将每一个弱分类器进行推进(boosting),继而构成一个级联的强分类器(strong classifier)。AdaBoost算法就是采用这种级联的强分类器的思想。 Opencv+Adaboost基于人脸识别与认证的准入系统设计(5):http://www.youerw.com/jisuanji/lunwen_10169.html