Eigen是MIT于1991年提出的人脸识别算法,后来与归一化协相关量方法一起成为人脸识别的性能测试基准算法。

1. 算法描述

Eigenface的基本思想非常简单:以图像像素点为原始维度单位(如320*240的图,其维度为76800*1),试图找到一种变换将其转到另一个描述空间,在目标空间里,每种人脸能得到最好的区分。
具体的算法步骤如下:
1)将所有人脸图像reshape成N*1的矩阵,假设共有K组人脸,得到的人脸矩阵M为N*K。
2)求取M中每行数据的均值,即获得平均脸(N*1);再按列减去均值获得均值为0的新的人脸矩阵(N*K)。
3)求人脸矩阵的协方差矩阵
4)求协方差矩阵C的特征值和特征向量,并按特征值从大到小将对应的特征向量按行组成矩阵P(R*N,其中R取[1,N],一般选择前R组以起到降维效果)。
5)此时P就是算法希望找到的变换,将2)中的人脸矩阵 通过映射就得到新空间的人脸描述(R*K)
6)对于预测样本,按照5)做映射,比较映射空间里与训练集哪个样本最为接近得到预测值。
由以上算法描述可以看出eigenface就是个PCA过程。关于PCA,推荐文章《PCA的数学原理》,对PCA的原理分析比较到位。
此外对于图像维度很容易变得很大,这样经过翻倍得到的协方差矩阵是非常恐怖的。
这里有个小技巧:3)里协方差矩阵改为,这样4)里求得的特征向量转置则为,左乘再转置即为P。
关于该技巧的数学推导见wiki里eigenface词条的‘computing the eigenvectors’一节。

2. 算法实现

OpenCV2.4以上版本封装的FaceRecognizer类提供了eigenface的实现,此外该类还实现了fisherface和LBPHFface方法。
文章《使用opencv实现人脸识别》使用OpenCV做了个Python版本的实现。
文章《人脸识别之特征脸方法(Eigenface)》有matlab版的实现。
从效果来看,该方法的准确率较低,使用FERET的人脸数据训练和预测全部200类人脸,只有40%左右的精度。
图2-1. OpenCV提供接口的训练结果

人脸识别(1)--eigenface相关推荐

  1. OpenCV人脸识别之Eigenface算法(PCA特征脸方法)

    Eigenface Eigenfaces就是特征脸的意思,是一种从主成分分析(Principal Component Analysis,PCA)中导出的人脸识别和描述技术.特征脸方法的主要思路就是将输 ...

  2. 人脸识别 传统Haar与CNN比较

    转自:https://zhuanlan.zhihu.com/p/25335957 成文于2016年7月,以调研人脸检测技术的发展为目的,同时也了解一下深度学习相关知识. 文章很长,也没修改,请各位看官 ...

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

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

  4. 人脸识别:特征脸(Eigenface)

    Eigenface就是将人脸图像进行编码,映射到低维子空间上,在低维空间计算两幅人脸图像的距离,以此来进行人脸识别.映射到低维子空间的方法采用主成分分析(Principal Component Ana ...

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

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

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

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

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

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

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

    人脸识别之特征脸方法(Eigenface) zouxy09@qq.com http://blog.csdn.net/zouxy09 因为需要,花了一点时间写了下经典的基于特征脸(EigenFace)的 ...

  9. svm rbf人脸识别 yale_实操课——机器学习之人脸识别

    SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法.在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别.分类以及回归分析.在n维空间中找到一个分类超 ...

最新文章

  1. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
  2. python将字符串s和换行符写入文件fp_【python】文件操作
  3. lua把userdata写入mysql_Lua教程(十九):userdata
  4. ASP.NET Core 跨平台图形验证码实现
  5. 中芯国际发布2021Q1财报:55/65纳米工艺依旧为营收主力
  6. java服务器与客户端项目,Java项目中用于服务器和客户端软件包的共...
  7. Luogu 4069 [SDOI2016]游戏
  8. mysql存储php数组_mysql数据库存储PHP数组、对象的方法
  9. Bill Gates推荐,人工智能必读的三本书 -《终极算法》,《超级智能》和《终极发明》zz
  10. Linux 面试最常问的十个问题
  11. BW随手记-项目上零碎总结(SAP销售,开票,获利能力分析)
  12. 极致体验,解密微信背后的音视频通话技术
  13. 洛谷 1144 最短路计数 bfs
  14. 类继承和依赖注入的关系_管理类依赖关系:依赖关系注入,服务定位符和工厂简介,第1部分...
  15. mmc子系统分析(一)
  16. centos 7和redhat 7的区别及如何安装
  17. 数据库和数据仓库联系和区别
  18. Wiley开放科学大使访谈——刘永鑫
  19. Android开发高性能之 (崩溃优化)
  20. Oracle 中文日期转换

热门文章

  1. python爬虫(爬取酷狗排行榜并保存到本地)
  2. DCore应用案例(一):发布内容
  3. 期权专题1:普通期权定价
  4. 从时间到空间,高精度时间频率传递技术新突破
  5. 为创作而生:戴尔全新XPS 15/17全面屏性能旗舰
  6. MyBatis一级缓存及失效
  7. 认证、授权、鉴权和权限控制概念区别
  8. mysql与pandas谁快,pandas和SQL哪个快
  9. 针对缓冲区保护技术(ASLR)的一次初探
  10. 阿里巴巴达摩院招聘计算机视觉算法工程师和实习生