【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

2022-03-22 08:38:05      索炜达.猿创      299     

文件编号:B239

文件大小:19.6M

开发环境:Matlab2018、2020

猿创承诺:该项目亲测正常运行,需远程调试部署需另外收费,确保正常使用,不能正常使用全额退款。

简要概述:基于误差反向传播算法的BP神经网络的人脸表情分类识别系统,利用PCA(主成分分析法)对人脸图像进行降维并提取主成分特征,利用K-交叉检验法训练BP神经网络。

表情分类识别系统的组成

本次课程设计中,基于BP神经网络的人脸表情识别系统由3部分组成,分别是:数据预处理,PCA特征提取和BP神经网络分类器。

【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

基于BP神经网络的人脸表情识别系统

1.数据预处理

本次课程设计中所涉及到的数据是近4000幅维度为128×128的人脸灰度图像,在进行PCA特征提取之前,我们需要对这些数据进行标准化,数据标准化是指将数据按比例缩放,使之落于一个小的特定区间,从而去除数据的单位限制,将其转换为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。此外,数据标准化还可以提升模型的收敛速度和精度。针对PCA特征提取降维,本次课程设计采用零均值标准化(z-score标准化)。

2.PCA特征提取

本文中,待识别样本是维度为128×128的人脸灰度图像,即每个样本有多达16384个特征,要在如此高维的空间中研究样本的分布规律显然是十分麻烦且困难的,同时这些特征之间存在着一定的相关性,从而使得这些特征在一定程度上有信息的重叠。PCA通过采取降维的方式,找出主成分特征来代表原来数以万计的特征,以降低特征空间的维度,使后续的神经网络设计在计算上更容易实现,同时消除原有特征之间的相关度,减少数据信息的冗余,更有利于分类。

3.BP神经网络拓扑结构

BP神经网络是一种具有三层或三层以上的多层神经网络,每一层都由若干个神经元组成,如图2所示,它的左右各层之间各个神经元实现全连接,即左层的每一个神经元与右层的每个神经元都由连接,而上下各神经元之间无连接,如图3所示。BP神经网络按有导师学习方式进行训练,当一对学习模式提供给网络后,其神经元的激活值将从输入层经由各隐含层向输出层传播,在输出层的各神经元输出对应输入模式的网络响应。之后,按照减少期望输出与实际输出误差的原则,从输出层经由各隐含层,最后回到输入层逐层修正各连接权值。由于这种修正过程是从输出层到输入层逐层进行的,所以称之为“误差逆传播算法”,随着这种误差逆传播训练的不断进行,网络对输入模式响应的正确率也将不断提高。

按需写作:

【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

识别结果分析与分析比较

Newff函数构建神经网络

利用Matlab自带的newff函数生成三层BP神经网络,通过n×K次循环,训练集用于训练神经网络,测试集用于测试,计算K个训练形成的神经网络的识别率进而计算n×K次平均识别率,同时记录最高识别率和最低识别率,作为人脸表情识别系统的性能指标。

参数调节后结果比较

运行结果如图所示

【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

方差结果如图所示

【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

交叉验证准确率如图所示

【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

(运行时间1个小时20分钟)

激活函数与训练函数的初步比较

【B239】基于Matlab PCA的BP神经网络人脸表情分类识别

在激活函数和训练函数的初步比较我们可以看出,任何一种参数组合都会导致较低的最低识别率出现,而最高识别率则都维持在75~85%,因此这两个指标都不能作为后续激活函数和训练函数选取的标准。从平均识别率上看,traingda-log/tansig-softmax的组合具有较好的表现,这和比较预期和一般经验是相符合的:softmax适用于多分类,做为输出层激活函数是较为合适的,而隐含层激活函数从经验上看常选用log/tansig,训练函数traingda也即自适应lr的梯度下降法,属于变学习速率,既能加快学习过程,同时又不引起振荡。

远程协助:

温馨提示:索炜达.猿创官方提供收费远程协助,确保您项目运行成功。

点击查看:远程协助相关事项

我们提供完整项目文件清单如下:

文件目录

 ├ 1.项目源码

 └ 2.演示视频(因为运行时间1个小时20分,所以暂时不提供视频)

TAG人脸表情
  • 3 次
  • 450 分