安大海++蒋砚军
摘要:随着移动设备的发展,人脸识别技术在移动端得到极为广泛的应用。移动设备采集的图像其背景和光照条件等特征更容易发生变化,进而影响人脸识别的准确率。本文提出了一种基于BP神经网络的人脸识别系统,并通过对人脸图像的预处理来消除背景及光照条件等特征对人脸识别准确率的影响,系统对人脸图像进行直方图平衡,滤波,椭圆遮罩等方式进行处理,提高了人脸识别的准确率。本文搭建了真实的人脸识别系统,并对图像预处理工作能提高人脸识别准确率的有效性进行了验证。
关键词:人工智能;人脸识别;图像预处理;BP神经网络
中图分类号:TP391.41
文献标识码:A
DOI:10.3969/j.issn.1003-6970.2015.12.018
本文著录格式:安大海,蒋砚军.基于BP神经网络的人脸识别系统[J]软件,2015,36(12):76-79
0 引言
随着现代计算机技术的发展,人脸识别技术在安全验证、人机交流、公安系统等方面得到了』‘泛的使用,并且在视频会议、档案管理、医学医疗等方面也发挥着很大的作用。所以,人脸识别技术已经逐渐成为人们在人工智能领域所研究的重点课题。人脸识别主要是分为两个方面:一是人脸检测,指的是在图像中检测是否存在人脸,如果存在人脸,定位出人脸的位置;二是人脸识别,指的是从数据库中已经存在的人脸样本中确定出当前人脸图像的身份。
人脸识别系统的原理是首先在捕捉到的图像中进行人脸识别,之后将该图像进行人脸的具体身份匹配,通过BP神经网络建模,完成人脸识别。当前移动设备越来越多,移动互联网时代下的人脸识别技术场景也越来越多。在移动设备上捕获的人脸图像会出现背景的变换以及光照的变化。背景及光照的变化会影响人脸识别的准确率。
针对上述问题,本文提出了一种人脸图像预处理的方法,用来解决背景及光照对于人脸识别准确率的影响。同时基于BP神经网络实现了人脸识别系统,验证了方法的有效性。
1 人脸图像的预处理
1.1 人脸及人眼检测
人脸检测能在一幅图像中定位到一个至多个的人脸区域,主要运用的算法是viola-jones人脸检测算法。viola-jones人脸检测算法主要有三个要点:Haar-like特征,AdaBoost算法和Cascade结构。Haar-like特征利用积分图像快速的计算矩形区域的差分信号;AdaBoost算法选择区分能力强的特征结合Stump函数做弱分类器,然后把若干这些弱分类器线性组合在一起增强分类性能;Cascade结构做早期决策,来快速抛弃明显不是人脸的扫描窗口。
通过viola-jones人脸检测算法快速定位图像中的人脸图像,同时基于人眼做兴趣区域处理,排除掉背景对于人脸识别过程中的处理.具体处理流程如下:首先在图片中定位人脸,如图1所示,然后基于人眼的识别,截取人脸面部特征图像,如图2所示。
1.2 人脸及人眼检测
人脸图像经过基于人眼识别的兴趣区域处理之后,可以获得人眼部分的人脸特征截图,对于这些特征图像进行预处理,可以减少光照和背景对于人脸识别准确率的影响。
首先对图像进行直方图平衡化处理(HistogramEqualization),处理后的图像有更高的对比度,扩展了图像灰度值的动态范围,使得图像更加清晰,如图3所示;然后对图像进行滤波(smoothing)处理,减少图像的噪点,如图4所示;最后对图像做椭圆遮罩(elliptical mask)处理,在原有图像中屏蔽掉背景,如图5所示。
2 BP神经网络
2.1 BP神经网络的构建
BP神经网络是一种按误差逆传播算法训练的多层前馈网络,可以分为三层,分别为输入层、隐藏层、输出层。层与层之间采用全连接映射,同层之间的神经单元之间没有连接,这样经过层层处理,可以实现将输入的向量X=(xl,x2...xn)非线性映射到向量Y=(yl,y2...yn)。将BP神经网络用语人脸识别时,通常采用三层的神经网络结构,即一层输入层,一层隐藏层和一层输入层。如下图6所示:
神经网络中的每个神经单元是一个单独的感知器,感知器可以将一个实数值向量作为输入,计算这些输入的线性组合,然后如果结果大于某个阀值,就输出1,否则输出-1。本论文中的感知器采用sigmoid压缩函数,输入向量经过sigmoid函数计算之后进行输出,可以压缩输出值,使得整个神经网络可以较快的进行收敛。Sigmoid函数计算公式如下:
2.2 冲量项的引入
BP神经网络在采用反向传播算法进行收敛训练时,因为采用的梯度下降算法,可能出现收敛较缓慢或者落入局部最优解的情况。将梯度下降算法理解为球沿误差曲面滚下,那么增加的冲量项的作用,就是使得这个小球从一次迭代到下一次迭代时以同样的方向滚动。冲量有时会使这个球滚过误差曲面的局部最小值。同时因为它也有增大搜索步长的效果,从而可以加快收敛。冲量项引入后将2.1章节中的反向传播算法的d步骤公式替换如下:
3 系统设计与实现
3.1 人脸识别系统设计
人脸识别系统主要分为三个模块,第一个模块是图像采集预处理模块,采用opencv,可以直接利用摄像头进行图像的采集,同时该模块应用ROI算法,对图像进行预处理,削弱背景以及光照条件对识别率的影响。第二个模块是神经网络训练模块,该模块通过对训练数据的处理,构建BP神经网络模型,完成权值的确定。第三个模块是人脸识别模块,该模块将图像采集模块采集得到的图像输入到已经训练完成的BP神经网络模型中进行计算,将结果用欧氏距离进行判定,得到识别结果。整个系统的结构图如图8所示:
3.2系统实验
本系统实验的实验数据来源为opencv控制笔记本摄像头采集的全班同学人脸照片,人数共计45人,每人人脸图像采集数为10张,其中8张为训练数据集,2张为识别结果测试数据集,训练数据集共计360张,结果测试数据集共计90张。每张人脸图像的像素为28*23,共计644个像素点。采集的人脸图像均通过图像预处理模块进行了基于兴趣区域的处理,处理后的人脸数据集作为测试数据。
该实验采用的硬件平台为OS:WIN7x64版本;CPU:Intel(R)Core(TM)i3-2350M CPU@2.30GHz;RAM:8GB。
该系统实验的神经网络模型分为三层,第一层输入层由644个神经单元组成,每个神经单元对应一个像素点输入;第二层隐藏层采用了20个神经单元,第三层输出层共计6个神经单元。神经网络构建完成后采用图6所示的反向传播算法对神经网络进行训练,得到用于人脸识别的神经网络模型。
在对人脸图像进行时识别时对于输出层输出的结果,采用欧式距离做判定。例如6个输出层神经单元输出的结果是0.1,0.2,0.1,0.2,0.9,将该结果与所有45位同学的标准输出依次计算欧式距离,取距离最小的目标为对应的判定结果。经计算与1号同学距离最小,故判定该人脸图像是1号同学人脸。
3.3 实验结果分析
本文首先对于未经图像预处理模块的数据集进行了测试,得到如图9所示的结果。然后对经过了图像预处理模块的数据集进行了测试,得到如图10所示的结果。可以看到经过图像预处理模块的结果好于未处理的结果,识别准确率约提升了6%。
4 结论
本文给出了一种基于BP神经网络设计的人脸识别系统。本文首先介绍了图像兴趣区域处理和BP神经网络的基本概念,然后基于python语言实现了BP神经网络,并在实验室环境中真实的搭建了整个人脸识别系统。最后通过实验验证了图像兴趣区域处理对于人脸识别正确率的影响。本系统是BP神经网络模型应用于人脸识别领域的典型范例。后续的工作将针对神经网络的增量学习进行研究,使得该系统可以实时的对于新增的人脸身份进行识别。