1. 问题介绍

(1)问题描述本文主要研究的问题是人脸识别系统,人脸识别技术是要用计算机分析人脸图像,从中提取有效的识别信息并通过分类器自动鉴别的一种技术。人脸识别技术是基于生理特征进行识别,作为最主要的生物特征身份认证技术之一。人脸识别更为直接、友好而自然。
(2)数学模型:PCA全称Principal Component Analysis,即主成分分析,是一种常用的数据降维方法。它可以通过线性变换将原始数据变换为一组各维度线性无关的表示,以此来提取数据的主要线性分量。
\begin{equation}
Z=w^{T}x
\end{equation}
其中,z为低维矩阵,x为高维矩阵,w为两者之间的映射关系。假如我们有二维数据(原始数据有两个特征轴——特征1和特征2)如下图所示,样本点分布为斜45°的蓝色椭圆区域。PCA算法认为斜45°为主要线性分量,与之正交的虚线是次要线性分量(应当舍去以达到降维的目的)。

在统计学上,协方差用来刻画两个随机变量之间的相关性,反映的是变量之间的二阶统计特性。考虑两个随机变量Xi和Xj和它们的协方差定义为:
cov(Xi,Xj)=E[(Xi−E(Xi))(Xj−E(Xj))]cov(X_{i},X_{j})=E[(X_{i}-E(X_{i}))(X_{j}-E(X_{j}))]cov(Xi​,Xj​)=E[(Xi​−E(Xi​))(Xj​−E(Xj​))]
要达到PCA降维目的,等价于将协方差矩阵对角化:即除对角线外的其他元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据。设Y的协方差矩阵为D,我们推导一下D与C的关系:
D=1mYYT=1m(PX)(PX)T=P(1mXXT)PT=PCPTD=\frac{1}{m}YY^{T}=\frac{1}{m}(PX)(PX)^{T}=P(\frac{1}{m}XX^{T})P^{T}=PCP^{T}D=m1​YYT=m1​(PX)(PX)T=P(m1​XXT)PT=PCPT
优化目标变成了寻找一个矩阵P,满足是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。
(3)原理方法:
本文利用机器学习领域经典的主成分分析法(PCA法),在所建图像数据库的基础上完成人脸识别功能。本文按照完整的流程来实现基于PCA的人脸识别:首先是将准备好的图像库导入(如使用的数据库中的光照不均匀且特征点不统一时要进行归一化操作);接下来是人脸图像预处理;(每列减去均值)接着使用PCA提取人脸特性,计算协方差矩阵的特征值和特征向量;选择主成分,对训练集进行降维;最后使用最近邻法分类器来进行人脸判别。
(4)距离函数的选取和分类判别 将人脸图像投影到特征子空间,得到相应的人脸特征向量之后,余下的任务就是如何判别测试图像所属的类别,即归类问题或判别决策问题。首先,需要对图像之间的相似性进行度量。常见的度量方式有:
1)欧氏距离欧式( (Euclidean)距离也称欧几里德距离,向量X与Y之间的欧氏距离定义为:
D(X,Y)=∑i=1n(xi−yi)2D(X,Y)=\sqrt{\sum\limits_{i=1}^{n}(x_{i}-y_{i})^{2}}D(X,Y)=i=1∑n​(xi​−yi​)2​
2)Covariance 距离(余弦夹角距离)
向量X与Y之间的角度相似性定义为它们之间夹角的余弦,即:
D(X,Y)=(X,Y)∥X∥∗∥Y∥D(X,Y)=\frac{(X,Y)}{\|X\|*\|Y\|}D(X,Y)=∥X∥∗∥Y∥(X,Y)​
马氏距离引入特征值,给特征值小的特征向量更大的权值,使每个基坐标的重要性平等,从而排除了不同特征之间相关性的影响。
计算出图像之间的相似度以后,我们需要对所得到的信息进行分类判别决策,常用的分类方法有最近邻分类器、K-近邻分类器、贝叶斯分类器等。在本实验的PCA人脸识别方法中,使用的是基于欧氏距离的最近邻分类器。

2.实验数据

(1)ORL人脸数据库由英国剑桥Olivetti实验室从1992年4月到1994年4月期间拍摄的一系列人脸图像组成共包含有40个不同年龄、不同性别和不同种族的对象。ORL数据库共有400幅人脸图像(40人, 每人10幅, 大小为112像素x92像素),这个数据库比较规范,大多数图像的光照方向和强度都相差较小,图像背景均为黑色,表情和人脸姿态略微有变化,但仍然是较为理想人脸数据库。
(2)FERET人脸库,该数据库是最大的人脸数据库,由英国国防部建立。它里面的人脸图像有着肤色和人脸角度的变化,而且测试者的背景图像都是统一的,因此该数据库具有较高权威性,但弊端是获取图像信息困难。
(3)Essex人脸库,英国埃塞克斯大学建立了该人脸数据库,并为研究者提供免费的下载,但是不允许发售和打印。该数据库中的背景、人脸角度、人脸比例大小都有所变化,因此识别较为困难。
本实验的图像数据采用著名的ORL人脸库,该库也是目前使用最广泛的标准人脸数据库。本库中每张图片大小为11.1k,像素为112×92,格式为.bmp格式。该数据库共包含40人,每人10张图片,实验中用每个人的前五张(共计200张)用作训练集,后五张用做测试集。
数据库来源为互联网。

