时间:2022-08-19 01:38:18
摘 要:本文介绍了一种bp神经网络的人脸识别系统的设计方法。该设计利用前向多层神经网络的反向传播算法,即BP算法,采用MATLAB软件建立了用于人脸识别的BP神经网络,并利用大量的人脸特征数据训练神经网络,使神经网络能分辨出不同的人脸特征。实验结果表明,用这种方法进行人脸识别有较好的效果。
关键词:BP神经网络;人脸识别;MATLAB
中图分类号:TP391
随着科技的发展,对人脸识别技术的发展要求越来越迫切,如(1)在企业、住宅安全和管理方面,要求实现人脸识别门禁考勤系统,人脸识别防盗门等。(2)在公安、司法和刑侦方面,利用人脸识别,在全国范围内搜捕逃犯。(3)在银行的自动提款机中,如果应用人脸识别就会避免由于用户卡片和密码被盗。(4)在电子商务交易过程中,如果使用人脸识别实现当事人在网上的数字身份和真实身份统一,便增加了电子商务的可靠性。而人脸识别的软件系统开发,是联系理论和实践的最重要的环节,因此实现人脸识别系统的开发应用越来越重要。
1 BP网络的概述
1.1 BP神经网络的定义。前馈多层神经网络广泛的应用于模式识别与分类、控制、预测、图像处理等问题,是当今社会应用最广、发展最快的人工神经网络之一。由于此神经网络的网络权值阈值的确定常采用误差反向传播算法(Back Propagation,简称作BP算法),所以通常称这种前馈网络为BP网络。典型的BP网络是三层网络,包括输入层、隐含层和输出层。各层之间实行全连接,而其中隐含层可以是一层,也可以是多层(如图1)。
图1 单隐含层的BP网络结构
BP网络的学习由四个过程组成,即:(1)输入模式:输入层经隐含层向输出层的“模式顺传播”过程;(2)网络的理论输出与网络实际输出之差的误差信号:由输出层经隐含层向输入层逐层修正连接权的“误差逆传播”过程;(3)由“模式顺传播”与“误差逆传播”的反复交替进行的网络“记忆训练”过程;(4)网络趋向收敛即网络的全局误差趋向极小值的“学习收敛”过程。简言之,就是由“模式顺传播”“误差逆传播”“记忆训练”“学习收敛”的过程。传递函数一般为(0,1)S型函数 。BP网络隐层中的神经元均采用S型交换函数,输出层则采用纯线性变换函数。
1.2 BP网络的算法。BP算法可描述为大致五步:(1)初始化各权值为较小的随机值;(2)选取训练集;(3)根据输入计算理论输出;(4)调节输出层和隐含层的连接权值;(5)返回第二步反复训练网络直至误差理想为止。
其流程图如图2:
图2 神经网络算法流程图
2 BP神经网络实现人脸识别
2.1 设计思路。本设计采用50幅图像(10个人每人5幅)作为训练图像,应用主成分分析对训练图像进行二阶相关和降维,提取训练图像的独立基成分构造人脸子空间,并将训练集中的人脸图像向独立基上投影得到的系数输入改进的BP神经网络进行训练。然后将待识别的人脸图像向独立基上投影得到投影系数,再将其输入已训练过的BP神经网络进行识别。设计结构如图3。
图3 人脸识别系统结构
2.2 BP网络的创建和初始化。因网络的输入矢量与输出矢量相差较大,为了减少网络的训练误差,在建立网络之前要对输入矢量进行归一化。这里我们利用premnmx函数把输入初始化在[-1,1]之间。程序代码如下:
p=premnmx(p')';
t=[1000;1000;1000;1000;1000;0100;0100;0100;0100;0100;
0010;0010;0010;0010;0010;0001;0001;0001;0001;0001]'
2.3 训练神经网络。本设计的方法如下:
%设计神经网路
[prow pcol]=size(p);
num=prow*pcol;%提取p中元素个数作为神经网络的输入层神经元个数
net=newff(minmax(p),[num,10,4],{'tansig','tansig','purelin'},'traingda');%隐层神经元个数为10,输出层神经元个数为4,4表示识别出人
net.trainParam.show=200;%显示速率为200
net.trainParam.lr=0.01;%学习率为0.01
net.trainParam.epochs=5000;%迭代次数不超5000
net.trainParam.goal=0.001;%训练误差为0.001
[net,tr]=train(net,p,t);
网络的训练函数有很多种,如trainlm,其中traingd学习算法是一般的剃度下降法;traingdx学习算法是剃度下降动量法,学习速率是自适应的。Trainlm的学习算法为Levenberg-Marquadt反传算法,该训练函数的优点在于收敛速度很快。本设计选用的训练函数为traingdx,在网络达到起训练误差要求时会自动停止,节省训练时间。训练过程中为了得到较小的误差,可以增加训练次数。
2.4 系统的性能评估。为了测试设计的网络模式识别系统的可靠性,这里用50幅图像输入样本,来观察其输出结果。通过程序演示,基本可以识别出不同的人脸特征。如果要提高精度,可以延长网络的训练时间,或者是将网络隐含层的神经元数目增多。为了测试系统,可提取几取几幅人脸图片数据,然后把它们输入到网络中,观察其得到的输出,并进行误差分析。
3 结束语
本设计是利用BP算法,以MATLAB软件作为工具手段,建立人脸识别的BP神经网络,且利用50副人脸图像数据训练网络,使神经网络能辨别出人脸信息。结果说明,本设计在人脸识别方面有比较好的优势。
在本设计中,使用了不人脸图像数据作为输入来训练网络,提高了整个网络容错的能力,这样更适合在实际环境中使用。
参考文献:
[1]蔺广逢,繁引娣,张媛.主成分分析与BP神经网络的人脸识别方法研究[J].现代电子技术,2007(02).
[2]MartinT.Hag,Howard B.Demuth. Neural Network Design Original[M].PSW publishing company.
[3]张威.MATLAB基础与编程入门[M].西安:西安电子科技大学出版社,2004.
[4]丛爽.面向MATLAB工具箱的神经网络理论与应用[M].合肥:中国科学技术大学出版社,2003.
作者简介:冯玉涵(1985-),女,河南信阳人,学士学位,助教,研究方向:电子信息。
作者单位:信阳农林学院 计算机科学系,河南信阳 464000