APP下载

基于Adaboost的人脸识别眨眼检测*

2016-04-20任安虎

计算机与数字工程 2016年3期
关键词:人脸检测人脸识别分类器

任安虎 刘 贝

(西安工业大学电信工程学院 西安 720021)



基于Adaboost的人脸识别眨眼检测*

任安虎刘贝

(西安工业大学电信工程学院西安720021)

摘要传统的二维人脸识别方法不能识别来访者是真实的人还是人的图片,通过检测眨眼可以完成对来访者的活体验证,为人脸识别提供一道安全的屏障。基于Adaboost算法训练出睁眼和闭眼分类器,在检测到来访者人脸的基础上,根据先验经验对人眼区域进行预估,在预估区域中使用睁眼和闭眼分类器进行检测。实验结果表明,该眨眼检测方法能够实时地对视频图像中的人眼状态进行有效检测,为下一步人脸的正确识别打下了良好基础。

关键词Adaboost算法; 人脸检测; 人脸识别; 分类器; 眨眼检测

Eye Blinking Detecting in Face Recognition Based on Adaboost

REN AnhuLIU Bei

(Institute of Electronic Information Engineering, Xi’an Technology University, Xi’an720021)

AbstractThe traditional two-dimensional face recognition method can not identify the visitor is real person or its pictures. It provides a safty barrier for the face recognition by detecting eye blinking which verifies the visitor alive. A practical eye blinking detecting method is proposed by estimating eye area on the face and training classifier based on Adaboost algorithm to detect eye area. Experimental results show that it has a performance of high detection precision and fast as real-time on video images, which lays a good foundation for the face recognition.

Key WordsAdaboost algorithm, face detection, face recognition, classifier, eye blinking detecting

Class NumberTP393.03

1引言

生物特征识别技术辨识的是人身的固有特征,不需要身外的其他标识物,而人脸识别作为生物特征识别中的重要的手段,显示出重要的学术价值[1]。人脸识别技术的安全可靠性较高,可以应用于多种场合,如档案管理、刑事侦查、人机交互、门禁监控、POS交易等[2]。

人脸识别是将静态图像或视频图像中检测出的人脸图像与数据库中的人脸图像进行对比,从中找出与之匹配的人脸的过程,以达到身份识别与鉴定的目的,它是同属于生物特征识别领域和人工智能领域的一个课题[3]。实验表明,二维人脸识别算法不能判断来访者是真实的人还是人的照片。通过摄像头实时检测来访者眼睛的状态,利用连续5s检测来访者是否眨眼来判断活性。基于Adaboost算法[4~5]训练出睁眼和闭眼分类器,在检测到来访者人脸的基础上,根据先验经验对人眼区域进行预估,在预估区域中使用睁眼和闭眼分类器进行检测。在实际实验中,该眨眼检测方法有很强的实时性和较好的准确性。

2OpenCV实现人脸检测

OpenCV是intel开源发行的跨平台计算机视觉库[6],可以运行在Linux、Windows和Mac OS操作系统上,包含多个C/C++函数的跨平台的中、高层API,具备强大的图像和矩阵运算能力,可以大大减少开发者的编程工作量,有效提高开发效率和程序运行的可靠性。OpenCV库中已经生成有人脸分类器“haarcascade_frontalface_alt2.xml”,通过使用哈尔级联脸部检测器可以很好地检测图像中的正面人脸。图1中的矩形框是视频中标识出的人脸区域。

图1 标识出的人脸区域

人脸检测的关键代码如下:

CvHaarClassifierCascade* cascade=haarcascade_frontalface_alt2.xml;

double scale = 2.0;

IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 );

IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),

cvRound (img->height/scale)), 8, 1 );

cvCvtColor( img, gray, CV_BGR2GRAY );//把彩色图像img转化为灰度图像gray

cvResize( gray, small_img, CV_INTER_LINEAR ); //采用线性插值的方法调整gray图像和 small_img相匹配

CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, 1.2, 2, 0, cvSize(30, 30) );

//对small_img进行检索,返回的矩形框序列存放在faces

for( i = 0; i < (faces ? faces->total : 0); i++ )

