机器学习: 特征脸算法 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回归算法,聚类等. 一.机器学习算法及代 ...
随机推荐
- cacti监控linux和windows磁盘IO
cacti监控linux和windows磁盘IO 标签:cacti linux磁盘IO windows磁盘IO 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则 ...
- Scut游戏服务器免费开源框架--快速开发(1)
Scut快速开发(1) 1 开发环境 需要安装的软件 a) VS2010开发工具(.Net Framework 4.0以上) 2 HelloWorld 2.1 ...
- GDI+ ColorMatrix的完全揭秘
无论是用何种语言,只要使用过Windows的GDI+的人对ColorMatrix都不陌生,我的BLOG文章中也多次提到过,并在<GDI+ for VCL基础 -- 颜色调整矩阵ColorMatr ...
- Ural 2018The Debut Album(DP)
题目地址:Ural 2018 简单DP.用滚动数组. 代码例如以下: #include <iostream> #include <cstdio> #include <st ...
- python的多线程问题
在对文件进行预处理的时候,由于有的文件有太大,处理很慢,用python处理是先分割文件,然后每个文件起一个线程处理,启了10个线程,结果还比不起线程慢一些,改成多进程之后就好了. 使用multipro ...
- WPF 的 MVVM
Model——View——ViewModel http://www.cnblogs.com/fdyang/p/3877309.html
- 最简单的基于FFmpeg的移动端样例附件:SDL Android HelloWorld
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- krpano HTML5 Viewer可以实现全景展示
http://www.krpano360.com/ krpanp 陀螺仪调取 全景展示
- RuntimeWarning: Parent module 'test_project.test_case' not found while handling absolute
1.Pycharm2016.3.2,导入unittest框架后,运行脚本总是warming,但不影响脚本具体执行 2.通过网上查询,将"C:\Program Files\JetBrains\ ...
- 简单label控件 自制
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using ...