本文主要是介绍基于主成分分析(PCA)实现人脸识别(Eigenface原理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于主成分分析(PCA)的特征人脸识别
主成分分析(Principal components analysis,PCA) 是一种通过降维技术把多个变量化为少数几个主成分的统计方法,通过消除数据的相关性,找到一个空间,使得各个类别的数据在该空间上能够很好地分离(比如下图中斜对角线方向向量及其正交方向向量做为基向量的空间),是最重要的特征提取方法之一。
Eigenface 是人脸识别任务最经典的算法了,它的主要思想就是用主成分分析的思想将图像从欧氏空间降维映射到特征空间中,根据不同人脸图像在特征空间中的度量距离来判断其相似度,从而实现人脸识别。
一些基础知识:
矩阵的特征值分解: 将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法,目的就是提取出一个矩阵最重要的特征。
特征值分解 是使用最广的矩阵分解之一,即我们将矩阵分解为一组特征向量和特征值。
设A为n阶矩阵,若存在常数λ及n维非零向量x,使得Ax=λx,则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量
特征向量和特征值的几何意义?
特征向量: 矩阵特征向量相互正交,相当于新坐标下的基
特征值: 矩阵在新的基向量下的坐标
并非每个矩阵都可以进行特征值分解,每个实对称矩阵都可以分解为实特征向量和实特征值:
A=PCP^T
PCA算法步骤总结:
设有m条n维数据(训练集)
1)将原始数据按列组成n行m列矩阵X2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值3)求出协方差矩阵C=(1/m)XX^T(实对称矩阵)4)求出协方差矩阵的特征值及对应的特征向量5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P6)Y=PX 即为降维到k维后的数据
特征人脸识别:
把人脸从像素空间变换到另一个空间,在另一个空间中做相似性的计算
PCA将n个特征降维到k个,可以用来进行数据压缩,例如100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩,人脸检测和匹配。
算法拆解分析:
训练阶段:
训练集—协方差矩阵—特征值分解—目标空间基向量(特征向量)
测试阶段:
一张新的人脸,我们可以用特征脸对其进行表示:
其中k=1,2…M,对于第k个特征脸μk,上式可以计算其对应的权重,M个权重可以构成一个向量:
在新空间坐标下基于欧式距离进行人脸匹配:
其中Ω代表要判别的人脸,Ωk代表训练集内的某个人脸,两者都是通过特征脸的权重来表示的,下图为识别结果:
申明
本文为本人原创,未经许可不允许转载!!!
这篇关于基于主成分分析(PCA)实现人脸识别(Eigenface原理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!