基于BP神经网络的人脸识别方法研究
基于BP神经网络的人脸识别实验报告

基于BP神经网络的人脸识别一、实验目的用简单的人工神经网络实现人脸、花朵或者动物的识别。
二、实验原理1.bp神经网络概念:BP神经网络是一种具有三层或者三层以上的多层神经网络,每一层都由若干个神经元组成,它的左右各层之间各个神经元实现全连接,即左层的每一个神经元与右层的每个神经元都有连接,而上下各神经元之间无连接。
BP神经网络按有导师学习的方式进行训练,当一队学习模式提供给神经网络后,其神经元的激活值从输入层经各隐含层向输出层传播,在输出层的各神经元输出对应于输入模式的网络响应。
然后,按减少希望输出与实际输出误差的原则,从输出层经各隐含层,最后回到输入层(从右至左)逐层修正各连接权。
由于这种修正过程是从输出到输入逐层进行的,所以称它为”误差逆传播法”。
随着这种误差逆传播训练的不断修正,网络对输入模式响应的正确率也将不断提高。
2.该网络的主要特点和结构:信号是向前传播的,而误差是反向传播的。
对上图所示的BP神经网络结构,一般最简单的是三层BP神经网络(如下)BP神经网络的主要过程分为两个阶段:第一阶段是信号的向前传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏执,输入层到隐含层的权重和偏置。
BP网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对BP网络加以训练,网络就具有输入输出对之间的映射能力。
BP网络执行的是有教师训练,其样本集是由形如(输入向量,期望输出向量)的向量对构成的。
在开始训练前,所有的权值和阈值都应该用一些不同的小随机数进行初始化。
三、实验环境IDE: eclipse开发语言:JAVA四、实验步骤(BP算法流程图)我们测试的样本中每个人都由11张照片,这些照片的姿势和表情不同,图片格式均为BMP格式图像只需要输入需要匹配的照片,那么该算法会计算出其余10张照片的匹配程度,并输出匹配率最高的图片每个人的前5幅图片作为网络的训练使用,后6副图片作为测试使用五、实验结果样本库如下,我们随机挑选一个假设我们输入的样本为subject02_11这张人脸程序运行结果如下:可以发现,该算法会计算出这个人其余10张人脸和样本的匹配程度从而选取匹配率最高的一张输出这是依照程序的结果输出的匹配率最高的照片实验参数:(1)输入层神经元的个数:2*16*16*2(2)隐含层神经元个数:16*16(3)输出层神经元个数:16六、实验总结通过实验,我们发现BP神经网络存在的许多优点:1.较强的非线性映射能力:BP神经网络实质上实现了一个从输入到输出的映射功能,数学理论证明三层的神经网络就能够以任意精度逼近任何非线性连续函数。
基于BP神经网络的人脸识别系统研究优秀doc资料

