基于Adaboost 人脸检测算法

2014-01-14 00:43于微波
吉林大学学报(信息科学版) 2014年5期
关键词:级联人脸矩形

于微波,赵 琳,佟 冬

(长春工业大学电气与电子工程学院,长春130012)

0 引言

人脸识别广泛应用于安全防护与身份验证、媒体与娱乐和图像搜索等多个领域,是计算机视觉和人工智能研究的重点课题。人脸检测是人脸自动识别系统的第1步,是人脸识别的基础,因而研究人脸检测技术具有重要意义。人脸检测是指采用相关的方法判断输入图像中是否包含人脸,如果存在人脸要告知其位置及大小[1]。最近几年,基于简单背景的人脸检测技术已经相当成熟,但在光照变化、类肤色等复杂背景下的检测效果并不理想,而复杂背景下人脸检测在安全领域、实时监控系统中有着广泛的应用潜能,又因其实现困难、没有快速有效的算法而成为目前学术界和工业界具有挑战性的课题。

国内外对复杂背景下人脸检测的研究取得了一定的成果,文献[2]提出利用人脸轮廓近似椭圆形及面部器官的比例关系检测人脸。文献[3]和文献[4]使用模板在待检图像中逐点扫描计算匹配度,根据匹配度判断并定位人脸。文献[5]采用基于神经网络的人脸检测方法,利用人脸图像模式和非人脸图像模式对神经网络进行训练,然后利用训练好的神经网络进行人脸检测。文献[6]采用基于自适应肤色分割的人脸定位算法,并采用局部奇异值的方法提取特征值,用PCA(Principal Component Analysis)算法进行识别。文献[7]提出了基于肤色检测和多级证实的彩色人脸检测技术。但将上述方法应用于复杂背景下人脸检测时,其检测速度较慢,且易受光照变化的影响,很难保证复杂背景下人脸检测快速性准确性实时性的要求。

笔者采用Adaboost(Adaptive Boosting)算法进行人脸检测。分别对具有面部旋转和复杂背景的图像进行人脸检测实验,在OpenCV(Open Source Computer Vision Library)上实现其检测过程并得到候选人脸区域。

1 基于Adaboost算法的人脸检测

Boosting算法是由Schapire[8]于1990年提出的,并受到了人们的广泛关注。1995年,Freund等[9]针对Boosting算法存在的问题,对其进行了改进并提出了Adaboost算法,Adaboost算法是一种自适应的Boosting算法。2001年Viola等[10]将Adaboost算法应用到人脸检测上,采用积分图计算人脸的矩形特征,使用haar-like特征构建弱分类器,并训练了级联分类器,实现了人脸的实时检测。笔者采用积分图、Adaboost和级联分类器综合的方法完成人脸检测。

1.1 特征提取

图1 矩形特征Fig.1 Rectangle features

人脸检测过程是基于人脸特征值的,Papageorgiou等[11]首先提出用 haar-like特征表示人脸,他们采用简单矩形模板,由两个或多个黑色和白色矩形组成,特征值由白色矩形的像素和减去黑色矩形的像素和。常用的有3种特征(见图1),分别是两矩形、三矩形和四矩形特征。

图1中,A和B是两矩形特征,特征值计算公式为V=S白-S黑,C是三矩形特征,特征值计算公式为V=S白-2S黑,D是四矩形特征,特征值计算公式同A和B(其中S表示求和)。

假设检测的图像窗口大小为24×24像素,则需要的矩形特征数量为134 736,计算量很大,速度很慢,因此引入积分图计算特征值。

1.2 积分图

矩形区域黑色像素点的个数可用积分图快速地计算出来,提升了计算速度。积分图在点(x,y)处的计算方法为

其中ii(x,y)是计算后的积分图像,i(x,y)是原图像。

运用递归公式

计算整幅图像的积分图。其中s(x,y)为每列的像素和,s(x,-1)=0;ii(-1,y)=0。

使用积分图可通过4个顶点的值计算任意矩形的像素和。同理,双矩形的像素和可用6个顶点计算,三矩形用8个点,四矩形用9个点,如图2所示。

图2中,点1积分图像ii1的值为ii1=S(A),点2、点3和点4的积分图像分别为

矩形D的计算公式为

图2 矩形像素和可通过顶点计算Fig.2 The sum of the rectangle pixels can be computed with array references

矩形特征的特征值是通过计算白色区域和黑色区域像素和的差值得到的,以图1中的A为例说明其特征值的计算。A的特征值为S(白)-S(黑),其中S(白)=(ii5+ii1)-(ii4+ii2),S(黑)=(ii6+ii2)-(ii5+ii3)。

1.3 弱分类器的设计

