Advertisement

pca的人脸识别技术研究 matlab

阅读量:

该文本介绍了ORL人脸库的基本信息及其在人脸识别中的应用,并详细描述了主成分分析(PCA)和基于BP神经网络的人脸识别技术。ORL人脸库包含40个不同年龄、性别和种族的人脸图像,每种类型有10幅灰度图像。通过PCA降维后进行标准化处理(使均值为0,标准差为1),并利用协方差矩阵计算特征向量以减少数据维度。同时,在BP神经网络中使用了49维输入层和40维输出层,并采用动量梯度下降算法进行训练。实验结果显示准确率为89.5%-90.5%。

进行重建和构造的图

复制代码
 train_path='1\';

    
 phi=zeros(64*64,20);
    
 for i=1:4
    
 path=strcat(train_path,num2str(i),'.pgm');
    
 Image=imread(path);
    
 Image=imresize(Image,[64,64]);
    
 phi(:,i)=double(reshape(I

1.ORL****人脸库

ORL人脸库诞生于英国剑桥Olivetti实验室。

ORL人脸数据库包含40个多样化的对象。每个体素采集了10张标准化照片共计400幅灰度图像,并经标准化处理后形成数据库中的样本集。这些样本具有统一的尺寸92×112像素,并采用黑色背景拍摄。其中人脸区域展现出丰富的人脸表情特征以及精细的人脸细节信息。例如能够有效捕捉诸如微笑与直视等面部表情特征以及眼睛睁着或闭着的状态变化情况。

取每个人前5幅图像,共计200幅用来训练,其余用于测试。

2.PCA**(主成分分析法)**

Step 01:样本中心化和标准化

Step 02:求其协方差矩阵

Step 03:求协方差矩阵的特征值和特征向量

Step 04:选取最大的k个特征值,并以此构造出由这些特征向量组成的矩阵

Step 05:将样本点投影到选取的特征向量上,投影后的数据FinalData为:

FinalData(m∗k)=DataAdjust(m∗n)×EigrnVectors(n∗k)

其中经过中性化处理得到的数据矩阵为DataAdjust(m×n), 而EigrnVectors(n×k)则是选取了前k个最大的特征值各自对应的K个特征向量所形成的特征向量矩阵

通过数据中心化的预处理流程,在提升基向量间的正交程度的同时,并使在高维空间到低维空间的映射更加平滑,并从而能够更精确地表征原始数据

(图片来自知乎:https://www.zhihu.com/question/37069477)。

  • 实现数据标准化的目的在于消除各特征间的差异性。
  • 当原始数据在不同维度上各特征的尺度存在差异时,则需通过标准化步骤对数据进行预处理。
  • 以便在训练神经网络的过程中加快权重参数的收敛速度。

经过中心化的和标准化的数据处理后,最终获得均值为零、标准差为一的服从标准正态分布的数据

计算各维度之间的相关性是为了求取协方差矩阵。协方差矩阵的特征值大小反映了在特征向量方向上数据变换的程度。其数值越大则表示该方向上的数据变化幅度更大(即需要进行投影处理),因此通过选取前k个较大的特征值并结合较小的重构误差来实现对原始元数据进行降维处理。

function [pcaA V] = fastPCA( A, k )% 快速PCA% 输入:A --- 样本矩阵,每行为一个样本% k --- 降维至 k 维% 输出:pcaA --- 降维后的 k 维样本特征向量组成的矩阵,每行一个样本,列数 k 为降维后的样本特征维数% V --- 主成分向量[r c] = size(A);% 样本均值meanVec = mean(A);% 计算协方差矩阵的转置 covMatTZ = (A-repmat(meanVec, r, 1));covMatT = Z * Z';% 计算 covMatT 的前 k 个本征值和本征向量[V D] = eigs(covMatT, k);% 得到协方差矩阵 (covMatT)' 的本征向量V = Z' * V;% 本征向量归一化为单位本征向量for i=1:k V(:,i)=V(:,i)/norm(V(:,i));end% 线性变换(投影)降维至 k 维pcaA = Z * V;% 保存变换矩阵 V 和变换原点 meanVecsave('Mat/PCA.mat', 'V', 'meanVec');

在 MATLAB 自带的该方法中运行速度较慢,并采用了 Fast_PCA 算法,在最终选择了 49 维特征作为输入供后续处理使用。

3.BP****神经网络的概念

BP神经网络是一种基于多层前馈结构的设计方案,在其训练过程中表现出独特的特性:信息通过正向路径流动,在训练过程中逆向传递误差信号。算法通过逐步优化连接关系来调整各层次之间的权重参数与偏置值。特别地,在输入层与隐藏单元之间建立连接的同时,则需确定从输入节点到隐藏单元之间的连接权重以及偏置参数。

注:构建并经过BP神经网络训练的过程中

Fcn = ''; %所有的样本都用于训练[net,tr]=train(net,P,T); %仿真BP神经网络Y=sim(net,P);

参数:输入层49,输出层40

输入层到隐含层传递函数:'purelin'。

隐含层到输出层传递函数:'purelin'。

训练函数:'traingdx'(动量及自适应lrBP的梯度训练递减函数)。

最后的识别准确率并不是很理想

仅为89.5%-90.5%

结果

启动训练流程...
从面部图像中提取数据样本...
主成分分析算法已启用...
.........
已完成标准化处理...
进入测试阶段...

accuracy =

0.8950

基于主成分分析(PCA)的人脸识别技术研究Matlab与机器学习资源-文库

全部评论 (0)

还没有任何评论哟~