搜档网
当前位置:搜档网 › Face Detection Based on AdaBoost - ZhaoNan

Face Detection Based on AdaBoost - ZhaoNan

Face Detection Based on AdaBoost - ZhaoNan
Face Detection Based on AdaBoost - ZhaoNan

AdaBoost算法的训练过程

AdaBoost算法的训练过程 每个Haar特征对应看一个弱分类器,但并不是任何一个Haar特征都能较好的描述人脸灰度分布的某一特点,如何从大量的Haar特征中挑选出最优的Haar特征并制作成分类器用于人脸检测,这是AdaBoost算法训练过程所要解决的关键问题。 Paul Viola和Michael Jones于2001年将Adaboost算法应用于人脸检测中,其基本思想是针对不同的训练集训练同一个分类器(弱分类器),然后把这些不同训练集上的得到的分类器联合起来,构成一个最终的强分类器。Adaboost 算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,对于h1 分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布U2 。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器h2 。依次类推,经过T 次循环,得到T 个弱分类器,把这T 个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。 训练系统总体框架,由“ 训练部分”和“ 补充部分”构成。依据系统框架,本文的训练系统可分为以下几个模块: (1)以样本集为输入,在给定的矩形特征原型下,计算并获得矩形特征集; (2)以特征集为输入,根据给定的弱学习算法,确定闽值,将特征与弱分类器一一对应,获得弱分类器集; (3)以弱分类器集为输入,在训练检出率和误判率限制下,使用A d a B o o s t 算法 挑选最优的弱分类器构成强分类器; (4)以强分类器集为输入,将其组合为级联分类器; (5)以非人脸图片集为输入,组合强分类器为临时的级联分类器,筛选并补充非人脸样本。

AdaBoost人脸检测原理

