PCA算法之人脸识别

一、PCA算法理解

PCA(Principal Component Analysis),即主成分分析,是一种常见的降维技术。所谓降维,就是将高维的数据进行处理,在保留大部分信息的前提下降维为低维的数据,比如将一些二维坐标点映射到x轴或y轴或者自己定义的一根新轴,用一维坐标来表示这些二维坐标点,且易于分辨,比如一一对应(对应正确率越高越好),这就是降维。

PCA的核心是根据图像的训练集求出特征脸,我对特征脸的理解是一个新的坐标新轴。取K个特征脸可以组成新的坐标系,即K维坐标系。相关图片都可以在这个坐标系里找到一个对应的坐标(决定正确率),这样子就可以将一个图片(x*y)转化为K维的数据,在保留大部分原信息的情况下更容易进行计算。

二、算法描述

本次实验图片的大小为112*92=10304大小的图片,使用的训练图片和测试图片大小必须一样,如果不一致,可以先进行处理再测试。

  • 将每个图像 112*92 重新排列成 10304*1 的一个列向量,按列组成 10304 行 m 列矩阵 X ,m 为测试的图像数。

  • 求均值向量 u,为 10304*1 的矩阵,是所有图像的均值。

  • 求中心化矩阵 D_value,即 x 的每一列减去均值 u 所得到的10304*m 的矩阵。

  • 求出协方差矩阵 C = D_ value * D_valueT

  • 求出协方差矩阵的特征值及对应的特征向量,将特征向量按对应特征值大小 从上到下按行排列成矩阵,取前 k 行组成矩阵 w,其中每一列均为一个特征脸。

  • 计算m幅图像的投影,Y = wT * D_value,Y为K*m的矩阵。

  • 测试:将代测试的人脸图像(112*92)重新排序为test,计算测试人 脸的投影test_Y = wT * (test-u)。

  • 将test_Y与Y中各列进行匹配,匹配度最小(欧式距离)即为所识别图像。

三、Matlab实现

代码Github地址

文件夹 1 为对每张人脸的前 7 张人脸图像进行均值处理之后再进行降维,即训练图像为 40 张。faces文件夹为全部 40*10=400 张人脸图像,train_faces文件夹内为40张均值处理之后的图像,即 file1.m对为对每张人脸的前 7 张人脸图像进行均值处理之后保存在 train_faces 文件夹内,file2.m 为训练代码文件,file3.m为测试代码文件,测试图像为每张人脸 8-10 张。共120 张。data文件夹存放训练过程产生的中间结果,用于测试。

文件夹 2 为直接对每张人脸的前七张人脸图像进行训练,即训练图像为40*7=280 张。faces 文件夹为全部 40*10=400 张人脸图像,file1.m为训练代码文件,file2.m为测试代码文件,测试图像为每张人脸 8-10 张。共 120 张。 data 文件夹存放训练过程产生的中间结果,用于测试。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值