基于BP神经网络的人脸识别系统研究优秀doc资料湖南大学硕士学位论文基于BP神经网络的人脸识别系统研究申请学位级别:硕士专业:软件工程指导教师:彭黎;杨志新20201018基于BP神经网络的人脸识别系统研究通过直方图均衡处理,人脸样本图像的灰度分布从原来的集中于某些灰度点调整到较均匀的分布与大部分灰度点,更加有利于在曝光程度不同等外界因素造16成差别的图像之间进行人脸图像的特征的比较。
(2中值滤波f28】无论是直接获取的灰度图像,还是由彩色图像转换得到的灰度图像,里面都有噪声的存在,噪声的存在对边缘提取有很大的影响。
进行中值滤波不仅可以去除孤点噪声,而且可以保持图像的边缘特征,不会使图像产生显著的模糊,比较适合于实验中的人脸图像。
中值滤波是一种非线性的信号处理方法,因此中值滤波器也就是一种非线性的滤波器。
中值滤波器在最先是被用于一维信号处理中的,后来被人们引用N--维图像信号处理中来。
中值滤波在一定条件下可以克服线性滤波器带来的图像细节模糊,而且它对滤除脉冲干扰及图像扫描噪声非常有效。
中值滤波一般采用一个含有若干个点的滑动窗口,将窗口中各点灰度值的中值来代替指定点(一般是窗口的中心点的灰度值,如果窗口中有奇数个元素,中值取元素按灰度值大小排序后的中间元素灰度值;如果窗口中有偶数个元素,中值取元素按灰度值排序后中间两个元素灰度值的平均值。
因为图像为二维信号,中值滤波的窗口形状和尺寸对滤波器效果影像很大,不同图像内容和不同应用要求往往选用不同的窗口形状和尺寸,但从实际应用中来说,其窗口尺寸不宜过大。
中值滤波特别适合于人脸图像的去噪处理,有它的原理得知,它在有效保护人脸重要边缘特征的同时容易去除孤立点。
图3.4将显示经过中值滤波处理前后的图像对比。
人脸样本图像实验采用3x3模板来完成中值滤波,计算时用到所有9个象素点。
(3归一化人脸图像的归一化,目的是使不同成像条件(光照强度,方向,距离,姿势工程硕士学位论文首先从人脸区域获得候选特征:假设人脸的姿态比较正,那么人脸上的特征是水平边缘集中的区域,我们可以在低分辨率下提取水平边缘,然后找到人脸区域内包含这些边缘的连通区,作为人脸特征的候选区域。
基于BP神经网络的人脸检测算法

件验证 、入 口控制 、视 频监 视 、人 机交 互 、 图像 检 索 等 。 人脸检测 的研究从 2 0世纪 7 0 年 代至 今, 研究者提出了多种检测方法 , 特 别是那 些利用运动、 肤色和一般信息的方法。 常见 的有 : 镶 嵌 图方 法 , 基 于 模板 匹配 方 法 , 人
多, 则学习的时间会过长 , 泛化能力降低。
根 据 经 验 公 式 、 ቤተ መጻሕፍቲ ባይዱ= = - i c : 和
的最精 确 检测 。 2 . 1 B P 网络 的 拓 扑结 构
n , = l o g , n( 其 中 n为输入层节点数 ,m 为 输 出节点数 ,仅为 l ~1 0 的常数 ) 计算 出隐 层节点数的取值范 围 ( 9 ~2 9 ) ,然 后根据
层只 有一 层 。
1、引 言
随着社会的发展,各个方面对快速有 效的 自动身份验证的要求 日益迫 切。利用 人睑特征进行身份验证是最 自然直接 的手 段 ,它具 有 直 接 、友 好 、方 便 的 特 点 , 易于为用户所接受 。随着人睑识别技术的 发 展和 人脸识 别技 术应 用领域 的不 断拓 宽 ,人险识别技术在各个领域的应用前景
已经越 来 越 广 泛 ,主要 用于 刑 侦 破 案 、证
围 内的 隐 层 节 点 数 进 行 独 立 的 训练 , 比较
网络的收敛速度 、网络输出精度以及网络 分类的正确率。 实 验结 果 表 明 , 网络 在 隐 层 节 点数为 1 5 时 全局收敛性最好 ,网络的输 出精度也最高 。综合考虑 网络 中的各个因 素 ,我 们 选 取 隐 层 节 点 数是 1 5。 2 . 2 样本收集 在 神 经 网 络 的学 习训 练 过 程 中 ,训 练 集的选取非 常重要。如果样本选的 比较合
基于BP神经网络的人脸识别

基于BP神经网络的人脸识别学生:林仙土学号:S071954摘要:人脸自动识别技术有着广阔的应用领域,本文提出用主成分分析和BP神经网络进行人脸识别。
人脸识别包括两个部分:第一,特征提取;第二,神经网络进行识别。
关键词:BP神经网络人脸识别主成分分析本系统采用20幅图像(4个人每人5幅)作为训练图像,应用主成分分析对训练图像进行二阶相关和降维,提取训练图像的独立基成分构造人脸子空间,并将训练集中的人脸图像向独立基上投影得到的系数输入改进的BP神经网络进行训练。
然后将待识别的人脸图像向独立基上投影得到投影系数,再将其输入已训练过的BP神经网络进行识别。
此方法对人脸库图像进行测试,识别率达到90%以上。
本系统采用MATLAB编程,并运用了其中的GUI编程实现人机交互。
为在不同机子下顺利运行,本系统用uigetdir函数让用户选择训练图像库和待识别图像,使得待识别图像可在不同位置皆可让软件识别。
注意:待识别图像的名字必须是test.jpg。
系统界面:程序:function varargout=BP(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@BP_OpeningFcn,...'gui_OutputFcn',@BP_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);if nargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endif nargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:}); elsegui_mainfcn(gui_State,varargin{:});endfunction BP_OpeningFcn(hObject,eventdata,handles,varargin) handles.output=hObject;guidata(hObject,handles);%UIWAIT makes BP wait for user response(see UIRESUME)%uiwait(handles.figure1);%---Outputs from this function are returned to the command line. function varargout=BP_OutputFcn(hObject,eventdata,handles)%varargout cell array for returning output args(see VARARGOUT); %hObject handle to figure%eventdata reserved-to be defined in a future version of MATLAB %handles structure with handles and user data(see GUIDATA)%Get default command line output from handles structure varargout{1}=handles.output;%---Executes on button press in input.function input_Callback(hObject,eventdata,handles)%hObject handle to input(see GCBO)%eventdata reserved-to be defined in a future version of MATLAB %handles structure with handles and user data(see GUIDATA) global TestDatabasePathTestDatabasePath=uigetdir('D:\','Select test database path'); axes(handles.axes1);a=imread(strcat(TestDatabasePath,'\test.jpg'));imshow(a)set(handles.text1,'string','image for recognition')%---Executes on button press in recognise.function recognise_Callback(hObject,eventdata,handles)%hObject handle to recognise(see GCBO)%eventdata reserved-to be defined in a future version of MATLAB %handles structure with handles and user data(see GUIDATA) TrainDatabasePath=uigetdir('D:\','Select training database path');global TestDatabasePathvalue=bpnet(TestDatabasePath,TrainDatabasePath) set(handles.text2,'string',value)载入选择图像路径载入图像特征提取程序:function[icaproject,wica]=bpFeatureExtract(imagepath)%用于训练的图片数量Count=20;%图像格式为.jpg;S=[];%用于存储20幅图像的矩阵for i=1:Countstr=strcat(imagepath,int2str(i),'.jpg');%把两个字符串连接起来组成图像名eval('img=imread(str);');[row col]=size(img);%获得一幅图像的行数N1和列数N2temp=reshape(img,row*col,1);%产生一个(N1*N2)x1matrixS=[S temp];%S is a N1*N2xM matrixendsig=double(S');%sig是MxN1*N2matrix%对sig矩阵去均值处理sigmean=mean(sig);%对每一列取均值,imgsig是20x10304for i=1:size(sig)imgsig(i,:)=sig(i,:)-sigmean;end%对去均值的数据进行白化处理covariancematrix=cov(imgsig',1);%covariancematrix是20x20矩阵[E,D]=eig(covariancematrix);%E和D是20x20矩阵%去掉值为0的特征值v=[];d=[];for i=1:size(E,2)if(D(i,i)>0)v=[v E(:,i)];d=[d D(i,i)];endend%将特征值由大到小排序,特征值对应的特征向量也作相应的排序Dccol=d;Vc=v;%从小到大排序[Dcsort Dcindex]=sort(Dccol);%Vc的列数DcCols=size(Vc,2);%反序for i=1:DcColsVcsort(:,i)=Vc(:,Dcindex(DcCols-i+1));Dcsort(i)=Dccol(Dcindex(DcCols-i+1));end%取前k个最大特征值对应的特征向量,保留95%的能量,此时k=8Dcsum=sum(Dcsort);Dcsum_extract=0;k=0;while(Dcsum_extract/Dcsum<0.95)k=k+1;Dcsum_extract=sum(Dcsort(1:k));end%temp是由前k个最大的非0特征值对应的特征向量组成的i=1;temp=[];while(i<=k)temp(:,i)=Dcsort(i)^(-1/2)*Vcsort(:,i);i=i+1;endwhiteningmatrix=temp';%用于白化数据的白化矩阵,whiteningmatrix是8x20%用快速ICA算法求分离矩阵w(迭代50次)whitesig=whiteningmatrix*imgsig;X=whitesig;%X是8x10304[vectorsize,numsamples]=size(X);B=zeros(vectorsize);%B是8x8numofic=vectorsize;%numofic是8for r=1:numofici=1;maxnumiterations=50;%设置最大的迭代次数w=rand(vectorsize,1)-.5;%随机设置初始值w=w/norm(w);%初始化w(0),令其模为1while i<=maxnumiterations+1w=w-B*B'*w;w=w/norm(w);w=(X*((X'*w).^3))/numsamples-3*w;w=w/norm(w);i=i+1;endW(r,:)=w'*whiteningmatrix;%W(r,:)是1x20B(:,r)=w;end%求原信号icaproject=W*sig*sig';%独立成分,W是8x40,icaproject是8x40,icaproject的每一列表示一幅图像的特征值wica=W*sig;%投影空间BP神经网络程序:function res=bpnet(TestDatabasePath,TrainDatabasePath)%先设置人脸图片库所在的路径,调用特征提取函数bpFeatureExtract,将所有人脸在特征脸上的投影p提取出来imagepath=strcat(TrainDatabasePath,'\');[p,wica]=bpFeatureExtract(imagepath);%把p归一化到[-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]';%神经网络的理论输出值%设计神经网路[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;%显示速率为200net.trainParam.lr=0.01;%学习率为0.01net.trainParam.epochs=5000;%迭代次数不超过5000net.trainParam.goal=0.001;%训练误差为0.001[net,tr]=train(net,p,t);%用神经网络识别imgtest=imread(strcat(TestDatabasePath,'\test.jpg'));[row col]=size(imgtest);%获得行数和列数imgtest=reshape(imgtest,1,row*col);sig=double(imgtest);imgtest=sig;%把待测试图像imgtest在子空间上投影projectcoeftest=wica*(imgtest)';%projectcoeftest是8x1ptest=premnmx(projectcoeftest);%把投影值projectcoeftest归一化到[-1+1],然后作为神经网络的输入%仿真result=sim(net,ptest)%显示识别出的人名信息if result(1,1)>0.9res='This is Edward';elseif result(2,1)>0.9res='This is George';elseif result(3,1)>0.9res='This is Frank';elseif result(4,1)>0.9res='This is Henry';else res='This is strange';end选择训练图像库的路径训练图像训练结果这是图像训练库外的人。
基于PCA和BP神经网络的人脸识别方法

基于PCA和BP神经网络的人脸识别方法摘要:基于PCA 和BP 神经网络的人脸识别方法是针对PCA 方法中存在的问题和它对未训练过的样本识别率低的缺点而提出的。
该方法在预处理的基础上,利用PCA处理人脸特征,提取其中分类能力强的特征,实现在识别精度不变的情况下,有效的去除冗余信息;然后将约简后的属性输入到神经网络进行规则提取,利用神经网络非线性映射和并行处理的特点,增强对人脸图像识别的泛化能力。
实验证明,使用该方法在识别率上有一定的提高。
关键词:人类识别、BP神经网络、PCA、特征提取引言人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。
人脸识别是一项热门的计算机技术研究领域,可以将人脸明暗侦测,自动调整动态曝光补偿,人脸追踪侦测,自动调整影像放大;它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。
进行人脸图像识别研究具有很大的使用价值。
如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。
现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还没有通用成熟的人脸自动识别系统出现。
人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。
并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。
使得同一个人,在不同的环境下拍摄所得到的人脸图像不同,有时更会有很大的差别,给识别带来很大难度。
因此在各种干扰条件下实现人脸图像的识别,也就更具有挑战性。
当前大多数人脸识别算法是基于统计的方法,如特征脸方法(PCA)、Fisher 脸方法、奇异值分解方法、神经网络方法和支持向量机等,这些方法中影响较大的是Turk 和Pentland 提出的特征脸(Eigen Face)方法即PCA 方法。
PCA是基于主元分析的特征提取,把所有的不同人脸的样本放在一起提取,以所有人的人脸样本最优重建为目的。
基于BP神经网络的人脸识别技术研究

基于BP神经网络的人脸识别技术研究人脸识别作为一项重要的生物特征识别技术,已经被广泛应用于安全监控、人员考勤、金融交易等场景中。
而神经网络作为人工智能领域的重要分支,也被越来越多的人应用到人脸识别技术中。
其中,基于反向传播(BP)神经网络的人脸识别技术因其准确率高、鲁棒性强等特点备受研究者的关注。
一、BP神经网络概述BP神经网络是一种多层前馈神经网络,其结构包括输入层、隐层和输出层。
其中,输入层接收待处理的数据,中间的隐层进行特征提取和分类,最后输出层将处理结果输出。
BP神经网络的学习过程采用误差反向传播算法,即将网络输出与期望输出之间的误差反向传播到隐层和输入层,通过调整权值和阈值来优化网络模型。
二、BP神经网络在人脸识别中的应用1. 数据预处理BP神经网络在人脸识别中的应用首先需要进行数据预处理。
常用的数据预处理方法包括灰度化、裁剪、大小统一等操作,以便网络能够对原始图像进行更有效的学习和识别。
2. 特征提取人脸识别中的特征提取对于神经网络的学习和识别非常重要。
BP神经网络常用的特征提取方法主要包括主成分分析(PCA)和线性判别分析(LDA)。
其中,PCA通过保留原始数据中的主要信息来减少特征数量,而LDA则是通过线性变换将不同类别的样本分割开,增强网络的区分能力。
3. 模型训练模型训练是神经网络中最为重要的一步。
在BP神经网络中,通过误差反向传播算法对网络进行训练,以不断调整权值和阈值,提高网络的识别准确率。
同时,针对网络训练过程中容易出现的过拟合问题,可以采用各种正则化方法,例如权值衰减、Dropout等来缓解过拟合现象。
4. 识别性能评估BP神经网络在人脸识别中的应用需要对网络的识别性能进行评估。
常用的评估指标包括准确率、召回率、精确率等。
更为完备的评估方法是采用ROC曲线和AUC指标,能够直观地反映网络分类器的性能和鲁棒性。
三、BP神经网络在人脸识别中的优势1. 准确率高BP神经网络的多层结构和误差反向传播算法能够有效地提高网络的识别准确率。
基于神经网络的人脸识别算法研究

基于神经网络的人脸识别算法研究Introduction人脸识别算法是一种自动识别人脸的技术,该技术将人脸图像中的各种特征提取出来,并将其与数据库中的人脸特征进行匹配。
近年来,基于神经网络(包括卷积神经网络和循环神经网络)的人脸识别算法发展迅速,取得了令人瞩目的成果。
本文将探讨基于神经网络的人脸识别算法研究的相关内容。
I. 基础知识1. 人脸识别原理人脸识别算法的基本原理是将人脸图像中的各种特征提取出来,并将其与数据库中的人脸特征进行匹配。
通常,人脸识别算法包括以下步骤:①预处理:图片裁剪等方式对图像进行处理,提高图片质量。
②特征提取:从图像中提取出人脸的特征关键点,如鼻子、眼睛、口等等,用于分类和识别。
③特征匹配:将提取的特征点进行匹配,和数据库中的相似点进行比对。
2. 神经网络基础神经网络是一种人工智能算法,能够利用其自身的权值来自动分析数据,并从中学习如何处理信息。
包括循环神经网络和卷积神经网络两种。
II. 基于神经网络的人脸识别算法1. 循环神经网络(RNN)人脸识别算法循环神经网络是一种递归神经网络,可以用于对序列数据进行建模和分类。
它的主要特点是可以接受任意长度的输入序列,并输出相应的序列。
在人脸识别中,RNN可以利用不同时间段内的人脸图像序列,通过学习其动态特征,实现更加准确的人脸识别。
2. 卷积神经网络(CNN)人脸识别算法卷积神经网络是一种特殊的神经网络,主要应用于图像识别、语音识别等领域。
CNN的一般结构包含卷积层、池化层和全连接层。
在人脸识别中,CNN可以将人脸图像中的不同位置上的特征进行提取,并通过不断迭代优化,最终实现对人脸的准确识别。
III. 基于神经网络的人脸识别算法在实际应用中的研究基于神经网络的人脸识别算法在现实生活中已经得到了广泛的应用。
在金融领域,可以用于银行ATM自助服务中,确保只有合法用户才能进行取款操作。
在安防领域,可以用于智能门禁,只有识别出名单内的人员才能进入特定场所,从而提高了安全性。
基于BP神经网络的人脸识别系统的研究与实现

运 行 程 序 时 , 要 输 入 想 要 将 每个 人 的 多少 张 图 片 划 需 分为训练集 , 运行 该 程序 后 , 以 在 Malb的 变 量 空 间 中 可 ta 看到一个名为 p n的变 量 名 , 图 3所 示 。该 变 量 是 经 过 如 归 一 化 处 理 后 的 训 练 集 , n wn是 归 一 化 后 的 测 试 集 , pe
院 助教 , 究方 向为 数 字 图像 与 动 画 。 研
第 5期
黄丽韶 , 喜基 : 于 B 朱 基 P神 经 网 络 的 人脸 识 别 系 统 的研 究 与 实 现
回车 。
・7 ・ 9
节 ( 眼 镜 / 戴 眼 镜 ) 拍 摄 的 。所 有 的 图像 为 实 验 者 的 戴 不 下 正 脸 , 有 一 定 程 度 的 朝 上 下 左 右 的 偏 转 或 倾 斜 , 相 似 带 有 的黑 暗 同 质 背 景 。每 幅 图 像 为 1 9 12 2像 素 、 bt的 灰 度 8i 图 。为 了 进 行 比较 , 们 被 分 成 没 有 重 叠 的 、 同 大 小 的 它 相 训 练 集 和 测 试 集 。每 个 类 别 随 机 选 取 5幅 图 像 作 为 训 练
摘 要 : 实现 了一 种 基 于 B P神 经 网络 的 自动人 脸 识 别模 型 的人 脸 图 片识 别 算 法 , 述 了该 算 法 的 基 本 原 理 、 型 以 阐 模
及 实 现过 程 , 通 过 实验 获 得 了较 好 的 识 别 精 确 度 。 并
关 键 词 : P神 经 网络 ; 式 识 别 ; 脸 识 别 B 模 人
中图分类号 : 374 TP 1 .
文献标识码 : A
文 章 编 号 : 6 2 7 0 ( 0 2 0 50 7 — 3 1 7 — 8 0 2 1 ) 0 — 0 80 求 得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于BP神经网络和RBF神经网络的 人脸识别系统研究
演示:杨 乐 指导教师:谷立臣
2020/4/11
• 目录
1 摘要 2 人脸识别系统简述 3 BP神经网络设计
4 RBF神经网络设计 5 MATLAB仿真实验
总结
• 摘要
近年来,人脸检测和识别受到国内外学术界和企业界的广泛关注,其主要 原因是人脸检测和识别在信息安全、访问控制、金融支付、公安刑侦等方面有 着广泛应用。与其他传统的身份识别方法相比,用人脸作为生物特征识别对象 ,具有稳定、便捷、不易伪造等优点,由于其非接触性、非侵犯性,人们对这 种技术没有任何排斥心理,因而它是一种最友好的生物特征识别技术。
• MATLAB仿真实验
BP神经网络MATLAB编程
clear all; clc; x1=[ 0.5000 0.3594 0.7813 0.2031 0.4688 0.8125 0.8438 0.1094 0.2813 0.4063 0.6563 0.8125 0.0938]; x2=[ 0.4688 0.3125 0.7500 0.1875 0.2656 0.6563 0.6719 0.1406 0.3125 0.5938 0.5938 0.7656 0.0625]; x3=[ 0.4219 0.2813 0.7188 0.2031 0.4375 0.7500 0.7813 0.1250 0.2500 0.3594 0.5938 0.6875 0.1250]; x4=[ 0.5313 0.3594 0.7500 0.1719 0.3906 0.8281 0.8438 0.1250 0.4063 0.5313 0.7813 0.8125 0.0625]; x5=[ 0.4531 0.2500 0.8125 0.1719 0.3594 0.7969 0.8125 0.1719 0.3125 0.4688 0.7188 0.8281 0.0938]; x6=[ 0.5938 0.2656 0.8281 0.1406 0.3438 0.8125 0.8125 0.1250 0.2344 0.3594 0.6250 0.9063 0.1250]; x7=[ 0.4063 0.2813 0.8438 0.2188 0.3906 0.7656 0.7969 0.1094 0.2031 0.3281 0.5000 0.8750 0.0625]; x8=[ 0.5000 0.3125 0.7500 0.2031 0.4375 0.7500 0.8125 0.1094 0.2031 0.3125 0.5156 0.9063 0.0781]; x9=[ 0.4688 0.3125 0.7656 0.1563 0.3750 0.6875 0.7500 0.1563 0.2188 0.3906 0.4688 0.7188 0.0938]; x10=[0.4688 0.2500 0.7813 0.1563 0.4063 0.7500 0.7813 0.1250 0.3906 0.5313 0.7031 0.7500 0.0938]; p=[x1;x2;x3;x4;x5;x6;x7;x8;x9;x10]; p=p'; T=[1 0 0 0 0 0 0 0 0 0 ;0 1 0 0 0 0 0 0 0 0;0 0 1 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0; 0 0 0 0 1 0 0 0 0 0; 0 0 0 0 0 1 0 0 0 0 ; 0 0 0 0 0 0 1 0 0 0 ; 0 0 0 0 0 0 0 1 0 0 ; 0 0 0 0 0 0 0 0 1 0 ;0 0 0 0 0 0 0 0 0 1]; T=T'; net=newff(minmax(p),[10 10], {'tansig','purelin'},'trainlm');%隐含层神经元个数10,输出层个数10(表示可以识别出10个人) net.trainparam.goal=0.0001;%误差0.0001 net.trainparam.epochs==10000;%学习次数10000 net.trainparam.show=20; LP.lr=0.05;%学习率0.05 net=train(net,p,T); a1=[0.4688 0.2500 0.7813 0.1563 0.4063 0.7500 0.7813 0.1250 0.3906 0.5313 0.7031 0.7500 0.0938]'; y=sim(net,a1)
表3.1实验样本特征数据
图3-2 实验样本人脸的特征矢量
3. 隐含层节点数及激活函数的选择
增加隐含层数目可以进一步降低误差,提高识别准确度,但也会增大网络复杂 度和训练时间,而误差精度的提高也可通过增加隐含层节点数来实现,训练效果比 增加层数更容易观测和调控。隐含层节点数的选择没有明确的限制,太少则易陷入 局部最小,太多则会增大网络冗余性。本文选取隐含层神经元个数为10。
1.人脸识别系统架构
各个模块的具体功能如下示:
、图像采集模块 通过接口程序从摄像头获得视频流信息,并在系统里进行动态显示。
再把从摄像头获得的同台视频流信息按帧的方式存储为静止的图片,同 时将其转换成可读的图片信息进行保存,并且尽可能的过滤掉无用的信 息,并将该位置信息进行反馈。 、人脸检测和分割模块
人脸识别模块的主要功能是将获得的特征值信息和模板数据库中的特 征值信息进行比较,从而找到一个和待识别人脸最相似的人脸信息并输 出该图像。本模块采用 BP 神经网络对人脸样本进行训练,最终对待识 别人脸图像提供识别功能。
2. 输入/输出层的设计
本文选用典型的三层BP神经网络,输入层神经元个数由前端输入的类特 征数决定。特征的选取应保证最具有代表性、信息量大、冗余量小,并且 要求在一定的干扰下,也能保持一定的不变性和适应性。基于这种要求, 定位了13个特征点。对这组训练样本采用混合积分投影和边缘检测等技术 定位眼睛、鼻子、嘴巴、眉毛等部位,然后利用这些信息进行特征提取。
将从图像采集模块得到的静止图像数据作为原始图像数据,利用器官 分布规则、人脸轮廓规则、人脸对称性和边缘检测方法对该图像数据进 行扫描,获得具体的人脸图像的位置;用直方图均衡、中值滤波、几何 归一化和灰度归一化等方法处理上一步获得的人脸图像,处理后得到易 于特征提取的标准人脸图像; 将获得的人脸图像的灰度值信息传送给特 征提取模块。
Matlab工具箱中提供的RBF网络构造函数为newrbe(P,T,spread)。其 中 P、T 分别为训练集的输入、输出向量;spread 为径向基函数的宽度, 此实验取值1.0。RBF网络的核心是隐含层设计,中心选取得是否恰当从根本 上决定了RBF网络的最终性能。newrbe()是一种非常优秀的RBF 神经网络的 构造和训练算法,可以静态地离线训练,也可以动态地在线训练。在网络训 练阶段,它可以同时进行参数和结构两个过程的自适应调整,可自适应地增 加RBF网络隐含层单元数以达到目标误差的要求,这比BP 网络要有效得多。
各个模块的具体功能如下示:
、特征提取与选择模块 该模块的数据输入是从人脸检测与分割阶段获得的人脸图像的灰度值
信息。特征提取与选择模块将人脸检测与分割阶段获得的人脸图像的灰 度值信息转化到特征空间,并有效降低特征空间的维数,并将该数据传 送到人脸识别模块,以供该模块进行人脸的识别。 ④、人脸识别模块• BP神 Nhomakorabea网络设计
本系统方案中将主要由四个模块组成,包括:(1)图像采集模块;(2)人 脸检测和分割模块;(3)特征提取与选择模块;(4)人脸识别模块。
本系统采用ORL数据库的人脸图像做为训练样本和识别图像,选取10个人的 正面人脸图像,对其采用积分投影和几何特征提取的方法,对人脸特征进行精 确定位。总体思路是:选用该库中的10个对象、每个对象5幅共计50 幅人脸图 像,使用其中一组作为训练样本,在特征提取阶段,对训练图像进行二阶相关 和降维,得到相关的系数;在神经网络识别阶段,首先是输入输出层的设计、 隐含层节点数的选取、激励函数选择,然后就是通过设计好的神经网络进行训 练和识别。
本文的BP 神经网络隐含层、输出层激活函数都选用 tansig 函数,输入到输出 的传输函数选择常用的纯线性传递函数purelin。此外,在本文的设计中,神经网 络学习速率、最大训练次数以及目标误差分别设置为0.05、10000 和 0.0001。
• RBF神经网络设计
人脸图像作为一个高度复杂的非线性系统,其蕴含的规律不是一般的算法能够发现 的。同时,人脸图像也存在一个动态变化的过程。随着年龄的增大,一个人的面貌可能 发生很大的变化。即使是一个人在很短的时间里的两幅图像也可能因为表情的变化、环 境的不同、是否戴有遮饰物等等因素导致识别错误。BP神经网络用于人脸识别时虽然也 能够完成识别和分类的任务,但是误差比较大。这主要是与BP网和BP算法的自身缺陷有 关。
人脸识别在基于生物特征识别技术的身份认证中是最主要的方法之一。基 于人脸识别的自动身份认证具有重要的理论意义和应用价值,早在六七十年代 就引起了研究者的强烈兴趣,对人脸自动识别方法的研究已成为当前模式识别 和人工智能领域的一个研究热点。
虽然人类能够很容易地识别人脸及其表情,但人脸的自动机器识别却是一 个极其复杂的课题。它的研究涉及到计算机图形学、数字图像处理学、计算机 视觉、模式识别、机器学习、感知科学、人工智能、计算智能等技术,人脸识 别技术在近年来获得大量的研究成果,并且正在逐步成熟。与指纹、掌纹、眼 虹膜、声音、签名笔迹及DNA 等其它人体生物特征识别系统相比,人脸识别系 统具有直接、友好、方便的特点,易于为使用者所接受。