基于AdaBoost的人脸识别

基于AdaBoost的人脸识别
基于AdaBoost的人脸识别

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 的子窗口依次判别是人脸还是非人脸。

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个训练样本为:{(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算法的人脸检测——赵楠 北京大学

北京大学 本科生毕业论文 基于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的人脸检测及识别

宁夏大学 毕业论文 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特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。 特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。

相关文档
最新文档