基于PCA和SVM的人脸识别以及MATLAB实现

 本章利用matlab实现基于PCA和SVM的人脸识别,此章共分为两部分,第一部分为基础知识讲解,第二部分为代码实现(含有本工程下所有代码)。系统界面如下:                        

                    

一.什么是人脸识别?

     人脸识别技术,就是以计算机为辅助手段,从静态或动态图像中识别人脸。

     本问题中的人脸识别,是给定一幅人物图,利用人脸数据库 来与之进行匹配,判断其是否属于此数据库。若是,给出她所属的类别。


二. 为什么选择人脸作为识别特征来识别?

        因为人脸和指纹一样,具有唯一性,可以用来鉴别一个人的身份。

        也就是说,我们想要识别一个东西,要选它主要的特征,辨识度区分度高的特征,这样识别结果才可靠。 就像我们要识别一个人,为什么不去识别他的身高,体重,肤色,眼睛大小啥的?因为这些没有独特性,作为数据来说,太普通了,两个人身高体重肤色相同的概率还是很大的,所以不能作为唯一辨识特征。而选择DNA、指纹、虹膜等属性来作为识别一个人特征,就是因为这些属性具有唯一性,这世界上,不会有人和你在这些特征上重样。


三.人脸识别是怎么进行的?

     1)找感兴趣区域----从复杂场景中检测并分离出人脸所在的区域;

     2)抓特征---抽取人脸识别特征

     3)匹配吧---进行匹配和识别


四. 为了实现人脸识别,你要做什么?

1)人脸数据库ORL

      a) 数据库中的人脸图片一部分用来做训练数据,建立模型。

      b) 另一部分可以用来做测试数据,检验识别率。

2)PCA主成分分析来降维

      a)为什么要降维?

          因为每幅人脸图像包含112*92=10304个像素点,每一行代表一个样本,那维度就是10304维。

          如此巨大的维数使得数据处理工作很是艰难,也打消了我们直接利用像素点作为特征值来识别的念头。

      b)PCA是什么?它怎么来实现降维的?     

          PCA是主成分分析(principal component  analysis).利用PCA降维去除像素之间的相关性,取出主成分,同时抛弃那些不能为我们提供重要特征信息的分量。

          PCA 通过对样本数据中各成分分量(10304维)进行排序,可选出主要成分,构成主成分分量V(n*k)矩阵(k维)且输出降维后的k维矩阵pcaA

                   b1) 其中主成分矩阵V 可在 test.m 和 classify.m中直接带入公式求得降维后的矩阵。

                                b11) test.m中,      TestFace = (TestFace-repmat(meanVec, m, 1))*V;           %多个样本数据  经过pca变换降维 

                                b12) classify.m中,xNewFace=(xNewFace-meanVec)*V;                                 %单个样本数据  经过PCA变换降维

                   b2) 其中输出的k维矩阵pcaA将代替 原样本数据 参与后续数据处理,即pcaA成为样本。

3) 数据规格化scaling

     a) 数据规格化是什么?

         数据规格化又称数据尺度归一化,是指将某一属性的取值范围 投射到一个特定范围之内,例如常用的[0,1]或[-1,+1]归一化。

      b) 数据规格化的作用?

         b1)  防止那些处于相对较大的数值范围的特征 压倒那些数值范围小的 特征。例如:几个人具有变化范围大的身高(150cm-180cm)以及 变化范围小的体重(50kg-60kg), 数据规格化后,两个属性的变化差异就缩小了,很好的保护了 变化范围小的 属性依旧能对目标识别起到重要作用。

         b2)  避免一些数据溢出问题,统一放缩到同一范围,例如,把数据都限定在[-1,+1]区间,让那些大个子也不得不低头。 

4)SVM分类识别 

       a)SVM是什么?

          SVM支持向量机(support vector machine)。SVM是一种分类的方法,通过训练数据来建立分类模型,将分类模型用于对测试数据的分类。就相当于是叠了一个黑盒子,然后你往里扔小球(测试数据),他就能把小球分好类。当然前提是,你得用一堆小球(训练数据)去建立这样一个黑盒。

                  a1) SVMTrain      ---通过训练数据来建立分类模型

  • 21
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值