采用弱学习算法选择简单的矩形特征,以更好地区分正负样本,形成弱分类器。对于每个特征,弱学习决定最优的阈值分类功能。因此一个弱分类器hj(x)由特征fj、阈值θj和方向符号pj组成,即

通过每次对训练样本的学习,寻找出最优的弱分类器。

1.4 训练强分类器

Adaboost算法的基本思想是针对同一个训练集,不断调整样本权重训练最优的弱分类器,并将这些弱分类器组合成最终用于分类的强分类器[12]。每个弱分类器的分类效果有限,通过选择多个弱分类器组成强分类器,训练强分类器的算法如图3所示。

图3 训练强分类器的算法流程图Fig.3 Strong classifier training algorithm flow chart

图3中训练样本集合中yi=0,1分别表示正例样本和负例样本;正例样本个数为m,负例样本个数为l;训练弱分类器hj时要使错误率最小;最小的错误率εt=arg min εj;在更新样本权重过程中,若样本被正确分类,则ei=0,否则

1.5 级联分类器

弱分类器数目不断增加,使其组成的强分类器更加复杂,从而增加了计算量。因此,将得到的强分类器以级联的形式组成最终的分类器,即级联Adaboost分类器。级联分类器的基本思想是用非常简单的分类器把不是主体的大量背景快速筛选出来,保留那些可能是待检区域的子窗口,从而提高检测性能并降低计算时间[13]。级联分类器结构如图4所示。

级联分类器的结构实际上是一个递减的决策树。第1层分类正确的窗口触发第2层分类器,第2层的正例触发第3层,以此类推。笔者根据预先设定的检测率和错误判对率确定每层的检测率和错误判对率,并采用降低分类器阈值或增加层数的方法达到每层的检测率或错误判对率。

图4 级联分类器结构图Fig.4 Cascade classifier structure

2 Adaboost人脸检测算法在OpenCV上的实现

OpenCV是一个开源图像处理算法库,由一系列C函数和少量C++类组成,可快速有效地实现图像处理和计算机视觉等方面的通用算法[14]。其自带的createsamples和haartraining程序可进行haar-like分类器的训练,并形成xml文件,加载该文件实现级联表的建立,大大节省了级联表建立的时间[15]。将待检测图像和xml文件送入OpenCV的检测算法即可得到人脸检测结果。

Adaboost人脸检测算法在OpenCV上的实现过程如下。

1)采集正负样本,并生成正负样本文件。其中正样本图像4 820张,负样本图像5 020张。

2)使用createsamples命令建立正样本的向量输出文件faces.vec。

3)使用haartraining训练生成相应的face_classifier.xml文件。其中,级联分类器共24层,每层的最低正确检测率为99.8%,错误接受率为50%;弱分类器是只有一层分裂的决策树。

4)加载face_classifier.xml文件,即加载训练好的人脸检测分类器。

5)加载输入的待检测图像。

6)将RGB图像转化成灰度图像。

7)调整待检测图像的大小。

8)对灰度图像进行直方图均衡化操作。

9)进行人脸检测并输出候选的人脸区域。

10)标出检测到的人脸,保存并显示人脸检测后的图像。

3 实验结果与分析

3.1 简单背景下面部旋转实验

笔者选取ORL(Olivetti Research Laboratory)人脸标准图像库进行简单背景下面部旋转的人脸检测实验。该图像库共有40人每人10幅共400张人脸灰度图像,图像大小是112×92像素,包括表情变化、微小姿态变化且人脸旋转角度达到20°。图5所示为实验中一部分的检测结果,图5中第1、3行是待检测图像,第2、4行是检测后的结果图像,其中矩形框内的部分图像为检测到的人脸。

图5 ORL人脸图像部分检测结果Fig.5 Part of the ORL face images test results

该实验中,共检测出340张人脸,正确检测人脸个数340个,检测率为85%,漏检率为15%,平均检测时间为16.67 ms/张。漏检的主要原因是面部大角度倾斜(见图5中第4行第1张和第3张图片)。

3.2 复杂背景下人脸检测实验

选取加州理工学院彩色人脸图像库进行复杂背景下人脸检测实验。该图像库包括16人每人5~25张不等共247张人脸彩色图片,具有不同的表情、复杂的室内外背景及光照变化等特点,图像大小为896×592像素。图6所示为实验中一部分的检测结果,其中第1、3行是待检测图像,第2、4行是检测后的结果图像,其中矩形框内的部分为检测到的人脸。

图6 人脸彩色图像部分检测结果Fig.6 Part of the facial color images test results

该实验中,共检测出257张人脸,正确检测人脸个数是246个,检测率为99%,误检率为4.5%,漏检率为1%,平均检测时间76 ms/张。如图6第2行第3张图片所示,误检的主要原因是存在类肤色背景。

