资源简介
代码分为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个文件信息
- 上一篇:写字机制作方案
- 下一篇:张志华《机器学习导论》笔记和补充材料
相关资源
-
Tree-ba
sed Convolutional Neural Networks - 基于多任务卷积网络(MTCNN)和Cente
- Neural Networks and DeepLearning - Michael Nie
- LBPH人脸识别
- 基于open cv的人脸识别
- 神经模糊系统及其应用PDF电子书
- 图像分割算法研究区域分割,数学形
- OpenCV人脸识别给头像带上圣诞帽工程
- 人脸识别常用ORL数据库
- 人工神经网络理论、设计及应用韩力
- cmac神经网络及在机械手逆解控制的应
- 卷积神经网络识别手写字体,很强大
- 神经网络导论实验报告
- 人脸数据库(人脸检测,人脸识别)
- 基于BP神经网络电力系统短期负荷预测
- BP神经网络用于两类图片识别分类
- 基于深度神经网络的用户会话推荐算
- 吴恩达神经网络课程作业与答案
- OpenCV之人脸,眼睛,鼻子,嘴巴的识
- dlib-19.4.0-cp35.whl Windows64位 不用boos
- 基于神经网络的溶解度预测和回归分
- 神经网络非线性系统控制( neural ne
- 人脸识别系统设计-毕业设计
- 基于循环神经网络的自然语言情感分
-
haarcascades人脸特征分类器xm
l文件 - Qt+Opencv-PCA人脸识别+视频
- 模糊理论和神经网络的基础与应用.
- 卷积神经网络的概述论文:分析、应
- 关于人脸识别的9篇论文
- 基于PCA的人脸识别
评论
共有 条评论