基于adaboost算法的人脸检测-matlab 代码解释

合集下载

Adaboost算法的MATLAB实现

Adaboost算法的MATLAB实现

Adaboost算法的MATLAB实现:clear allclctr_n=200;%the population of the train sette_n=200;%the population of the test setweak_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 ratestr_error=zeros(1,weak_learner_n);te_error=zeros(1,weak_learner_n);for i=1:weak_learner_nadaboost_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;endsubplot(2,2,3);plot(1:weak_learner_n,tr_error);axis([1,weak_learner_n,0,1]);title('Training Error');xlabel('weak classifier number');ylabel('error rate');grid on;subplot(2,2,4);axis square;plot(1:weak_learner_n,te_error);axis([1,weak_learner_n,0,1]);title('Testing Error');xlabel('weak classifier number');ylabel('error rate');grid on;这里需要另外分别撰写两个函数,其中一个为生成adaboost模型的训练函数,另外为测试测试样本的测试函数。

基于matlab的人脸检测程序

基于matlab的人脸检测程序

基于Matlab的一个最简单的人脸检测程序2010-08-09 20:28:39| 分类:默认分类| 标签:matlab 人脸检测程序|字号大中小订阅clear;I=imread('E:\Matlab\图片\q5.jpg');O=rgb2ntsc(I);G=O(:,:,2);[m n]=size(G);U=zeros(m,n);for i=1:mfor j=1:nif G(i,j)>0.03&&G(i,j)<0.16U(i,j)=1;endendendsr=strel('disk',6);C=imclose(U,sr);L=bwlabel(C);B=regionprops(L,'area');Se=[B.Area];Sm=max(Se);if Sm>m*n/27B1=bwareaopen(C,Sm);k_y1=m;k2=m;l2=n;if any(B1(i,:))==1k_y1=i;breakendendfor i=k_y1:mif B1(i,:)==0k2=i;breakendendfor j=1:nif any(B1(:,j))==1l_y1=j;breakendendfor j=l_y1:nif B1(:,j)==0l2=j;breakendendk_y=k2-k_y1;if k_y>.5*l&&k_y<3*lI1=imcrop(B1,[l_y1 k_y1 l .4*k_y]); [n1 m1]=size(I1);L1=bwlabel(I1);E=regionprops(L1,'area');Si=[E.Area];Sm=max(Si);if Sm/(n1*m1)>.3B2=bwareaopen(I1,floor(.5*Sm)); g_y1=m1;g2=m1;for j=1:m1if any(B2(:,j))==1g_y1=j;breakendendfor j=g_y1:m1if B2(:,j)==0;g2=j;breakendendg=g2-g_y1;figure;imshow(I);hold onh1=line([l_y1+g_y1,l_y1+g_y1+g],[k_y1,k_y1]);h2=line([l_y1+g_y1+g,l_y1+g_y1+g],[k_y1,k_y1+1.1*g]);h3=line([l_y1+g_y1+g,l_y1+g_y1],[k_y1+1.1*g,k_y1+1.1*g]);h4=line([l_y1+g_y1,l_y1+g_y1],[k_y1+1.1*g,k_y1]);h=[h1 h2 h3 h4];set(h,'Color',[1 0 0],'LineWidth',2);elsefigure;imshow(I);endelsefigure;imshow(I);endelsefigure;imshow(I);end注:本程序是基于肤色的人脸侦测程序,较为简单,只能检测出一个人脸,对于背景较单调的情况下的个体照,有较高的检测率,而且检测速度快。

文献综述 基于Adaboost算法的人脸检测

文献综述 基于Adaboost算法的人脸检测

文献综述正文范文基于Adaboost算法的人脸检测文献综述一、人脸检测概述随着社会的发展,各个方面对快速有效的自动身份验证和识别的要求日益迫切。

人脸与人体的其他生物特征(指纹、虹膜等)一样与生俱来,具有很强的个体差异性、自身稳定性、唯一性和不易被复制的良好特性,因而它们为身份鉴别提供了必要的前提;并且同其他生物特征识别技术相比,人脸是一个信息极丰富的模式集合,是人类互相判别、认识、记忆的主要标志[1],人脸识别技术具有操作简单、结果直观、隐蔽性好的优越性,也是近年来模式识别、图像处理、机器视觉、神经网络以及认知科学等领域研究的热点课题之一[2]。

