模式识别西安交通大学1基于BP神经网络和k-近邻综合决策法的人脸识别matlab实现高海南31100380111人脸识别原理人脸识别是目前模式识别领域中被广泛研究的热门课题,它在安全领域以及经济领域都有极其广泛的应用前景。人脸识别就是采集人脸图像进行分析和处理,从人脸图像中获取有效的识别信息,用来进行人脸及身份鉴别的一门技术。本文在MATLAB环境下,取ORL人脸数据库的部分人脸样本集,基于PCA方法提取人脸特征,形成特征脸空间,然后将每个人脸样本投影到该空间得到一投影系数向量,该投影系数向量在一个低维空间表述了一个人脸样本,这样就得到了训练样本集。同时将另一部分ORL人脸数据库的人脸作同样处理得到测试样本集。然后基于BP神经网络算法和k-近邻算法进行综合决策对待识别的人脸进行分类。该方法的识别率比单独的BP神经网络算法和k-近邻法有一定的提高。1.1ORL人脸数据库简介实验时人脸图像取自英国剑桥大学的ORL人脸数据库,ORL数据库由40个人组成,每个人有10幅不同的图像,每幅图像是一个92×112像素、256级的灰度图,他们是在不同时间、光照略有变化、不同表情以及不同脸部细节下获取的。如图1所示。图1ORL人脸数据库模式识别西安交通大学21.2基于PCA的人脸图像的特征提取PCA法是模式识别中的一种行之有效的特征提取方法。在人脸识别研究中,可以将该方法用于人脸图像的特征提取。一个m×n的二维脸部图片将其按列首位相连,可以看成是m×n的一个一维向量。ORL人脸数据库中每张人脸图片大小是92×112,它可以看成是一个10304维的向量,也可以看成是一个10304维空间中一点。图片映射到这个巨大的空间后,由于人脸的构造相对来说比较接近,因此可以用一个相应的低维子空间来表示。我们把这个子空间叫做“脸空间”。PCA的主要思想就是找到能够最好地说明图片在图片空间中的分布情况的那些向量,这些向量能够定义“脸空间”。每个向量的长度为m×n,描述一张m×n的图片,并且是原始脸部图片的一个线性组合,称为“特征脸”。对于一副m×n的人脸图像,将其每列相连构成一个大小为D=m×n维的列向量。D就是人脸图像的维数,也即是图像空间的维数。设N是训练样本的数目;jx表示第j幅人脸图像形成的人脸向量;u为训练样本的平均图像向量,则所需样本的协方差矩阵为:1()()NTrjijSxuxu(1)11NjjuxN(2)令uxuxuxN21A,则有TrAAS,其维数为D*D。根据K-L变换原理,需要求得的新坐标系由矩阵TAA的非零特征值所对应得特征向量组成。直接计算的计算量比较大,所以采用奇异值分解(SVD)定理,通过求解AAT的特征值和特征向量来获得TAA的特征值和特征向量。依据SVD定理,令il(ri,,2,1)为矩阵TAA的r个非零特征值,iv为AAT对应于il的特征向量。由于特征值越大,与之对应的特征向量对图像识别的贡献越大,为此将特征值按大小排列,依照公式rkllpriikiik,9.0min11(3)选取前p个特征值对应的特征向量,构成了降维后的特征脸子空间。则TAA的正交归一特征向量iu为:模式识别西安交通大学31iiiuAvl(1,2,,ip)(4)则特征脸空间为:12[,,,]puuuW(5)将训练样本y投影到“特征脸”空间W,得到一组投影向量TYWy,构成人脸识别的训练样本数据库。1.3k-近邻算法在识别时,先将每一幅待识别的人脸图像投影到“特征脸”空间,再利用k-近邻分类器,比较其与库中k个人脸的位置,从而识别出该图像是库中那个人的人脸。本实验令k=3,如果判断得到最短三个距离对应了三个类别(三个人),则取该人脸属于距离最短对应的人脸类别,此时相当于最近邻算法;其他情况按投票法判别,相当于k-近邻算法。1.4BP神经网络法BP神经网络的算法又称为误差反向传播算法,BP神经网络具有良好的自适应性和分类识别等能力。BP神经网络模型的结构如图2所示。它是由输入层、隐层和输出层所组成的。图2BP网络结构图对于p维投影系数,则BP网络的输入层需要p个节点,每一个投影系数对应40个人中某一个,若对应第i个人,则期望输出向量定义为T1.01.09.01.01.0140t,9.0]1,[it即第i行为0.9,其他均为0.1,故输出层需要40个节点,隐层结点个数可根据经验公式获得。将测试样本输入该网络训练,得到训练好的网络后可将测试样本输入网络得到输出值进行判断。模式识别西安交通大学41.5基于BP神经网络法和k-近邻法的综合决策分类k-近邻法分类是选择测试样本与样本空间最近的k个样本的类别而决策分类的;而BP神经网络法本质上是根据输入输出关系通过学习而确定一个非线性空间映射关系,在此映射关系下对于每个输入得到一个输出,此输出根据网络输出的定义而确定类别。因此考虑将两种方法综合起来进行决策分类。实际的实验过程中,k-近邻法得到的结果稳定,而BP网络法是一种次优算法,需要根据经验确定隐层数目、训练算法。当网络比较小时尚可通过不断的实验得到一个较好的结果,而当如本实验的网络,其输入层节点p=71,输出层节点c=40,隐层节点数至少要几十上百个才能得到比较好的结果,因此不适合用试凑法;而直接根据经验公式并不能得到满意的网络,有时网络的识别率甚至不及k-近邻分类法的识别率。经过分析BP网络法得到的输出结果我们发现,当输出向量140t满足)1,(maxit时,分类正确无误;而)1,(maxit时,分类会出现错误。我们对出现)1,(maxit的所有样本使用k-近邻算法辅助分类,综合得到的结果为最终分类的结果。经实验,该方法分类正确率高于单一的k-近邻法和BP网络法,且结果比较稳定。2算法流程根据上述实验原理分析,该算法流程如下:(1)读入人脸库每个人取前5张作为训练样本,后5张为测试样本,共40人,则训练样本和测试样本数分别200N为。人脸图像为92×112维,按列相连就构成N=10304维矢量jx,jx可视为N维空间中的一个点。(2)构造平均脸和偏差矩阵平均脸11NjjNux偏差矩阵1()()NTTrjijSxuxuAA,uxuxuxAN21(3)计算通过K-L变换的特征脸子空间A为10304×200矩阵,其自相关矩阵AART200200,计算得到矩阵的特征值il,对应于il的特征向量为iv,为。对特征值按大小降序排列,依照公式模式识别西安交通大学5rkllpriikiik,9.0min11选取前p(此实验p=71)个特征值对应的特征向量,构成了降维后的特征脸子空间。则TAA的正交归一特征向量iu为:1iiiuAvl(1,2,,ip)则特征脸空间为:103047112[,,,]puuuW。(4)计算训练样本在特征脸子空间上的投影系数向量,生成训练集的人脸图像主分量20071allcoor;(5)计算测试样本在特征脸子空间上的投影系数向量,生成测试集的人脸图像主分量20071tcoor;(6)k-近邻算法分类计算测试集的人脸图像主分量20071tcoor与训练集的人脸图像主分量20071allcoor的欧式距离为71220071200711200200(,)(,)(,)1,200,1,200kijikjkiimdisttcoorallcoor由此得出200个测试样本与200个训练样本的欧氏距离,根据k-近邻算法决策分类;(7)BP网络分类200个训练样本输入训练BP网络,然后将另外200测试样本分别输入训练好的网络,对于每个输入jx,得到输出140t,找出1,maxikit,则该输入jx属于第k个人的人脸。(8)BP神经网络法和k-近邻法的综合决策分类对于(7)得到的输出140t,给定一个阈值(5.0),若1,maxit,模式识别西安交通大学6则类别为1,maxikit;若1,maxit,其对应输入jx使用k-近邻算法分类。3实验结果3.1k-近邻算法分类取k=3,得到识别率accuracy=0.88,有24张照片分类错误。另外我们也得到了71张特征脸图像,图3为部分特征脸,图4为平均脸。图3部分特征脸图4平均脸取测试样本集的第8个人的第10张人脸和第37个人的第9张人脸,投影到特征脸空间得到系数,分别取特征脸空间的前15、30、45、60、75个特征脸,由此得到重构的人脸如图5和图6所示,可以看到特征脸越多,重构出的人脸细节越丰富。另外,人脸朝向对重构图有较大影响:正面构图接近原图,偏向构图模糊。模式识别西安交通大学7图5取不同数目特征脸空间得到的重构女人脸图6取不同数目特征脸空间得到的重构男人脸3.2BP神经网络法分类经过大量的实验,选择网络参数如下:net=newff(minmax(P),[100,40],{'tansig''logsig'},'trainscg');net.trainparam.epochs=5000;net.trainparam.goal=0.0006;即隐层为100个节点,传输函数为tansig函数,输出层为logsig函数,网络训练算法为ScaledConjugateGradient算法。某次训练的网络学习性能如下图所示。模式识别西安交通大学8图7BP网络学习性能图输入测试样本后,此BP网络识别率accuracy=0.89。在网络的训练过程中,并不是隐层节点越多越好,误差限也不是越小越好,否则网络的训练时间过长,更重要的是影响网络的泛化能力,造成识别率下降。而隐层网络节点过少,网络的学习能力不佳,同样会造成识别率下降,因此需要综合考虑。3.3基于BP神经网络和k-近邻法的综合决策分类设置不同的BP网络参数和阈值,该综合分类方法性能如表1所示。表1三种方法识别率识别率k-近邻法0.88BP网络法0.840.8550.850.8650.870.880.880.8850.89BP网络+k-近邻法0.9050.8950.9050.8950.900.900.910.9050.905由上表可以看到,即使在BP网络性能不是十分理想的情况下,综合法的识别率均比二者单一识别率高,而且结果比较稳定。4总结本文给出了基于PCA的人脸特征提取的原理与方法,然后分别对特征脸空间模式识别西安交通大学9的投影系数使用BP网络法和k-近邻法及其二者综合分类法对输入人脸进行识别分类。实验结果表明,综合法识别率最好,达到90.5%。基于距离分类的k-近邻法结果比较稳定,基于非线性映射的BP网络法可以较好的解决高维人脸分类这一非线性分类问题,但它依赖学习的样本和网络参数,需要凭经验和大量的实验才能得到具有较好性能的网络参数,网络训练费时费力。而通过对两种分类结果的综合决策,不用过分依赖BP网络性能,就可以得到一个识别率更高的人脸识别系统。参考文献:[1]张金华,基于PCA的人脸识别算法.源于网络.[2]赵立强,张晓华,高振波,张洪亮基于BP神经网络的主分量分析人脸识别算法.2007.[3]边肇祺张学工等模式识别.1999.09.模式识别西安交通大学10附录:MATLAB源代码kdist_recface.m%%%k-近邻法的人脸识别%%5clcclearallsamples=[];%所有训练图像fori=1:40forj=1:5a=imread(strcat('ORL\s',num2str(i),'\',num2str(j),'.bmp'));%imshow(a);b=a(1:112*92);b=double(b);allsamples=[allsamples;b];endendsamplemean=mean(allsamples);%平均脸fori=1:200xmean(i,:)=allsamples(i,: