单园园,王法胜,2,李绪成,2,鲁明羽
改进AdaBoost与SVM快速人脸检测
单园园1,王法胜1,2,李绪成1,2,鲁明羽1
(1.大连海事大学信息科学技术学院,辽宁大连116026;2.大连东软信息学院计算机科学与技术系,辽宁大连116023)
使用AdaBoost进行人脸检测,存在训练时间长以及误检率高的问题.本文提出了一种新的快速人脸检测方法.首先通过对类Haar特征约束,提高人脸特征选取的有效性,减少整体特征数;然后利用基于梯度方向直方图HOG特征的支持向量机SVM算法对改进后的AdaBoost算法出现的高误检率进行检测优化,以降低误检率,提高检测的准确度.实验结果表明,本文提出的AdaBoost改进算法可以有效地缩短训练和检测时间,结合SVM优化实验可以大大降低误检率,提高人脸检测的正检率,实现快速高效的人脸检测.
人脸检测;AdaBoost算法;支持向量机;类HAAR特征;梯度方向直方图
近年来,作为人脸识别的一部分,人脸检测的研究及应用价值引起了人们的重视.人脸检测是一种可以定位出人脸区域的方法,给定任意的图像,确定图像中是否存在人脸,若有,则返回图像所在的位置和区域[1].在人脸检测的应用中,精度和速度一直是2个关键且难于两全的问题.近年来出现了大量的人脸检测算法,其中AdaBoost算法在人脸检测中取得了成功的应用.AdaBoost算法是由Freund和Schapire提出的[2],Viola和Jones采用此算法结合多分类器级联结构实现快速的人脸检测[3].在Viola和Jones的算法中,主要考虑水平矩形特征,在正面的人脸检测中得到了很高的检测率,但对多姿态人脸检测的检测率却不高.Jang和Kim[4]提出在不影响检测精度的基础上尽量减少分类器数量,以提高检测速度.Huang Cang等[5]提出了一系列创新性的方法来构建一个高性能的旋转不变多视角人脸检测器(Multi View Face Detecter,MVFD),取得了快速(速度在每秒10帧以内)准确的检测效果,这种矢量Boosting算法的改进是对经典AdaBoost算法的延伸.Ge Kaibiao等[6]提出利用MB-LBP特征与Ada-Boost结合进行检测,实验结果表明检测速度和准度率均达到了90%以上.MH Rahman等[7]利用Ada-Boost和SVM进行人脸检测与性别分类,结合Ada-Boost和支持向量机(Support Vector Machine,SVM)分类器实现分类,实验结果表明此结合算法要比单纯使用SVM具有更加均衡的泛化效果.
SVM最初由Vapnik等[8]提出,最先将SVM方法应用于人脸检测的是Osuna等[9].他们提出了一个有效的方法来处理大规模样本下SVM的训练问题.同Sung等的方法[10]相比,该方法误差小,且检测速度提高了30倍.Heiselet等[11]提出采用基于局部区域SVM的方法来检测人脸,该类方法比整个人脸作为特征的检测方法有更高的检测率,但计算复杂度较高.Buciu等[12]采用多个SVM集成进行人脸检测,在一定程度上降低了误检率.Iwan等[13]提出的基于Haar小波系数和SVM的正面姿态人脸检测和分类系统,检测子系统检出率为94.8%,识别系统的识别率为68.1%.Wu Jianxin等[14]利用SVM以及方向梯度直方图(Histogram of Oriented Gradients,HOG)特征等方法的综合,提出了一个实时准确的目标检测框架C4,在对640×480像素大小的图像进行检测时,速度可达每秒20帧.Yun Wei等[15]将类Haar特征与HOG描述算子结合,提出了一种改进的人体检测算法,有效利用类Haar特征训练速度快和HOG特征的检测效率高的特性,实现了更高速度精确地分类行人.
为了有效缩短训练大量特征所耗费的时间以及降低误检率,本文提出了一种新的快速人脸检测方法,主要工作体现在2个方面:首先通过对类Haar特征增加约束,有效选取人脸特征,减少整体特征数;然后利用基于HOG特征的SVM算法进行检测优化,提高人脸检测的正检率,降低误检率,从而得到快速高效的人脸检测结果.
1.1 传统AdaBoost人脸检测原理
Viola和Jones在2001年提出了基于AdaBoost算法的人脸检测方法[3],该方法主要把积分图像和类Haar特征运用到AdaBoost算法中,通过使用Cascade级联分类器,将人脸从大量特征中逐层分离.
AdaBoost的核心思想是针对不同的训练集训练同一个分类器(弱分类器),然后把这些在不同训练集上得到的弱分类器集合起来,通过迭代,构成一个强分类器的过程.在这个算法中,不同的训练集是通过调整每个样本对应的权重来实现的.
Cascaded级联分类器是一种多层结构的级联分类器,这种多层结构类似于一个递减的决策树.它是一种由粗到细的结构,其中每一层是AdaBoost算法训练得到的一个强分类器,经过阈值调整,使得每一层能让全部正样本通过,而拒绝掉很大一部分非人脸样本,如图1.
图1 级联分类器Fig.1 Cascaded classifier
通过这样级联,前面层由于拒绝掉了大部分的非人脸样本,使得所使用的矩形特征数量比较少,从而可以提高计算速度.后面层随着矩形特征的增多,通过的候选窗口减少,单个窗口的计算时间加长.对于一个24×24像素大小的图像子窗口有45 396个矩形特征,训练一个简单分类器等于在45 396× 15 000=680 940 000个特征中求解最小误差,这个过程非常耗费时间.而且在完成一次最优简单分类器提取后,每个样本所对应的权重叠代更新,相当于训练样本概率分布完全变化了.由于再次求最优简单分类器时最小误差与当前权重相关,因此简单分类器必须完全重新训练.
此外,在AdaBoost算法中,级联分类器的生成过程是一个从检测率、正样本误报率2个方面向目标值循环逼近的过程,级联分类器的生成一般需要循环训练数千个简单分类器.文献[3]的实验中训练简单分类器总共就花费了几周的时间,由此可见迭代逼近的训练分类器所耗的时间非常多.
1.2 SVM检测原理
SVM最初由Vapnik等[8]提出,是一种基于统计学习理论的模式识别方法,它在结构风险最小化原理的基础上,为2种不同类别的样本数据找到一个最优分类面.
最先将SVM方法应用于人脸检测的是Osuna等[9],这种方法通过对每个19×19像素的检测窗口使用SVM进行分类,来区分“人脸”和“非人脸”窗口.SVM的训练使用了大量人脸样本和Bootstrap方法收集的“非人脸”样本,并且使用逼近优化的方法减少支持矢量的数量.
Osuna等[9]的方法存在两点不足,一是SVM的训练需要大量的存储空间,不加选择地收集样本,特别是非人脸样本的训练会影响到SVM分类器的性能;二是非线性SVM分类器需要较多的支持向量,速度较慢,难于实际应用.因此,本文采用优选样本特征,使用SVM分类算法,训练人脸分类器检测人脸,不仅可以保证检测精度,在速度上也有所提升.
2.1 AdaBoost算法的改进
为了缩短AdaBoost算法训练大量特征耗费的时间,提高训练速度,本文对所要提取的类Haar特征进行改进.由于用类Haar矩形特征去描述不规则人脸时,不能有效描述人脸细节,特别是当类Haar特征面积大于50%的面部区域时,就很难再用该特征去表征人脸的具体细节.对于20×20的图像,其类Haar特征总数可高达41 910个.
因此,要想提高训练速度,可以限制类Haar特征的尺寸.本文分别从边缘特征、线特征和对角线特征加以约束,训练类Haar特征,最终生成分类器,流程如图2.
图2 分类器训练算法框架Fig.2 Training framework for classifier
对于这些特征的约束比例,经实验反复测试,选取了如图3所示的比例.其中:(1)、(3)为边缘特征,(2)、(4)为线特征,(5)为对角线特征;在(1)中
对x的像素限定不大于5,y不大于15;在(2)、(5)中做同(1)中的处理;在(3)中对x的像素限定不大于15,y不大于5;在(4)中做同(3)中的处理,改进后的特征训练算法如算法1.改进后训练生成的检测分类器有10层,每一层的分类特征与人脸匹配结果如表1.
图3 类Haar特征的约束条件Fig.3 Constraints on Haar-like features
?
表1 分类器各层Haar特征与人脸匹配结果Tab.1 Matching Results between Haar like feature of each layer and face
部分层有一些子分类,该图只列出了每一层中某一类Haar特征的匹配结果.在第1层中将眉毛与周围的区域通过线特征区分出来;第2层利用边缘特征区分出了眼睛与周围区域;第3层得到眉毛和鼻梁区域;第4层区分出鼻梁区域;第5层得到眼睛和头发区域;第6层得到双眼区域;第7层利用对角线特征区分出嘴唇与下巴区域;第8层得到的是眼睛和鼻子;第9层匹配的是眉毛和眼睛;第10层匹配鼻翼和眼窝.
2.2 算法实现
为验证本文提出的改进AdaBoost人脸检测方法的性能,设计实验流程如图4.
图4 改进AdaBoost人脸检测实验流程图Fig.4 Experimental flow chart of the improved AdaBoost Face detector
(1)数据采集模块.选择合适的人脸数据库,作为改进的人脸检测实验所要用到的数据集(训练集和测试集),本文实验训练样本集选自于YALE大学人脸数据库及MIT人脸数据库,其中正样本2 429个,负样本3 433个.测试样本采用OpenCV官网上发布的人脸测试图片、MIT+CMU公共测试集以及随机抽取的多人脸图像.在实验中采用大小样本逐步进行的方式做对比,小样本的正负样本比例为100∶300,大样本的为1 000∶3 000.
(2)数据处理模块.在训练阶段,对样本做了归一化处理,为20×20像素大小.按着改进设计,对类Haar特征进行比例约束,编译生成更新后的代码再对类Haar特征进行训练.在检测阶段,首先将输入图像转化为灰度图,然后利用线性插值进行1/1.3的缩放,并对图像做直方图均衡.由于输入图像上人脸大小不尽相同,因此采用的是多尺度检测方法,滑动窗口参数设置为2,表示每一个目标至少要被检测到3次才算是真正的目标.
(3)检测分类器模块.利用数据采集模块和数据处理模块提供的数据和训练结果,生成检测分类器.分类器以xml方式存储,保存为calssifier.xml.
(4)分析模块.结合生成的检测分类器对输入图像进行检测,在与经典AdaBoost算法的结果进行对比,分析检测结果.
2.3 实验结果分析
(1)训练结果.在对20×20的样本进行训练后,总共抽取的特征数由原来的41 910个降至14 936个,通过增加约束条件,降低了约64.4%的特征,如图5(a).在训练时间方面,本文改进后算法的训练时间大大降低,如图5(b).
图5(a)为算法改进前(传统AdaBoost算法)与改进后(改进的AdaBoost算法)相比,浅灰色柱形代表改进前所用的特征数,灰色和黑色为改进后小、大样本的特征数.从对比图中可以看出,改进后得到的有效特征数明显减少;图5(b)为算法改进前后训练时间对比.本文改进后的训练算法,其每层的训练时间大大缩短.
图5 算法改进前后所用特征数和训练时间对比Fig.5 Total features training time of the improved and the original algorithm
(2)检测结果.检测阶段分为小样本训练后的检测与大样本训练后的检测两步.改进前后的检测结果对比如图6,从左到右分别为改进前、改进后(小样本)和改进后(大样本).
图6 人脸检测结果的定性比较Fig.6 Qualitative comparison of face detection results
与改进前的算法检测结果相比,整体上大样本训练后的检测率上升了,误检率也提高了;小样本训练后的算法在检测单人脸时总体效果不错,但是性能并不稳定,并且在检测多人脸时效果并不理想,漏检和误检率都较高.
对不同尺寸的图像进行人脸检测的结果显示,改进的算法无论采用大样本训练还是小样本训练均比改进前能更快地检测到“人脸”,如图7.
结果表明,本文改进的AdaBoost算法较之传统AdaBoost算法在整体上的检测时间均有所缩短,特别是对于单人脸图像检测,其提升幅度最大.从单人脸图像的检测提速上看,改进后检测提速平均达到83.28%以上.对于多人脸检测,提升速度平均也可达46.41%以上.该实验结果表明算法的改进对提升检测速度是有效的.
人脸检测结果的定量描述如表2所示.
图7 检测时间对比图Fig.7 Detection time comparison
表2 人脸检测结果定量比较Tab.2 Quantitative comparison of face detection results
从检测精度来看,本文改进算法对小样本训练下的检测结果不理想,尤其是在检测多人脸图像时,检测率只有35%.但是在进行大样本训练后,不仅检测速度高了,检测率也不低于改进前,但对比误检率可以发现,改进前对单人脸图像的检测,误检率是75%,改进后却达到125%,对多人脸图像的检测改进前是13%,改进后却上升到52%.
从实验结果可以明显看出,检测率提高了,但是同时带来的是较高的误检率.为解决高误检率的问题,本文考虑采用SVM结合HOG特征进行检测优化.
由于本文提出的改进AdaBoost方法在训练时,对类Haar特征的约束只是在局部特定位置上的特征提取,这些特征若满足判决条件则样本被判断为真,这样导致在处理全局特征时优势不足,产生误检.鉴于此,本文引入SVM算法,利用SVM分类器的全局泛化效果把每个样本作为一个整体进行分类.考虑到正负样本数量会直接影响到SVM检测速度,因此本文在SVM训练前先对正负样本进行优化随机抽样,对每类负样本与所有正样本进行训练,并进行级联,得到SVM级联分类器.
训练与检测流程如图8.
(1)数据采集模块.从AdaBoost实验中随机选择正负样本,作为优化的人脸检测实验所要用到的数据集(训练集和测试集).其中正样本500个,负样本1 200个.
(2)训练模块.在训练阶段,对样本首先做归一化处理,为64×64像素大小,块大小为16×16,块移动步长为8×8,检测窗口移动步长为8×8,单元cell大小为8×8,选取经典9个梯度方向进行梯度计算.接着计算输入图像的特征维度,创建特征矩阵,然后对样本增加标识生成HOG描述子.接着计算出正负样本各自的HOG特征向量.本实验同时采用增加难例(HardExample)的方式增加负样本,有效提高样本的准确性.实验采用的是十重交叉验证方式,可以实现自动优化参数效果.本实验采用SVM算法的重要参数有:迭代次数为1 000次;SVM类型为C-SVC;核函数类型为RBF径向基函数.
(3)检测分类器模块.利用前2个模块提供的数据和训练结果,结合SVM线性分类器方法训练SVM检测分类器.最后将生成的检测分类器以xml方式存储,保存到程序当前目录下的FACE-SVM-HOG.xml中.
图8 基于SVM的检测优化Fig.8 SVM based detection optimization
(4)分析模块.结合生成的检测分类器对输入图像进行检测,在与第2部分提出的改进AdaBoost算法的结果进行对比,分析检测结果.
进行基于HOG特征的SVM人脸检测实验,检测结果如图9.
图9 改进AdaBoost算法与SVM优化人脸检测结果Fig.9 Face detection results of the improved AdaBoost and SVM optimized algorithms.
图9左边为改进前AdaBoost算法,右边为SVM优化后,结果表明利用基于HOG特征的SVM人脸检测,无论对于单人脸图像还是多人脸图像,在保证检测率的基础上误检率几乎降至0.
与改进的AdaBoost算做作实验对比,定量比较结果如表3.
表3 定量比较结果Tab.3 Quantitative comparison results
分别对单人脸和多人脸图像进行检测,测试结果显示,对于单人脸图像,使用SVM算法的检测率可能达到100%,误检率为0;对于多人脸图像,SVM算法能将31张人脸正确检出25个,检测率可达81%,误检为0,较之改进的AdaBoost算法,更显稳定性.
本文提出一种新的快速人脸检测方法,该方法基于AdaBoost结合SVM的检测方法对人脸进行检测,通过对类Haar特征增加约束,有效选取人脸特征,减少整体特征数;利用SVM结合HOG特征对检测结果进行优化,提高人脸检测的正检率,降低误检率,从而得到快速高效的人脸检测结果.在检测效果和运行速度上为后续的人脸识别及人体跟踪奠定了坚实的基础.
[1]Yang M H,Kriegman D J,Ahuja N.Detecting faces in images:A survey[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2002,24(1):34-58.
[2]Freund Y,Schapire R E.A Decision-theoretic generalization of on-line learning and an application to boosting[J].Journal of Computer and System Sciences,1997,55(1):119-139.
[3]Viola P,Jones M.Rapid object detection using a boosted cascade of simple features[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Washington,
DC:IEEE Computer Society,2001:511-518.
[4]Jang J S,Kim J H.Fast and robust face detection using evolutionary pruning[J].IEEE Transactions on Evolutionary Computation,2008,12(5):562-571.
[5]Huang Cang,Ai Haizhou,Li Yuan,et al.High-performance rotation invariant multiview face detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2007,29(4):671-686.
[6]Ge Kaibiao,Jing Wen,Fang Bin.AdaBoost algorithm based on MB-LBP features with skin color segmentation for face detection[C]//Proceedings of the 2011 International Conference on Wavelet Analysis and Pattern Recognition.Guilin:IEEE,2011:10-13.
[7]Rahman M H,Das T,Sarnaker M.Face detection and sex identification from color images using adaBoost with SVM based component classifier[J].International Journal of Computer Applications,2013,76(3):1-6.
[8]Vapnik V.The nature of statistical learning theory[M].New York:Spring-Verlag,1995.
[9]Osuna E,Freund R,Girosi F.Training support vector machines:an application to face detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.San Francisco:IEEE,1997:130-136.
[10]Sung K K,Poggio T.Example-based learning for viewbased human face detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,20(1):39-51.
[11]Heiselet B,Serre T,Pontil M,et al.Component-based face detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recogniton.Kauai:IEEE,2001,1: 657-662.
[12]Buciu L,Kotropoulos C,Pitas I.Combining support vector machines for accurate face detection[C]//Proceedings of International Conference on Image Processing.Thessaloniki: IEEE,2001(1):1054-1057.
[13]Iwan S,Ivanna K T.A frontal pose face detection and classification system based on Haar wavelet coefficients and support vector machine[J].International Journal of Information and Electronics Engineering,2011,1(3):276-280.
[14]Wu Jianxin,Liu Nini,Geyer C,et al.C4:A real-time object detection framework[J].IEEE Transactions on ImageProcessing,2013,22(10):4096-4107.
[15]Wei Yun,Tian Qing,Guo Teng.An Improved Pedestrian detection algorithm integrating haar-like features and HOG descriptors[J].Advances in Mechanical Engineering,2013,5: 546206.
Fast Face Detection Based on Improved AdaBoost and SVM
SHAN Yuan-yuan1,WANG Fa-sheng1,2,LI Xu-cheng1,2,LU Ming-yu1
(1.School of Information Science and Technology,Dalian Maritime University,Dalian 116026,China;2.Deptartment of Computer Science and Technology,Dalian Neusoft University of Information,Dalian 116023,China)
AdaBoost-based face detection method has some disaduantages such as long training time and high false detection rate.This paper proposed some improvement strategies to improve the detection performance.First,we add Haar-like features constraints to decrease the training feature number and ensure the efficiency of the selected feature.Second,we use HOG feature based SVM to optimize the improved AdaBoost algorithm by increasing the positive detection rate and reducing the false detection rate.Experimental results demonstrate that the improved AdaBoost algorithm could shorten the training and detection time.By combining the SVM algorithm,the false face detection rate can be greatly decreased,which consequently improves the positive detection rate and facilitates fast and efficient face detection.
face detection;adaBoost algorithm;SVM;HAAR-like feature;HOG
TP18
A
(责任编辑 苏晓东)
1004-8820(2015)03-0204-09
10.13951/j.cnki.37-1213/n.2015.03.010
2014-09-17
国家自然科学基金资助项目(61300082);大连市科技计划项目(2013A16GX115).
单园园(1984-),女,河南南阳人,硕士研究生.
鲁明羽(lumingyu@dlmal.edu.cn),教授,博士,从事机器学习、数据挖掘等方向的研究.