前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模式识别从0构建—PCA

模式识别从0构建—PCA

作者头像
孔西皮
发布2021-03-04 11:56:33
1.4K0
发布2021-03-04 11:56:33
举报
文章被收录于专栏:前行的CVer前行的CVer

⌛️本文状态:已完结✔️

一、算法原理

1. K-L变换实现降维

PCA或K-L变换是用一种正交归一向量系表示样本。如果只选取前k个正交向量表示样本,就会达到降维的效果。PCA的推导基于最小化均方误差准则,约束是:u为单位正交向量。推导结果是,正交向量就是归一化的协方差矩阵的特征向量,对应的系数就是对应的特征值。使用PCA方法提取特征脸的步骤如下:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵 C=\dfrac{1}{m}XX^T

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据

在实际应用中,大小为:特征数x特征数的协方差矩阵计算特征值和特征向量会很不方便,因此,化简出一种简便的求解方法,即先求大小为:图片数x图片数的协方差矩阵的特征值和特征向量,再将特征向量矩阵与原始样本相乘,这样得到的新的特征向量与第一种方法求出的特征向量等价。

2. 分类算法实现人脸识别

人脸识别可以使用KNN算法,计算降维后待测样本点距训练样本点的距离,在距离最近的k个样本点中,选取出现次数最多的类别为样本点的类别。

在数据没有噪声的情况下,也可以直接计算离训练样本点的距离,直接将最近的样本点类别当做测试类别。还可以计算离各类样本点中心的距离。

也可以采取SVM、Fisher等其他分类方法完成人脸识别。

二、实验结果

使用MATLAB完成实验,源代码及数据集已上传到Github

前25张特征脸如图所示:

img
img

分别使用前10、100、400张特征脸对图像还原,效果如下图:

将数据集中的400张人脸以8:2的比例划分训练集和测试集,使用KNN算法对PCA降维后的人脸进行训练,测试集上的正确率为95%。

三、参考资料

  1. 发明PCA
  2. PCA人脸识别的步骤
  3. 特征脸人脸识别带简化运算解释-Python
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ¶一、算法原理
    • ¶1. K-L变换实现降维
      • ¶2. 分类算法实现人脸识别
      • ¶二、实验结果
      • ¶三、参考资料
      相关产品与服务
      人脸识别
      腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档