所谓人脸识别,是指给定一个场景的静态图像或动态视频,判断其中是否存在人脸,如果存在人脸则进一步给出每张人脸的位置、大小和各个主要面部器官的位置信息并且依据这些信息进一步提取每张人脸蕴含的身份特征,将其与已知人脸库中的人脸进行对比,从而识别场景中单个或者多个人的身份[3]。

人脸识别过程可分为人脸检测(判断输入图像中是否存在人脸)、人脸特征提取(检测每个人脸的主要器官位置和形状)和人脸识别(将人脸特征提取结果与库中人脸对比)三个阶段。

使用Adaboost算法进行人脸识别流程[5],如图 1所示。

在这一过程中,第一步即人脸检测是最为关键的。

检测的准确性、定位精确性和检测速度将影响整个系统的性能。

图 1 人脸检测与人脸识别流程在实际应用中,由于客观因素的影响,人脸检测问题的难易程度以及处理方法有很大差异。

在某些情况下由于图像(照片)的获取环境是可以人为控制的(如身份证照片等),因而人脸的定位可以轻易地做到。

但在大多数的场合中由于(1)人脸是一类高度非刚性的目标,存在相貌、表情、肤色、姿态等差异;(2)人脸上可能存在一些附属物,毛发、化妆品等;(3)人脸的姿态千变万化,并且存在遮挡物;(4)待检图像性质的差异性。

如:图像的分辨率、摄录器材的质量等;(5)光照的种类、强度和角度的不同,其作用在人脸上所产生的性质不同的反射,造成不同区域的阴影[6];(6)场景较复杂,人脸的位置预先不知道等因素会使人脸检测问题变得更为复杂。

人脸检测中AdaBoost算法详解

人脸检测中AdaBoost算法详解

⼈脸检测中AdaBoost算法详解⼈脸检测中的AdaBoost算法,供⼤家参考,具体内容如下第⼀章:引⾔2017.7.31。

英国测试⼈脸识别技术,不需要排队购票就能刷脸进站。

据BBC新闻报道,这项英国政府铁路安全标准委员会资助的新技术,由布⾥斯托机器⼈实验室(Bristol Robotics Laboratory) 负责开发。

这个报道可能意味着我们将来的⽣活⽅式。

虽然⼈脸识别技术已经研究了很多年了,⽐较成熟了,但是还远远不够,我们以后的⽬标是通过识别⾯部表情来获得⼈类⼼理想法。

长期以来,计算机就好像⼀个盲⼈,需要被动地接受由键盘、⽂件输⼊的信息,⽽不能主动从这个世界获取信息并⾃主处理。

⼈们为了让计算机看到这个世界并主动从这个世界寻找信息,发展了机器视觉;为了让计算机⾃主处理和判断所得到的信息,发展了⼈⼯智能科学。

⼈们梦想,终有⼀天,⼈机之间的交流可以像⼈与⼈之间的交流⼀样畅通和友好。

⽽这些技术实现的基础是在⼈脸检测上实现的,下⾯是我通过学习基于 AdaBoost 算法的⼈脸检测,赵楠的论⽂的学习⼼得。

第⼆章:关于Adaptive BoostingAdaBoost 全称为Adaptive Boosting。

Adaptively,即适应地,该⽅法根据弱学习的结果反馈适应地调整假设的错误率,所以Adaboost不需要预先知道假设的错误率下限。

Boosting意思为提升、加强,现在⼀般指将弱学习提升为强学习的⼀类算法。

实质上,AdaBoost算法是通过机器学习,将弱学习提升为强学习的⼀类算法的最典型代表。

第三章:AdaBoost算法检测⼈脸的过程先上⼀张完整的流程图,下⾯我将对着这张图作我的学习分享:1.术语名词解析:弱学习,强学习:随机猜测⼀个是或否的问题,将会有50%的正确率。

如果⼀个假设能够稍微地提⾼猜测正确的概率,那么这个假设就是弱学习算法,得到这个算法的过程称为弱学习。

可以使⽤半⾃动化的⽅法为好⼏个任务构造弱学习算法,构造过程需要数量巨⼤的假设集合,这个假设集合是基于某些简单规则的组合和对样本集的性能评估⽽⽣成的。

《基于Adaboost的人脸检测技术研究》

《基于Adaboost的人脸检测技术研究》

