资源简介
基于BP神经网络的不同方向人脸识别的源代码,在网上搜到的能正常运行,感谢作者,有需要的自己下载
代码片段和文件信息
function mytest()
clc;
images=[ ];
M_train=3;%表示人脸
N_train=5;%表示方向
sample=[];
pixel_value=[];
sample_number=0;
for j=1:N_train
for i=1:M_train
str=strcat(‘Images\‘num2str(i)‘_‘num2str(j)‘.bmp‘); %读取图像,连接字符串形成图像的文件名。
img= imread(str);
[rows cols]= size(img);%获得图像的行和列值。
img_edge=edge(img‘Sobel‘);
%由于在分割图片中我们可以看到这个人脸的眼睛部分也就是位于分割后的第二行中,位置变化比较大,而且眼睛边缘检测效果很好
sub_rows=floor(rows/6);%最接近的最小整数分成6行
sub_cols=floor(cols/8);%最接近的最小整数,分成8列
sample_num=M_train*N_train;%前5个是第一幅人脸的5个角度
sample_number=sample_number+1;
for subblock_i=1:8 %因为这还在i,j的循环中,所以不可以用i
block_num=subblock_i;
pixel_value(sample_numberblock_num)=0;
for ii=sub_rows:(2*sub_rows)
for jj=(subblock_i-1)*sub_cols+1:subblock_i*sub_cols
pixel_value(sample_numberblock_num)=pixel_value(sample_numberblock_num)+img_edge(iijj);
end
end
end
end
end
%将特征值转换为小于1的值
max_pixel_value=max(pixel_value);
max_pixel_value_1=max(max_pixel_value);
for i=1:3
mid_value=10^i;
if(((max_pixel_value_1/mid_value)>1)&&((max_pixel_value_1/mid_value)<10))
multiple_num=1/mid_value;
pixel_value=pixel_value*multiple_num;
break;
end
end
% T 为目标矢量
t=zeros(3sample_number);
%因为有五类,所以至少用3个数表示,5介于2的2次方和2的3次方之间
for i=1:sample_number
% if((mod(i5)==1)||(mod(i5)==4)||(mod(i5)==0))
if(i<=3)||((i>9)&&(i<=12))||((i>12)&&(i<=15))
t(1i)=1;
end
%if((mod(i5)==2)||(mod(i5)==4))
if((i>3)&&(i<=6))||((i>9)&&(i<=12))
t(2i)=1;
end
%if((mod(i5)==3)||(mod(i5)==0))
if((i>6)&&(i<=9))||((i>12)&&(i<=15))
t(3i)=1;
end
end
% NEWFF——生成一个新的前向神经网络
% TRAIN——对 BP 神经网络进行训练
% SIM——对 BP 神经网络进行仿真
% 定义训练样本
% P 为输入矢量
P=pixel_value‘
% T 为目标矢量
T=t
size(P)
size(T)
% size(P)
% size(T)
% 创建一个新的前向神经网络
net_1=newff(minmax(P)[103]{‘tansig‘‘purelin‘}‘traingdm‘)
% 当前输入层权值和阈值
inputWeights=net_1.IW{11}
inputbias=net_1.b{1}
% 当前网络层权值和阈值
layerWeights=net_1.LW{21}
layerbias=net_1.b{2}
% 设置训练参数
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-3;
% 调用 TRAINGDM 算法训练 BP 网络
[net_1tr]=train(net_1PT);
% 对 BP 网络进行仿真
A = sim(net_1P);
% 计算仿真误差
E = T - A;
MSE=mse(E)
x=[0.14 0 1 1 0 1 1 1.2]‘;
sim(net_1x)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 177478 2008-06-12 20:11 Images\10_1.bmp
文件 177478 2008-06-12 18:14 Images\10_2.bmp
文件 177478 2008-06-12 17:20 Images\10_3.bmp
文件 177478 2008-06-12 18:17 Images\10_4.bmp
文件 177478 2008-06-12 19:35 Images\10_5.bmp
文件 177478 2008-06-12 20:11 Images\1_1.bmp
文件 177478 2008-06-12 18:14 Images\1_2.bmp
文件 177478 2008-06-12 17:20 Images\1_3.bmp
文件 177478 2008-06-12 18:18 Images\1_4.bmp
文件 177478 2008-06-12 19:35 Images\1_5.bmp
文件 177478 2008-06-12 20:11 Images\2_1.bmp
文件 177478 2008-06-12 18:14 Images\2_2.bmp
文件 177478 2008-06-12 17:20 Images\2_3.bmp
文件 177478 2008-06-12 18:18 Images\2_4.bmp
文件 177478 2008-06-12 19:35 Images\2_5.bmp
文件 177478 2008-06-12 20:12 Images\3_1.bmp
文件 177478 2008-06-12 18:15 Images\3_2.bmp
文件 177478 2008-06-12 17:20 Images\3_3.bmp
文件 177478 2008-06-12 18:18 Images\3_4.bmp
文件 177478 2008-06-12 19:35 Images\3_5.bmp
文件 177478 2008-06-12 20:12 Images\4_1.bmp
文件 177478 2008-06-12 18:15 Images\4_2.bmp
文件 177478 2008-06-12 17:20 Images\4_3.bmp
文件 177478 2008-06-12 18:19 Images\4_4.bmp
文件 177478 2008-06-12 19:36 Images\4_5.bmp
文件 177478 2008-06-12 20:13 Images\5_1.bmp
文件 177478 2008-06-12 18:15 Images\5_2.bmp
文件 177478 2008-06-12 17:21 Images\5_3.bmp
文件 177478 2008-06-12 18:19 Images\5_4.bmp
文件 177478 2008-06-12 19:36 Images\5_5.bmp
............此处省略25个文件信息
- 上一篇:kingstondt101G2量产修复工具
- 下一篇:计算器计算表达式的
评论
共有 条评论