基于BP神经网络的人脸识别方法研究
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
各个模块的具体功能如下示:
、特征提取与选择模块 该模块的数据输入是从人脸检测与分割阶段获得的人脸图像的灰度值
信息。特征提取与选择模块将人脸检测与分割阶段获得的人脸图像的灰 度值信息转化到特征空间,并有效降低特征空间的维数,并将该数据传 送到人脸识别模块,以供该模块进行人脸的识别。 ④、人脸识别模块
输出层神经元数目即目标类别数,由人脸库中的类别数目确定,若人 脸数据库的类别为M 个,则输出层节点就取M。本文选用的ORL人脸数据库 中10个对象即10类模式,所以网络输出层神经元个数为10,也即最终能识 别出10个目标人脸。
下图3-2中所示的人脸的特征矢量,表 3.1 所示为实验样本特征数据 ,特征矢量数 据的单位为象素。将表3.1 实验样本特征数据归一化。因为图像本身是 64×64 象素, 故在归一化过程中直接将各特征向量除以 64,即得到落在(0,1)区间的值。
Leabharlann Baidu
实验结果总结与分析
由仿真实验结果可看出,本文的设计思路和方法是正确的,只要待识别人脸图 像来自选定的样本集,均可以准确识别出此人,只要不是此样本集中的人脸图像, 就能判断出是陌生人。
RBF神经网络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'; spread=1.0; %径向基函数的宽度,取值1.0 net=newrbe(p,T,spread); a1=[0.4677 0.2500 0.7823 0.1553 0.4100 0.7499 0.7813 0.1249 0.3899 0.5300 0.7029 0.7499 0.0940]'; y=sim(net,a1)
表3.1实验样本特征数据
图3-2 实验样本人脸的特征矢量
3. 隐含层节点数及激活函数的选择
增加隐含层数目可以进一步降低误差,提高识别准确度,但也会增大网络复杂 度和训练时间,而误差精度的提高也可通过增加隐含层节点数来实现,训练效果比 增加层数更容易观测和调控。隐含层节点数的选择没有明确的限制,太少则易陷入 局部最小,太多则会增大网络冗余性。本文选取隐含层神经元个数为10。
本文将采用 BP 神经网络进行人脸识别,主要包括特征提取和神经网络识 别两大部分:从人脸图像库中选取一定数量的训练图像,用主成分分析法对其 进行一定的预处理,并将得到的相关参数输入到系统中,利用 MATLAB 实现BP 神经网络训练及仿真。
关键词:人脸识别;BP神经网络;图像检测;MATLAB仿真
• 人脸识别系统简述
RBF神经网络可以根据具体情况改变网络结构和网络参数,具有自学习、自组织、 自适应的功能。同时,它学习速度快,不存在局部极小问题。RBF网络对非线性连续函 数具有一致逼近性,它可以进行大范围的数据融合,可以并行高速地处理数据。正是由 于以上的这些特点,可以采用RBF网络来进行人脸识别,它可以对不同的人脸进行分类、 关联、融合、协调,从而达到学习人脸图像之间的潜在规律,实现快捷、方便的识别效 果。
• BP神经网络设计
本系统方案中将主要由四个模块组成,包括:(1)图像采集模块;(2)人 脸检测和分割模块;(3)特征提取与选择模块;(4)人脸识别模块。
本系统采用ORL数据库的人脸图像做为训练样本和识别图像,选取10个人的 正面人脸图像,对其采用积分投影和几何特征提取的方法,对人脸特征进行精 确定位。总体思路是:选用该库中的10个对象、每个对象5幅共计50 幅人脸图 像,使用其中一组作为训练样本,在特征提取阶段,对训练图像进行二阶相关 和降维,得到相关的系数;在神经网络识别阶段,首先是输入输出层的设计、 隐含层节点数的选取、激励函数选择,然后就是通过设计好的神经网络进行训 练和识别。
基于BP神经网络和RBF神经网络的 人脸识别系统研究
演示:杨 乐 指导教师:谷立臣
2020/4/11
• 目录
1 摘要 2 人脸识别系统简述 3 BP神经网络设计
4 RBF神经网络设计 5 MATLAB仿真实验
总结
• 摘要
近年来,人脸检测和识别受到国内外学术界和企业界的广泛关注,其主要 原因是人脸检测和识别在信息安全、访问控制、金融支付、公安刑侦等方面有 着广泛应用。与其他传统的身份识别方法相比,用人脸作为生物特征识别对象 ,具有稳定、便捷、不易伪造等优点,由于其非接触性、非侵犯性,人们对这 种技术没有任何排斥心理,因而它是一种最友好的生物特征识别技术。
人脸识别在基于生物特征识别技术的身份认证中是最主要的方法之一。基 于人脸识别的自动身份认证具有重要的理论意义和应用价值,早在六七十年代 就引起了研究者的强烈兴趣,对人脸自动识别方法的研究已成为当前模式识别 和人工智能领域的一个研究热点。
虽然人类能够很容易地识别人脸及其表情,但人脸的自动机器识别却是一 个极其复杂的课题。它的研究涉及到计算机图形学、数字图像处理学、计算机 视觉、模式识别、机器学习、感知科学、人工智能、计算智能等技术,人脸识 别技术在近年来获得大量的研究成果,并且正在逐步成熟。与指纹、掌纹、眼 虹膜、声音、签名笔迹及DNA 等其它人体生物特征识别系统相比,人脸识别系 统具有直接、友好、方便的特点,易于为使用者所接受。
Matlab工具箱中提供的RBF网络构造函数为newrbe(P,T,spread)。其 中 P、T 分别为训练集的输入、输出向量;spread 为径向基函数的宽度, 此实验取值1.0。RBF网络的核心是隐含层设计,中心选取得是否恰当从根本 上决定了RBF网络的最终性能。newrbe()是一种非常优秀的RBF 神经网络的 构造和训练算法,可以静态地离线训练,也可以动态地在线训练。在网络训 练阶段,它可以同时进行参数和结构两个过程的自适应调整,可自适应地增 加RBF网络隐含层单元数以达到目标误差的要求,这比BP 网络要有效得多。
将从图像采集模块得到的静止图像数据作为原始图像数据,利用器官 分布规则、人脸轮廓规则、人脸对称性和边缘检测方法对该图像数据进 行扫描,获得具体的人脸图像的位置;用直方图均衡、中值滤波、几何 归一化和灰度归一化等方法处理上一步获得的人脸图像,处理后得到易 于特征提取的标准人脸图像; 将获得的人脸图像的灰度值信息传送给特 征提取模块。
本文的BP 神经网络隐含层、输出层激活函数都选用 tansig 函数,输入到输出 的传输函数选择常用的纯线性传递函数purelin。此外,在本文的设计中,神经网 络学习速率、最大训练次数以及目标误差分别设置为0.05、10000 和 0.0001。
• RBF神经网络设计
人脸图像作为一个高度复杂的非线性系统,其蕴含的规律不是一般的算法能够发现 的。同时,人脸图像也存在一个动态变化的过程。随着年龄的增大,一个人的面貌可能 发生很大的变化。即使是一个人在很短的时间里的两幅图像也可能因为表情的变化、环 境的不同、是否戴有遮饰物等等因素导致识别错误。BP神经网络用于人脸识别时虽然也 能够完成识别和分类的任务,但是误差比较大。这主要是与BP网和BP算法的自身缺陷有 关。
人脸识别模块的主要功能是将获得的特征值信息和模板数据库中的特 征值信息进行比较,从而找到一个和待识别人脸最相似的人脸信息并输 出该图像。本模块采用 BP 神经网络对人脸样本进行训练,最终对待识 别人脸图像提供识别功能。
2. 输入/输出层的设计
本文选用典型的三层BP神经网络,输入层神经元个数由前端输入的类特 征数决定。特征的选取应保证最具有代表性、信息量大、冗余量小,并且 要求在一定的干扰下,也能保持一定的不变性和适应性。基于这种要求, 定位了13个特征点。对这组训练样本采用混合积分投影和边缘检测等技术 定位眼睛、鼻子、嘴巴、眉毛等部位,然后利用这些信息进行特征提取。
• 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)
1.人脸识别系统架构
各个模块的具体功能如下示:
、图像采集模块 通过接口程序从摄像头获得视频流信息,并在系统里进行动态显示。
再把从摄像头获得的同台视频流信息按帧的方式存储为静止的图片,同 时将其转换成可读的图片信息进行保存,并且尽可能的过滤掉无用的信 息,并将该位置信息进行反馈。 、人脸检测和分割模块