我是靠谱客的博主 曾经水杯,最近开发中收集的这篇文章主要介绍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 文件夹存放训练过程产生的中间结果,用于测试。

最后

以上就是曾经水杯为你收集整理的PCA算法之人脸识别的全部内容,希望文章能够帮你解决PCA算法之人脸识别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部