APP下载

基于AdaBoost算法的人脸检测系统设计

2018-11-17吴文俊殷恒辉

软件 2018年10期
关键词:级联人脸分类器

吴文俊,殷恒辉,陈 麟



基于AdaBoost算法的人脸检测系统设计

吴文俊,殷恒辉,陈 麟

(上海理工大学 光电信息与计算机工程学院,上海 200093)

针对复杂环境下的人脸检测,设计了能够精确识别出人脸区域的人脸检测系统。该系统基于一种优秀的机器学习算法AdaBoost, 该算法理论基础研究深厚, 在实际场景中运用具有良好的效果。介绍了AdaBoost算法的原理及分类器训练方法,基于OpenCV图像库和Qt图形界面库开发了人脸检测系统。仿真实验结果表明,系统界面友好,复杂背景下检测人脸,该算法识别准确率高,计算复杂度较低、满足系统实时响应要求。

AdaBoost;人脸检测;cascade分类器;机器学习

0 引言

人脸检测(face detection)是一种在数字图像中确定人脸的位置和大小的计算机技术,是模式识别和计算机视觉领域的重要研究方向之一。它可以检测出脸部特征,例如眼睛和鼻子的位置和轮廓,并忽略诸如大楼、汽车和身体等其他任何东西。人脸检测可用于生物特征识别,通常作为人脸识别系统的一部分。人脸检测作为人脸信息处理中的一项重要技术,广泛应用于安防系统,身份识别,自动驾驶等方面。一些最新的数码相机使用人脸检测来自动对焦。近年来研究人员提出了许多人脸检测方法, 其中由Paul Viola和Michael Jones在2001年最早提出的AdaBoost算法,是第一个实时的人脸检测算法,从根本上解决了检测的速度问题,同时具有较好的识别效果[1]。

1 图像预处理

图像预处理是对人脸图像进行一些数据方面的处理,使用常见的摄像头获取图像时,得到的图片质量往往并不完美,这时就需要使用图像预处理技术增强图像质量,同时去除噪声干扰,以方便下一步人脸检测检测。本文采用了图像增强,滤波等图像预处理技术。

1.1 图像增强

直方图均衡化[2-3]又可以称作为灰度均衡化,是指通过某种灰度映射使输入图像转换为在每一灰度级上都有近似相同的像素的输出图像(即输出的直方图是均衡的)。同时视角、光照、噪声、方位等其他原因会影响图像的质量,该类图像与其他类图像之间的差距有时小于同一类图像的不同变形体之间的差距,这样就会减少图像识别的准确程度。经过均衡化处理后的图像,像素会均匀分布在灰度级上,可以消除同类图像不同变形体之间的外观差异。这样的图像对比度较高,且具有较大的动态范围。

图像经过直方图均衡化处理后的效果和它的图像直方图变化情况如图1所示。

1.2 图像滤波

滤波是信号处理中的一个概念,是将信号中的噪声滤除的操作。图像信号在采集、传输和保存等不同阶段均会遭受不同因素的干扰,从而使图像遭受噪声污染,由此对图像特征提取、目标检测等造成严重影响。所以图像滤波是图像处理中一个必不可少的环节,对于提高人脸检测的精度具有重要意义。

图1 直方图均衡化处理

2 AdaBoost算法

AdaBoost算法使用不同的数据集训练同一个弱分类器,根据训练结果确定最优弱分类器来构成强分类器,最终将强分类器级联起来。根据理论证明,如果每个弱分类器的分类精度高于随机猜测,弱分类器的个数接近无穷,强分类器分类的错误率将趋于零。

图2 噪声滤波处理

根据以上描述,我们知道构造分类器的步骤如下:

(1)根据Haar-like特征训练多个弱分类器

(2)使用AdaBoost算法将多个弱分类器组合成一个强分类器

(3)最终的分类器是由多个强分类器级联而成

2.1 人脸特征提取