《基于Adaboost的人脸检测技术研究》一、引言人脸检测是计算机视觉领域的一个重要研究方向,其应用广泛,包括安全监控、人机交互、智能视频分析等。

随着深度学习和机器学习技术的快速发展,人脸检测的准确率和效率得到了显著提升。

Adaboost算法作为机器学习领域的一种重要方法,其在人脸检测方面的应用受到了广泛关注。

本文旨在研究基于Adaboost的人脸检测技术,并探讨其技术原理、实现方法及性能评估。

二、Adaboost算法概述Adaboost(Adaptive Boosting)是一种自适应的集成学习算法,其基本思想是将多个弱分类器组合成一个强分类器。

Adaboost算法通过不断调整样本权重,训练出多个弱分类器,并将这些弱分类器按照一定的权重进行加权组合,从而得到一个强分类器。

Adaboost算法在处理人脸检测等复杂问题时具有较高的准确性和稳定性。

三、基于Adaboost的人脸检测技术基于Adaboost的人脸检测技术主要利用Adaboost算法和特征提取技术,如Haar特征、LBP特征等,从图像中提取出人脸特征并进行分类。

具体实现步骤如下:1. 特征提取:利用Haar特征、LBP特征等算法从图像中提取出人脸特征。

2. 训练弱分类器:使用Adaboost算法对提取出的特征进行训练,得到多个弱分类器。

3. 组合强分类器:将多个弱分类器按照一定的权重进行加权组合,得到一个强分类器。

4. 人脸检测:利用强分类器对图像进行扫描,当检测到符合人脸特征的区域时,即认为检测到人脸。

四、实验与分析本文采用OpenCV库中的Adaboost人脸检测算法进行实验。

实验数据集包括公开的人脸数据库和非人脸数据库。

通过调整算法参数和优化模型,我们对算法的性能进行了评估。

实验结果表明,基于Adaboost的人脸检测算法在处理不同光照、姿态和表情条件下的人脸时具有较高的准确性和稳定性。

同时,通过与其他人脸检测算法进行比较,本文所提算法在性能上具有明显的优势。

如何使用Matlab进行人脸检测和人脸识别

如何使用Matlab进行人脸检测和人脸识别

如何使用Matlab进行人脸检测和人脸识别人脸检测和人脸识别是计算机视觉领域中的重要技术应用,可以广泛用于人脸识别系统、人脸支付、安全监控等众多领域。

本文将介绍如何使用Matlab进行人脸检测和人脸识别。

1. 背景介绍人脸检测和人脸识别技术的出现,为计算机系统实现对人脸的自动分析和识别提供了可能。

人脸检测是指从一幅图像或视频序列中确定是否存在人脸,并找出人脸的位置和大小。

而人脸识别则是在检测到的人脸图像上进行特征提取和模式匹配,以实现对人脸的身份识别。

2. 人脸检测在Matlab中,可以使用Viola-Jones算法进行人脸检测。

该算法通过构造Haar特征与Adaboost集成学习算法相结合,能够在较短的时间内实现高效的人脸检测。

具体操作如下:2.1 加载图像首先,在Matlab中加载需要进行人脸检测的图像。

可以使用imread函数进行图像加载,并将其转换为灰度图像进行处理。

例如:```Matlabimage = imread('face.jpg');gray_image = rgb2gray(image);```2.2 构建人脸检测器在Matlab中,可以使用vision.CascadeObjectDetector对象构建人脸检测器。

该对象可以通过Viola-Jones算法进行人脸检测。

具体代码如下:```MatlabfaceDetector = vision.CascadeObjectDetector();bbox = step(faceDetector, gray_image);```2.3 显示检测结果最后,可以使用insertObjectAnnotation函数将检测到的人脸位置在原始图像上标记出来。

代码示例如下:```Matlabdetected_image = insertObjectAnnotation(image, 'rectangle', bbox, 'Face');imshow(detected_image);```3. 人脸识别在Matlab中,可以使用基于人脸特征的Eigenface、Fisherface和LBPH等算法进行人脸识别。

人脸识别核心算法及MATLAB代码

人脸识别核心算法及MATLAB代码

人脸识别核心算法在检测到人脸并定位面部关键特征点之后,主要的人脸区域就可以被裁剪出来,经过预处理之后,馈入后端的识别算法。

识别算法要完成人脸特征的提取,并与库存的已知人脸进行比对,完成最终的分类。

