• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-08-02
  • 语言: Matlab
  • 标签: 人脸识别  

资源简介

网上找的 matlab基于bp神经网络的人脸识别 需要标准的orl人脸数据库 也可根据源代码进行改写

资源截图

代码片段和文件信息

function FaceRecognitionByBPneuralnetwork
%% 基于BP神经网络的人脸识别
%%2014-05-14

clc

global base net         %定义全局变量,用于 TestofFaceRecognition.m 函数中

%% 第一步,利用主元分析PCA法提取图像的特征矩阵

allsamples=[];                                %所有训练图像
for i=1:40
    for j=1:5
      a=imread(strcat(‘E:\资料类\学习资料\人工神经网络\att_faces\orl_faces\s‘num2str(i)‘\‘num2str(j)‘.pgm‘));
      b=a(1:112*92);                          % b是行矢量 1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右
      b=double(b);
      allsamples=[allsamples; b];             % allsamples 是一个M * N 矩阵,allsamples 中每一行数据代表一张图片,其中M=400
    end
end
samplemean=mean(allsamples);                  % 平均图片,1 × N
for i=1:200
    xmean(i:)=allsamples(i:)-samplemean;    % xmean是一个M × N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”
end

sigma=xmean*xmean‘;        % M * M 阶矩阵
[v d]=eig(sigma);
d1=diag(d);
[d2 index1]=sort(d1);       %以升序排序
cols=size(v2);            % 特征向量矩阵的列数
for i=1:cols
    vsort(:i) = v(: index1(cols-i+1) );    % vsort 是一个M*col(注:col一般等于M)阶矩阵,保存的是按降序排列的特征向量每一列构成一个特征向量
    dsort(i)   = d1( index1(cols-i+1) );     % dsort 保存的是按降序排列的特征值,是一维行向量
end    %完成降序排列
%以下选择85%的能量
dsum = sum(dsort);
    dsum_extract = 0;
    p= 0;
    while( dsum_extract/dsum < 0.85)
        p=p + 1;
        dsum_extract = sum(dsort(1:p));
    end
i=1;
%计算特征脸形成的坐标系
while (i<=p && dsort(i)>0)
    base(:i) = dsort(i)^(-1/2) * xmean‘ * vsort(:i);     % base是N×p阶矩阵,除以dsort(i)^

评论

共有 条评论