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

f6642f3f361aeb9afda395dfc6f5619b.jpeg

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

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

201803130852201.gif

201803130852202.jpg

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

201803130852203.gif

201803130852204.jpg

20170406035158769.jpg

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

201803130852205.gif

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

201803130852206.gif

201803130852207.gif

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

201803130852208.gif

moet201524moet20152406-2-l.JPG

其中

201803130852209.gif

得到的这些内外参数可用于以后处理图像,比如旋转矩阵和平移向量可用来计算物体实际坐标位置,内参数矩阵和畸变系数可用来对图像进行矫正。文本粒度的向量维度特征数据提取单元,用于提取文本粒度的向量维度特征数据,包括:设短文本对为(sn1,sn2),对应的文本向量为(tn1,tn2),分别计算向量tn1和tn2对应维度的差值Δi,i=(1,2,......,k)。上述中的 |v| 和 |v’| 通常是十万到百万量级,在千级别,大部分计算是高维的矩阵与矩阵和矩阵与向量之间的计算,所以,用 gpu 是目前最合适的。

4).通过分类器分类: 经过前面步骤之后一张图像可以用一个固定维度的向量进行描述,接下来就是经过分类器对图像进行分类。 52: %点除,a.\b表示矩阵b的每个元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每个元素或者矩阵a除以矩阵b对应元素或者常数b。<2> cvhomographyestimator::runkernel 求解4对特征点构成的8个方程组,得到一次h矩阵的解,h矩阵是3×3矩阵,归一化后剩余8个未知数,一对特征点产生两个方程,所以需要4个特征点对产生8个方程。

2018031308522010.gif

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

2018031308522011.gif

pIYBAFtGujGAE6vfAADwmWvyHaU647.png

传统的人脸识别算法对人脸像素的要求很高,很多号称小像素级的算法在小像素时效果很差,只有到60像素以上时才有了较好的效果。看下图 f65的8k cmos成像器件q67滤与4k拜尔滤像素排列的比较,从图中可以看到,新的成像器件滤排列方式与拜尔滤的最大差别是图形旋转了45度,全部像素排列由正交变为斜交,但g像素的排列由拜尔滤的斜交变成了正交,r和b像素排列则变成了斜交。像素全称图像元素 像素仅仅是分辨率的尺寸单位 而不是画质 像素越高 所带来的画面细节就越多 一般单反相机的像素都是真实像素点 而手机之类的大部分都是软补像素(即在相邻的两个真实像素点之间通过运算之后 增加过渡的像素点 来增加其整个图像像素的数量 来达到高像素的效果) 像素不是越高越好 像素越高 在同等画幅下像素点之间就更容易产生互相干扰 形成电子噪声 也就是噪点 影像画质 所以只有在足够大的画幅上高像素才能发挥作用 这也就是有的手机一千六百万甚至两千多万的像素却比不过一千二百万像素单反的道理。

2018031308522012.jpg

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

2018031308522013.gif

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

2018031308522014.gif

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

4aff6137a0b743a79bb309492ecfe48d_th.png

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

2018031308522015.gif

其中Ω代表要判别的人脸,Ωk代表训练集内的某个人脸,两者都是通过特征脸的权重来表示的。式子是对两者求欧式距离,当距离小于阈值时说明要判别的脸和训练集内的第k个脸是同一个人的。

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

参考资料:

1、Eigenface for Recognition

2、特征脸维基百科

3、Eigenface_tutorial

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-96041-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值