资源简介
matlab基于BP神经网络的人脸识别,包含matlab代码及所需要的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(‘D:\MATLAB\人脸库\s‘num2str(i)‘\‘num2str(j)‘.bmp‘));
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)^(1/2)是对人脸图像的标准化
i = i + 1;
end
%下面的代码,将训练样本对坐标系上进行投影得到一个 M*p 阶矩阵allcoor
allcoor = allsamples * base;
%% 第二步,创建并训练BP神经网络
%生成训练BP神经网络的输入 P
P= mapminmax(allcoor); %归一化
%生成目标输出矢量 T
T=zeros(20040);
for i=1:40
for j=1:5
T((i-1)*5+ji)=1;
end
end
%打乱训练样本顺序
gx2(:1:47)=P;
gx2(:48:87)=T;
xd=gx2(randperm(numel(gx2)/87):);
gx=xd(:1:47);d=xd(:48:87);
P=gx‘;
T=d‘;
%创建BP神经网络
[RQ]=size(P);
[S2Q]=size(T);
net=newcf(minmax(P)T[6015]{‘tansig‘‘logsig‘}‘trainscg‘);
%训练BP神经网络
net.trainparam.epochs=5000;
net.trainparam.goal=0.0001;
net.divideFcn = ‘‘;
net=train(netPT);
%仿真BP神经网络
Y=sim(netP);
%% 第三步,测试BP神经网络并计算其识别率
%测试BP神经网络
s=0;
for i=1:40
for j=6:10 %读入40x5副测试图像
a=imread(strcat(‘D:\MATLAB\人脸库\s‘num2str(i)‘\‘num2str(j)‘.bmp‘));
b=a(1:10304);
b=double(b);
tcoor= b * base; %计算坐标,是1×p阶矩阵
X = mapminmax(tcoor); %归一化
Z=sim(netX‘);
[ziindex2]=max(Z);
if index2==i
s=s+1;
else
i %输出识别出错的那个人 i
j %输出识别出错的那张图片 j
index2 %输出误识别成的那个人
end
end
end
%计算识别率
accuracy=s/Q
end
%% 完成
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11384 2010-03-24 19:05 人脸库\s1\1.bmp
文件 11384 2010-03-24 19:43 人脸库\s1\10.bmp
文件 11384 2010-03-24 19:42 人脸库\s1\2.bmp
文件 11384 2010-03-24 19:44 人脸库\s1\3.bmp
文件 11384 2010-03-24 19:44 人脸库\s1\4.bmp
文件 11384 2010-03-24 19:44 人脸库\s1\5.bmp
文件 11384 2010-03-24 19:45 人脸库\s1\6.bmp
文件 11384 2010-03-24 19:45 人脸库\s1\7.bmp
文件 11384 2010-03-24 19:45 人脸库\s1\8.bmp
文件 11384 2010-03-24 19:45 人脸库\s1\9.bmp
文件 11384 2010-03-25 19:23 人脸库\s10\1.bmp
文件 10318 1994-04-18 14:18 人脸库\s10\1.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\10.bmp
文件 10318 1994-04-18 14:07 人脸库\s10\10.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\2.bmp
文件 10318 1994-04-18 14:18 人脸库\s10\2.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\3.bmp
文件 10318 1994-04-18 14:18 人脸库\s10\3.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\4.bmp
文件 10318 1994-04-18 14:18 人脸库\s10\4.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\5.bmp
文件 10318 1994-04-18 14:18 人脸库\s10\5.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\6.bmp
文件 10318 1994-04-18 14:07 人脸库\s10\6.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\7.bmp
文件 10318 1994-04-18 14:07 人脸库\s10\7.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\8.bmp
文件 10318 1994-04-18 14:07 人脸库\s10\8.pgm
文件 11384 2010-03-25 19:23 人脸库\s10\9.bmp
文件 10318 1994-04-18 14:07 人脸库\s10\9.pgm
............此处省略807个文件信息
- 上一篇:SPAMS_matlab_v2.5
- 下一篇:时间序列教程
相关资源
- SPAMS_matlab_v2.5
- matlab移动平均算法
- MATLAB雷达多普勒微动仿真
- 自适应全变分图像去噪模型及其快速
- 7个经典传感器网络WSN节点定位算法的
- matlab简单的统计硬币个数程序,包含
- 广义自回归神经网络预测代码含原始
- 用ZMNL对海杂波进行matlab仿真
- 聚类数指标matlab工具箱
- 基于MATLAB车牌识别系统设计--程序--字
- svpwm的matlab实现
- 基于MATLAB的回声状态网络,可用于趋
- MATLAB 6.5 辅助小波分析与应用 飞思科
- 《信号与系统》计算机练习+利用MAT
- 图像特征分类识别程序
- Zemax DDE toolbox for Matlab
- 2dpca的matlab源码
- gabor提取图像特征原理及其matlab实现
- 经典SVM算法matlab程序
- Computational Statistics Handbook with MATLAB统
- 全面详解LTE:MATLAB建模、仿真与实现
- 图像处理的常见滤波方法,matlab代码
- 通信原理MATLAB仿真实验指导书
- 支持向量机matlab工具箱含资料及gui模
- 车牌识别 matlab完整源代码,可运行有
- 多目标规划的求解方法及matlab程序
- Matlab在图像处理与目标识别方面的应
- Multirate Filtering for Digital Signal Process
- CCToolbox matlab
- HHT变换的3种方法
评论
共有 条评论