对一幅图像进行人脸检测,首先需要确定待测图像中是否包含脸部图像,因此需要选择某种图像特征对人脸图像进行描述,这些特征应该具有区分人脸和非人脸的能力,本文基于Haar 特征来检测人脸。Haar特征是一种反映图像灰度变化的一种特征,它通过对像素分模块求差值来得到。Haar特征包括以下四类:中心特征、边缘特征、对角线特征以及线性特征,用黑白两种矩形框表示特征模板,在特征模板内用黑色矩形区域的像素减去白色矩形区域的像素来表示这个模版的特征值。Haar-like特征利用积分图像快速的计算矩形区域的差分信号[5],因该算法运算效率高、且完成图中每个特征值的计算只需一次遍历,所以完成计算的时间是固定的。Haar特征是一种矩形特征,它的显著特点在于特征提取速度快,常用的形式由5种,其原型如图3所示。

图3 Haar特征模板

双眼区域的像素值低于脸颊,眼睛的灰度比鼻梁的低,Haar特征模板应用于人脸检测通常描述人脸图像局部的灰度变化情况,如图4所示[6]。

图4 Haar特征模板在人脸上的匹配

2.2 训练弱分类器

通过不断对样本的训练,找出精度最高的弱分类器。

2.3 训练强分类器

AdaBoost算法属于迭代算法,每个训练样本的权重表示为其被弱分类器选入训练集的概率。如果当此样本被错误分类,在下一轮的训练中,此样本被选中的概率就会增加。[8]该算法的详细实现过程如下:

(1)对样本权重进行初始化,每个样本被赋予相同的权重。

(c)选择拥有最小错误率的弱分类器,将其组合到强分类器中;

(d)再次更改训练样本的权重:

(3)经过N次迭代后,将识别率最高的N个弱分类器构成一个强分类器:

对一副图像进行人脸检测,构造强分类器的过程类似让它的弱分类器进行投票,根据投票的结果,对其进行加权求和,将平均投票结果与加权求和的结果进行对比,最终得到分类结果[9]。

2.4 训练级联分类器

多个强分类器通过级联组成级联分类器,获取图像中到的所有子窗口,将数据发送到级联分类器来进行检测。如果级联分类器的某一级未能识别该子窗口为人脸,则去除子窗口; 如果子窗口成功通过级联分类器的每一级,则将其区分为人脸,从而可以执行后续处理[10]。级联分类器是一个递减决策树的结构,第一层分类器检测到正确的窗口,则运行第二层分类器,第二层的正例触发第三层,依此类推。级联分类器的类似于金字塔结构,使用级联分类器,可以很好得检测出人脸。

3 人脸检测系统设计

OpenCV是一个跨平台的计算机图像库,是由Intel公司发起并参与开发,用C/C++语言编写的计算机视觉类库。OpenCV可用于物体识别、实时的图像处理以及计算机视觉等领域。它具有跨平台、开源、运行速度快等优点。本设计采用OpenCV图像库加快系统开发。

3.1 系统界面设计

基于Qt图形界面框架搭建的人机界面如图5所示,Qt是一个图形界面程序开发框架,广泛用于开发计算机应用程序,它具有跨平台,开源等特点。该系统主要包含3个功能区,菜单区、图像显示区和检测区。菜单区主要进行模式的选择和载入图片等操作,图像显示区用来显示载入的图片或者摄 像头获取的动态图像,最终检测到的人脸显示在检测区。

3.2 系统运行流程

该系统可基于2种模式进行人脸识别,一种是静态图像的人脸检测,另一种是在动态图像中对人脸进行检测。静态图像的人脸检测主要包含以下几个过程,即加载训练好的分类器、检测图像人脸和显示检测结果到检测区,具体的实现过程如图6 所示。

图5 人脸检测系统界面

4 实验与分析

本文使用静态人脸图片和FDDB人脸数据集进行测试,首先对静态图片进行测试,加载带有人脸的图片,检测结果如图7所示。图7中算法正确检出全部人脸,左图用时282 ms,右图用时187 ms。说明在复杂环境下进行人脸检测,该检测器具有较好的实时性与较高的准确性。

图6 基于静态图像的人脸检测流程

图7 人脸检测结果

对FDDB人脸数据集进行测试,FDDB是进行人脸检测评测的权威平台之一,包含2845张图片。数据集范围包括:不同环境、不同姿态、存在旋转和遮挡等状况的图片,同时包括灰度图片和彩色图片。为了验证本文算法的正确识别率,将该算法与基于肤色模型的人脸检测算法的识别率进行比较,选取数据集中部分图片进行测试,检测结果如表1所示。