我们在这方面的主要工作包括:∙基于LGBP的人脸识别方法问题:统计学习目前已经成为人脸识别领域的主流方法,但实践表明,基于统计学习的方法往往会存在“推广能力弱”的问题,尤其在待识别图像“属性”未知的情况下,更难以确定采用什么样的训练图像来训练人脸模型。

鉴于此,在对统计学习方法进行研究的同时,我们还考虑了非统计模式识别的一类方法。

思路:对于给定的人脸图像,LGBP方法首先将其与多个不同尺度和方向的Gabor滤波器卷积(卷积结果称为Gabor特征图谱)获得多分辨率的变换图像。

然后将每个Gabor特征图谱划分成若干互不相交的局部空间区域,对每个区域提取局部邻域像素的亮度变化模式,并在每个局部空间区域内提取这些变化模式的空间区域直方图,所有Gabor特征图谱的、所有区域的直方图串接为一高维特征直方图来编码人脸图像。

并通过直方图之间的相似度匹配技术(如直方图交运算)来实现最终的人脸识别。

在FERET四个人脸图像测试集合上与FERET97的结果对比情况见下表。

由此可见,该方法具有良好的识别性能。

而且LGBP方法具有计算速度快、无需大样本学习、推广能力强的优点。

参见ICCV2005表.LGBP方法与FERET'97最佳结果的对比情况∙基于AdaBoost的Gabor特征选择及判别分析方法问题:人脸描述是人脸识别的核心问题之一,人脸识别的研究实践表明:在人脸三维形状信息难以准确获取的条件下,从图像数据中提取多方向、多尺度的Gabor特征是一种合适的选择。

使用Gabor特征进行人脸识别的典型方法包括弹性图匹配方法(EGM)和Gabor特征判别分类法(GFC)。

EGM在实用中需要解决关键特征点的定位问题,而且其速度也很难提高;而GFC则直接对下采样的Gabor特征用PCA降维并进行判别分析,尽管这避免了精确定位关键特征点的难题,但下采样的特征维数仍然偏高,而且简单的下采样策略很可能遗漏了非常多的有用特征。

基于adaboost的人脸检测

基于adaboost的人脸检测

中国图像图形网整理罕兴+语音图像?14:17:06大家注意了主讲开始了坐好啊岁月-人眼跟踪 14:17:10多项式级的学习算法来识别一组概念,并且识别率很高,那么这组概念是强可学习的;arinny人脸检测 14:23:09而如果学习算法识别一组概念的正确率仅比随机猜测的略好,那么这组概念是弱可学习的。