3.实验过程

3.1实验设定:
(1)实验环境:matlab2015b;
(2)参数设定:在进行特征值选择时,选择累计大于85%的前K个特征值;
(3)数据预处理:图像去中心化处理;
(4)训练集:数据集一共40人,每人10幅图像,采用每人的前5幅图像作为训练集,共计200幅图像;
(5)测试集:数据集一共40人,每人10幅图像,采用每人的后5幅图像作为测试集,共计200幅图像;
(6)准确率:88.5%
3.2实验步骤:
完整的PCA人脸识别算法包括以下两个过程:
(1)训练过程,步骤如下:1)获取人脸库中的人脸图像,并进行相关的预处理,采用每个人的前5张图片建立训练集;2)对训练集中的图像进行主成份分析,(选择累计大于85%的前K个特征向量)得到特征脸,形成特征子空间;3)把训练集中的图像投影到特征子空间,保存相应的特征向量。
(2)准确率判定过程,步骤如下:
1)获取人脸库中的人脸图像,采用每个人的后5张图片建立测试集
;2)对训练集中的图像进行主成份分析,(选择累计大于85%的前K个特征向量)得到特征脸,形成特征子空间;
3)把训练集中的图像投影到特征子空间,保存相应的特征向量;
4)利用欧式距离公式,一一判断能否正确的在训练集中找到对应的映射的测试集图像,最终得到识别准确率。
(3)识别过程,步骤如下:1)对任意输入的测试图像进行预处理工作;2)将测试图像投影到人脸特征子空间中,得到相应的人脸特征向量;3)根据欧式距离函数,进行分类判别,进而找到识别出的人脸图像。

3.3实验分析:
第一步,运行程序File_Read_ORL.m,即输入:imdata = File_Read_ORL();%此子程序完成训练集图像导入,生成一个10304×200的训练集矩阵imdata;
第二步,运行程序newVT.m,即输入:[neednum,average_face, immin, newVT] = newVT(imdata);%此子程序完成标准的PCA降维过程,输入为上一子程序得到的矩阵imdate,输出得到neednum(累计贡献率为85%以上的特征脸个数,为47),average_face(200张训练样本的平均脸,为10304×1), immin(训练样本去中心化后的样本矩阵),newVT(降维后的特征向量矩阵,为47×10304),同时能够得到平均脸图像如下图所示:

第三步,运行程序OutputClass = Recognition(‘G:\作业\FaceRecognitionPCA\faces\s29\6.bmp’,neednum,average_face, immin, newVT),%此过程为完成训练集和测试集的图像映射,并计算准确率;同时也根据任意输入的一张测试图像完成在查找相似人脸的工作。其中多次调用了欧式距离的计算,因此将此计算过程单独封装为minindex函数以方便调用。此程序的输入为测试图像路径、以及neednum、immin、average_face、newVT,输出为显示输入人脸图像和查找结果以及准确率。示例:当如输入路径为G:\作业\FaceRecognitionPCA\faces\s29\6.bmp时,即显示当前路径下该类中查找到的最相似人脸,同时输出:测试中判错数为:23张,正确数为:177张,正确率为:88.5%。

4.结论

本人脸识别系统在标准ORL人脸数据库的基础上进行实验训练得到模型,通过随机输入想要测试的图片,系统经过会自动读取后进行识别,并且显示出查找到的最相似人脸。经过测试发现,本系统能够很好地实现人脸识别,识别的准确率高达88.5%。

本系统的PDF报告和详细代码实现见本人的其他博客
//download.csdn.net/download/weixin_44348260/12115911,下附几张matlab代码实现图片