表1 FDDB人脸检测结果

Tab.1 Results of FDDB face detection

5 结语

本文基于AdaBoost算法设计了人脸检测系统,采用GUI框架构建良好的人机界面,详细阐述了AdaBoost算法的原理,剖析了算法的实现过程。基于OpenCV图像库编程实现了人脸检测系统,通过实验验证了算法的优点和不足之处。AdaBoost人脸检测算法具有识别准确率高、响应速度快、实时性好等优点,其检测速度不逊于目前公布的最快的算法[11]。实验结果表明,用OpenCV实现的AdaBoost检测系统简单实用,开发周期短,应用前景广阔。

[1] 郭磊, 王秋光. Adaboost人脸检测算法研究及OpenCV实现[J]. 哈尔滨理工大学学报, 2009, 14(05): 123-126.

[2] 张铮, 王艳平, 薛桂香. 数字图像处理与机器视觉[M]. 北京: 人民邮电出版社, 2010.

[3] 孙文荣, 周先春, 嵇亚婷. 基于直方图均衡化、PCA和SVM算法的人脸识别[J]. 软件, 2014, 35(08): 11-15.

[4] 毕雪芹, 惠婷. 基于肤色分割与AdaBoost算法的人脸检测[J]. 国外电子测量技术, 2015, 34(12): 82-86.

[5] 安大海, 蒋砚军. 基于BP神经网络的人脸识别系统[J].软件, 2015, 36(12): 76-79.

[6] 柯丽, 温立平. 改进的AdaBoost人脸检测方法[J]. 光电工程, 2012, 39(01): 113-118.

[7] 于微波, 赵琳, 佟冬. 基于Adaboost人脸检测算法[J]. 吉林大学学报(信息科学版), 2014, 32(05): 539-544.

[8] Paul Viola, Michael J. Jones. Robust Real-Time Face Detection[J]. International Journal of Computer Vision, 2004, 57(2): 137-154.

[9] 李晶惠, 叶学义, 夏胡云, 叶枫. 基于“大T”型区域的AdaBoost人脸检测算法[J]. 软件导刊, 2017, 16(10): 22-26.

[10] 陈志恒, 姜明新. 基于openCV的人脸检测系统的设计[J]. 电子设计工程, 2012, 20(10): 182-185.

[11] 孔凡芝, 张兴周, 谢耀菊. 基于Adaboost的人脸检测技术[J]. 应用科技, 2005(06): 7-9.

Design of Face Detection System Based on AdaBoost Algorithm

WU Wen-jun, YIN Heng-hui, CHEN Lin

(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

For face detection in complex environment, a face detection system which can accurately recognize the face region is designed. The system is based on an excellent machine learning algorithm, AdaBoost, which has a profound theoretical foundation and has a good effect in practical scenarios. This paper introduces the principle of AdaBoost algorithm and classifier training method, and developed face detection system based on OpenCV image library and Qt graphic interface library. Simulation results show that the algorithm has high recognition accuracy, low computational complexity and meets the real-time response requirements of the system.

AdaBoost; Face detection; Cascade classifier; Machine learning

TP391. 41

A

10.3969/j.issn.1003-6970.2018.10.028

吴文俊(1993-),男,上海理工大学光电信息与计算机工程学院硕士研究生,主要研究方向:信号与信息处理;殷恒辉(1993-),男,上海理工大学光电信息与计算机工程学院硕士研究生,主要研究方向:信号与信息处理;陈麟(1980-),男,上海理工大学光电信息与计算机工程学院教授,主要研究方向:信号与信息处理。

吴文俊,殷恒辉,陈麟. 基于AdaBoost算法的人脸检测系统设计[J]. 软件,2018,39(10):145-149

猜你喜欢

级联人脸分类器
有特点的人脸
三国漫——人脸解锁
BP-GA光照分类器在车道线识别中的应用
级联LDPC码的STBC-OFDM系统
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
基于级联MUSIC的面阵中的二维DOA估计算法
马面部与人脸相似度惊人
基于LLE降维和BP_Adaboost分类器的GIS局部放电模式识别
LCL滤波器在6kV级联STATCOM中的应用