{ CvRect* r = (CvRect*)cvGetSeqElem( faces, i );

//获取每一个寻找到的物体的矩形框,一共找到faces->total个

CvPoint rectP1, rectP2;

rectP1.x = cvRound(r->x * scale);

rectP1.y = cvRound(r->y * scale);

rectP2.x = cvRound((r->x + r->width) * scale);

rectP2.y = cvRound((r->y + r->height) * scale);

cvRectangle(img, rectP1, rectP2, colors[i%8],1 , 8, 0);

//在img图像内绘制一个以P1、P2为对角线端点线条颜色为colors[i%8]的的矩形 //3 是线的粗细,负数时表示填充,8线类型,0表示小数点位数}

3基于Adaboost的眨眼检测

3.1Adaboost算法与Haar型特征

Adaboost检测算法是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类能力一般的分类器(弱分类器),然后把这些弱分类器迭加起来,构成一个更强的最终分类器(强分类器[7])。以检测睁眼为例,Adaboost睁眼检测器结构如图2所示。

图2 睁眼检测器结构图

Adaboost具体算法如下:

1) 给定n个训练样本图像(x1,y1),(x2,y2),…,(xi,yi),…,(xn,yn)的训练集,xi是第i个样本图像,yi是类别标识:yi=0或1分别代表负样本(非睁眼)和正样本(睁眼);

图3 Haar型特征

3.2选取训练样本和训练分类器

训练目标分类器需要构造的正样本和负样本图像集,正负样本的选取对训练分类器的准确度有着决定性的作用[9]。选取的样本是从AR、ORL、BIOID等图像库[10]中切割的图像,样本如图4所示,图(a)为睁眼分类器所选取的正负样本,图(b)为闭眼分类器所选取的样本,所有的正样本的图像大小归一化为24×24,负样本的图像大小可以不归一化,只要比正样本的24×24大即可。

图4 正负样本示例

得到正负样本集之后,Adaboost算法的大部分时间消耗在对目标分类器的训练上。在Dos环境下,用OpenCV中的“opencv_creatsmaples.exe”和“opencv_haartrainning.exe”可以将正负样本训练出目标分类器,训练好的分类器能够达到很好的实时性和准确度,图5为在Dos环境下训练目标分类器的中间过程。选取训练睁眼分类器的正样本1309张,负样本2162张;闭眼分类器的正样本912张,负样本1911张。

图5 Dos环境下训练分类器

3.3优化眨眼检测

眨眼检测在人脸区域中进行,一张包含人脸的图像中,除了眼睛区域,其他背景信息都可以归入负样本集中[11]。在人脸区域内,根据先验知识,对人眼位置进行区域预估,在预估区域内进行人眼状态的检测,能大大减少非眼睛区域对检测结果的影响,降低误检率,提高检测的准确率,同时减少检测所耗费的时间。

人脸是一个近似椭圆的几何图形,脸部的各个器官分布规则,所以在进行眨眼检测前可以先对人脸区域进行特定的分割,划出人眼候选区域,然后利用分类器再对候选区域进行检测。划分以眉毛以下、鼻孔以上脸部区域作为人眼候选区域,从几何上来看,人眼区域为:H/2

图6 人眼候选区域

4实验与结果分析

实验通过摄像头实时拍摄的视频检测人脸信息和验证眨眼识别的有效性。视频图像分辨率均为640×480,帧率25帧/s,持续监测时间200s,总帧数5000帧,其中每帧图像中均包含人脸。检测结果如图7所示,其中第一行图像是单独使用睁、闭眼分类器进行检测,可以看出在复杂背景下,睁、闭眼分类器的检测结果误检比较多,这是因为正负样本选取数量较少;第二行图像使用的是优化的眨眼检测方法进行检测,从图7中可以看出,优化后的检测效果误检率大大降低,并且有很好的准确度。

图7 两种检测方法的效果

两种方法的检测时间如表1所示,从表中可以看出优化后的眨眼检测方法比单独使用睁闭眼分类器检测有更快的检测速度,优化后的眨眼检测方法的平均检测速度达到25帧/s,在实际应用中满足摄像头实时检测的目的,而基本不会漏检帧数。

