Eigenface

Eigenfaces就是特征脸的意思,是一种从主成分分析(Principal Component Analysis,PCA)中导出的人脸识别和描述技术。特征脸方法的主要思路就是将输入的人脸图像看作一个个矩阵,通过在人脸空间中一组正交向量,并选择最重要的正交向量,作为“主成分”来描述原来的人脸空间。

1.特征脸训练与识别原理图

2.PCA主要过程

在很多应用中需要对大量数据进行分析计算并寻找其内在的规律,但是数据量巨大造成了问题分析的复杂性,因此我们需要一些合理的方法来减少分析的数据和变量同时尽量不破坏数据之间的关联性。于是这就有了主成分分析方法,PCA作用:

  • 数据降维。减少变量个数;确保变量独立;提供一个合理的框架解释。
  • 去除噪声,发现数据背后的固有模式。

PCA的主要过程:

  1. 特征中心化:将每一维的数据(矩阵A)都减去该维的均值,使得变换后(矩阵B)每一维均值为0;
  2. 计算变换后矩阵B的协方差矩阵C;
  3. 计算协方差矩阵C的特征值和特征向量;
  4. 选取大的特征值对应的特征向量作为”主成分”,并构成新的数据集

3.特征脸方法

特征脸方法就是将PCA方法应用到人脸识别中,将人脸图像看成是原始数据集,使用PCA方法对其进行处理和降维,得到“主成分”——即特征脸,然后每个人脸都可以用特征脸的组合进行表示。这种方法的核心思路是认为同一类事物必然存在相同特性(主成分),通过将同一目标(人脸图像)的特性寻在出来,就可以用来区分不同的事物了。人脸识别嘛,就是一个分类的问题,将不同的人脸区分开来。

特征脸方法的实现步骤:

  1. 获取包含M张人脸图像的集合T。假设这里使用15张图片来作为人脸训练图像,每张图片的尺寸是100*150,所以这里M=15。我们把导入的图像拉平,本来,100*150的矩阵,拉平就是一个15000*1的矩阵,然后M张放在一个大矩阵下,该矩阵为15000*15。
  2. 计算平均图像A,并获得偏差矩阵B,为15000*15平均图像也就是把每一行的15个元素平均计算,这样最后的平均图像就是一个我们所谓的大众脸。然后每张人脸都减去这个平均图像,最后得到:

       

3.求得的方差矩阵。并计算的特征值和特征向量。这就是标准的PCA算法流程。很大的问题就是协方差矩阵的维度会大到无法计算,下面的方法可以解决:

设K是预处理图像的矩阵,每一列对应一个减去均值图像之后的图像。则协方差矩阵为S=K

,并且对S的特征值分解 :

  

然而KKT是一个非常大的矩阵。因此,如果转而使用如下的特征值分解:

                                                                                      

等式两边同时乘以K得到:

                                                                                    

这就意味着,如果UiKKT的一个特征向量,则Vi=TUi是S的一个特征向量,反正到最后我们得KKT的一个特征向量,再用K与之相乘就是协方差矩阵的特征向量μ。而此时求得特征向量是15000*15的矩阵,每一行(15000*1)如果变成图像大小矩阵(100*150)的话,都可以看做是一个新人脸,被称为特征脸。

4.主成分分析。在求得的特征向量和特征值中,越大的特征值对于我们区分越重要,也就是主成分,只需要那些大的特征值对应的特征向量,而那些十分小甚至为0的特征值来说,对应的特征向量几乎没有意义。在这里通过一个阈值selecthr来控制,当排序后的特征值的一部分相加大于该阈值,选择这部分特征值对应的特征向量,此时剩下的矩阵15000*M,M根据情况而变。这样不仅减少计算量,而且保留了主成分,减少了噪声的干扰。

5.人脸识别。此时导入一个新的人脸,使用上面主成分分析后得到的特征向量μ,来求得一个每一个特征向量对于导入人脸的权重向量Ω

                                                                               '

这里的A就是第二步求得的平均图像,特征向量其实就是训练集合的图像与均值图像在该方向上的偏差,通过未知人脸在特征向量的投影,我们就可以知道未知人脸与平均图像在不同方向上的差距。此时我们用上面第2步求得的偏差矩阵的每一行做这样的处理,每一行会得到一个权重向量。利用求得Ω和Ωk的欧式距离来判断未知人脸与第K张训练人脸之间的差距