arinny人脸检测 14:23:45如果能将一个弱学习算法提升为强学习算法,那么在学习概念时,只要找到一个比随机猜测略好的弱学习算法,就可以将其提升为强学习算法,而不必直接去找通常情况下很难获得的强学习算法arinny人脸检测 14:24:48下面来看PAC学习模型arinny人脸检测 14:25:02Valiant ——关于可学习性的理论:概率地、近似地、正确地可学习的(PAC Probably、Approximately、Correct)arinny人脸检测 14:25:44基于上面所说的Schapire和Freund 提出了一个新的boosting 算法:AdaBoost算法,它解决了早期boosting 算法的许多不足arinny人脸检测 14:26:56下面来探讨下我们在训练时候所选取的特征arinny人脸检测 14:27:09Harr特征arinny人脸检测 14:27:17如下图arinny人脸检测 14:27:59看到了?善良-人脸识别 14:28:06看到周扒皮__抓壮丁 14:28:09Okarinny人脸检测 14:28:45我们为什么要选取这样的特征呢那是因为罕兴+语音图像?14:28:50看到arinny人脸检测 14:29:03矩形特征在人脸上的匹配如下图周扒皮__抓壮丁 14:29:42图片没显示..有人看到没?罕兴+语音图像?14:29:51看到了善良-人脸识别 14:29:53?我看到啊胡杨_图像检索 14:29:55看到了arinny人脸检测 14:30:03PKarinny人脸检测 14:30:06OK罕兴+语音图像?14:30:08教育网都可以的周扒皮__抓壮丁 14:30:10下面看看如何计算这些特征arinny人脸检测 14:31:10利用积分图计算矩形特征arinny人脸检测 14:31:23如图:区域D的像素值,可以利用1,2,3,4点的积分图来计算:arinny人脸检测 14:31:51罕兴+语音图像?14:32:21看不到了善良-人脸识别 14:32:28我看到周扒皮__抓壮丁 14:32:30我这儿有麦田_人脸合成 14:32:58能看到arinny人脸检测 14:33:12前面的特征就是通过积分来求的arinny人脸检测 14:33:27具体求法见上图arinny人脸检测 14:34:11下面来看看训练的整个过程图看不清不要紧完了上穿到共享里麦田_人脸合成 14:34:49okarinny人脸检测 14:34:58AdaBoost算法训练强分类器的算法步骤:arinny人脸检测 14:35:13A给定一系列样本(,),(,),...(,),其中=0表示其为负样本(非人脸),=1表示其为正样本(人脸).n为总共的训练样本数量.arinny人脸检测 14:37:07?麦田_人脸合成 14:37:21怎么arinny人脸检测 14:37:37(x1,y1)(x2,y2)....(xn.yn)arinny人脸检测 14:37:54样本刚没显示麦田_人脸合成 14:38:11恩yi=0表示负样本,对吗arinny人脸检测 14:38:20对罕兴+语音图像?14:38:25公式编辑器编辑的不能显示的麦田_人脸合成 14:38:49不行就贴成图arinny人脸检测 14:38:51啊?显示不了罕兴+语音图像?14:39:10 我能看到罕兴+语音图像?14:39:13 两次都是小哈-人脸识别 14:39:28 一张看不到训练的思路主要在循环arinny人脸检测 14:44:561. 归一化权重:麦田_人脸合成 14:45:11能不能把整个过程贴出来,然后讲讲选取最佳的弱分类器(拥有最小错误率)arinny人脸检测 14:50:53按照这个最佳弱分类器,调整权重:arinny人脸检测 14:51:14最后形成强分类器罕兴+语音图像?14:51:38好思想这样子理念很好arinny人脸检测 14:51:39可行啊?麦田_人脸合成 14:52:14罕兴,你明白我们不明白啊小哈-人脸识别 14:52:15这个??是指??罕兴+语音图像?14:52:25这就是所谓的 trade off麦田_人脸合成 14:53:30思路就是:训练弱分类器,然后提升为强分类器,对吗?arinny人脸检测 14:53:38对对!麦田_人脸合成 14:53:54跟Harr特征什么关系呢罕兴+语音图像?14:53:58主讲继续很对这种理念很好值得借鉴arinny人脸检测 14:54:25经过大T轮循环选取T个最佳弱分类器arinny人脸检测 14:54:57HARR特征是我们用来训练的特征啊煦韬_PCA人脸 14:55:13具体是什么样子的特征?arinny人脸检测 14:55:31有没看到那个图煦韬_PCA人脸 14:55:47嗯,这边看不到图,周扒皮__抓壮丁 14:56:01“1. 对每个特征f,训练一个弱分类器;”是指Harr特征吗arinny人脸检测 14:56:07那个图主要有1:22:11:32:2四种arinny人脸检测 14:56:32麦田_人脸合成(3414967) 14:56:05“1. 对每个特征f,训练一个弱分类器;”是指Harr特征吗arinny人脸检测 14:56:35对啊arinny人脸检测 14:56:38就是的麦田_人脸合成 14:57:05什么1:2,2:1...呀arinny人脸检测 14:57:19就是HARR矩形特征啊arinny人脸检测 14:57:36前面贴出来的等等请看21天-人脸识别 14:57:54总共有多少个矩形特征罕兴+语音图像?14:58:04恩理解看了图就可以理解罕兴+语音图像?14:58:164个arinny人脸检测 14:58:22对麦田_人脸合成(3414967) 14:56:05“1. 对每个特征f,训练一个弱分类器;”那不只有四个弱分类器arinny人脸检测 14:59:12对问的好arinny人脸检测 14:59:20不是的21天-人脸识别 14:59:43那是怎么着arinny人脸检测 14:59:47等下贴图周扒皮__抓壮丁 14:59:51arinny人脸检测 15:00:17大家可看到这些特征了?Judy_人脸识别 15:00:22是不是“4类特征,但是每个特征可以不止一个?麦田_人脸合成 15:00:33这样概括:对每个Harr特征,训练一个若分类器,然后调整这些若分类器的权重,使得总错误率最小然后再调整权重,得到强分类器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1ei t
t t 1 t
i
e xi被正确分类,
1 表示 x被 i
Байду номын сангаас
5.最后的强分类器为:
T 1 T 1 t ht ( x) t C ( x) 2 t 1 t 1 0其他
其中: t log
1
t
算 法 流 程 图
满足(s,t)条件的矩形的数量计算
对于 m n 子窗口,我们只需要确定了矩形左上 顶点和右下顶点,即可以确定一个矩形;如果这 个矩形必须满足下面两个条件(称为(s,t)条 件): (1)x方向边长能被自然数s整除。 (2)y方向边长能被自然数t整除。 满足(s,t)条件的矩形称为条件矩形。