表1 两种方法检测耗时

为了分析优化后检测眨眼方法的性能,本文对多帧图像的检测结果进行统计,结果如表2所示。通过检测来访者的眨眼情况来判断接受人脸识别的是平面人脸的图像还是活生生的人,这种方法可以避免自己的人脸信息被不法分子利用,有利于个人的财产安全和社会安定。

表2 优化方法的检测结果

5结语

基于Adaboost算法的人脸识别眨眼检测是一种较为实用的检测方法。通过训练睁眼以及闭眼两种目标分类器,实现了来访者眼睛状态的检测,并且通过检测人脸对人眼区域进行区域预估,缩小了睁、闭眼分类器的搜索范围,不仅降低了误检率同时还提高了检测速度。经过实验验证该方法具有较高的准确性,同时在实验设备中平均处理速度可达到25帧/s,满足了实时检测的要求,同时也为下一步的人脸识别打下了良好的基础。

参 考 文 献

[1] 梁路宏,艾海舟,徐光佑,等.人脸检测研究综述[J].计算机学报,2002,25(5):449-458.

LIANG Luhong, AI Haizhou, XU Guangyou, et al. A Survey of Human Face Detection[J]. Chinese Journal of Computers,2002,25(5):449-458.

[2] 何东风,凌捷.人脸识别技术综述[J].微机发展,2003,13(12):75-78.

HE Dongfeng, LING Jie. Face Recognition: A Survey[J]. Computer Technology and Development,2003,13(12):75-78.

[3] ZHAO W, CHELLAPPA R, PUILLIPSPJ, et al. Face recognition: a literature survey[J]. ACM Computing Surveys,2003,35(4):399-458.

[4] Ma Yong, Ding Xiaoqing, Wang Zhenger, et al. Robust precise eye location under probabilistic framework[C]//Seoul, Republic of Korea:[s.n.],2004:339-344.

[5] 赵江,徐鲁安.基于AdaBoost算法的目标检测[J].计算机工程,2004,30(2):78-83.

ZHAO Jiang, XU Lu’an. Object Detection Based on AdaBoost Algorithm[J]. Computer Engineering,2004,30(2):78-83.

[6] Mathew Price. Using the Intel OpenCV Library[M]. Ebisaw a: pupils and nostrils,2004.

[7] Yoav Freund, Robert E Schapire. 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.

[8] Viola P, Jones M Robust. Real-time object detection[J]. International Journal of Computer Vision,2004,54(2):137-154.

[9] 赵雪竹,王秀,朱学峰.基于Adaboost算法的人眼检测中样本选择研究[J].计算机技术与发展,2010,20(2):133-137.

ZHAO Xuezhu, WANG Xiu, ZHU Xuefeng. Research of Samples Selection in Eye Detecion Based on Adaboost Algorithm[J]. Computer Technology and Development,2010,20(2):133-137.

[10] Martinez A M, Benavente R. The AR Face Database[R]. Barcelona, Spain:[s.n.],1998:1-4.

[11] 王奕直,周凌霄,孔万增.基于Adaboost算法的疲劳驾驶人眼检测[J].杭州电子科技大学学报,2013,9(4):35-38.

WANG Yizhi, ZHOU Lingxiao, KONG Wanzeng. Eye Blinking Detecting in Driving Fatigue Based on Adaboost[J]. Journal of Hangzhou Dianzi University,2013,9(4):35-38.

中图分类号TP393.03

DOI:10.3969/j.issn.1672-9722.2016.03.030

作者简介:任安虎,男,硕士,副教授,研究方向:通信与信息处理。刘贝,男,硕士研究生,研究方向:嵌入式系统与图像处理。

基金项目:西安工业大学校长基金(编号:XAGDXJJ1214)资助。

收稿日期:2015年9月8日,修回日期:2015年10月20日

猜你喜欢

人脸检测人脸识别分类器
人脸识别 等
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
基于实例的强分类器快速集成方法
基于人脸特征定位的SNS网站应用组件研究与设计
基于Android平台的人脸识别系统设计与实现
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
基于Matlab的人脸检测实验设计
基于JSeg和显著性检测的服装图像分割方法