机器学习: 特征脸算法 EigenFaces
人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即主分量分析的。
一张尺寸为 w×h 的人脸图像 Ii可以看成是一个 D×1 的列向量, x∈RD,其中 D=w×h, 那么,给定一个训练集 S, 含有 m 张人脸图像, 即: S={xi},i=1,2,...m, 简单来说,我们希望通过一些线性映射,将原始向量 x 从高维空间 RD 变换到一个低维空间 RK, K≪D.
利用PCA 分析:
1: 先求训练集 S 的均值向量 x¯=1m∑mi=1xi
2: 向量去均值:Φi=xi−x¯
3: 求协方差矩阵 C=1m∑mi=1ΦiΦTi, 如果我们定义 A=[Φ1,Φ2,...,Φm], A∈RD×m, 那么 C=AAT
4: 特征值分解: Cui=γiui
我们知道协方差矩阵是一个高维矩阵 C∈RD×D. 如果直接进行特征分解,无疑是非常消耗资源也很费时的。特征脸算法做了一个非常巧妙的变换,我们先来看 ATA 的特征值分解,因为 ATA∈Rm×m,比起 C 来说,维度要小得多。我们可以得到:
ATAvi=λivi 进一步可以得到:
AATAvi=λiAvi 即:
CAvi=λiAvi 所以我们看到:
Cui=λiuiui=Avi
换句话说,AAT 与 ATA 有相同的特征值,而特征向量满足如下关系:
ui=Avi
严格说来,AAT∈RD×D, 最多可以有 D 个 特征值与特征向量。
而 ATA∈Rm×m, 最多可以有 m 个 特征值与特征向量。
ATA 中的 m 个 特征值与特征向量 对应 AAT 中 前 m 个最大的特征值以及特征值相对应的特征向量。
所以通过这种变换, 可以非常快速地求得 AAT 的特征向量 ui=Avi。
5: 将特征值从大到小排序,截取前面 K 个特征值及对应的特征向量。我们可以用特征向量的线性组合来表示原来的去均值向量,即:
xi−x¯=Φi=∑Kj=1wjuj
wj=ΦTiuj
如果定义, Ω=[w1,w2,...,wK], U=[u1,u2,...,uK], 那么可以得到
Ω=ΦTiU, 我们看到,通过引入 Eigenfaces, 我们将高维向量 Φi 映射到低维向量 Ω 。
做人脸识别的时候,我们可以先将训练集中的每个subject的人脸图像映射到低维空间Ω1,Ω2,...Ωq, q 表示subject 的个数。给定一个测试样本 x,先做去均值,Φ=x−x¯,然后再映射到低维空间,得到低维向量 Ω,我们要求解如下的目标函数:
进而确定测试样本属于哪个subject。
机器学习: 特征脸算法 EigenFaces的更多相关文章
- DNS通道检测 国内学术界研究情况——研究方法:基于特征或者流量,使用机器学习决策树分类算法居多
http://xuewen.cnki.net/DownloadArticle.aspx?filename=BMKJ201104017&dbtype=CJFD<浅析基于DNS协议的隐蔽通道 ...
- PCA算法提取人脸识别特征脸(降噪)
PCA算法可以使得高维数据(mxn)降到低维,而在整个降维的过程中会丢失一定的信息,也会因此而实现降噪除噪的效果,另外,它通过降维可以计算出原本数据集的主成分分量Wk矩阵(kxn),如果将其作为数据样 ...
- 机器学习:PCA(人脸识别中的应用——特征脸)
一.思维理解 X:原始数据集: Wk:原始数据集 X 的前 K 个主成分: Xk:n 维的原始数据降维到 k 维后的数据集: 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = ...
- 特征脸是怎么提取的之主成分分析法PCA
机器学习笔记 多项式回归这一篇中,我们讲到了如何构造新的特征,相当于对样本数据进行升维. 那么相应的,我们肯定有数据的降维.那么现在思考两个问题 为什么需要降维 为什么可以降维 第一个问题很好理解,假 ...
- 特征脸(Eigenface)理论基础-PCA(主成分分析法)
在之前的博客 人脸识别经典算法一:特征脸方法(Eigenface) 里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充.请将这两篇博文结合起来阅读.以下内容大部分参考 ...
- 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍
考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...
- 【Machine Learning】机器学习の特征
绘制了一张导图,有不对的地方欢迎指正: 下载地址 机器学习中,特征是很关键的.其中包括,特征的提取和特征的选择.他们是降维的两种方法,但又有所不同: 特征抽取(Feature Extraction): ...
- 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法
原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...
- 机器学习&深度学习基础(机器学习基础的算法概述及代码)
参考:机器学习&深度学习算法及代码实现 Python3机器学习 传统机器学习算法 决策树.K邻近算法.支持向量机.朴素贝叶斯.神经网络.Logistic回归算法,聚类等. 一.机器学习算法及代 ...
随机推荐
- ubuntu安装 uwsgi
http://www.jianshu.com/p/e6ff4a28ab5a/ sudo apt-get install python-dev #不安装这个,下面的安装可能会失败 sudo pip in ...
- awk如何区分shell脚本传进来的参数和自身的参数?awk如何获取shell脚本传进来的参数;awk中如何执行shell命令
问题:对于shell脚本,$0表示脚本本身,$1表示脚本的第一个参数,$2……依次类推:对于awk,$1表示分割后的第一个字段,$2……依次类推.那么对于shell脚本中的awk如何区分两者呢? 答案 ...
- Six ways to think like a journalist!
Journalists have the ability to state a thing more clearly. What can we learn from them to help us r ...
- 查找——图文翔解SkipList(跳跃表)
跳跃表 跳跃列表(也称跳表)是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作须要O(logn)平均时间). 基本上.跳跃列表是对有序的链表添加上附加的前进链接,添加是以随 ...
- 笔记09 WS,WCF
http://blog.csdn.net/avi9111/article/details/5655563 http://www.cnblogs.com/tearer/archive/2013/04/2 ...
- initializer_list、初始化列表、列表初始化
什么是列表初始化 使用一个花括号来初始化变量,表现形式如下: std::vector<int>a{1,2,3,4,5}; 或者 std::vector<int>a = {1,2 ...
- (八):构建WineLib DLL
(一):介绍 出于某些原因,你可能会发现你想要和使用Windows DLL一样使用你的Linux库.对于这有一些原因例如以下: 你正在支持一个使用多个第三方库的大应用.该项目在Linux中是可用的,可 ...
- kubernetes资源调度之LimitRange
系列目录 LimitRange从字面意义上来看就是对范围进行限制,实际上是对cpu和内存资源使用范围的限制 前面我们讲到过资源配额,资源配额是对整个名称空间的资源的总限制,是从整体上来限制的,而Lim ...
- qemu-kvm编译错误
今天编译了下qemu-kvm,死活编不过,错误信息如下: CC block/qcow2-snapshot.oIn file included from ./qemu-common.h:6:0, ...
- 关于erlang的向上取整和向下取整
在erlang的API中,erlang:trunc/1 是就近取整,erlang:round/1是四舍五入的, 整理下:对于正数的向上和向下取整, %% 向上取整 ceil(N) -> T = ...