- 48
- 0
- 约4.08千字
- 约 6页
- 2017-08-11 发布于重庆
- 举报
人脸识别源代码,BP神经网络与LVQ神经网络
清除环境变量clear allclc人脸特征向量提取人数M = 10;% 人脸朝向类别数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:30);P_train = pixel_value(train_label,:);Tc_train = direction_label(train_label);T_train = ind2vec(Tc_train);% 测试集test_label = rand_label(31:end);P_test = pixel_value(test_label,:);Tc_test = direction_label(test_label);创建LVQ网络for i = 1:5 rate{i} = length(find(Tc_train == i))/30;endnet = newlvq(minmax(P_train),20,cell2mat(rate),0.01,learnlv1);% 设置训练参数net.trainParam.epochs = 100;net.trainParam.goal = 0.001;net.trainParam.lr = 0.1;训练网络net = train(net,P_train,T_train);人脸识别测试T_sim = sim(net,P_test);Tc_sim = vec2ind(T_sim);result = [Tc_test;Tc_sim]result = Columns 1 through 16 2 3 3 5 2 1 4 5 5 3 2 1 1 4 1 1 2 3 3 5 2 1 4 5 5 3 2 1 1 4 1 1 Columns 17 through 20 5 2 5 4 5 2 5 4结果显示训练集人脸标号strain_label = sort(train_label);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:30 str_train = [num2str(htrain_label(i)) _... num2str(dtrain_label(i)) ]; fprintf(%s,str_train)if mod(i,5) == 0 fprintf(\n);endend% 测试集人脸标号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;% 显示测试集图像序号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);endend% 显示识别出错图像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
原创力文档

文档评论(0)