概述
一、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 文件夹存放训练过程产生的中间结果,用于测试。
最后
以上就是曾经水杯为你收集整理的PCA算法之人脸识别的全部内容,希望文章能够帮你解决PCA算法之人脸识别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复