本发明涉及一种人脸表情识别方法,特别涉及一种基于卷积神经网络的人脸表情识别方法。
背景技术:
视频人脸图像是平安城市基础视频平台中最基础也是最重要的数据之一,研究人脸表情对于舆情分析有重要的作用,而由于摄像机本身的原因,例如,摄像机镜头有灰尘或外界光照等因素的影响,使得获取的视频图像模糊、不清晰,从而对获取到的目标图像的表情识别有一定的影响,另一方面,由于现实场景中环境的复杂多样,使用传统的手工算法提取特征的速度变得更加缓慢,浪费了大量的人力物力。
目前,传统的人脸表情识别方法的特征提取处理算法包括gabor小波算法、主成份分析算法、线性判别分析算法等;而常用的分类算法包括最近邻算法、支持向量机等。上述这些传统算法在人脸表情识别的实际应用上存在着自身的局限与不足,计算速度慢,准确率低,可设置调整的参数复杂多样,操作复杂。
技术实现要素:
本发明为了克服上述现有技术的不足,提供了一种基于卷积神经网络的人脸表情识别方法,本发明不仅大幅度提高了人脸表情识别的准确率,还简化了操作步骤。
为实现上述目的,本发明采用了以下技术措施:
一种基于卷积神经网络的人脸表情识别方法,包括以下步骤:
s1、从视频中获取人脸图像;
s2、对获取到的人脸图像进行尺度归一化操作处理,得到尺寸相同的人脸图像,并对所述尺寸相同的人脸图像进行对齐预处理操作,得到预处理后的人脸图像;
s3、使用卷积神经网络对预处理后的人脸图像进行特征提取操作,得到人脸图像的特征;
s4、利用softmax分类器对所述人脸图像的特征进行分类识别操作,得到表情识别结果。
优选的,步骤s3的具体操作步骤包括:
s31、创建卷积神经网络;
s32、利用卷积神经网络对预处理后的人脸图像进行特征提取操作,并通过反向传播算法对卷积神经网络的权重和偏置进行更新优化。
优选的,步骤s31中的卷积神经网络包括三个卷积层、三个池化层、三个全连接层,三个所述卷积层分别为第一卷积层、第二卷积层、第三卷积层,三个所述池化层分别为第一池化层、第二池化层、第三池化层,三个所述全连接层分别为第一全连接层、第二全连接层、第三全连接层;
步骤s32中的利用卷积神经网络对预处理后的人脸图像进行特征提取操作的具体步骤包括:预处理后的人脸图像依次经过数据输入层、第一卷积层、第一池化层、第二卷积层、第二池化层、第三卷积层、第三池化层、第一全连接层、第二全连接层、第三全连接层,得到人脸图像的特征。
优选的,所述第一卷积层的卷积核的大小设置为7×7,单位为像素,步长设置为4,单位为像素,填充设置为0,单位为像素;第二卷积层的卷积核的大小设置为5×5,单位为像素,步长设置为1,单位为像素,填充设置为2,单位为像素;第三卷积层的卷积核的大小设置为3×3,单位为像素,步长设置为1,单位为像素,填充设置为1,单位为像素;所述第一池化层、第二池化层、第三池化层的卷积核的大小均设置为3×3,单位为像素,步长设置为2,单位为像素,填充设置为0,单位为像素;第一全连接层的卷积核的大小设置为1×1,单位为像素,向量的维数设置为4096维;第二全连接层的卷积核的大小设置为1×1,单位为像素,向量的维数设置为4096维;第三全连接层的卷积核的大小设置为1×1,单位为像素,向量的维数设置为7维。
进一步的,步骤s32中的通过反向传播算法对卷积神经网络的权重和偏置进行更新优化的具体步骤包括:
s321、给定卷积神经网络一个样本(x,y),x为输入样本,y为预测的输出值,通过卷积神经网络对预处理后的人脸图像进行前向传播运算,得到第三全连接层的输出值hw,b(x);
s322、利用卷积神经网络中的第一卷积层、第二卷积层、第三卷积层、第一全连接层、第二全连接层中的每一个节点i和第三全连接层的输出值hw,b(x),得到第三全连接层的输出值hw,b(x)与实际输出值之间的差值即为残差;
s323、对于卷积神经网络的隐藏层单元,所述隐藏层单元包括第一卷积层、第一池化层、第二卷积层、第二池化层、第三卷积层、第三池化层、第一全连接层、第二全连接层,设m个样本的数据集为:{(x(1),y(1)),…,(x(m),y(m))},即m个样本的数据集包括m个样本(x,y),对于每一个样本(x,y)的代价函数j(w,b;x,y)为公式(1):
其中,w为卷积神经网络的权重,b为卷积神经网络的偏置,hw,b(x)为第三全连接层的输出值,x为输入样本,y为预测的输出值;
m个样本的数据集的整体误差为
首先计算输出层即为第三全连接层的残差
其中,
第l层的第i个节点的残差为公式(3);
其中,
计算输出层的的偏导数,其中,公式(4)为对卷积神经网络的权重w求偏导数,公式(5)为对卷积神经网络的偏置b求偏导数;
利用公式(2)、(3)、(4)、(5)计算得出卷积神经网络的数据输入层的激活值、第一池化层的激活值、第二卷积层的激活值、第二池化层的激活值、第三卷积层的激活值、第三池化层的激活值、第一全连接层的激活值、第二全连接层的激活值以及输出层的激活值;
根据公式(6)计算输出层的残差
其中,
根据公式(7)计算数据输入层的激活值、第一池化层的激活值、第二卷积层的激活值、第二池化层的激活值、第三卷积层的激活值、第三池化层的激活值、第一全连接层的激活值、第二全连接层的激活值;
δ(l)=((w(l))tδ(l+1))f′(z(l))(7)
其中,l=nl-1,nl-2,…,2,w(l)为第l层的权值,δ(l+1)为输出层所有节点的残差之和,δ(l+1)为输出层的残差,z(l)为第l层的输入加权和;
根据公式(8)计算权重w的偏导数值,公式(9)计算偏置b的偏导数值;
其中,a(l)为第l层的激活值;
根据公式(8)和公式(9)对权重w和偏置b的不断求偏导数值,从而更新卷积神经网络的权重w和偏置b。
本发明的有益效果在于:
1)、本发明使用卷积神经网络对预处理后的人脸图像进行特征提取操作,得到人脸图像的特征,利用softmax分类器对所述人脸图像的特征进行分类识别操作,利用卷积神经网络实现的人脸表情识别算法是一种端对端的过程,本方法只需对人脸图像做简单的预处理,然后送入卷积神经网络中,自动进行特征提取,并给出分类结果,不仅大幅度的提高了准确率,减少了可调参数,极大程度上简化了中间的处理步骤。
2)、本发明通过反向传播算法对卷积神经网络的权重和偏置参数进行更新优化,反向传播算法实际上是一个由局部到全部的计算过程,通过前向传播可以得到预测值,通过预测值和实际值的比较,形成误差,反向传播算法通过减小误差的方法,反向更新参数,从而大大提高了表情识别的识别率。
3)、所述第一卷积层的卷积核的大小设置为7×7,步长设置为4,填充设置为0;第二卷积层的卷积核的大小设置为5×5,步长设置为1,填充设置为2;第三卷积层的卷积核的大小设置为3×3,步长设置为1,填充设置为1;所述第一池化层、第二池化层、第三池化层的大小均设置为3×3,步长设置为2。设置特定的卷积核的大小,大大方便了以模块中心进行滑动卷积,同时卷积核设置为奇数就可以从图像的两边进行对称填充,方便填充;而且可以增加感受野,感受野为每个像素点和它周围的像素点强相关,使得学习的特征更具有全局性。
附图说明
图1为本发明的处理流程图;
图2为本发明的卷积神经网络的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种基于卷积神经网络的人脸表情识别方法,包括以下步骤:
s1、从视频中获取人脸图像;
s2、对获取到的人脸图像进行尺度归一化操作处理,得到尺寸相同的人脸图像,并对所述尺寸相同的人脸图像进行对齐预处理操作,得到预处理后的人脸图像;
所述尺度归一化操作处理是将得到的人脸图像缩放到规定的尺寸,得到尺寸相同的人脸图像,并对所述尺寸相同的人脸图像进行对齐预处理操作;
对齐预处理操作主要包括检测人脸图像的五个特征点,分别为双眼、鼻子、两个嘴角,然后利用双眼坐标,把人脸图像旋转到水平,利用剩余的三个点的坐标,计算得到仿射矩阵,利用仿射矩阵对图像进行变换,得到预处理后的人脸图像;
s3、使用卷积神经网络对预处理后的人脸图像进行特征提取操作,得到人脸图像的特征;
人脸图像的特征包括全局特征和局部特征,全局特征如人脸的轮廓,局部特征如人脸的眼睛等。
s4、利用softmax分类器对所述人脸图像的特征进行分类识别操作,得到表情识别结果。
使用卷积神经网络对预处理后的人脸图像进行特征提取操作,得到人脸图像的特征的具体操作步骤包括:
s31、创建卷积神经网络;
s32、利用卷积神经网络对预处理后的人脸图像进行特征提取操作,并通过反向传播算法对卷积神经网络的权重和偏置进行更新优化。
如图2所示,步骤s31中的卷积神经网络包括三个卷积层、三个池化层、三个全连接层,三个所述卷积层分别为第一卷积层、第二卷积层、第三卷积层,三个所述池化层分别为第一池化层、第二池化层、第三池化层,三个所述全连接层分别为第一全连接层、第二全连接层、第三全连接层;步骤s32中的利用卷积神经网络对预处理后的人脸图像进行特征提取操作的具体步骤包括:预处理后的人脸图像依次经过数据输入层、第一卷积层、第一池化层、第二卷积层、第二池化层、第三卷积层、第三池化层、第一全连接层、第二全连接层、第三全连接层,得到人脸图像的特征。
所述第一卷积层的卷积核的大小设置为7×7,单位为像素,步长设置为4,单位为像素,填充设置为0,单位为像素;第二卷积层的卷积核的大小设置为5×5,单位为像素,步长设置为1,单位为像素,填充设置为2,单位为像素;第三卷积层的卷积核的大小设置为3×3,单位为像素,步长设置为1,单位为像素,填充设置为1,单位为像素;所述第一池化层、第二池化层、第三池化层的卷积核的大小均设置为3×3,单位为像素,步长设置为2,单位为像素,填充设置为0,单位为像素;第一全连接层的卷积核的大小设置为1×1,单位为像素,向量的维数设置为4096维;第二全连接层的卷积核的大小设置为1×1,单位为像素,向量的维数设置为4096维;第三全连接层的卷积核的大小设置为1×1,单位为像素,向量的维数设置为7维。图2中的data表示所有样本;loss表示所有样本的代价函数,即m个样本的数据集的整体误差为
通过将第三池化层的输出连接成为一个一维向量,送入第一全连接层,第一全连接层的向量的维数设置为4096维;
第三全连接层根据输出的类别数来进行设置,第三全连接层的维数设置为7,因为表情分类可以划分为7类,大小为1×1,输出的每一维都是图片属于该类别的概率。
填充指的是在图像之间添加额外的像素,使得输出图像的大小与输入相同。
步骤s32中的通过反向传播算法对卷积神经网络的权重和偏置进行更新优化的具体步骤包括:
s321、给定卷积神经网络一个样本(x,y),x为输入样本,y为预测的输出值,通过卷积神经网络对预处理后的人脸图像进行前向传播运算,得到第三全连接层的输出值hw,b(x);
s322、利用卷积神经网络中的第一卷积层、第二卷积层、第三卷积层、第一全连接层、第二全连接层中的每一个节点i和第三全连接层的输出值hw,b(x),得到第三全连接层的输出值hw,b(x)与实际输出值之间的差值即为残差;
s323、对于卷积神经网络的隐藏层单元,所述隐藏层单元包括第一卷积层、第一池化层、第二卷积层、第二池化层、第三卷积层、第三池化层、第一全连接层、第二全连接层,设m个样本的数据集为:{(x(1),y(1)),…,(x(m),y(m))},即m个样本的数据集包括m个样本(x,y),对于每一个样本(x,y)的代价函数j(w,b;x,y)为公式(1):
其中,w为卷积神经网络的权重,b为卷积神经网络的偏置,hw,b(x)为第三全连接层的输出值,x为输入样本,y为预测的输出值;
m个样本的数据集的整体误差为
首先计算输出层即为第三全连接层的残差
其中,
第l层的第i个节点的残差为公式(3),
其中,
计算输出层的的偏导数,其中,公式(4)为对卷积神经网络的权重w求偏导数,公式(5)为对卷积神经网络的偏置b求偏导数;
利用公式(2)、(3)、(4)、(5)计算得出卷积神经网络的数据输入层的激活值、第一池化层的激活值、第二卷积层的激活值、第二池化层的激活值、第三卷积层的激活值、第三池化层的激活值、第一全连接层的激活值、第二全连接层的激活值以及输出层的激活值;
根据公式(6)计算输出层的残差
其中,
根据公式(7)计算数据输入层的激活值、第一池化层的激活值、第二卷积层的激活值、第二池化层的激活值、第三卷积层的激活值、第三池化层的激活值、第一全连接层的激活值、第二全连接层的激活值;
δ(l)=((w(l))tδ(l+1))f′(z(l))(7)
其中,l=nl-1,nl-2,…,2,w(l)为第l层的权值,δ(l+1)为输出层所有节点的残差之和,δ(l+1)为输出层的残差,z(l)为第l层的输入加权和;
根据公式(8)计算权重w的偏导数值,公式(9)计算偏置b的偏导数值;
其中,a(l)为第l层的激活值;
根据公式(8)和公式(9)对权重w和偏置b的不断求偏导数值,从而更新卷积神经网络的权重w和偏置b。
人脸图像经过一个随机裁剪得到227×227大小的区域,经过第一卷积层,进行卷积之后人脸图像的大小为56×56,再经过第一池化层,相当于一个降采样,人脸图像的大小为28×28;人脸图像经过第二卷积层,图像的大小变为14×14,第二池化层的后图像大小为7×7;第三卷积层卷积核的大小为3×3,步长为1,填充为1,经过卷积之后,图像的大小不变,再经过第三池化层,得到图像的大小为7×7,人脸图像经过第一全连接层、第二全连接层、第三全连接层计算后将第三全连接层的结果输入到softmax分类器中,得到一个计算值作为判断的结果。其中利用卷积神经网络进行特征提取时,使用反向传播算法来进行优化,对网络的权重和偏置参数进行更新优化。
利用softmax分类器对所述人脸图像的特征进行分类识别操作,得到表情识别结果是现有技术,利用表情识别的训练集{(x(1),y(1)),…,(x(m),y(m))},其中m表示样本总数,x表示样本,标签y(i)∈{1,2,…,k},其中,k表示类别数,这里取值为7,因为表情识别分为生气,厌恶,害怕,愉快,难过,惊讶,无表情7类,从底层的像素特征,到眼睛鼻子嘴巴,最终提取到的是能够辨别人脸的全局特征。
综上所述,本发明只需对人脸图像做简单的预处理,然后送入卷积神经网络中,自动进行特征提取,并给出分类结果,不仅大幅度的提高了准确率,减少了可调参数,极大程度上简化了中间的处理步骤。