4) 将选择出的重要度大的特征主分量输入BP神经网络进行训练,直到神经网络收敛或满足停止训练的条件;
5) 识别过程。 (2)人脸空间的建立
假设一幅人脸图像包含N个像素点,它可以用一个N维向量PI表示。这样,训练样本库就可以用P(i=1,...,M)表示。协方差矩阵C的正交特征向量就是组成人脸空间的基向量,即特征脸。
将特征值由大到小排列:λ1≥λ2≥...≥λr,其对应的特征向量为uk。这样每一幅人脸图像都可以投影到由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下进行网络训练,并通过测试集计算识别率得到下表:

