一、思维理解

  1. X:原始数据集;
  2. Wk:原始数据集 X 的前 K 个主成分;
  3. Xk:n 维的原始数据降维到 k 维后的数据集;
  • 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = Xk(i)
  • 在人脸识别中,X 中的每一行(一个样本)就是一张人脸信息;
  • 思维:其实 Wk 也有 n 列,如果将 Wk 的每一行看做一个样本,则第一行代表的样本为最重要的样本,因为它最能反映 X 中数据的分布,第二行为次重要的样本;在人脸识别中,X 中的每一行是一个人脸的图像,则 Wk 的每一行也可以理解为一个人脸图像,Wk 中的每一行代表的人脸图像就是特征脸。
  • 之所以称 Wk 的每一行代表的人脸图像为特征脸,因为每一个特征脸对应一个主成分,它相当于表达了原始数据 X 中人脸数据所对应的特征。

二、特征脸

 1)人脸数据集

  • 获取

    import numpy as np
    import matplotlib.pyplot as plt from sklearn.datasets import fetch_lfw_people faces = fetch_lfw_people()
    faces.keys()
    # 输出:dict_keys(['data', 'images', 'target', 'target_names', 'DESCR']) faces.data.shape
    # 输出:(3882, 2914) faces.images.shape
    # 输出:(3882, 62, 47)
  1. fetcg_lfw_people:在 sklearn 中的封装的人脸识别数据集;
  2. faces:字典类型,其中 “target_names” 为每一个人脸样本对应的真实的人的姓名;
  3. (3882, 2914):数据集中共有 3882 张人脸,每张人脸有 2914 个特征;
  4. (3882, 62, 47):其中 62 * 47 = 2914,表示每张人脸都是 62 X 47 像素的图片;
  • 从数据集 faces 中随机去除 36 张人脸样本,并绘制
  1. 随机抽取
    # 对数据集faces.data 做乱序处理
    random_indexes = np.random.permutation(len(faces.data))
    X = faces.data[random_indexes] example_faces = X[:36]
    example_faces.shape
    # 输出:(36, 2914)
  2. 绘制 n * n 张子图
    def plot_faces(faces):
    
        fig, axes = plt.subplots(6, 6, figsize=(10, 10),
    subplot_kw={'xticks':[], 'yticks':[]},
    gridspec_kw=dict(hspace=0.1, wspace=0.1))
    for i, ax in enumerate(axes.flat):
    ax.imshow(faces[i].reshape(62, 47), cmap='bone') plt.show() plot_faces(example_faces)

 

 2)特征脸

  • faces.data 的所有主成分

    from sklearn.decomposition import PCA
    
    # svd_solver='randomized':表示随机求取 pca,因为数据量较大,使用随机方式求解快些
    # 此处没有指定 n_components,要求取所有主成分
    pca = PCA(svd_solver='randomized')
    pca.fit(X) pca.components_.shape
    # 输出:(2914, 2914)
  1. svd_solver='randomized':表示随机求取 pca,使用随机方式求解速度更快;
  • 绘制前 36 个特征脸

    plot_faces(pca.components_[:36,:])

  1. 现象:排在前面的特征脸看上去相等笼统,从前到后,人脸样子越来越清晰;
  2. 要点一:通过特征脸,可以直观的看出在人脸识别的过程中,我们是怎么看到每一张人脸相应的特征的;
  3. 要点二:每一个人脸都是所有特征脸的线性组合,二特征脸依据重要程度,顺次的排列;
  • 其它

    faces2 = fetch_lfw_people(min_faces_per_person=50)
  1. min_faces_per_person=30:数据集 fetch_lfw_people 中,同一个人名(target_names中的人名)至少用 30 个人脸图像,将这部分图像提取出来;

机器学习:PCA(人脸识别中的应用——特征脸)的更多相关文章

  1. 图像物体检測识别中的LBP特征

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xinzhangyanxiang/article/details/37317863 图像物体检測识别中 ...

  2. Eigenface与PCA人脸识别算法实验

    简单的特征脸识别实验 实现特征脸的过程其实就是主成分分析(Principal Component Analysis,PCA)的一个过程.关于PCA的原理问题,它是一种数学降维的方法.是为了简化问题.在 ...

  3. (转载)人脸识别中Softmax-based Loss的演化史

    人脸识别中Softmax-based Loss的演化史  旷视科技 近期,人脸识别研究领域的主要进展之一集中在了 Softmax Loss 的改进之上:在本文中,旷视研究院(上海)(MEGVII Re ...

  4. 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用

    深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...

  5. 人脸识别中的重要环节-对齐之3D变换-Java版(文末附开源地址)

    一.人脸对齐基本概念 人脸对齐通过人脸关键点检测得到人脸的关键点坐标,然后根据人脸的关键点坐标调整人脸的角度,使人脸对齐,由于输入图像的尺寸是大小不一的,人脸区域大小也不相同,角度不一样,所以要通过坐 ...

  6. 浅谈人脸识别中的loss 损失函数

    浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  7. 知物由学 | 基于DNN的人脸识别中的反欺骗机制

    "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...

  8. PCA人脸识别

    人脸数据来自http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html 实现代码和效果如下.由于图片数量有限(40*10),将原 ...

  9. 人脸识别中的Procruster analysis应用

    本文中,我们通过Procrustes analysis来处理特征点,Procrustes analysis算法可以参考:http://en.wikipedia.org/wiki/Procrustes_ ...

随机推荐

  1. INSPIRED启示录 读书笔记 - 第14章 产品评审团

    制定更及时.更可靠的产品决策 制定决策通常是既耗时又费力的,产品公司需要一套机制让决策者和相关人员及时作出明智的产品决策.成立产品评审团是最好的解决途径 组织产品评审团的难点在于既要为高管制定产品决策 ...

  2. MVC6 OWin Microsoft Identity 自定义验证

    1. Startup.cs中修改默认的验证设置 //app.UseIdentity(); app.UseCookieAuthentication(options => { //options.A ...

  3. Openfire部署和配置说明

    一.程序部署 1.1 程序和脚本 将文件拷贝到对应目录下,文件包括:Openfire.tar和setup.sh脚本.Openfire.tar为可执行文件库.配置等的压缩包,setup.sh为解压和部署 ...

  4. 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

    之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...

  5. SEM竞价数据基本分析方法

    今天我们从账户数据表现来看一看怎样通过数据分析,判断账户出现的问题及解决思路.也欢迎大家提出意见,共同讨论进步. 首先我们从关键词报告来分析数据: 以上图数据为例.(设定该行业CPC均价为8) 先说下 ...

  6. IDEA配置文件的保存目录

    IntelliJ IDEA 的实时代码模板保存在 /templates 目录下,其他系统目录位置如下:(因为目录名在各个系统上是一致的,建议用硬盘搜索工具搜索即可) Windows: . Linux: ...

  7. Exception in thread "main" java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for topic_test_1219-2: 30010 ms has passed since batch creatio

    代码如下 public static void producer1() throws ExecutionException, InterruptedException { Properties pro ...

  8. YARN作业提交流程剖析

    YARN(MapReduce2) Yet Another Resource Negotiator / YARN Application Resource Negotiator对于节点数超出4000的大 ...

  9. python 处理json

    Python处理JSON 概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XM ...

  10. ReverseInteger

    public class ReverseInteger { public static int reverse(int x) { long ret = 0; //如果是个位数,直接返回. if(x/1 ...