AdaBoost人脸检测原理 对人脸检测的研究最初可以追溯到 20 世纪 70 年代,早期的研究主要致力于模板匹配、子空间方法,变形模板匹配等。近期人脸检测的研究主要集中在基于数据驱动的学习方法,如统计模型方法,神经网络学习方法,统计知识理论和支持向量机方法,基于马尔可夫随机域的方法,以及基于肤色的人脸检测。目前在实际中应用的人脸检测方法多为基于 Adaboost 学习算法的方法。 Viola人脸检测方法是一种基于积分图、级联检测器和AdaBoost 算法的方法,方法框架可以分为以下三大部分: 第一部分,使用Harr-like特征表示人脸,使用“积分图”实现特征数值的快速计算; 第二部分,使用Adaboost算法挑选出一些最能代表人脸的矩形特征( 弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; 第三部分,将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,级联结构能有效地提高分类器的检测速度。 Adaboost 算法是一种用来分类的方法,它的基本原理就是“三个臭皮匠,顶个诸葛亮”。它把一些比较弱的分类方法合在一起,组合出新的很强的分类方法。例如下图中, 需要用一些线段把红色的球与深蓝色的球分开,然而如果仅仅画一条线的话,是分不开的。 a b c d 使用Adaboost算法来进行划分的话,先画出一条错误率最小的线段如图 1 ,但是左下脚的深蓝色球被错误划分到红色区域,因此加重被错误球的权重,再下一次划分时,将更加考虑那些权重大的球,如 c 所示,最终得到了一个准确的划分,如下图所示。

人脸检测的目的就是从图片中找出所有包含人脸的子窗口,将人脸的子窗口与非人脸的子窗口分开。大致步骤如下: (1)在一个 20*20 的图片提取一些简单的特征(称为Harr特征),如下图所示。 它的计算方法就是将白色区域内的像素和减去黑色区域,因此在人脸与非人脸图片的相同位置上,值的大小是不一样的,这些特征可以用来区分人脸和分人脸。 (2)目前的方法是使用数千张切割好的人脸图片,和上万张背景图片作为训练样本。训练图片一般归一化到 20*20 的大小。在这样大小的图片中,可供使用的haar特征数在1万个左右,然后通过机器学习算法-adaboost算法挑选数千个有效的haar特征来组成人脸检测器。 (3)学习算法训练出一个人脸检测器后,便可以在各个场合使用了。使用时,将图像按比例依次缩放,然后在缩放后的图片的 20*20 的子窗口依次判别是人脸还是非人脸。

adaboost算法原理

聚类和分类的区别是什么?一般对已知物体类别总数的识别方式我们称之为分类,并且训练的数据是有标签的,比如已经明确指定了是人脸还是非人脸,这是一种有监督学习。也存在可以处理类别总数不确定的方法或者训练的数据是没有标签的,这就是聚类,不需要学习阶段中关于物体类别的信息,是一种无监督学习。 Haar分类器实际上是Boosting算法的一个应用,Haar分类器用到了Boosting算法中的AdaBoost算法,只是把AdaBoost算法训练出的强分类器进行了级联,并且在底层的特征提取中采用了高效率的矩形特征和积分图方法。 在2001年,Viola和Jones两位大牛发表了经典的《Rapid Object Detection using a Boosted Cascade of Simple Features》【1】和《Robust Real-Time Face Detection》【2】,在AdaBoost 算法的基础上,使用Haar-like小波特征和积分图方法进行人脸检测,他俩不是最早使用提出小波特征的,但是他们设计了针对人脸检测更有效的特征,并对AdaBoost训练出的强分类器进行级联。这可以说是人脸检测史上里程碑式的一笔了,也因此当时提出的这个算法被称为Viola-Jones检测器。又过了一段时间,Rainer Lienhart和Jochen Maydt两位大牛将这个检测器进行了扩展《An Extended Set of Haar-like Features for Rapid Object Detection》【3】,最终形成了OpenCV现在的Haar分类器。 Haar分类器= Haar-like特征+ 积分图方法+ AdaBoost + 级联; Haar分类器算法的要点如下: ①使用Haar-like特征做检测。 ②使用积分图(Integral Image)对Haar-like特征求值进行加速。 ③使用AdaBoost算法训练区分人脸和非人脸的强分类器。 ④使用筛选式级联把强分类器级联到一起,提高准确率。 1.Haar-like特征你是何方神圣 Haar-like特征,那么我先说下什么是特征,我把它放在下面的情景中来描述,假设在人脸检测时我们需要有这么一个子窗口在待检测的图片窗口中不断的移位滑动,子窗口每到一个位置,就会计算出该区域的特征,然后用我们训练好的级联分类器对该特征进行筛选,一旦该特征通过了所有强分类器的筛选,则判定该区域为人脸。 所谓的特征不就是一堆堆带条纹的矩形么,到底是干什么用的?我这样给出解释,将上面的任意一个矩形放到人脸区域上,然后,将白色区域的像素和减去黑色区域的像素和,得到的值我们暂且称之为人脸特征值,如果你把这个矩形放到一个非人脸区域,那么计算出的特征值应该和人脸特征值是不一样的,而且越不一样越好,所以这些方块的目的就是把人脸特征量化,以区分人脸和非人脸。 为了增加区分度,可以对多个矩形特征计算得到一个区分度更大的特征值,那么什么样的矩形特征怎么样的组合到一块可以更好的区分出人脸和非人脸呢,这就是AdaBoost算法要做的事了。这里我们先放下积分图这个概念不管,为了让我们的思路连贯,我直接开始介绍AdaBoost算法。

opencv adaboost人脸检测训练程序阅读笔记(LBP特征)

1、训练程序整体流程 (1)读输入参数并打印相关信息 (2)进入训练程序最外层入口classifier.train 1)读正负样本,将正负样本放入imgLiast中,先读正样本,后读负样本 2)load( dirName )判断之前是否有已训练好的xml文件,若有,不在重新训练该stage的xml文件,没有返回false,初始化参数 3)计算requiredLeafFARate = pow(maxFalseAlarm,numStages)/max_depth,该参数是stage停止条件(利用训练样本集来计算tempLeafFARate,若 tempLeafFARate小于这一参数,则退出stage训练循环); 4)Stage训练循环 5)更新训练样本集,计算tempLeafFARate(负样本被预测为正样本的个数除以读取负样本的次数,第一次没有训练之前,这个比值为1,因为没训练之前, 所有负样本都被预测成了正样本,当第一层训练好以后,负样本采集时会先 用第一层的分类器预测一次,若能分类,则不选用,选用负样本的数目是固 定的,但选用这么多负样本总共要选的次数会随着层数的增多而加大,因为 层数越大,分类器的分类能力也要求越大,说需要的样本就是前面分类器所 不恩呢该识别的,故在采集时也比较困难。) 6)判断stage是否退出训练,若tempLeafFARatetrain() a.建立训练数据data = new CvCascadeBoostTrainData(主要是一些参 数的设置,还有特征值的计算) b.初始化样本权重update_weights( 0 ); c.弱分类器训练循环 i)tree->train—》do_train ai) 根节点的初始root = data->subsample_data( _subsample_idx ); (主要是对根节点的一些参数进行初始化,parent 0,count 1, split 0,value 0,class_idx 0,maxlr 0,left = right = 0,等等) bi) CV_CALL( try_split_node(root)),根据根节点计算整颗数的各 节点的参数配置 aii) calc_node_value( node );计算节点的回归值,类似于分类 投票值sum(w*class_lable),正样本的class_lable取,负样 本的class_lable取-1;计算节点的风险值node_risk,node risk is the sum of squared errors: sum_i((Y_i - )^2) bii) 判断节点是否可以分裂(判断依据:样本值和设计的节点最 大深度);再利用node_risk与regression_accuracy,如 果这个节点的所有训练样本的节点估计值的绝对差小 于这个参数,节点不再进行分裂 cii) 找出最佳分裂best_split = find_best_split(node); aiii) 定义DTreeBestSplitFinder finder( this, node ); biii) parallel_reduce(cv::BlockedRange(0, data->var_count), finder); 此时调用DTreeBestSplitFinder类的操作符 DTreeBestSplitFinder::operator()(constBlockedRange

Adaboost算法流程和证明

Adaboost算法 1、Adaboost算法简介 Adaboost算法是Freund和Schapire根据在线分配算法提出的,他们详细分析了Adaboost算法错误率的上界,以及为了使强分类器达到错误率,算法所需要的最多迭代次数等相关问题。与Boosting算法不同的是,Adaboost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的能力。 2、Adaboost 算法基本原理 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面。 Adaboost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大

其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器。依次类推,经过T 次循环,得到T 个弱分类器,把这T 个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。 Adaboost 算法的具体步骤如下: 设输入的n 个训练样本为:1122{(,),(,),,(,)}n n x y x y x y L ,其中i x 是输入的训练样本,{0,1}i y ∈分别表示正样本和负样本,其中正样本数为l ,负样本数m 。n l m =+,具体步骤如下: ⑴初始化每个样本的权重,()i w i D i ∈; ⑵对每个1,,t T =L (T 为弱分类器的个数): ①把权重归一化为一个概率分布 ,,,1 t i t i n t j j w w w == ∑ ②对每个特征f ,训练一个弱分类器j h 计算对应所有特征的弱分类器的加权错误率 1()()n j t i j i i i w x h x y ε==≠∑ ③选取最佳的弱分类器t h (拥有最小错误率):t ε ④按照这个最佳弱分类器,调整权重 11,,i t i t i t w w εβ-+= 其中0i ε=表示被正确地分类,1i ε=,表示被错误地分类

AdaBoost算法简介

Adaboost 算法 1、AdaBoost算法简介 AdaBoost算法是Freund和Schapire根据在线分配算法提出的,他们详细分析了AdaBoost算法错误率的上界,以及为了使强分类器达到错误率,算法所需要的最多迭代次数等相关问题。与Boosting算法不同的是,adaBoost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的能力。 2、Adaboost 算法基本原理 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost 分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面。 AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n 为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器。依次类推,经过T 次循环,得到T 个弱分类器,把这T 个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。 AdaBoost算法的具体步骤如下: 设输入的n个训练样本为:{(x1,y1),(x2,y2),......(xn,yn)},其中xi是输入的训练样本,yi∈{0,1}分别表示正样本和负样本,其中正样本数为l,负样本数m。n=l+m,具体步骤如下: (1)初始化每个样本的权重w i,i∈D(i); (2)对每个t=1,..., T(T为弱分类器的个数) ①把权重归一化为一个概率分布 ②对每个特征f,训练一个弱分类器h j计算对应所有特征的弱分类器的加权错误率 ③选取最佳的弱分类器h t(拥有最小错误率):εt ④按照这个最佳弱分类器,调整权重 其中εi =0表示被正确地分类,εi=1,表示被错误地分类

Adaboost算法多类问题Matlab实现

一种adaboost多类分类算法Matlab实现 一、adaboost算法简介 Adaboost算法的主要思想是给定一个训练集(x1,y1),…,(xm,ym),其中xi属于某个域或者实例空间X,yi=-1或者+1。初始化时Adaboost指定训练集上的分布为1/m,并按照该分布调用弱学习器对训练集上的分布,并按照该分布调用弱学习器对训练集进行训练,每次训练后,根据训练结果更新训练集上的分布,并按照新的样本分布进行训练。反复迭代T轮,最终得到一个估计序列h1,..,hT,每个估计都具有一定的权重,最终的估计H是采用权重投票方式获得。Adaboost算法的伪代码如图1所示。 图1、Adaboost算法 二、多类问题 从上面的流程可以看出,Adaboost算法是针对二类问题的。但是我们面对的问题很多都是不是简单的非0即1,而是多类问题。常见的就是解决方法,就是把多类问题转换成二类问题。用的比较多就是两种组合方法,OAA和OAO,我这里就是采用对这种方法的结合,实现adaboost算法对多类问题的分类。 目前需要对7类问题进行分类,依次编号:0、1、2、3、4、5、6。 特征向量28个。 样本总数840个; OAA分类器的个数7 个 OAO分类器的个数7(7-1)/2 = 21个。 弱分类器的个数K= 10; 弱分类用BP神经网络 算法的思路: Step1、把数据分成训练集和测试集 Step 2、训练OAA、OAO分类器; Step3、保存相应的分类器和投票权重; Step4、测试样本,预测所以OAA分类器的权重; Step5、选择OAA预测值中最大的两个 Step6、选用OAO分类器对选取预测权重最大的两个类进行预测; Step7、输出测试结果;

基于AdaBoost算法的人脸检测——赵楠 北京大学

北京大学 本科生毕业论文 基于AdaBoost 算法的人脸检测Face Detection Based on AdaBoost 姓名:赵楠 学号:00105029 院系:物理学院物理学系 指导老师:查红彬教授 导师单位:视觉与听觉信息处理国家重点实验室 信息科学技术学院智能科学系

北京大学本科生毕业论文 二○○五年六月 摘要 Abstract 人脸检测是人脸分析的首要环节,其处理的问题是确认图像(或影像)中是否存在人脸,如果存在则对人脸进行定位。人脸检测的应用领域相当广泛,是实现机器智能化的重要步骤之一。 AdaBoost 算法是1995 年提出的一种快速人脸检测算法,是人脸检测领域里程碑式的进步,这种算法根据弱学习的反馈,适应性地调整假设的错误率,使在效率不降低的情况下,检测正确率得到了很大的提高。 本论文第一章和第二章简述了人脸检测的一般情况,第三章对一些人脸检测的经典方法进行了说明。 第四章讲述了AdaBoost 算法的发展历史。从PCA 学习模型到弱学习和强学习相互关系的论证,再到Boosting 算法的最终提出,阐述了Ada ptive Boost ing 算法的发展脉络。 第五章对影响AdaBoost 人脸检测训练算法速度的至关重要的两方面:矩形特征和积分图的概念和理论进行了仔细的阐明。 第六章给出了AdaBoost 的算法,并深入探讨了其中的一些关键问题——弱学习器的构造、选取等问题。

最后一章,用编写的实现了AdaBoost 算法的FáDèt程序,给出了相应的人脸检测实验结果,并和Viola 等人的结果做了比较。 关键词Keywords AdaBoost 方法、人脸检测、Boosting 方法、PCA 学习模型、弱学习

Adaboost人脸检测算法原理

Adaboost人脸检测算法原理在众多的检测方法中,Viola等提出的Adaboost人脸检测方法,从根本上解决了检测的速度问题,同时有较好的识别效果。它利用一个只有200个关键特征的集合,就能达到95%以上的检测率,检测一幅380×280像素的图像需要时间不到0.7s,这样的性能使它成为人脸检测最好的方法。 Viola人脸检测方法是一种基于积分图、AdaBoost算法和级联检测器的方法,方法框架可以分为以下三大部分: (1)使用特征值表示人脸,使用积分图实现特征数值的快速计算; (2)使用Adaboost算法挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; (3)将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,级联结构能有效地提高分类器的检测速度。 1特征值和积分图 在一个20×20(或其他大小)的图片提取一些简单的特征,并计算其特征值(如图1),方法是将白色区域内的像素和减去黑色区域。对于一些优势矩形特征来说,在人脸与非人脸图片的相同位置上,特征值的大小是不一样的,这些特征可以用来区分人脸和非人脸。 图1 一些矩形特征 图2是大部分矩形特征对人脸与非人脸样本的特征值分布曲线。大部分特征对人脸和非人脸样本的特征值为0的点几乎处于相同位置(46.5%,51.5%),且都在所有特征的中间范围。 这说明该矩形特征对于人脸和非人脸几乎没有分辨能力。

图(a)人脸图像特征值分布 图(b)非人脸图像特征值分布 图2 大部分矩形特征对人脸和非人脸图像的特征值分布曲线图3是少数矩形特征对人脸与非人脸样本的特征值分布曲线。对于非人脸样本的分布,特征值为0的点处于所有特征的中间范围(59.4%),这说明该特征也“看不到”非人脸的特点。 但是对于人脸样本,该特征表现了很一致的倾向性,93.4%的特征在0点的一侧,与非人脸样本的相差34%。 这说明该特征能够分辨人脸和非人脸。

Adaboost算法的MATLAB实现

Adaboost算法的MATLAB实现: clear all clc tr_n=200; %the population of the train set te_n=200; %the population of the test set weak_learner_n=20; %the population of the weak_learner tr_set=[1,5;2,3;3,2;4,6;4,7;5,9;6,5;6,7;8,5;8,8]; te_se=[1,5;2,3;3,2;4,6;4,7;5,9;6,5;6,7;8,5;8,8]; tr_labels=[2,2,1,1,2,2,1,2,1,1]; te_labels=[2,2,1,1,2,2,1,2,1,1]; figure; subplot(2,2,1); hold on;axis square; indices=tr_labels==1; plot(tr_set(indices,1),tr_set(indices,2),'b*'); indices=~indices; plot(tr_set(indices,1),tr_set(indices,2),'r*'); title('Training set'); subplot(2,2,2); hold on; axis square; indices=te_labels==1; plot(te_set(indices,1),te_set(indices,2),'b*')3 ; indices=~indices; plot(te_set(indices,1),te_set(indices,2),'r*'); title('Training set'); % Training and testing error rates tr_error=zeros(1,weak_learner_n); te_error=zeros(1,weak_learner_n); for i=1:weak_learner_n adaboost_model=adaboost_tr(@threshold_tr,@threshold_te,tr_set,tr_labels,i); [L_tr,hits_tr]=adaboost_te(adaboost_model,@threshold_te,te_set,te_labels); tr_error(i)=(tr_n-hits_tr)/tr_n; [L_te,hits_te]=adaboost_te(adaboost_model,@threshold_te,te_set,te_labels); te_error(i)=(te_n-hits_te)/te_n; end subplot(2,2,3); plot(1:weak_learner_n,tr_error); axis([1,weak_learner_n,0,1]); title('Training Error');

Adaboost算法的前世今生

Adaboost算法的前世今生 转载▼ 标签: it Adaboost算法的前世今生 引言 众所周知,模式识别的方法可以按照参与识别特征的属性来区分,可以分为两大类:一、使用定量特征(可度量)如物体长度、宽度等,来描述的各种模式,这一类主要是指决策理论,有匹配、统计、神经网络等方法;二、使用定性特征如特征结构、排列顺序等,来描绘的各种模式,这一类主要是指结构判别,主要有串和树的匹配等方法。 模式识别的完整的流程顺序是:传感器——分割组织——特征提取——分类器——后处理。其中分类器的设计部分,可以使用的理论有很多,目前主要包括:基于统计理论的方法(贝叶斯理论)、线性判别函数、神经网络的方法、随机方法(对于复杂的问题)、非度量方法(定性结构特征) 分类器得到的模型不仅要很好拟合输入数据,还要能够正确地预测未知样本的类标号。因此,训练算法的主要目标就是要建立具有很好的泛化能力模型,即建立能够准确地预测未知样本类标号的模型。 通常我们用“方差”和“偏差”来测量学习算法与给定分类问题的“匹配”和“校准”程度。“偏差”度量的是匹配的“准确性”和“质量”:一个高的偏差意味着一个坏的匹配,“方差”度量的是匹配的“精确性”和“特定性”:一个高的方差意味着一个弱的匹配。 研究表明,使用重采样技术可以提高分类器的准确率,而boosting算法就是涉及分类器设计中的重采样技术。其思想内涵在于:从给定的数据集中抽取多个数据子集,使得有可能计算任意统计量的值及其范围。 说道boosting,不得不说Arcing(adaptive reweighting and combining)自适应的权值重置和组合:重新使用和选择数据,以期达到改善分类器性能的目的。最简单的arcing版本就是bagging算法。 Bagging一个多分类器系统 bagging算法的基本思想: 给定一个弱学习算法,和一个训练集;单个弱学习算法准确率不高;将该学习算法使用多次,得出预测函数序列,进行投票,最后结果准确率将得到提高。 步骤1:从大小为n的原始数据集D中,分别独立随机的抽取n’个数据(n’

基于adaboost的人脸检测及识别

宁夏大学 毕业论文 AdaBoost人脸检测及识别 姓名:罗慧彪 专业:电子信息工程 指导教师:孟一飞 20140423

基于AdaBoost 人脸检测及识别 摘要 人脸检测是在指给定的一幅图片或连续视频中确定是否有人脸的存在,如果有人脸,则标出人脸的位置和大小。人脸检测是计算机模式识别最热门的研究课题之一,在视频会议,远程监控,远程治疗中都有应用。许多学者,和专家对此做了许多大量的工作,取得了优秀成果并提出了大量的有效算法。本文主要工作如下: 1、人脸检测算法居多,在了解相关的人脸检测算法后,进行最后的比较,选定适应能力强、错误率小的Adaboost 人脸检测算法。基于Haar 特征的级联分类器算法,在训练样本足够多足够好时,在理论上可以将错误率降到任意小,可以适应许多复杂的环境中。 2、本文对Adaboost 人脸检测算法实现MATLAB 的仿真,可以首先不去研究算法是如何实现的,着重关注算法本身的性能。 关键词:人脸检测 Adaboost 人脸识别图像预处理特征提取 Abstract Face detection is to determine whether there exists in a picture or continuous video ,if have, marked the size and location of the face.It is one of the most popular computer pattern recognition research topics,is applied in video conference, remote monitoring, remote treatment. Many scholars,and experts have done a lot a lot of work and achieved outstanding results and give a lot of effective

基于AdaBoost算法的人脸检测方法综述毕业设计论文

本科生毕业设计 设计题目:基于AdaBoost算法的人脸检测方法综述专题:人脸检测与定位

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

AdaBoost人脸检测训练算法

目前在实际中应用的人脸检测方法多为基于Adaboost学习算法的方法,这种检测方法最初由剑桥大学的两位大牛Paul Viola和Michael Jones[ViolaJones01]提出,并由另一位大牛英特尔公司的Rainer Lienhart[Lienhart02]对这一方法进行了改善。 这里,我先介绍ViolaJones的人脸检测方法,然后再介绍Lienhart的人脸检测算法。 我们可以发现,两种检测方法的大体框架是相同的,只是在Harr-like特征的选取、计算以及AdaBoost 的训练算法上有区别。 ViolaJones人脸检测方法 ViolaJones人脸检测方法是一种基于积分图、级联检测器和AdaBoost算法的方法,方法框架可以分为以下三大部分: (1)使用Harr-like特征表示人脸,使用“积分图”实现特征数值的快速计算; (2)使用Adaboost算法挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; (3)将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,级联结构能有效地提高分类器的检测速度。 一、Haar-like矩形特征的特征值的快速计算方法 影响AdaBoost人脸检测训练算法速度很重要的两方面是特征选取和特征计算。选取的特征为矩特征为Haar特征,计算的方法为积分图。 1、Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征。 3种类型分别为:2-矩形特征、3-矩形特征、4-矩形特征。 Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。 特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。

机器学习十大算法:AdaBoost

Chapter7 AdaBoost Zhi-Hua Zhou and Yang Yu Contents 7.1Introduction (127) 7.2The Algorithm (128) 7.2.1Notations (128) 7.2.2A General Boosting Procedure (129) 7.2.3The AdaBoost Algorithm (130) 7.3Illustrative Examples (133) 7.3.1Solving XOR Problem (133) 7.3.2Performance on Real Data (134) 7.4Real Application (136) 7.5Advanced Topics (138) 7.5.1Theoretical Issues (138) 7.5.2Multiclass AdaBoost (142) 7.5.3Other Advanced Topics (145) 7.6Software Implementations (145) 7.7Exercises (146) References (147) 7.1Introduction Generalization ability,which characterizes how well the result learned from a given training data set can be applied to unseen new data,is the most central concept in machine learning.Researchers have devoted tremendous efforts to the pursuit of tech-niques that could lead to a learning system with strong generalization ability.One of the most successful paradigms is ensemble learning[32].In contrast to ordinary machine learning approaches which try to generate one learner from training data, ensemble methods try to construct a set of base learners and combine them.Base learners are usually generated from training data by a base learning algorithm which can be a decision tree,a neural network,or other kinds of machine learning algorithms. Just like“many hands make light work,”the generalization ability of an ensemble is usually signi?cantly better than that of a single learner.Actually,ensemble meth-ods are appealing mainly because they are able to boost weak learners,which are 127

相关主题