m s 1 n t 1
m xLU 1 n t 1 n yLU 1 s t yLU 1 xLU 1
m s 1
m m 1 s 1 n n 1 t 1 ... 1 ... 1 s t t t s s
首先,确定左上角位置,则左上角可以选择的位置 范围为:
xLU {1, 2,..., m s, m s 1} yLU {1, 2,..., n t , n t 1}

其次,根据左上角位置限定右下角位置范围为:
xRD {xLU s 1, xLU 2 s 1,..., xLU ( p 1) s 1, xLU p s 1} yRD { yLU t 1, yLU 2 t 1,..., yLU (q 1) t 1, yLU q t 1}

对于每个特征 f,计算所有训练样本的特征值, 并将其排序。通过扫描一遍排好序的特征值,可 以为这个特征确定一个最优的阈值,从而训练成 一个弱分类器。具体来说,对排好序的表中的每 个元素,计算下面四个值: 1)全部人脸样本的权重的和 T ; 2) 全部非人脸样本的权重的和 T ; S 3) 在此元素之前的人脸样本的权重的和 ; S 4) 在此元素之前的非人脸样本的权重的和 ;
关于AdaBoost算法形象理解
Adaboost 算法是一种用来分类的方法,它的 基本原理是把一些比较弱的分类方法合在一起, 组合出新的很强的分类方法。 例如在图中
需要用一些线段把红色的球和深蓝色的球分开, 然而如仅果仅用一条线的话,是分不开的。
使用AdaBoost算法来进行划分的话,先画出一条 错误率最小的线段如图a,但左下角的深蓝色的球 被错划分到红色区域,因此加重被错误划分的球 的权重,再下一次划分的时候,将更加考虑那些 权重大的球,如图c,最终得到一个准确的划分, 如下图所示。
级联分类器


单独一个AdaBoost分类器即使很强,在误检率和 检测时间上根本满足不了真正的实时人脸检测系 统的需要。采用级联检测策略能很好地解决这个 问题。Adaboost算法引入了一种瀑布型的分类器--级联分类器。 在级联分类器中,每一个待检测窗口只有通过了 当前层的强分类器(AdaBoost分类器)才能进入 下一层。这样大量的待检测窗口只需要最初几层 简单的判断就可以被迅速淘汰,使得平均检测成 本大大降低。多层级联结构中,每一层的强分类 器都是由AdaBoost算法训练来的。
0.9 0.6 0.5 0.4
0.3
0.1 0.4 0.5 0.4
其中:
A S ( f ) (T (nf ) S (nf )) B S (nf ) (T ( f ) S ( f )) A 1 B e min( A, B)
通过演示表我们可以得到这个矩形特征的学习结果, 这个弱分类器阈值为4,不等号方向为p=-1,这个弱分 类器的权重错误率为0.1。
公式(1)
所以m n子窗口中所有四种特征模板的特征总 数量,就是满足四个(s,t)条件的矩形特征的数 量的总和,即:

( m,n ) (1, 2 )
( 2,1) (1,3) (3,1)
( m,n ) ( m,n )
( m,n )
代入公式(1)即可求得条件矩形的特征数量总和。