该算法在ORL人脸图像库和加州理工学院彩色人脸图像库上进行的人脸检测实验结果如表1所示。由表1可知,人脸检测器的检测准确率分别为85%和99%,平均检测时间分别为16.67 ms/张和76 ms/张,基本达到了复杂背景下人脸检测准确性、快速性和实时性的要求。

表1 人脸检测结果Tab.1 The results of face detection

4 结 语

笔者采用Adaboost算法对复杂背景下的人脸进行检测研究,详细阐述了Adaboost人脸检测算法的原理及其在OpenCV平台上的实现过程,该方法对复杂背景下的人脸检测具有较好的性能,取得了较好的检测效果。简单背景下面部旋转的实验是在ORL人脸图像库上完成的,复杂背景下人脸检测的实验是在加州理工学院彩色人脸图像库上进行的,并分别实现了85%和99%的检测率,平均检测时间只有16.67 ms/张和76 ms/张,满足复杂背景下人脸检测快速性、准确性和实时性的要求。当出现面部倾斜角度较大和类肤色背景时,存在漏检、误检问题。

[1]ZHAO W,CHELLAPPA R,ROSENFELD A,et al.Face Recognition:A Literature Survey[J].ACM Computing Surveys,2003,5(4):399-458.

[2]SIROHEY S A.Human Face Segmentation and Identification[R].Washington:Computer Vision Laboratory Center for Automation Research University of Maryland College Park,1993.

[3]DARIO MIAO,DAVIDE MALTONI.Real-Time Face Location on Gray-Scale Static Images[J].Pattern Recognition,2000,33(9):1525-1539.

[4]MIAO Jun,YIN Baocai,WANG Kongqiao,et al.A Hierarchical Multiscale and Multiangle System for Human Face Detection in a Complex Background Using Gravity-Center Template[J].Pattern Recognition,1999,32(7):1237-1248.

[5]SUNG K K,POGGIO T.Example-Based Learning for View-Based Human Face Detection[J].Pattern Analysis and Machine Intelligence,1998,20(1):39-50.

[6]仲澄,冯涛.复杂背景下的人脸定位识别方法[J].计算机工程与应用,2012,48(1):205-207.ZHONG Cheng,FENG Tao.New Algorithm for Face Location and Recognition in Complex Background [J].Computer Engineering and Applications,2012,48(1):205-207.

[7]朱长仁.复杂背景下的多姿态人脸识别技术研究[D].长沙:国防科学技术大学电子科学与工程学院,2001.ZHU Changren.Multi-Pose Recognition Technology Research under Complex Background[D].Changsha:College of Electronic Science and Engineering,National University of Defense Technology,2001.

[8]SCHAPIRE R E.The Strength of Weak Learnability[J].Machine Learning,1990,5(2):197-227.

[9]FREUND Y,SCHAPIRE R E.A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting[C]∥Second European Conf on Computational Learning Theory.Barcelona,Spain:[s.n.],1995:119-139.

[10]VIOLA P,JONES M.Rapid Object Detection Using a Boosted Cascade of Simple Features[C]∥Proc IEEE Conf on Computer Vision and Pattern Recognition.Kauai,HI:[s.n.],2001:511-518.

[11]PAPAGEORGIOU C,OREN M,POGGIO T.A General Framework for Object Detection[C]∥International Conference on Computer Vision.Bombay:[s.n.],1998:555-562.

[12]VIOLA P,JONES M.Robust Real-Time Face Detection [J].International Journal of Computer Vision,2004,57(2):137-154.

[13]唐立群,郭庆昌.数字图像模式识别方法分析[M].哈尔滨:哈尔滨工程大学出版社,2008:197-204.TANG Liqun,GUO Qingchang.Analysis of Digital Image Pattern Recognition Methods[M].Harbin:Harbin Engineering University Press,2008:197-204.

[14]陈勇,刘胜.基于OpenCV的计算机视觉技术实现[M].北京:科学出版社,2008:8-10.CHEN Yong,LIU Sheng.The Realization of Computer Vision Technology Based on OpenCV[M].Beijing:Science Press,2008:8-10.

[15]于仕琪,刘瑞祯.学习OpenCV(中文版)[M].北京:清华大学出版社,2009:557-558.YU Shiqi,LIU Ruizhen.Learning OpenCV[M].Beijing:Tsinghua University Press,2009:557-558.

猜你喜欢
级联人脸矩形
有特点的人脸
一起学画人脸
两矩形上的全偏差
化归矩形证直角
三国漫——人脸解锁
从矩形内一点说起
级联LDPC码的STBC-OFDM系统
基于级联MUSIC的面阵中的二维DOA估计算法
长得象人脸的十种动物
LCL滤波器在6kV级联STATCOM中的应用