matlab 人脸识别 神经网络,人工神经网络在人脸识别分类中的应用

摘要:在人脸识别技术不断发展的今天,人们已经不局限于能够识别出人脸,更主要的侧重于人脸识别的准确性和高效性。人脸识别主要分成3个步骤人脸检测、特征提取、识别分类,其中识别分类的方法决定了是否能够正确识别出人脸。BP神经网络具有正向传播和反向传播的特性,从而保证了分类的准确性,所以本文中笔者主要研究如何在MATLAB中把BP神经网络应用在人脸的识别分类上。

关键词:人工神经元网络;BP神经网络;matlab;识别分类

中图分类号:TP391.41文献标识码:A文章编号:1007-9599 (2010) 16-0000-02

Artificial Neural Network Application on Face Classification

Liang Xiaoli

(Heilongjiang Radio&TV University,Harbin150080,China)

Abstract:In the face recognition technology is developing continuously,people not limited to recognize the human face,but the main emphasis on the accuracy and efficiency of face recognition.

Face recognition is divided into three steps,face detection,feature extraction,recognition category,identification and classification of the methods in which the decision of whether to correctly identify the human face.BP neural network with forward propagation and back propagation characteristics,so as to ensure the accuracy of classif-

ication,Therefore,the main author of this article how to MATLAB,the BP neural network used in face recognition classification.

Keywords:Artificial neural network;BP neural network;Matlab;

Recognition category

人工神经元网络,又称为神经元网络,它是对人脑的简化、抽象和模拟,反映了人脑的基本特性神经元网络是由大量处理单元广泛互连而成的网络。神经网络研究的是模拟人脑信息处理的功能,从人脑的生理结构出发来研究人的智能行为。是依托于数学、神经科学、物理学、计算机科学及工程等学科的一种综合性技术。

一、人工神经网络的分类

我们可以对人工神经网络进行如下分类:

(一)单层的前向神经网络

这里所说的单层前向网络是指拥有单层的神经元是,作为源节点个数的“输入层”被看作是一层神经元,“输入层”是不具有计算功能。

(二)多层的前向神经网络

多层前向神经网络与单层前向神经网络的差别在于:多层的前向神经网络和单层前向神经网络的隐含层个数不同,在多层的前向神经网络中完成计算功能的节点被称为隐含单元(隐含神经元)。由于隐层的数量不同,使网络能进行更高序的统计,尤其当输入层规模庞大时,隐层神经元提取高序统计数据的能力便显得非常重要。

(三)反馈网络

反馈网络指在网络中最少含有一个反馈回路的神经网络。反馈网络中包含一个单层神经元,在这一层中的所有的神经元将自身的输出信号反馈给其他所有神经元作为输入。

(四)随机神经网络

随机神经网络是在神经网络中引入了随机概念,每个神经元都是按照概率的原理在工作,这样每个神经元兴奋或抑制具有随机性,其概率取决于神经元的输入值。

(五)竞争神经网络

竞争神经网络最显著的特点是它的输出神经元之间相互竞争以确定胜出者,胜出者指出哪一种原型模式最能代表输入模式。

二、神经网络的学习

神经网络的学习又被称为训练,所指的是通过神经网络所在外界环境的刺激下调整神经网络的参数,使得神经网络以一种调整好的方式对外部环境做出反应的过程。从环境中学习和在学习中提高自身性能是神经网络最有意义的特征了。

学习方式可分为:有师学习和无师学习。有师学习又称为有监督学习,在学习时需要给出指导信号(又可称为期望输出或者响应)。神经网络对外部环境是未知的,但可以将指导信号看作对外部环境的了解,由输入―输出样本集合来表示。指导信号或期望输出代表了神经网络执行情况的最佳结果,即对于网络输入调整网络参数,使得网络输出逼近期望的输出值。无师学习包括强化学习与无监督学习(可以被称为自组织学习)。在强化学习中,对输出的学习是通过与外界环境的连续作用最小化完成的。

三、BP神经网络

BP(Back Propagation)神经网络,就是指包含信息正向传播和误差反向传播算法的学习过程。输入层的每一个神经元负责接收来自外界的输入信息,并传递给中间层中的每一个神经元;中间层的各个神经元是内部信息处理层,负责信息变换,可以设计为单隐层或者多隐层结构;最后隐含层传递到输出层的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不相符时,进入误差的反向传播阶段。误差通过输出层作用于输入层,按误差梯度下降的方式分别修正各层权值,逐渐向隐含层和输入层反传。多次的经过信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也就是神经网络学习训练的过程,此过程一直进行到网络的输出误差减少到可以被接受的程度,或者达到预先设定的学习次数才会停止。

四、实验过程及结果

本文中假设已经用奇异值分解得到人脸特征点的数据,每个人脸划分为五部分,每部分又得到5个特征值,所以也就是25个的特征值。本文采集了50个人人脸,每人采集10张不同姿态下的照片,也就是500张照片,对这些照片进行人脸检测并进行奇异值分解,得到每张照片对应的25个特征值,从每人10张照片中随机抽出5张用于训练出不同的姿态下的人脸,另外的5张用作测试样本。

(一)实验过程

由于数据过长,本文只以2个人,每人2张照片作为的训练样本数据为例来说明。