X(2)
X(3) X(4) X(5) X(6)
1
0 1 1 1
3
4 6 9 10
0.1
0.2 0.3 0.1 0.1
0.6
0.6 0.6 0.6 0.6
0.4
0.4 0.4 0.4 0.4
0.1
0.1 0.4 0.5 0.6
0.2
0.4 0.4 0.4 0.4
0.3
0.1 0.4 0.5 0.6
0.7
t
f , p ,
q h( x , f , p, ) y q h( x , f , p , ) y
i i i i i i i t t t
i
h ( x) h( x, f , p , )
t t t t
4.按照这个最佳弱分类器,调整权重:
wt 1,i wt ,i
其中 ei 0 表示 错误分类。
其中:
m xLU 1 p s n y LU 1 q t
则(m,n)图像窗口内满足(s,t)条件的矩形特征的数目:
,n ) (( m s ,t ) m s 1 n t 1 xLU 1 yLU 1

pq
m xLU 1 n yLU 1 s t xLU 1 yLU 1
我们主要考虑以下四种举行特征(只含0 angle特征,不包含45 angle类型的矩形特征):
(A)
(B)
(C)
(D)

将haar特征这种反映图像中灰度分布特点的特性 引入人脸检测问题当中,问题就转换成如何找到 较好的haar特征对人脸图像灰度分布的特点进行 描述。下图中的3个特征就能很好的描述图像中人 脸的眼部的灰度的分布特点。
积分图:利用矩形特征来计算选取人脸的特 征有一种非常快速的算法,这种算法使用了 一种间接的图像表示方法,称之为积分图。 在一张积分图上,点i(x,y)的积分值ii(x,y)是原 图像上该点的上方和左方所有点的亮度值的 和。即:
ii ( x, y )
x' x , y ' y

i( x , y )
于是,通过把这个排序的表扫描从头到尾扫描一遍 就可以为弱分类器选择使分类误差最小的阈值 (最优阈值),也就是选取了一个最佳弱分类器。 同时,选择最小权重错误率的过程中也决定了弱 分类器的不等式方向。
具体弱分类器学习演示表如下:
X X(1) Y 0 F 1 w 0.2 T(f) 0.6 T(nf) 0.4 S(f) 0 S(nf) 0.2 A 0.2 B 0.8 e 0.2
一个弱分类器h(x, f , p, )由一个特征f,阈值 和指示不等 号方向的p 组成:
1 pf ( x) p h ( x, f , p , ) 0其他

训练一个弱分类器(特征f)就是在当前权重分布的情况 下,确定f 的最优阈值以及不等号的方向,使得这个弱分 类器(特征f)对所有训练样本的分类误差最低。具体方 法如下:

其中,s ( x, y ) i ( x ' , y ) ,是对这一行及其以前行
x' x
的像素值求和,并且有:
s( x, 1) 0, ii(1, y) 0
具体程序如下:
求 积 分 图 程 序
AdaBoost算法 训练部分
AdaBoost算法学习 第一步:弱分类器的选取

'
'
其中ii(x,y)为积分图,i(x,y)为原始图像。
原图像
积分图图像
原图像部分像素值
对应积分图图像部分像素值

当采用下面两式,只需对原图像扫描一次即可计算出积分 图:
ii( x, y) ii( x 1, y) s( x, y)
s( x, y) s( x, y 1) i( x, y)
基于AdaBoost算法的 人脸检测技术
Kun@SYSU
人脸检测


人脸检测(face detection)是指对于任意一幅给定 的图像,采用一定的策略对其进行搜索以确定其 中是否含有人脸,如果是则返回人脸的位置、大 小和姿态。 典型的方法有模板法、基于示例学习、基于器官 特征的方法、神经网络、彩色信息+形状分析、 AdaBoost的方法等等。

第二步:由弱分类器确定强分类器 经过 T 次迭代后,得到T 个最佳弱分类 h1 ( x),..., hT ( x) 器 ,可以按照下面的方式组合成一个强 分类器: T 1 T
1 t 1 t ht ( x) t 1 t C ( x) 2 0其他 1 t log

max
max




预设强分类器包含的弱分类器个数为 T ,然后根 据 T *个训练一个强分类器,统计其检出率 d 和误判 * 率 f ,当满足 f f max且 d d min 时, T 可认为满足 条件,不必再训练弱分类器。若不满足上述条件, * 则对 T进行调整。 具体依据如下: (1)强分类器的检出率(误判率)随着阈值的减 小而增大,随着阈值的增加而减小。极端的情况, 如果将阈值设置为0,那么强分类器会将所有的样 本分类为人脸,这时检出率和误判率最大,为 100%。 (2)增加弱分类器的数目可以减小误判率。 根据以上两条,得如下强分类器训练程序流程图:

其中 。 那么,这个强分类器对待一幅待检测图像时,相当 于让所有弱分类器投票,再对投票结果按照弱分类 器的错误率加权求和,将投票加权求和的结果与平 均投票结果比较得出最终的结果。
相关文档
最新文档