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


Posted in Python onMarch 13, 2018

这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新。特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的。特征脸用到的理论基础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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
python文件与目录操作实例详解
Feb 22 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
Python中 map()函数的用法详解
Jul 10 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
图文详解python安装Scrapy框架步骤
May 20 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
Django 用户认证Auth组件的使用
Nov 30 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
Python语言中的数据类型-序列
Feb 24 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 #Python
Python+Django搭建自己的blog网站
Mar 13 #Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 #Python
tensorflow实现softma识别MNIST
Mar 12 #Python
wxpython实现图书管理系统
Mar 12 #Python
人生苦短我用python python如何快速入门?
Mar 12 #Python
tensorflow实现KNN识别MNIST
Mar 12 #Python
You might like
Protoss兵种对照表
2020/03/14 星际争霸
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
php解析json数据实例
2014/08/19 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
python几种常用功能实现代码实例
2019/12/25 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
Python 高效编程技巧分享
2020/09/10 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
八项规定整改方案
2014/02/21 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
pt-archiver 主键自增
2022/04/26 MySQL