OpenCV人脸识别之Eigenface算法(PCA特征脸方法)相关推荐

  1. 人脸识别经典算法一:特征脸方法(Eigenface)

    这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...

  2. 人脸识别算法之特征脸方法(Eigenface)

    一.人脸识别算法之特征脸方法(Eigenface) 1.原理介绍及数据收集 特征脸方法主要是基于PCA降维实现. 详细介绍和主要思想可以参考 https://www.cnblogs.com/littl ...

  3. 人脸识别经典算法:特征脸方法(Eigenface)

    https://www.toutiao.com/a6698955075127083527/ 这个算法需要数学知识特别好的人才会看得懂吧! 步骤一:获取包含M张人脸图像的集合S.在我们的例子里有25张人 ...

  4. python人脸识别特征脸法_人脸识别经典算法一 特征脸方法(Eigenface)

    这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...

  5. python人脸识别特征脸法_人脸识别经典算法:特征脸方法(Eigenface)

    特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在之前的文章中已经讲过了.直接上特征脸方法的步骤: 步骤一:获取包含M张人脸图像的集合S.在我们的 ...

  6. 经典人脸识别算法(特征脸,FISHERFACE,LBP)

    首先,只是基于对算法的主要是想的介绍和理解,对于涉及到的PCA以及直方图比较提到的方法等等可以自己再去深入研究. 其次,只是用作笔记记录. 参考了CSDN博客:https://blog.csdn.ne ...

  7. note_8:PCA特征脸

    PCA特征脸 参考 csdn:PCA 降维算法详解 以及代码示例 csdn:PCA的应用示例 stackoverflow:eigenfaces are not showing correctly an ...

  8. OpenCV人脸识别Eigen算法源码分析

    1 理论基础 学习Eigen人脸识别算法需要了解一下它用到的几个理论基础,现总结如下: 1.1 协方差矩阵 首先需要了解一下公式: 共公式可以看出:均值描述的是样本集合的平均值,而标准差描述的则是样本 ...

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

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

最新文章

  1. 不管走多远,不要忘记停下来想想当初为何出发
  2. js的Prototype属性 解释及常用方法
  3. QS世界大学学科排名公布,清华22个学科进入世界50强
  4. 把宝可梦搬到终端后,摸鱼也不会被老板发现了,收集对战玩法一应俱全|开源...
  5. 大横琴科技联合阿里云发布全国首个跨境服务创新平台琴澳通
  6. svm中拉格朗日对偶问题的推导
  7. 初识弹性文件服务:可靠的共享文件存储
  8. AMD如何争夺Intel市场份额?血拼高配PC装机量
  9. 升级Exchange server 2010 SP1至SP3版本相关问题解决方法
  10. 怎样用java生成GUID与UUID
  11. InDesign 软件教程,如何在 InDesign 中缩放和平移文档?
  12. 什么软件能打开prt文件_prt文件除了UG和PROE还可以用什么软件打开?
  13. 用 SQL 玩转世界银行全球 GDP 数据
  14. [Python]ImportError: This platform lacks a functioning sem_open implementation, therefore, the requi
  15. 贤弟单腾,因崔思婷,机器人类打字~~~~~~
  16. 人生重开模拟器,脚本点击
  17. csp-j2第四题解
  18. 应用向左,理论向右,计算机2021的冰火两重天
  19. SpringBoot整合email
  20. Flowable初始化失败 Table ‘xxxx‘ already exist

热门文章

  1. 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度。 程序的输入是一个整数,表示华氏温度。输出对
  2. 局域网内2台ubuntu电脑共享鼠标键盘
  3. 鸿蒙轻量设备侧Camera应用中的Surface使用
  4. 1112day10:考前复习50题:断言
  5. HDU - 2014 青年歌手大奖赛_评委会打分
  6. 选择适当的NFC标签类型
  7. 名帖291 董其昌 行书《乐志论》
  8. 2017第49周二乌镇互联网大会总结
  9. 无法启动此程序,因为计算机中丢失D3DCOMPILER _47.dIl. 尝试重
  10. linux中的find查找文件或者目录、locate快速定位文件路径