BP人脸特征点归一化 matlab代码
时间: 2023-10-25 22:25:41 浏览: 114
以下是BP神经网络人脸特征点归一化的MATLAB代码:
```matlab
% 加载数据
load face.mat
input = face(:,1:2); % 输入特征点坐标
target = face(:,3:4); % 目标特征点坐标
% 归一化
input_min = min(input,[],1);
input_max = max(input,[],1);
input_norm = (input - input_min)./(input_max - input_min);
target_min = min(target,[],1);
target_max = max(target,[],1);
target_norm = (target - target_min)./(target_max - target_min);
% 构建BP神经网络模型
net = newff(input_norm', target_norm', [10 10], {'tansig','purelin'}, 'trainlm');
net.trainParam.show = 50; % 每隔50次迭代显示一次
net.trainParam.lr = 0.01; % 学习率
net.trainParam.epochs = 2000; % 最大迭代次数
net.trainParam.goal = 0.001; % 目标误差
net.trainParam.max_fail = 20; % 连续验证集误差增加次数最大值
% 训练BP神经网络模型
[net, tr] = train(net, input_norm', target_norm');
% 测试BP神经网络模型
output_norm = sim(net, input_norm');
output = output_norm'.*(target_max - target_min) + target_min;
% 显示结果
figure;
subplot(1,2,1);
imshow(uint8(reshape(input, [40 40 2])));
title('原图');
subplot(1,2,2);
imshow(uint8(reshape(output, [40 40 2])));
title('归一化后的图');
```
注:以上代码中,`face.mat` 是包含人脸特征点坐标的MAT文件。如果没有此文件,可以自行准备。
阅读全文