%% LVQ神经网络的预测——人脸识别
%
% <html>
% <table border="0" width="600px" id="table1"> <tr> <td><b><font size="2">该案例作者申明:</font></b></td> </tr> <tr><td><span class="comment"><font size="2">1:本人长期驻扎在此<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html"><font color="#0000FF">板块</font></a>里,对该案例提问,做到有问必答。本套书籍官方网站为:<a href="http://video.ourmatlab.com">video.ourmatlab.com</a></font></span></td></tr><tr> <td><font size="2">2:点此<a href="http://union.dangdang.com/transfer/transfer.aspx?from=P-284318&backurl=http://www.dangdang.com/">从当当预定本书</a>:<a href="http://union.dangdang.com/transfer/transfer.aspx?from=P-284318&backurl=http://www.dangdang.com/">《Matlab神经网络30个案例分析》</a>。</td></tr><tr> <td><p class="comment"></font><font size="2">3</font><font size="2">:此案例有配套的教学视频,视频下载方式<a href="http://video.ourmatlab.com/vbuy.html">video.ourmatlab.com/vbuy.html</a></font><font size="2">。 </font></p></td> </tr> <tr> <td><span class="comment"><font size="2"> 4:此案例为原创案例,转载请注明出处(《Matlab神经网络30个案例分析》)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。</font></span></td> </tr> </table>
% </html>
%% 清除环境变量
clear all
clc
%% 人脸特征向量提取
% 人数
M = 20;
% 人脸朝向类别数
N = 5;
% 特征向量提取
pixel_value = feature_extraction(M,N);
%% 训练集/测试集产生
% 产生图像序号的随机序列
rand_label = randperm(M*N);
% 人脸朝向标号
direction_label = repmat(1:N,1,M);
% 训练集
train_label = rand_label(1:80);
P_train = pixel_value(train_label,:)';
Tc_train = direction_label(train_label);
T_train = ind2vec(Tc_train);
% 测试集
test_label = rand_label(81:end);
P_test = pixel_value(test_label,:)';
Tc_test = direction_label(test_label);
%% K-fold交叉验证确定最佳神经元个数
k_fold = 10;
Indices = crossvalind('Kfold',size(P_train,2),k_fold);
error_min = 10e10;
best_number = 1;
best_input = [];
best_output = [];
best_train_set_index = [];
best_validation_set_index = [];
h = waitbar(0,'正在寻找最佳神经元个数.....');
for i = 1:k_fold
% 验证集标号
validation_set_index = (Indices == i);
% 训练集标号
train_set_index = ~validation_set_index;
% 验证集
validation_set_input = P_train(:,validation_set_index);
validation_set_output = T_train(:,validation_set_index);
% 训练集
train_set_input = P_train(:,train_set_index);
train_set_output = T_train(:,train_set_index);
for number = 10:100
for j = 1:5
rate{j} = length(find(Tc_train(:,train_set_index) == j))/length(find(train_set_index == 1));
end
net = newlvq(minmax(train_set_input),number,cell2mat(rate));
% 设置网络参数
net.trainParam.epochs = 100;
net.trainParam.show = 10;
net.trainParam.lr = 0.1;
net.trainParam.goal = 0.001;
% 训练网络
net = train(net,train_set_input,train_set_output);
waitbar(((i-1)*21 + number)/219,h);
%% 仿真测试
T_sim = sim(net,validation_set_input);
Tc_sim = vec2ind(T_sim);
error = length(find(Tc_sim ~= Tc_train(:,validation_set_index)));
if error < error_min
error_min = error;
best_number = number;
best_input = train_set_input;
best_output = train_set_output;
best_train_set_index = train_set_index;
best_validation_set_index = validation_set_index;
end
end
end
disp(['经过交叉验证,得到的最佳神经元个数为:' num2str(best_number)]);
close(h);
%% 创建LVQ网络
for i = 1:5
rate{i} = length(find(Tc_train(:,best_train_set_index) == i))/length(find(best_train_set_index == 1));
end
net = newlvq(minmax(best_input),best_number,cell2mat(rate),0.01);
% 设置训练参数
net.trainParam.epochs = 100;
net.trainParam.goal = 0.001;
net.trainParam.lr = 0.1;
%% 训练网络
net = train(net,best_input,best_output);
%% 人脸识别测试
T_sim = sim(net,P_test);
Tc_sim = vec2ind(T_sim);
result = [Tc_test;Tc_sim]
%% 结果显示
% 训练集人脸标号
strain_label = sort(train_label(best_train_set_index));
htrain_label = ceil(strain_label/N);
% 训练集人脸朝向标号
dtrain_label = strain_label - floor(strain_label/N)*N;
dtrain_label(dtrain_label == 0) = N;
% 显示训练集图像序号
disp('训练集图像为:' );
for i = 1:length(find(best_train_set_index == 1))
str_train = [num2str(htrain_label(i)) '_'...
num2str(dtrain_label(i)) ' '];
fprintf('%s',str_train)
if mod(i,5) == 0
fprintf('\n');
end
end
% 验证集人脸标号
svalidation_label = sort(train_label(best_validation_set_index));
hvalidation_label = ceil(svalidation_label/N);
% 验证集人脸朝向标号
dvalidation_label = svalidation_label - floor(svalidation_label/N)*N;
dvalidation_label(dvalidation_label == 0) = N;
% 显示验证集图像序号
fprintf('\n');
disp('验证集图像为:' );
for i = 1:length(find(best_validation_set_index == 1))
str_validation = [num2str(hvalidation_label(i)) '_'...
num2str(dvalidation_label(i)) ' '];
fprintf('%s',str_validation)
if mod(i,5) == 0
fprintf('\n');
end
end
% 测试集人脸标号
stest_label = sort(test_label);
htest_label = ceil(stest_label/N);
% 测试集人脸朝向标号
dtest_label = stest_label - floor(stest_label/N)*N;
dtest_label(dtest_label == 0) = N;
% 显示测试集图像序号
fprintf('\n');
disp('测试集图像为:');
for i = 1:20
str_test = [num2str(htest_label(i)) '_'...
num2str(dtest_label(i)) ' '];
fprintf('%s',str_test)
if mod(i,5) == 0
fprintf('\n');
end
end
% 显示识别出错图像
error = Tc_sim - Tc_test;
location = {'左方' '左前方' '前方' '右前方' '右方'};
for i = 1:length(error)
if error(i) ~= 0
% 识别出错图像人脸标号
herror_label = ceil(test_label(i)/N);
% 识别出错图像人脸朝向标号
derror_label = test_label(i) - floor(test_label(i)/N)*N;
derror_label(derror_label == 0) = N;
% 图像原始朝向
standard = location{Tc_test(i)};
% 图像识别结果朝向
identify = location{Tc_sim(i)};
str_err = strcat(['图像' num2str(herror_label) '_'...
num2str(derror_label) '识别出错.']);
disp([str_err '(正确结果:朝向' standard...
';识别结果:朝向' identify ')']);
end
end
% 显示识别率
disp(['识别率为:' num2str(length(find(error == 0))/20*100) '%']);
%web browser http://www.matlabsky.com/thread-11193-1-1.html
%%
% <html>
% <table width="656" align="left" > <tr><td align="center"><p><font size="2"><a href="http://video.ourmatlab.com/">Matlab神经网络30个案例分析</a></font></p><p align="left"><font size="2">相关论坛:</font></p><p align="left"><font size="2">《Matlab神经网络30个案例分析》官方网站:<a href="http://video.ourmatlab.com">video.ourmatlab.com</a></font></p><p align="left"><font size="2">Matlab技术论坛:<a href="http://www.matlabsky.com">www.matlabsky.com</a></font></p><p align="left"><font size="2">M</font><font size="2">atlab函数百科:<a href="http://www.mfun.la">www.mfun.la</a></font></p><p align="left"><font size="2">Matlab中文论坛:<a href="http://www.ilovematlab.com">www.ilovematlab.com</a></font></p></td> </tr></table>
% </html>
没有合适的资源?快使用搜索试试~ 我知道了~
LVQ神经网络之人脸朝向识别(源程序+图片数据集)
共105个文件
bmp:100个
m:4个
db:1个
5星 · 超过95%的资源 需积分: 50 132 下载量 194 浏览量
2018-01-14
20:34:49
上传
评论 12
收藏 23.32MB ZIP 举报
温馨提示
人脸识别是现今比较火的方向,本实例运用神经网络技术,选取其中一个特征点(眼睛的位置不同)对人脸进行识别,本人自己动手实践,完全是可行的程序,而且对入门神经网络有些帮助,作为研究生新手的我,搞懂了这个,对我后续的学习非常有激励,现共享出来,不懂的,可以私信我,愿与有志者共进步。
资源推荐
资源详情
资源评论
收起资源包目录
LVQ神经网络之人脸朝向识别(源程序+图片数据集) (105个子文件)
16_2.bmp 338KB
15_1.bmp 338KB
9_3.bmp 338KB
6_1.bmp 338KB
17_4.bmp 338KB
7_5.bmp 338KB
10_3.bmp 338KB
17_1.bmp 338KB
13_5.bmp 338KB
18_5.bmp 338KB
5_3.bmp 338KB
19_5.bmp 338KB
3_5.bmp 338KB
16_3.bmp 338KB
8_4.bmp 338KB
20_1.bmp 338KB
6_4.bmp 338KB
4_1.bmp 338KB
10_4.bmp 338KB
6_5.bmp 338KB
6_2.bmp 338KB
10_2.bmp 338KB
14_4.bmp 338KB
3_2.bmp 338KB
1_1.bmp 338KB
14_3.bmp 338KB
4_2.bmp 338KB
18_1.bmp 338KB
1_3.bmp 338KB
8_3.bmp 338KB
16_1.bmp 338KB
4_3.bmp 338KB
3_4.bmp 338KB
19_1.bmp 338KB
2_3.bmp 338KB
14_5.bmp 338KB
13_2.bmp 338KB
13_1.bmp 338KB
9_5.bmp 338KB
11_4.bmp 338KB
3_3.bmp 338KB
11_3.bmp 338KB
2_2.bmp 338KB
20_5.bmp 338KB
11_5.bmp 338KB
8_5.bmp 338KB
3_1.bmp 338KB
17_3.bmp 338KB
11_1.bmp 338KB
10_5.bmp 338KB
12_4.bmp 338KB
4_5.bmp 338KB
15_4.bmp 338KB
5_4.bmp 338KB
18_3.bmp 338KB
15_2.bmp 338KB
19_4.bmp 338KB
12_2.bmp 338KB
7_4.bmp 338KB
1_5.bmp 338KB
7_2.bmp 338KB
12_3.bmp 338KB
5_5.bmp 338KB
14_1.bmp 338KB
7_1.bmp 338KB
9_4.bmp 338KB
5_2.bmp 338KB
4_4.bmp 338KB
16_5.bmp 338KB
2_4.bmp 338KB
12_1.bmp 338KB
2_5.bmp 338KB
7_3.bmp 338KB
13_3.bmp 338KB
19_2.bmp 338KB
1_4.bmp 338KB
20_4.bmp 338KB
18_2.bmp 338KB
8_1.bmp 338KB
13_4.bmp 338KB
10_1.bmp 338KB
16_4.bmp 338KB
9_1.bmp 338KB
18_4.bmp 338KB
20_2.bmp 338KB
15_5.bmp 338KB
8_2.bmp 338KB
9_2.bmp 338KB
11_2.bmp 338KB
15_3.bmp 338KB
1_2.bmp 338KB
14_2.bmp 338KB
2_1.bmp 338KB
19_3.bmp 338KB
20_3.bmp 338KB
12_5.bmp 338KB
5_1.bmp 338KB
17_5.bmp 338KB
6_3.bmp 338KB
17_2.bmp 338KB
共 105 条
- 1
- 2
资源评论
- 黄建hj2019-05-31值得学习学习
- qq_380886552019-05-21能运行,完美
zqhwando
- 粉丝: 54
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++和Qt框架的游戏工作室服务器管理系统.zip
- (源码)基于Spring Boot的赛事管理系统.zip
- (源码)基于C#和ASP.NET Core的智能家居管理系统.zip
- (源码)基于rosserial的STM32嵌入式ROS通信系统库(Yoneken版改进版).zip
- 9.4 使用生成的识别器模型faceModel.xml预测新图像,并输出匹配结果标签和置信度
- (源码)基于Spring Boot和Shiro的电商管理系统.zip
- (源码)基于Arduino和Blinker的智能时钟控制系统.zip
- (源码)基于C++编程语言的WyoOS操作系统.zip
- 9.3 使用EigenFaceRecognizer训练人脸分类器,并将模型保存为faceModel.xml文件
- (源码)基于Spring Boot 2的管理后台系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功