做人脸识别快3年了,从本科大三到现在研一,看了很多别人的博客,一直忙于学习和研究,今天第一次写个博客,关于“PCA人脸识别的”,打算今后把关于人脸识别的经典方法都在我的博客里面介绍一遍,有机会的话,把我自己做人脸识别方法也介绍给大家,目前主要研究压缩感知,稀疏表示相关的理论,对基于稀疏表示的人脸识别也有一段时间的研究。希望这篇博客对各位人脸识别研究的初学者提供一些帮助。下面开始介绍我的人脸识别研究之路的第一篇“PCA人脸识别”。

看了许多文章,做人脸识别研究的,PCA人脸识别应该必须了解的,这是基础,因为真正的计算机自动人脸识别的研究就是从PCA人脸识别开始的,20世纪80~90年代——经典PCA(Eigenface)和LDA(Fisherface)相继诞生。我们所研究的人脸识别,一般都基于标准人脸库进行训练、测试识别。

1. PCA人脸识别操作流程

在平时的研究中,我总结的PCA人脸识别的主要流程如下图所示:

图 1 PCA人脸识别流程图

通过上图的PCA人脸识别流程可以看出,PCA方法可以总结为以下几个阶段:训练样本、特征提取、构造特征空间、投影计算。

2. PCA人脸识别方法原理介绍

Karhunen-Loeve(K-L)变换或主要分量分析(Principal Component Analysis,PCA)是普遍使用的一种技术,这种技术的主要作用是将续信号转换为一组不相关的表示系数。主要分量分析(PCA)形成了K-L变换的基础,主要用于数据的紧凑表示。在数据挖掘的应用中,它主要应用于简化大维数的数据集合,减少特征空间维数,可以用较小的存储代价和计算复杂度获得较高的准确性。

PCA方法通过消除数据的相关性,找到一个空间,使得各个类别的数据在该空间上能够很好地分离。如下图所示:

图 2 PCA降维和分类示意图

在图2中,有一些离散的二维分布点,其中五角星表示一类集合,小圆圈表示另一类集合,假设这两个类别可以用特征X和特征Y进行描述,由图可知,在X轴和Y轴上这两个类别的投影是重叠的,表明这些点的两个特征X和Y没有表现出突出的识别性。但是两个类的投影在Z轴上区分度较大,显示出很好的识别性。PCA就是这样的一个工具,它可以产生非常好的降维效果,这种方法也可以用在图像处理的其他的一些研究中,如图像压缩、分类以及特征选择等。

接下来详细介绍一下PCA的理论原理:

通过对主成分分析方法做了简单的说明以后,接下来,我们来具体分析一下K-L变换的原理。

假设在图像集合f(m,n)中,每张图像可以用堆叠的方式表示成一个维列向量:

                         (1)

其表示方法为:从图像矩阵的第一列开始取,依次取到最后一列,每一列首尾相连,构成一个维列向量。将每一幅人脸图像表示

列向量以后,然后依次将每一个图像列向量转置成行向量,构成一个人脸样本矩阵,该样本矩阵即图像集合:

                                  (2)

由式(2)可知样本矩阵有L行,其中每一行的数据就代表一张人脸样本图像,L表示训练样本的总个数。

训练样本的协方差矩阵为:

                                                       (3)

式中mf是所有训练样本的平均值向量,也即是所有样本的平均脸。(3)式中的[Cf]阵为阶实对称方阵,则其一定存在个相互正交的属于各个特征值的特征向量,即有:

                                                  (4)

将上述特征值进行降序排列,并取每个特征值对应的特征向量构成一个正交矩阵,也即是一个维的正交空间。按照文献中的说明,此处的矩阵[Cf]的维数很大,求解其特征值和特征向量比较复杂,这个时候需要对(3)式进行变形,简化求解,其变形结果如下:

                                                    (5)

此时,对(5)式中的矩阵进行特征值和特征向量的求解,将求解出的特征向量和特征值经过SVD奇异值分解,得到原训练样本的特征向量,这样就可以构造出最终的人脸投影空间。

                                         (6)

其中vi就是(5)中协方差矩阵的特征向量,p是特征向量的个数。将特征向量转化为矩阵,矩阵就可以表示图像,也即是所谓的特征脸,如下:

图 3 PCA特征脸

到这里为止,我们就找到了PCA人脸识别需要的投影特征空间了:

                  (7)

接下来就可以通过K-L变换式进行投影计算了,得出各个样本在空间Wpca上的投影特征了:

                                                       (8)

其中[A]就是空间Wpca,其实(8)式中不用(f-mf)也行,直接换成f就可以,即表示将原人脸样本在空间Wpca上进行投影,将投影后的特征系数存在矩阵g中,如果没有记错的话,g中每一行表示一个人脸样本的特征系数(或者每一列表示一个人脸样本的特征稀疏,这个与个人的计算方法有关,主要是看矩阵的转置或者不转置)。

