脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 人脸识别经典算法一 特征脸方法(Eigenface)

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

2021-01-21 00:19兔死机 Python

这篇文章主要为大家详细介绍了人脸识别经典算法一,特征脸方法Eigenface,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新。特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的。特征脸用到的理论基础pca在另一篇博客里:特征脸(eigenface)理论基础-pca(主成分分析法) 。本文的参考资料附在最后了^_^

步骤一:获取包含m张人脸图像的集合s。在我们的例子里有25张人脸图像(虽然是25个不同人的人脸的图像,但是看着怎么不像呢,难道我有脸盲症么),如下图所示哦。每张图像可以转换成一个n维的向量(是的,没错,一个像素一个像素的排成一行就好了,至于是横着还是竖着获取原图像的像素,随你自己,只要前后统一就可以),然后把这m个向量放到一个集合s里,如下式所示。

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

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

步骤二:在获取到人脸向量集合s后,计算得到平均图像ψ,至于怎么计算平均图像,公式在下面。就是把集合s里面的向量遍历一遍进行累加,然后取平均值。得到的这个ψ其实还挺有意思的,ψ其实也是一个n维向量,如果再把它还原回图像的形式的话,可以得到如下的“平均脸”,是的没错,还他妈的挺帅啊。那如果你想看一下某计算机学院男生平均下来都长得什么样子,用上面的方法就可以了。

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

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

步骤三:计算每张图像和平均图像的差值φ,就是用s集合里的每个元素减去步骤二中的平均值。

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

步骤四:找到m个正交的单位向量un,这些单位向量其实是用来描述φ(步骤三中的差值)分布的。un里面的第k(k=1,2,3...m)个向量uk是通过下式计算的,

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

 

当这个λk(原文里取了个名字叫特征值)取最小的值时,uk基本就确定了。补充一下,刚才也说了,这m个向量是相互正交而且是单位长度的,所以啦,uk还要满足下式:

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

上面的等式使得uk为单位正交向量。计算上面的uk其实就是计算如下协方差矩阵的特征向量:

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

其中

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

对于一个nxn(比如100x100)维的图像来说,上述直接计算其特征向量计算量实在是太大了(协方差矩阵可以达到10000x10000),所以有了如下的简单计算。

步骤四另解:如果训练图像的数量小于图像的维数比如(m<n^2),那么起作用的特征向量只有m-1个而不是n^2个(因为其他的特征向量对应的特征值为0),所以求解特征向量我们只需要求解一个nxn的矩阵。这个矩阵就是步骤四中的aat,我们可以设该矩阵为l,那么l的第m行n列的元素可以表示为:

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

一旦我们找到了l矩阵的m个特征向量vl,那么协方差矩阵的特征向量ul就可以表示为:

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

这些特征向量如果还原成像素排列的话,其实还蛮像人脸的,所以称之为特征脸(如下图)。图里有二十五个特征脸,数量上和训练图像相等只是巧合。有论文表明一般的应用40个特征脸已经足够了。论文eigenface for recognition里只用了7个特征脸来表明实验。

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

步骤五:识别人脸。ok,终于到这步了,别绕晕啦,上面几步是为了对人脸进行降维找到表征人脸的合适向量的。首先考虑一张新的人脸,我们可以用特征脸对其进行标示:

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

其中k=1,2...m,对于第k个特征脸uk,上式可以计算其对应的权重,m个权重可以构成一个向量:

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

perfect,这就是求得的特征脸对人脸的表示了!

那如何对人脸进行识别呢,看下式:

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

其中ω代表要判别的人脸,ωk代表训练集内的某个人脸,两者都是通过特征脸的权重来表示的。式子是对两者求欧式距离,当距离小于阈值时说明要判别的脸和训练集内的第k个脸是同一个人的。当遍历所有训练集都大于阈值时,根据距离值的大小又可分为是新的人脸或者不是人脸的两种情况。根据训练集的不同,阈值设定并不是固定的。

后续会有对pca理论的补充^_^.已补充理论:特征脸(eigenface)理论基础-pca(主成分分析法)

参考资料:

1、eigenface for recognition

2、特征脸维基百科

3、eigenface_tutorial

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/smartempire/article/details/21406005

延伸 · 阅读

精彩推荐