资源简介
代码分为read_can_use.m和main_can_ues.m
先运行read_can_use.m 读取图片的像素值,使用奇异值分解的方法得到对应的特征。程序预设了只读取前5个人的人脸图片 ,可以自己改成最多15个人。
然后运行main_can_use.m ,程序会输出 1 1 2 3 2 3,每个数字代表一张图片最有可能的识别类别(就是人的编号)。
对每个人的11张图片,取前7张训练网络,后4张测试网络,取前5个人进行实验。所以共有35个训练样本,20个测试样本。
比如输出的结果是 1 1 1 1 2 2 1 2 3 3 3 3 …..,因为每4个数字是属于同一个人的,前四个都是1则都预测正确,第二组的4个数字2 2 1 2 中的那个1 就是预测错误(本来是2预测成了1)。
由于参数的随机初始化,不保证每次的结果都相同。

代码片段和文件信息
function main()
%%
clc
clear all;
%close all;
load(‘date1_5.mat‘‘feature‘);
warning off all
SamNum=35; %输入样本数量
TestSamNum=35; %测试样本数量
ForcastSamNum=20; %预测样本数量
HiddenUnitNum=8; %中间层隐节点数量取8
InDim=40; %网络输入维度
OutDim=4; %网络输出维度
%%input
p=[];t=[];pnew=[];
for i=1:55
if(mod(i11)<=7&&mod(i11)>0)
p=[p;feature(i:)];
else
pnew=[pnew;feature(i:)];
end
end
p=p‘;pnew=pnew‘;
%%output
s1=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];
s2=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ];
s3=[0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];
s4=[1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 ];
t=[s1;s2;s3;s4];
size(t) %%4*35 输出
size(p) %%40*35 输入
[SamInminpmaxptnmintmaxt]=premnmx(pt); %原始样本对(输入和输出)初始化
rand(‘state‘sum(100*clock)) %依据系统时钟种子产生随机数
SamOut=tn;
TestSamIn=SamIn; %这里取输入样本与测试样本相同因为样本容量偏少
TestSamOut=SamOut; %也取输出样本与测试样本相同
MaxEpochs=50000; %最多训练次数为50000
lr=0.035; %学习速率为0.035
E0=0.65*10^(-3); %目标误差为0.65*10^(-3)
W1=0.5*rand(HiddenUnitNumInDim)-0.2; %初始化输入层与隐含层之间的权值
B1=0.5*rand(HiddenUnitNum1)-0.2; %初始化输入层与隐含层之间的阈值
W2=0.5*rand(OutDimHiddenUnitNum)-0.2; %初始化输出层与隐含层之间的权值
B2=0.5*rand(OutDim1)-0.2; %初始化输出层与隐含层之间的阈值
ErrHistory=[]; %给中间变量预先占据内存
for i=1:MaxEpochs
% HiddenOut=logsig(W1*SamIn+repmat(B11SamNum)); % 隐含层网络输出
HiddenOut=1./(1+exp(-(W1*SamIn+repmat(B11SamNum)))); % 隐含层网络输出
NetworkOut=W2*HiddenOut+repmat(B21SamNum); % 输出层网络输出
Error=SamOut-NetworkOut; % 实际输出与网络输出之差
SSE=sumsqr(Error) ; %能量函数(误差平方和)
ErrHistory=[ErrHistory SSE];
if SSE % 调整权值(阈值)
Delta2=Error;
Delta1=W2‘*Delta2.*HiddenOut.*(1-HiddenOut);
dW2=Delta2*HiddenOut‘;
dB2=Delta2*ones(SamNum1);
dW1=Delta1*SamIn‘;
dB1=Delta1*ones(SamNum1);
%对输出层与隐含层之间的权值和阈值进行修正
W2=W2+lr*dW2;
B2=B2+lr*dB2;
%对输入层与隐含层之间的权值和阈值进行修正
W1=W1+lr*dW1;
B1=B1+lr*dB1;
end
HiddenOut=1./(1+exp(-((W1*SamIn+repmat(B11TestSamNum))))); % 隐含层输出最终结果
NetworkOut=W2*HiddenOut+repmat(B21TestSamNum); % 输出层输出最终结果
a=postmnmx(NetworkOutmintmaxt); % 还原网络输出层的结果
%%
% 利用训练好的网络进行预测
pnewn=tramnmx(pnewminpmaxp); %归一化;
HiddenOut=1./(1+exp(-(W1*pnewn+repmat(B11ForcastSamNum))));
anewn=W2*HiddenOut+repmat(B21ForcastSamNum); % 输出层输出预测结果
%把网络预测得到的数据还原为原始的数量级;
anew=postmnmx(anewnmintmaxt);
answer=zeros(1size(anew2));
d=1;
for j=1:20
for i=4:-1:1
answer(j)=answer(j)+anew(ij)*d;
d=d*2;
en
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-16 15:52 基于神经网络的人脸识别\
文件 3434 2016-07-10 13:19 基于神经网络的人脸识别\main_can_use.m
文件 1042 2018-05-16 15:46 基于神经网络的人脸识别\read_can_use.m
目录 0 2017-09-16 12:16 基于神经网络的人脸识别\YALE\
文件 9080 2002-07-26 10:01 基于神经网络的人脸识别\YALE\subject01_1.bmp
文件 9080 2002-07-26 10:04 基于神经网络的人脸识别\YALE\subject01_10.bmp
文件 9080 2002-07-26 10:05 基于神经网络的人脸识别\YALE\subject01_11.bmp
文件 9080 2002-07-26 10:05 基于神经网络的人脸识别\YALE\subject01_2.bmp
文件 9080 2002-07-26 10:06 基于神经网络的人脸识别\YALE\subject01_3.bmp
文件 9080 2002-07-26 10:07 基于神经网络的人脸识别\YALE\subject01_4.bmp
文件 9080 2002-07-26 10:08 基于神经网络的人脸识别\YALE\subject01_5.bmp
文件 9080 2002-07-26 10:09 基于神经网络的人脸识别\YALE\subject01_6.bmp
文件 9080 2002-07-26 10:12 基于神经网络的人脸识别\YALE\subject01_7.bmp
文件 9080 2002-07-26 10:12 基于神经网络的人脸识别\YALE\subject01_8.bmp
文件 9080 2002-07-26 10:13 基于神经网络的人脸识别\YALE\subject01_9.bmp
文件 9080 2002-07-26 10:15 基于神经网络的人脸识别\YALE\subject02_1.bmp
文件 9080 2002-07-26 10:16 基于神经网络的人脸识别\YALE\subject02_10.bmp
文件 9080 2002-07-26 10:16 基于神经网络的人脸识别\YALE\subject02_11.bmp
文件 9080 2002-07-26 10:17 基于神经网络的人脸识别\YALE\subject02_2.bmp
文件 9080 2002-07-26 10:18 基于神经网络的人脸识别\YALE\subject02_3.bmp
文件 9080 2002-07-26 10:18 基于神经网络的人脸识别\YALE\subject02_4.bmp
文件 9080 2002-07-26 10:19 基于神经网络的人脸识别\YALE\subject02_5.bmp
文件 9080 2002-07-26 10:20 基于神经网络的人脸识别\YALE\subject02_6.bmp
文件 9080 2002-07-26 10:20 基于神经网络的人脸识别\YALE\subject02_7.bmp
文件 9080 2002-07-26 10:21 基于神经网络的人脸识别\YALE\subject02_8.bmp
文件 9080 2002-07-26 10:22 基于神经网络的人脸识别\YALE\subject02_9.bmp
文件 9080 2002-07-26 10:25 基于神经网络的人脸识别\YALE\subject03_1.bmp
文件 9080 2002-07-26 10:27 基于神经网络的人脸识别\YALE\subject03_10.bmp
文件 9080 2002-07-26 10:28 基于神经网络的人脸识别\YALE\subject03_11.bmp
文件 9080 2002-07-26 10:29 基于神经网络的人脸识别\YALE\subject03_2.bmp
文件 9080 2002-07-26 10:30 基于神经网络的人脸识别\YALE\subject03_3.bmp
............此处省略139个文件信息
- 上一篇:写字机制作方案
- 下一篇:张志华《机器学习导论》笔记和补充材料
相关资源
- 人脸识别开发包免费,可商用,有演
- CNN-SVM模型在抽油机井故障诊断中的应
- bp神经网络源代码,可直接运行
- 连续hopfield神经网络解决TSP问题
- 改进的BP神经网络算法
- 一个人脸识别程序源码
- 基于bp神经网络的表情识别
- LDA 人脸识别
- 神经网络仿真工具源代码
- 使用卷积神经网络在e + e-对撞机上改
- halcon简单实现人脸识别.hdev
- 用labview编写的一个神经网络Vi图
- 基于改进的SOM神经网络在产品配置中
- 深度学习卷积神经网络可检测和分类
- 标量场理论的回归和生成神经网络
- 基于ARIMA、BP神经网络与GM的组合模型
- 车辆自适应神经网络编队控制
- 基于RBF神经网络在线辨识的永磁同步
- 基于BP人工神经网络的SmFeN永磁材料工
- 融合粗糙集和人工神经网络的产品敏
- 基于粗糙集神经网络的数据挖掘在门
- 人脸识别开源SDK源码
- Google OCR API源代码和神经网络识别OC
- 百度人脸识别Demo
- delphi百度人脸识别离线SDK demo
- 讯飞人脸识别eclipse版
- Delphi7调用虹软人脸识别的测试
- 信息融合、神经网络-模糊推理理论及
- [b115]FPGA上运行人脸识别源代码.zip
- shape_predictor_68_face_landmarks.dat.bz2 68个标
评论
共有 条评论