到这里PCA人脸识别的主要步骤已经介绍完了,剩下的就是识别过程了,这个比较容易理解,首先将训练样本在空间[A]上进行投影,得到投影样本的特征系数,然后将测试样本也在空间[A]上进行投影,得到每个测试杨样本的投影特征系数,此时,只需将测试某个样本的特征系数与训练样本投影特征系数进行欧式距离度量,看要测试的那个样本与训练集中哪个样本的欧式距离最近,就可以将该测试样本归为与之距离最近那个样本的类别。比如:训练样本a1属于S1类(S1类中包含很多样本,a1只是其中的一个样本),如果测试样本b1和a1的距离最近,那么就将b1归为S1类。如此下来,对所有的样本进行分类,就可以得到PCA人脸识别率了。

     最后,关于PCA人脸识别的代码很多,百度一下就可以搜出很多链接,这篇博客主要简单地介绍一些PCA人脸识别的原理。

  准备下一篇博客介绍基于Fisher线性判别分析人脸识别,也即是所谓的LDA人脸识别,希望能够抽出时间早点写出来。


PCA人脸识别详解——初学者必看相关推荐

  1. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  2. OpenCV-Python实战(17)——人脸识别详解

    OpenCV-Python实战(17)--人脸识别详解 0. 前言 1. 人脸识别简介 2. 使用 OpenCV 进行人脸识别 2.1 使用 OpenCV 进行人脸识别流程示例 3. 使用 dlib ...

  3. php+laravel+百度智能云人脸识别详解

    前提条件: 首先,要有一个百度云账号并获取到自己的App_Id.API_KEY.Secret_Key和创建好的人脸库名 1. 下载SDK composer require baidu/aip-sdk ...

  4. 2D与3D人脸识别详解

    人脸是人体最重要的生物特征之一,而人脸研究主要集中在人脸识别方面,人脸的表达模型分为2D人脸和3D人脸.2D人脸识别研究的时间相对较长,方法流程也相对成熟,在多个领域都有使用,但由于2D信息存在深度数 ...

  5. python工具安装教程_Python 开发工具PyCharm安装教程图文详解(新手必看)

    一.概念理解1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行jso ...

  6. 索尼android sd卡上,SD卡各个文件夹功能详解 入手必看经验!!!!

    对于初次使用Android系统的新手来说,当打开SD开一看,里面那些林林总总的文件夹总会让自己不知所措,有些看文件夹名称,还能猜到点作用来,但是大部分的都不知道是做什么的 1..android_sec ...

  7. 不可重复读和幻读详解(必看!!!)

    前言:看了很多关于MySQL隔离级别的视频和文章,发现了一个问题,大家都是说,不可重复读是在一个事务中读到了另一个事务提交后修改后的数据,而幻读是一个事务读到了另一个事务中添加并提交后的数据.那么删除 ...

  8. RPC框架详解(必看)

    1.RPC介绍 RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想.RPC 是一种技术思想而非一种规范或协议 ...

  9. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

    OpenCV-Python实战(14)--人脸检测详解(仅需6行代码学会4种人脸检测方法) 0. 前言 1. 人脸处理简介 2. 安装人脸处理相关库 2.1 安装 dlib 2.2 安装 face_r ...

  10. 主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa

    主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到:21 原文出处: 中科春哥    一.PCA简介 1. 相关背景 主成分分析(Principal Co ...

最新文章

  1. POJ3693 Maximum repetition substring
  2. 微信小程序实战–集阅读与电影于一体的小程序项目(六)
  3. 数据分析与挖掘理论-概述
  4. HP Instant Information
  5. excel表格不够怎么添加_excel怎么添加筛选
  6. java 如何重写迭代器,如何用Java按需定制自己的迭代器
  7. 在Web中实现C/S模式的Tab
  8. Redis-秒杀场景应用
  9. 是新最全Git命令大全及速记图
  10. emulator教程 lbochs pc_bochs模拟器怎么用?bochs模拟器安装使用教程
  11. ogg for bigdata hbase安装步骤
  12. ROS 入门基础(二) 创建publisher
  13. [Azure]使用Powershell输出某台ARM虚拟机的NSG
  14. Fiddler下载安装及手机抓包--小白版
  15. 磁力小伙伴,配合使用效果极佳!
  16. C. Electrification(尺取)
  17. C语言*p、p以及p的区别
  18. 奇瑞a3中控按键图解_奇瑞A3使用说明
  19. 用JIRA管理你的项目———JIRA环境搭建
  20. 【如何系统的学习it技术】

热门文章

  1. 【裴礼文数学分析】例1.1.5
  2. 计算机二级C语言选择题总结
  3. 利用python3将word批量转换成pdf
  4. 新颖的自我介绍_有创意的自我介绍模板(精选6篇)
  5. 自媒体文章采集工具,采集多个平台的文章
  6. BarTender对单个二维码/文本添加多个域(数据库字段)/嵌入的数据,并对数据添加后缀等处理;扩展更多域
  7. html5吻胸小游戏,html5气球大战小游戏代码
  8. 【计算机组成原理】数据通路
  9. 硬件时序图软件——TimeGen_v3.3
  10. python自动补全快捷键_Python快捷键的干货来啦!快来看看你掌握了几个~