pca人脸识别python_PCA人脸识别技术概述
如今日益发展的计算机技术带动了很多领域的发展,今天我们通过一个真正实用的例子来讲解PCA使用原理。
在系列的侦探大片中,人脸识别技术已经进入人们的视线。同时一些app软件的发展也把这项技术带到了我们的身边。

我们就用上面的图片作为引入,来一步步讲解人脸识别, 要识别目标人需要通过如下操作。
人脸检测
通过一些开源的SDK和组件我们可以在图片上快速的识别出人脸的位置,并且获得人脸的图片信息。(非本章重点,这里就不过多介绍)
人脸识别
我们现在通过人脸检测得到数据去人脸的素材库去匹配相关人。但是通过什么算法去匹配海量的人脸数据成为了人脸识别的核心问题。我们想象下每个人脸图片的像素点矩阵为300*500,而我们要匹配的人群是100000人,我们要做的是要把要识别的像素点和我们拥有的海量数据样本进行匹配找到最相近图片。无疑这种操作是非常耗时和消耗资源的,假如我们把每个样本数据的关键识别数据取出来和我们的识别数据关键数据进行匹配,是不是可以减少匹配量?
有效和高质量的抽取关键数据就成为了最关键的步骤,这个过程就是矩阵降维。我们可以通过PCA对数据进行降维。
PCA (主成分分析)一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。
关键实现路径如下
一、图像矩阵转化
将样本图片和识别图片转换为像素矩阵
识别图片像素为300500个像素,样本图片为1000000组300500个像素。
二、人脸数据降维处理
这个才是图像识别的核心,以往比较我们只是判断两组数据的相似程度即可,但是现在这个体量集去比较往往会浪费很多资源和时间。所以我们要做的就是剔除相对不相关的数据,用核心数据对比。这个也引出为什么我们要用到PCA技术。
PCA数据降维需要如下几步
1、图片像素矩阵每行值减去对应行的平均数
2、计算结果集的协方差矩阵
3、计算协方差对应的特征值并求出特征向量
4、保留最大的特征向量数组
5、特征向量数组*协方差矩阵得出主成分降维矩阵
新的矩阵由原来的300500个像素点降低为300K个像素点,K小于500。由于图片的复杂性不同K的系数也受到影响,有效数据的复杂性越低,K的值相对也越少。
三、图像识别
匹配的图像和样本数据降维后,需要对比的数组都已经变小,并且去掉的数据都是影响范围较少的数据。通过这组数据进行匹配计算量更小,从而运算速度也就越快。
简单的图像识别思路就是这样,PCA的降维思想是通过找出对辨别性有最大影响的数据,通过这些数据进行对比降低对比计算难度。
这里要声明的几点1、样本的数据越多匹配的准确性越高。2、图像匹配性的判断算法也需要进一步完善,我们PCA只是一个初级思路,后续需要很多去噪的算法进行完善。
对于技术人员需要了解PCA的原理,常用编程语言R、Python等都提供了对应的方法。

对于产品人员可以在了解原理的情况下,更加清晰设计自己的数据模型,并在后续产品中完成最优实现。
文章来自
互联网界全能battle Raymond
