您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于PCA和BP神经网络的人脸识别方法
基于PCA和BP神经网络的人脸识别方法摘要:基于PCA和BP神经网络的人脸识别方法是针对PCA方法中存在的问题和它对未训练过的样本识别率低的缺点而提出的。该方法在预处理的基础上,利用PCA处理人脸特征,提取其中分类能力强的特征,实现在识别精度不变的情况下,有效的去除冗余信息;然后将约简后的属性输入到神经网络进行规则提取,利用神经网络非线性映射和并行处理的特点,增强对人脸图像识别的泛化能力。实验证明,使用该方法在识别率上有一定的提高。关键词:人类识别、BP神经网络、PCA、特征提取引言人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。人脸识别是一项热门的计算机技术研究领域,可以将人脸明暗侦测,自动调整动态曝光补偿,人脸追踪侦测,自动调整影像放大;它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。进行人脸图像识别研究具有很大的使用价值。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还没有通用成熟的人脸自动识别系统出现。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。使得同一个人,在不同的环境下拍摄所得到的人脸图像不同,有时更会有很大的差别,给识别带来很大难度。因此在各种干扰条件下实现人脸图像的识别,也就更具有挑战性。当前大多数人脸识别算法是基于统计的方法,如特征脸方法(PCA)、Fisher脸方法、奇异值分解方法、神经网络方法和支持向量机等,这些方法中影响较大的是Turk和Pentland提出的特征脸(EigenFace)方法即PCA方法。PCA是基于主元分析的特征提取,把所有的不同人脸的样本放在一起提取,以所有人的人脸样本最优重建为目的。因此,对于人脸样本之间的差异而言它存在着明显的缺陷,从这方面讲它来描述人脸识别的特征是不充分的。而且它对未训练过的样本识别率较低,所以我们可提出一种基于PCA和BP神经网络的人脸识别方法。1、系统设计的基本原理(1)PCA的基本原理主成分分析(PrincipalComponentAnalysis,PCA)或者主元分析。是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。计算主成分的目的是将高维数据投影到较低维空间。给定n个变量的m个观察值,形成一个n′m的数据矩阵,n通常比较大。对于一个由多个变量描述的复杂事物,人们难以认识,那么是否可以抓住事物主要方面进行重点分析呢?如果事物的主要方面刚好体现在几个主要变量上,我们只需要将这几个变量分离出来,进行详细分析。但是,在一般情况下,并不能直接找出这样的关键变量。这时我们可以用原有变量的线性组合来表示事物的主要方面,PCA就是这样一种分析方法。举一个例子来说,对于一个训练集,100个对象模板,特征是10维,那么它可以建立一个100*10的矩阵,作为样本。求这个样本的协方差矩阵,得到一个10*10的协方差矩阵,然后求出这个协方差矩阵的特征值和特征向量,应该有10个特征值和特征向量,我们根据特征值的大小,取前四个特征值所对应的特征向量,构成一个10*4的矩阵,这个矩阵就是我们要求的特征矩阵,100*10的样本矩阵乘以这个10*4的特征矩阵,就得到了一个100*4的新的降维之后的样本矩阵,每个特征的维数下降了。当给定一个测试的特征集之后,比如1*10维的特征,乘以上面得到的10*4的特征矩阵,便可以得到一个1*4的特征,用这个特征去分类。所以做PCA实际上是求得这个投影矩阵,用高维的特征乘以这个投影矩阵,便可以将高维特征的维数下降到指定的维数。(2)BP神经网络基本原理BP(BackPropagation)网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidelayer)和输出层(outputlayer)。人工神经网络是由简单的处理单元所组成的大量并行分布的处理机,这种处理机具有存储和应用经验知识的自然特性,它与人脑的相似之处概括为两个方面:一是通过学习过程利用神经网络从外部环境中获取知识;二是内部神经元用来存储获取的知识信息。BP神经网络是采用有教师学习算法的典型的多层前向神经网络。它具有强大的计算能力,能通过训练掌握学习样本蕴含的输入输出映射关系,在分类和预测当中都有着广泛的应用。图1单层前馈网络图2多层前馈网络2、系统设计思路(1)采用PCA+最邻近分类器来演示一个简单的人脸识别系统。(2)采用PCA+最邻近分类器针对ORL人脸数据库计算其识别率。(3)采用PCA+BP神经网络针对ORL人脸数据库来探索PCA维数,BP神经网络各参数对人脸识别率的影响。本设计主要介绍第三种设计方法,选取影响较大的特征脸方法,即PCA人脸识别方法进行研究,针对特征脸方法提取出的特征维数过高和姿态变化时泛化能力不强的缺点,提出一种PCA和神经网络相结合的人脸识别方法。该方法首先,运用PCA方法对人脸图像进行特征提取;然后,对PCA方法提取的特征按照属性重要度的大小进一步进行约简,只保留那些属性重要度比较大的属性;最后,将提取出的最终人脸特征输入神经网络进行训练和识别。样本矩阵开始求出协方差矩阵计算特征值特征值从大到小排序选出满足要求的前q个特征值计算对应特征向量投影矩阵初始化给定输入向量和期望输出求隐层输出层单元输出期望输出与实际输出偏差eE满足要求?计算隐层单元误差求误差梯度更新权值全部e满足Endnoyesyes图3PCA流程图图4BP神经网络流程图(1)基本流程:1)将原始人脸图像集A中的每幅图像进行尺寸归一化处理,得到归一化后的人脸图像集;2)利用经典PCA方法计算特征子空间以及每张人脸在特征子空间中的投影系数。其中特征子空间由按特征值大小进行降序排列的特征向量组成;3)按照重要度选择特征子空间中属性重要度大的特征主分量;4)将选择出的重要度大的特征主分量输入BP神经网络进行训练,直到神经网络收敛或满足停止训练的条件;5)识别过程。(2)人脸空间的建立假设一幅人脸图像包含N个像素点,它可以用一个N维向量PI表示。这样,训练样本库就可以用P(i=1,...,M)表示。协方差矩阵C的正交特征向量就是组成人脸空间的基向量,即特征脸。将特征值由大到小排列:λ1≥λ2≥...≥λr,其对应的特征向量为ku。这样每一幅人脸图像都可以投影到由u1,u2,...,ur张成的子空间中。因此,每一幅人脸图像对应于子空间中的一点。同样,子空间的任意一点也对应于一幅图像。(3)特征向量的选取虽然协方差矩阵Ω最多有对应于非零特征值的k(k远小于M)个特征向量,但是通常情况下,k仍然很大,而事实上,根据应用的要求,并非所有的特征向量都有需要保留,而特征空间投影的计算速度是直接与创建子空间所用的特征向量的数目相关,若考虑到计算时间的因素,可以适当的减去一些信息量少的特征向量,而且,去掉这些特征向量之后不一定不利于分类结果,有的情况下反而能够提高识别性能。(4)BP神经网络的算法BP学习算法实际包含了两类信号不同方向的传播过程,一类是施加输入信号由输入层经隐层到输出层,产生输出响应的“输入模式正向传播”过程;另一类是希望输出与实际输出之间的误差信号由输出层返回隐层和输入层,反向逐层修正连接权值和神经元输出阈值的“误差逆传播”过程。“输入模式正向传播”和“误差逆传播”过程反复交替进行网络训练,最终达到网络的全局误差向极小值收敛(即实际输出逐渐逼近希望输出)而结束学习过程。BP学习算法具体编程步骤:1.初始化;2.提供训练样本;3.输入模式正向传播过程计算;4.误差的逆传播过程计算;5.各层网络权值和阈值的修正计算;6.返回提供训练样本步骤重新计算直到全局误差E,或者达到最大学习次数结束学习;3、实验结果及分析1)PCA+最邻近分类器人脸识别系统实验中选取的图像经过简单的分类器识别后,都能进行正确的识别。在使用该系统时,只需测试者提供三张头像图片,将其压缩成与原数据库图片相同大小,然后2张放入训练数据库,1张用来测试。数据库采用ORL人脸数据库,该数据库有400张人脸。40个人,每个人10张头像(每个人每张头像或表情不同,或倾斜度不同)。设计中,每个人选取前5张头像,共200张构成训练样本集,另外200张头像构成测试样本集。运行程序得到识别率为0.88。2)PCA+BP神经网络识别系统数据库仍采用ORL人脸数据库,先在400张人脸中选取一部分作为训练样本集,对其进行PCA降维,形成特征脸子空间;再将剩余的人脸作为检测集,将其投影到特征脸子空间;采用BP神经网络对训练样本集进行训练,然后再用检测集进行识别率测试1、BP神经网络识别中存在的问题在采用BP神经网络进行训练过程中,由于可调参数过多,会对识别率产生一定的影响,故在设计中针对可调参数反复进行测试,对比来寻找最快,最优识别的网络参数。下面列出可能影响网络性能的各个参数:(1)BP网络训练函数的选取(2)BP网络学习速率,迭代次数,误差,梯度的设定(3)PCA主成分比例的选取(4)BP网络隐层节点数的选取(5)训练集和测试集容量的选取2、网络训练函数的选取当采用一般的基于梯度下降的BP网络进行训练时,由于固定的学习速率,有限的迭代次数,较小的设定误差和截止梯度,致使网路有较长的训练时间,而且还不一定能达到要求的精度,这会大大影响识别率。经过多次训练函数的尝试,最终选择带有动量相的自适应学习率的训练函数traingdx。下面表格显示出了三种训练函数在训练速度上的对比:从上表可以看出:(1)尽管采用添加动量相的BP算法,由于学习速率固定,网络的训练速度仍旧很慢。如果盲目的增加学习速率,又会造成网络在某处的波动。因此,训练函数采用带动量相的自适应学习速率的算法较为合适。(2)修改之后,网络的训练时间均在10s钟左右,大大提供了识别速率。3、BP网络性能参数的设定上表中,为了缩短运行时间,通过加大截止误差和设定迭代次数的方法来加快程序运行,这样会在一定程度上降低识别率。当采用traingdx的训练函数后,网络运行速度加快,将截止误差设定为0,迭代次数仍设定为10000,发现每次促使训练停止的为默认的截止梯度。此时的网络误差已足够小。4、维数、隐层节点数的选取1.下面一组实验将ORL人脸数据库中每个人的前9张头像作为训练集(共360张),第10张头像作为测试集(40张);BP网络训练函数为traingdx,截止误差设为0,截止迭代次数为10000,截止梯度为默认;分别对PCA主成分为0.7、0.8、0.9,隐层节点数为30:10:150下进行网络训练,并通过测试集计算识别率得到下表从上表数据得出:(1)不同隐层节点数时,识别率变化不大,大多集中在0.8到0.9之间。隐层节点数和识别率不成线性变化,当隐层节点数增加时,识别率波动变化。这说明,隐层节点数的选取在一准则下确定初值后还需要带进网络进行试凑。(2)当PCA选择不同的主成分比例时,数据降到不同的维数,比较不同维数下的识别率,几乎还是集中在0.8到0.9之间。(3)不同维数下相同的隐层节点数不具有可比性。2.其他参数不变,将ORL人脸数据库中每个人的前8张头像作为训练集(共320张),后2张头像作为测试集(80张);分别对PCA主成分为0.7、0.8、0.9,隐层节点数为30:10:150下进行网络训练,并通过测试集计算识别率得到下表:3.其他参数不变,将ORL人脸数据库中每个人的前7张头像作为训练集(共280张),后3张头
本文标题:基于PCA和BP神经网络的人脸识别方法
链接地址:https://www.777doc.com/doc-5086201 .html