本文主要是介绍【人脸朝向识别与分类预测】基于BP神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
课题名称:基于BP神经网络的人脸朝向识别分类
版本日期:2024-02-20
运行方式:直接运行BP0503.m文件
代码获取方式:私信博主或 QQ:491052175
模型描述:
采集到一组人脸朝向不同角度时的图像,图像来自不同的10个人,每个人5幅图像,人脸的朝向分别是左方,左前方,前方,右前方,右方。通过观察不难法线,当人脸面朝不同方向时,眼睛在图像中的位置差别比较大.因此可以考虑将图片中描述眼睛位置的特征喜喜提取出来作为LVQ神经网络的输入,5个朝向分别用1,2,3,4,5表示,作为LVQ神经网络的输出。通过对训练集的图像进行训练,得到具有预测功能的网络,便可以对任意给出的人脸图像进行朝向判断和识别分类
算法流程:
1.人脸特征向量提取:如设计思路中所述,当人脸朝向不同时,眼睛在图像中的位置会有明显的差别。因此,只需要将描述人眼位置信息的特征向量提取出来即可。方法是将整幅图像划分成6行8列, 人眼的位置信息可以用第2行的8个子矩阵来描述(注意:针对不同大小的图像,划分的网格需稍作修改)边缘检测后8个子短阵中的值为“1”的像萦点个数与人脸朝向有直接关系, 只要分别统计出第2行的8个子短阵中的值为“1”的像素点个数即可。
2.训练集和测试集的产生:为了保证训练集数据的随机性,随机选取图像库中的30隔入脸图像提取出的特征向量作为训练集数据,剩余的20幅人脸图像提取出来的特征向盘作为测试集数据。
3.BP网络建立:利用BP神经网络调用函数建立BP神经网络
4.BP网络训练:利用训练数据进行网络训练,得到合适的网络权值和阈值
5.人脸识别测试:网络训练收敛后,便可以对测试集数据进行预测,即对测试集的图像进行人脸朝向识别.对于任意给出的图像,只需要将其特征向量提取出来,便可对其进行识别。
BP神经网络调用格式:
net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
P:输入数据矩阵; T:输出数据矩阵; S:隐含层节点数
TF:节点传递函数; BTF:训练函数; BLF:网络学习函数
PF:性能分析函数; IPF:输入处理函数; OPF:输出处理函数; DDF:验证数据划分函数
改进方向:无
待改进方向:
1.研究单隐含层的节点数,如何寻找到最佳隐含层节点数
2.将单隐含层替换为双隐含层,并且寻找到双隐含层的节点数
3.利用智能算法去优化BP神经网络的权值和阈值,比如GA算法,PSO算法,SA算法,GASA算法等等
特殊说明:
1. 过测试,对训练和测试数据进行归一化,反而降低了预测精度
2. 神经网络每一次的预测结果都不相同,为了得到更好的结果,建议多次运行取最佳值
Matlab仿真结果:
基于BP神经网络的人脸朝向识别精确率:
基于BP神经网络的人脸朝向识别分类结果:
基于BP神经网络的人脸朝向识别分类预测误差:
这篇关于【人脸朝向识别与分类预测】基于BP神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!