基于ORL库的PCA人脸识别系统matlab实现相关推荐

  1. 基于opencv和pillow实现人脸识别系统(附demo)

    更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...

  2. 人脸识别系统 matlab,基于MATLAB的人脸识别系统的设计

    基于MATLAB的人脸识别系统的设计(论文12000字,外文翻译,参考程序) 摘要:本文基于MATLAB平台设计了一款简单的人脸识别系统,通过USB摄像头来采集图像,经过肤色方法进行人脸检测与定位,然 ...

  3. 基于opencv和pillow实现人脸识别系统(附详细源代码)

    本文不涉及分类器.训练识别器等算法原理,仅包含对其应用(未来我也会写自己对机器学习算法原理的一些观点和了解) 首先我们需要知道的是利用现有框架做一个人脸识别系统并不难,然后就开始我们的系统开发吧. 我 ...

  4. 基于百度智能云的人脸识别系统

    演示视频: [人脸识别]没想到自己做个人脸识别软件居然这么简单! 树莓派人脸识别代码: from picamera.array import PiRGBArray from picamera impo ...

  5. 基于Python+opencv实现的人脸识别系统

    前言:因为python课设我选择的是关于人脸识别的这个课题,然后做出来也是根据一些博客主们的经验,其中自己也踩了一些坑,然后自己也想写一个关于这个课题的一些总结,讲一下在其中存在的一些问题,以及怎样解 ...

  6. 【身份证识别】基于形态学实现二代身份证号码识别系统matlab源码含GUI

    一.简介 首先从身份证图像上获取0-9和X共十一个号码字符的样本图像作为后续识别的字符库样本,其次将待测身份证图像进行去噪.灰度化.二值化.水平投影切割,垂直投影并切割,将待测身份证号码分割出来,然后 ...

  7. 【图像识别】基于计算机视觉实现路面裂缝检测识别系统matlab代码

    1 简介 随着公路与铁路事业的飞速发展,各类车辆和里程的增加,铁路的一次次提速,都对路面产生了巨大的压力.不论是公路路面还是铁路路面,路面裂纹都能随处可见,由路面裂纹造成的交通事故时有发生.研究路面裂 ...

  8. Linux毕业设计:基于OpenCV和QT库实现的人脸识别考勤/门禁系统(arm嵌入式ubuntu)

    本文介绍:Linux上以opencv和qt库实现的人脸识别系统,可应用于考勤.门禁等场景,具有人脸录入.删除.人脸检测.识别.用户管理等完整功能.可运行于ARM嵌入式linux.ubuntu即纯软件. ...

  9. 基于MATLAB的人脸识别系统[创新元素,界面GUI]

    第一章 绪论 本章提出了本文的研究背景及应用前景.首先阐述了人脸图像识别意义:然后介绍了人脸图像识别研究中存在的问题:接着介绍了自动人脸识别系统的一般框架构成:最后简要地介绍了本文的主要工作和章节结构 ...

  10. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

最新文章

  1. Atitit 热烈庆祝读经器项目圆满完成
  2. 三菱plc两个16转换32位_三菱FX2NPLC如何将十进制数转换成十六进制-专业自动化论坛-中国工控网论坛...
  3. 彻底搞定C指针-函数名与函数指针[转]
  4. web.xml.jsf_面向初学者的JSF 2.0教程
  5. 前端学习(2636):文件缺失
  6. 中考物理可不可以用计算机,不能用计算机?2021年起广州中考课目改为“4+4”...
  7. 全字库说文解字字体_【180期】可商用字体大全,无版权纠纷!
  8. C# 线程手册 第二章 .NET 中的线程 线程的优势
  9. 老旗舰华为能用上鸿蒙吗,荣耀手机能升级鸿蒙吗?五款旗舰优先,老荣耀机主或有惊喜...
  10. C++算法学习(力扣:859. 亲密字符串)
  11. 深度学习:transformer模型
  12. CAKeyframeAnimation简单实用
  13. AtCoder Regular Contest 102 (ARC102) E - Stop. Otherwise... 排列组合
  14. 计算机应用基础试卷结果分析,计算机应用基础试卷分析
  15. 高数 | 精通中值定理 解题套路汇总
  16. Win10 LTSC版如何安装应用商店Microsoft Store
  17. UNH-IOL获批成为首家获得OVP认证的第三方实验室
  18. 7.Unity2D 横版 未受伤害时,血条缓慢变透明+伤害数值显示(浮动,大小,颜色)+协程的应用
  19. Greenplum使用TPC-H测试过程及结果
  20. 申请优豆云免费虚拟主机使用感受分享心得

热门文章

  1. vue 实现简约留言板
  2. 计算机网络概述测试,《计算机网络技术基础》 第1章 计算机网络概述 单元测试 附答案...
  3. 国科大.模式识别与机器学习.期末复习笔记手稿+复习大纲
  4. 开源知识管理系统_开源MrDoc,一个适合个人和小型团队的文档、知识、笔记在线管理系统...
  5. win10操作系统使用IE8浏览器仿真环境
  6. 【190105】VC++ 家庭理财系统1.0(Access)源码源代码
  7. php mysql 博客,PHP操作MySQL
  8. U盘量产工具_修复、U盘写保护无法格式化、U盘文件乱码格式
  9. 3. (5.18~5.25)2022年自动化保研信息+分析汇总(夏令营)
  10. NANDFlash原理