第一步:训练样本(每人25个特征值),在p是一个25行,4列的矩阵,每一列代表一个人的25个特征值,属于一个样本;列数4表示样本总数;

p=[ 7.4264 9.0728 7.9825 9.5632;

7.5719 7.8115 6.5564 7.8561;

12.8074 12.7073 12.4536 11.5423;

9.0284 10.3744 8.7569 9.9965;

7.0083 9.0284 7.1254 8.8876;

1.2597 2.1578 1.3556 3.0112;

0.6896 0.7835 0.7859 0.9658;

0.7814 0.8818 0.7568 0.8213;

1.0248 1.6783 1.1542 1.5234;

1.0112 1.0248 0.9568 0.9652;

1.0427 1.0813 1.0425 0.9568;

0.5970 0.5886 0.5968 0.5889;

0.4928 0.5969 0.3569 0.6012;

0.6438 0.6417 0.6589 0.5612;

0.3563 0.6438 0.2534 0.6689;

0.4474 0.4235 0.4568 0.4236;

0.2483 0.2282 0.2253 0.2259;

0.3633 0.4616 0.3102 0.4556;

0.3383 0.4167 0.3561 0.3456;

0.3130 0.3383 0.3302 0.3359;

0.3378 0.3313 0.3219 0.3569;

0.1916 0.1767 0.1564 0.1952;

0.2356 0.3422 0.2355 0.3012;

0.2088 0.3268 0.1958 0.3568;

0.1858 0.2088 0.0956 0.1968;];

第二步:目标输出矩阵

因为就两个人,所以采用一位二进制编码就可以,在这里定义第一类样本的编码为0;第二类样本的输出编码为1。

t=[0 1 0 1];

第三步:使用MATLAB建立网络结构

net1=newff(minmax(p),[25,9,1],{'tansig','tansig','hardlim'},'traingdm');

说明:[25,10,1]表示该网络的输入结点为25个值,输出结果为1为二进制编码的值,中间层由经验公式 (rnd为0-1之间的随机数),所以本文选取5-15之间数分别作为隐含层的神经元个数,得出的结论是9的收敛速度最快。

第四步:对网络进行训练

[net1,tr]=train(net1,p,t);

第五步:保存网络

save aa net1

则文件会以aa.mat的格式保存,保存了训练好的网络以及权值。

第六步:输入测试样本

先加载上一步中保存好的网络,本实验中只输入一个测试样本,下面的数据代表测试样本的特征值,共25个。

load aa.mat

p1=[7.8115;0.7835;0.5886;0.2282;0.1767;1.0197;0.7896;0.6814;1.1238;1.1114;0.9427;0.5970;0.4569;0.5438;0.4563;0.1983;0.4632;0.3383;0.3130;0.4377;0.1817;0.2256;0.2088;0.2854;0.2812];

第六步:网络仿真

a=hardlim(sim(net1,p1)-0.5)

(二)实验结果

根据上述实验过程,得出的结果是:

下图是执行了10次中的一次算法模拟情况。

Elapsed time is 0.469seconds

网络仿真的输出结果是:a=0

本文中测试的数据来源于训练样本中输出为0的样本,识别结果正确。换了10个测试样本,其中识别正确的是6个,也就是正确率大约在60%。

然后,采用相同的办法,在实验中把训练样本由每人两个不同姿态下的样本增加到了3个,也就是输入向量的p由4列增加到6列,其他的均不变,网络的训练时间为0.471 seconds。还是使用上面的10个测试样本,其中识别正确的达到了8个,正确率提高到了80%左右。

在样本量扩大到250时,这些样本是来自于,50个人,每人拍摄10张不同姿态下的照片,也就是500张,然后从其中随机的取出每个人对应的5张照片作为训练样本,然后再把从剩余的250张作为测试样本,进行测试。输入结点数为250,每个结点对应的特征向量为25;输出值用二进制的编码表示,由于后面要实现的人脸识别系统中要应用在一个只有50人的环境下,所以采用二进制编码6位就够了,但是为了系统的可扩展性,所以采用7位二进制编码来设计输出结点的值,bp网络就是25维输出7维输出。此时测试的250个数据中只有一组数据是错误的,原因是照片中的人嘴和鼻子被口罩遮住了。

样本量增加后网络训练到一个样本测试仿真所有的时间是1.936seconds。

五、小结

本文介绍了基于BP神经网络的人脸识别分类方法,先用matlab设计了一个模拟程序,然后不断的增加训练样本中同一人样本的样本数,训练后用10个人分别测试两个网络的正确率,当同一人的样本数增加到3时,正确率由60%提高到了80%。可以证明网络训练样本的增加有利于提高识别的正确率。把在上一章中采集到的50个人所对应的500张照片作为标准样本库,从中随机取出250张作为训练样本,然后设定输出值,输出的值应该有50类,采用二进制的编码构成,然后再实用剩余的250张照片作为测试样本,进行测试。

实验后的得出的结论是当训练样本数增加到5个时,测试数据才没有遮挡的情况下,可以达到100%的正确识别率。

在本实验后,保存了一个shengjingwangluo.mat的网络,这个文件是由250个样本,对应50种样本的数据训练好的bp网络。

你可能感兴趣的:(matlab,人脸识别,神经网络)