一种基于频率域特征和乘积神经网络的人脸表情识别方法

文档序号:25588461发布日期:2021-06-22 17:04阅读:188来源:国知局
一种基于频率域特征和乘积神经网络的人脸表情识别方法

本发明涉及模式识别和神经网络技术领域,具体涉及一种基于频率域特征和乘积神经网络的人脸表情识别方法。



背景技术:

人脸表情是人类的情感的外在表现,是人类交流的重要部分。人脸表情识别是计算机视觉领域的重要课题,主要目的是将图像或者视频中的人脸表情分类成为不同的类别。常见的类别有高兴,悲伤,愤怒,厌恶,惊讶,恐惧等等。人脸表情识别被广泛应用于游戏、医疗、安全以及人机交互等等。

人脸表情识别通常分为几个阶段:人脸检测阶段、人脸预处理阶段、特征提取阶段、特征分类阶段。其中,特征提取阶段负责从输入中获取人脸表情相关的特征,是正确地识别和分类的前提。

传统的特征提取方式主要依赖于手工特征提取技术,例如hog特征,sift特征,lbp特征等等,再将这些特征使用决策树、svm等传统的分类方法进行分类,以识别出人脸表情。

随着神经网络的发展,基于神经网络的深度学习技术成为了近年来学术界与工业界的热点。深度学习的方法能够提取出人脸更高层次的抽象特征。目前已有的文献中,使用卷积神经网络进行人脸表情识别的做法比较普遍,但是目前的卷积神经网络主要使用的是空间域的特征,使用的网络通常比较复杂、难以拟合,基于频率域的人脸特征的深度学习方法较少。本发明设计一种频率域表情特征的提取方法和乘积神经网络。

根据人脸表情的心理学和生理学特性(见文献:m.h.siddiqi,r.ali,a.m.khan,y.t.park,s.lee,humanfacialexpressionrecognitionusingstepwiselineardiscriminantanalysisandhiddenconditionalrandomfields),人脸表情可以主要由眼部、嘴唇周围的关键区域特征表征。例如,相关研究表明,高兴、悲伤主要是基于唇部关键特征,惊讶和厌恶主要基于唇部和眼部关键特征,愤怒和恐惧主要由唇部,眼部和前额的区域特征表征。人脸的其他部位对于表征表情的贡献相对较小。因此,本发明提取眼部与唇部的区域关键信息,并结合人脸整体的信息,构建一种双分支的乘积神经网络,以帮助人脸表情的识别。



技术实现要素:

本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于频率域特征和乘积神经网络的人脸表情识别方法。

本发明的目的可以通过采取如下技术方案达到:

一种基于频率域特征和乘积神经网络的人脸表情识别方法,所述人脸表情识别方法包括以下步骤:

s1、对人脸表情数据集中的人脸表情进行预处理,包括人脸检测、人脸校正和人脸裁剪;

s2、对经过预处理的人脸表情提取人脸的全局频率域特征和局部频率域特征;

s3、将人脸表情数据集分为训练集和测试集;

s4、构建和初始化乘积神经网络,包括处理全局频率域特征的分支a、处理局部频率域特征的分支b、处理特征融合和分类的分类部分,使用划分完成的训练集和测试集对乘积神经网络训练和测试;

s5、采集人脸表情输入经过训练的乘积神经网络,识别得到表情类型。

进一步地,所述步骤s1过程如下:

s101、人脸检测,采用dlib工具包检测和识别人脸表情数据集中每张图片的人脸,如果图片中检测到人脸,则继续进行下面的步骤,否则提示未检测到人脸;

s102、人脸校正,对于检测出来的人脸,使用dlib工具包提取多个特征点并得到左眼中心点(xl,yl)和右眼中心点(xr,yr),根据左眼中心点(xl,yl)和右眼中心点(xr,yr)计算出人脸倾斜的角度θ如下:

将图片向相反方向旋转θ角度即得到校正后的人脸图片;

s103、人脸裁剪,根据特征点的位置,将人脸表情数据集中每张图片的图像裁剪到合适的大小以降低特征的维度,由最左边的特征点横坐标和最右边的特征点横坐标得到人脸宽度w,由最上面的特征点纵坐标和嘴唇下部和下颚的中点纵坐标得到人脸高度h,将裁剪后的图片重新调整大小到128×128的分辨率,得到重新调整尺寸后的人脸图片s。

进一步地,所述步骤s2过程如下:

s201、对经过预处理的人脸表情提取人脸的全局频率域特征,即直接将处理后的人脸图像做离散余弦变换后取频谱图的左上角低频部分作为全局频率域特征,离散余弦变换的公式如下:

其中,s(i,j)是人脸图片s位于时域坐标(i,j)处的值,f(x,y)是经过离散余弦变换后的频谱图f位于频域坐标(x,y)处的值,m、n是人脸图片s和频谱图f的高度和宽度;

如前所述f的尺寸是128×128,对f取左上角低频部分得到32×32的全局频率域特征f1。

s202、对经过预处理的人脸表情提取人脸的局部频率域特征,取左眼的6个特征点、右眼的6个特征点以及唇部的12个特征点,以这些点为中心,取8×8的正方形框,再将这些正方形区域元素做离散余弦变换,公式和上一节相同。得到24个8×8的局部特征图,将它们展平,得到一个1536维的特征向量,记作f2。

进一步地,所述的步骤s3过程如下:

将人脸表情数据集分为训练集和测试集,训练集的样本用于网络模型的训练,测试集的样本用于评估样本的识别效果。特别地,对于ck+数据集,使用十折交叉验证的方式。即将数据集中的数据平均分为10份,每次将其中的9份作为训练集,将另外的1份作测试集,取十折交叉验证的平均准确率作为测试的最终准确率。

进一步地,所述的步骤s4过程如下:

s401、构建和初始化乘积神经网络,包括处理全局频率域特征的分支a、处理局部频率域特征的分支b和处理特征融合和分类的分类部分。

卷积操作相当于一种空间域的滤波,类似地,矩阵中元素的点乘可以看作是一种频率域的滤波。受此启示,类似于卷积神经网络中的卷积核,设计一种乘积核,输入特征与乘积核的参数相乘加上偏置,可以得到输出的特征矩阵。对于尺寸为m×n的输入特征图,可以设计尺寸为m×n的乘积核k(x,y),其中0≤x≤m-1,0≤y≤n-1。乘积核的每个元素均为可学习的参数,在网络初始化阶段随机初始化,在神经网络训练的反向传播阶段可以不断优化。一个特征输入可与k个乘积核相乘,再与偏置值相加,得到最终的输出特征。

二维乘积层的计算公式如下:

op(u,v)=i(u,v)*kp(u,v)+bp

0≤u≤h-1,0≤v≤w-1,1≤p≤k公式(3)

其中,h、w是输入特征图的高度和宽度,i(u,v)是输入特征图i位于坐标(u,v)处的值,kp(u,v)是第p个乘积核kp位于坐标(u,v)处的值,op(x,y)是第p个输出特征图o位于坐标(x,y)处的值,bp是当前层的偏置值,k是扩充系数,即一个输入的特征图对应k个乘积核和k个输出的特征图。例如,对于输入为32×32的输入图片,k取20,则该层有20个32×32的乘积核。

一维乘积层的计算公式如下:

o′q(t)=i′(t)*k′q(t)+b′q

0≤t≤l-1,1≤q≤n公式(4)

其中,l输入特征向量的长度,i′(t)是输入特征向量i′第t个元素的值,k′q(t)是第q个乘积核k′q第t个元素的值,o′q(t)是第q个输出特征向量o′q第t个元素的值,b′q是当前层的偏置值,n是扩充系数,即一个输入的特征向量对应n个乘积核和n个输出的特征向量。例如,对于输入为1536维的输入特征向量,k取20,则该层有20个1536维的乘积核。

乘积层之间可以相互连接,即上一层乘积层的输出特征图或特征向量作为下一层乘积层的输入特征图或特征向量。通过多层乘积层堆叠可以学习到更深层次的特征。

乘积神经网络具体结构如下:

包括处理全局频率域特征的分支a、处理局部频率域特征的分支b和处理特征融合和分类的分类部分,其中:

分支a从输入到输出依次连接为:二维乘积层mult2d_1、二维乘积层mult2d_2、二维乘积层mult2d_3、二维乘积层mult2d_4、二维乘积层mult2d_5、卷积层conv2d、池化层max_pooling、全连接层fc_1;

分支b从输入到输出依次连接为:一维乘积层mult1d_1、一维乘积层mult1d_2、一维乘积层mult1d_3、乘积层mult1d_4、全连接层fc_2;

分类部分的输入由全连接层fc_1和全连接层fc_2相加得到,从输入到输出依次连接为:全连接层fc_3、全连接层fc_4、全连接层fc_cls。

其中,分支a中二维乘积层mult2d_1的扩充系数取20,之后的每一层乘积层扩充系数都取1;分支b中一维乘积层mult1d_1的扩充系数取20,之后的每一层乘积层扩充系数都取1;

s402、使用划分完成的训练集和测试集对乘积神经网络训练和测试。

使用softmax作为分类部分最后一层fc_cls的激活函数如下:

其中r=1,...,c公式(5)

其中x_inr为输入向量x_in的第r个分量,c为分类的总类别数,pr为第r类的激活值。对于6分类的表情,c取6,r从1到6分别对应高兴,悲伤,愤怒,厌恶,惊讶,恐惧6类表情。p1~p6都在0到1之间,并且它们的和为1。

使用交叉熵损失函数作为乘积神经网络训练的目标函数如下:

其中,pr为第r类的激活值,c为分类的总类别数,r从1到6分别对应愤怒,惊讶,厌恶,恐惧、高兴和悲伤6类表情。y(r)为训练样本的真实标签,当r和表情真实标签相同时y(r)取1,否则取0。对目标函数求权重的偏导数,可以得到权重的更新值。

如上述步骤s3所述,对于十折交叉验证,将数据集分为了10份,每组实验依次取其中的一组作为测试集,取10组实验的平均准确率作为模型最终的准确率:

其中,表示10组数据中第a组的数据总量,表示以第a组为测试集时预测正确的样本数。

使用adam算法对网络进行批量训练,使得目标函数最小化。设定初始学习率为0.0001,批量训练样本量为30,在训练过程中,adam算法可以根据网络训练的进度逐渐减少学习率,使得网络尽快收敛。训练完成后,保存乘积神经网络模型。

进一步地,所述步骤s5过程如下:

采集人脸表情经过输入经过训练的乘积神经网络,识别得到表情类型。可以使用数据集中的图片或者摄像头拍摄的图片,经过所述步骤s1的预处理和所述步骤s2的频率域特征提取,输入步骤s4中保存的神经网络模型中,得到输出的表情类型。根据识别率和各个表情类的识别混淆情况,可以利用混淆矩阵来检验和评估乘积神经网络。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明实现了一种从输入图片到神经网络输出的端到端的神经网络,无需预训练,无需手工提取特征,方法较为简单。

(2)本发明利用了频率域处理的优势,实现了一种轻量化的乘积神经网络,运算速度快,消耗资源较少。

(3)本发明根据表情的生理学和心理学特点,综合了人脸的局部特征和全局特征,特别是利用了人脸表征表情的关键部位作为输入信息,有利于表情的识别效果。

附图说明

图1是本发明实施例中基于频率域特征和乘积神经网络的人脸表情识别方法流程图;

图2是本发明实施例中ck+数据集中的表情样例图;

图3是本发明实施例中dlib工具包检测出的68个人脸关键特征点位置及编号图;

图4是本发明实施例中局部特征点的选取图;

图5是本发明实施例中输入特征为二维时的乘积层图;

图6是本发明实施例中输入特征为一维时的乘积层图;

图7是本发明实施例中神经网络结构图;

图8是本发明实施例在ck+数据集上的识别混淆矩阵图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例

本实施例公开了一种基于频率域特征和神经网络的人脸表情识别的方法,如图1所示,具体步骤如下:

步骤s1、对ck+人脸表情数据集中的人脸表情进行预处理,包括人脸检测,人脸校正和人脸裁剪。

ck+人脸表情数据集(见文献:p.lucey,j.f.cohn,t.kanade,j.saragih,z.ambadar,andi.matthews,“theextendedcohn-kanadedataset(ck+):acompletedatasetforactionunitandemotionspecifiedexpression,”in2010ieeecomputersocietyconferenceoncomputervisionandpatternrecognitionworkshops.ieee,2010,pp.94–101.)的表情样例如图2所示。从中提取出高兴,悲伤,愤怒,厌恶,惊讶,恐惧等六种表情图像,以进一步对其进行预处理。预处理过程包括:

s101、人脸检测,采用dlib工具包检测和识别人脸表情数据集中每张图片的人脸,如果图片中检测到人脸,则继续进行下面的步骤,否则提示未检测到人脸;

s102、人脸校正,对于检测出来的人脸,使用dlib工具包提取相应的68个特征点,如图3所示。对于眼部周围的特征点,通过计算可以得到眼部的几何坐标中心。由序号为37-42号的左眼周围特征点的坐标值平均数即可得到左眼中心点坐标(xl,yl),序号43-48号的右眼周围特征点的坐标值平均数即可得到右眼中心点坐标(xr,yr)。计算出人脸倾斜的角度θ如下:

将图片向相反方向旋转θ角度即得到校正后的人脸图片;

s103、人脸裁剪,根据特征点的位置,将原始数据中的图像裁剪到合适的大小以降低特征的维度。由最左边的特征点横坐标(18号到68号特征点的横坐标最小值)和最右边的特征点横坐标(18号到68号特征点横坐标的最大值)可以得到人脸宽度w,由最上面的特征点纵坐标(18号到68号特征点纵坐标的最大值)和嘴唇下部和下颚的中点纵坐标(58号和9号特征点的纵坐标平均值)得到人脸高度h。再将图片调整到适当大小。合理的人脸裁剪可以去除大量与表情无关的信息,以尽可能多地保留表情信息,利于进一步的特征提取和学习。对于ck+数据集,将裁剪后的图片重新调整大小到128×128的分辨率,得到重新调整尺寸后的人脸图片s。

s2、对经过预处理的人脸表情提取人脸的全局频率域特征和局部频率域特征。使用离散余弦变换将空间域图像转换到频率域,全局频率域特征从整张脸获取,局部频率域特征从人脸关键点获取。

s201、对经过预处理的人脸表情提取人脸的全局频率域特征,即直接将处理后的人脸图像做离散余弦变换后取频谱图的左上角低频部分作为全局频率域特征。离散余弦变换(discretecosinetransform,dct)是傅立叶变换的相关变换,由于它具有很强的能量压缩特性,常常用于图像的特征提取。低频区域通常包括图像的主体信息,高频区域通常包括图像的边缘、外形和噪声信息。离散余弦变换的公式如下:

其中,s(i,j)是人脸图片s位于时域坐标(i,j)处的值,f(x,y)是经过离散余弦变换后的频谱图f位于频域坐标(x,y)处的值,m、n是人脸图片s和频谱图f的高度和宽度;

s202、对经过预处理的人脸表情提取人脸的局部频率域特征,利用前面检测出来的68人脸关键点的相对应部分,即左眼的第36-41号,右眼的42-47号特征点,以及唇部的第48-59号特征点共计24个点,如图4所示。以这些点为中心,取8×8的正方形框,再将这些正方形区域元素做离散余弦变换,公式和上一节相同。得到24个8×8的局部特征图,将它们展平,得到一个1536维的特征向量,记作f2。

步骤s3、将ck+人脸表情数据集分为训练集和测试集。将人脸表情数据集分为训练集和测试集,训练集的样本用于网络模型的训练,测试集的样本用于评估样本的识别效果。对于ck+数据集,使用十折交叉验证的方式。即将数据集中的数据平均分为10份,每次将其中的9份作为训练集,将另外的1份作测试集,取十折交叉验证的平均准确率作为测试的最终准确率。

步骤s4、构建和初始化乘积神经网络,使用划分完成的训练集和测试集对乘积神经网络训练和测试。

s401、构建和初始化乘积神经网络,包括处理全局频率域特征的分支a、处理局部频率域特征的分支b和处理特征融合和分类的分类部分。

卷积操作相当于一种空间域的滤波,类似地,矩阵中元素的点乘可以看作是一种频率域的滤波。受此启示,类似于卷积神经网络中的卷积核,设计一种乘积核,输入特征与乘积核的参数相乘加上偏置,可以得到输出的特征矩阵。对于尺寸为m×n的输入特征图,可以设计尺寸为m×n的乘积核k(x,y),其中0≤x≤m-1,0≤y≤n-1。乘积核的每个元素均为可学习的参数,在网络初始化阶段随机初始化,在神经网络训练的反向传播阶段可以不断优化。一个特征输入可与k个乘积核相乘,再与偏置值相加,得到最终的输出特征。

二维乘积层的计算公式如下:

op(u,v)=i(u,v)*kp(u,v)+bp

0≤u≤h-1,0≤v≤w-1,1≤p≤k公式(3)其中,h、w是输入特征图的高度和宽度,i(u,v)是输入特征图i位于坐标(u,v)处的值,kp(u,v)是第p个乘积核kp位于坐标(u,v)处的值,op(x,y)是第p个输出特征图o位于坐标(x,y)处的值,bp是当前层的偏置值,k是扩充系数,即一个输入的特征图对应k个乘积核和k个输出的特征图,如图5所示。例如,对于输入为32×32的输入图片,k取20,则该层有20个32×32的乘积核。

一维乘积层的计算公式如下:

o′q(t)=i′(t)*k′q(t)+b′q

0≤t≤l-1,1≤q≤n公式(4)其中,l输入特征向量的长度,i′(t)是输入特征向量i′第t个元素的值,k′q(t)是第q个乘积核k′q第t个元素的值,o′q(t)是第q个输出特征向量o′q第t个元素的值,b′q是当前层的偏置值,n是扩充系数,即一个输入的特征向量对应n个乘积核和n个输出的特征向量,如图6所示。例如,对于输入为1536维的输入特征向量,k取20,则该层有20个1536维的乘积核。

乘积层之间可以相互连接,即上一层乘积层的输出特征图或特征向量作为下一层乘积层的输入特征图或特征向量。通过多层乘积层堆叠可以学习到更深层次的特征。

乘积神经网络具体结构如下:

包括处理全局频率域特征的分支a、处理局部频率域特征的分支b和处理特征融合和分类的分类部分,如图7所示,其中:

分支a从输入到输出依次连接为:二维乘积层mult2d_1、二维乘积层mult2d_2、二维乘积层mult2d_3、二维乘积层mult2d_4、二维乘积层mult2d_5、卷积层conv2d、池化层max_pooling、全连接层fc_1;

分支b从输入到输出依次连接为:一维乘积层mult1d_1、一维乘积层mult1d_2、一维乘积层mult1d_3、乘积层mult1d_4、全连接层fc_2;

分类部分的输入由fc_1和fc_2相加得到fc_3,从输入到输出依次连接为:fc_3,fc_4,fc_cls。

其中,分支a中二维乘积层mult2d_1的扩充系数取20,之后的每一层乘积层扩充系数都取1;分支b中一维乘积层mult1d_1的扩充系数取20,之后的每一层乘积层扩充系数都取1;

s402、使用划分完成的训练集和测试集对乘积神经网络训练和测试。使用softmax作为分类部分最后一层fc_cls的激活函数如下:

其中r=1,...,c公式(5)

其中x_inr为输入向量x_in的第r个分量,c为分类的总类别数,pr为第r类的激活值。对于6分类的表情,c取6,r从1到6分别对应高兴,悲伤,愤怒,厌恶,惊讶,恐惧6类表情。p1~p6都在0到1之间,并且它们的和为1。

使用交叉熵损失函数作为乘积神经网络训练的目标函数如下:

其中,pr为第r类的激活值,c为分类的总类别数,r从1到6分别对应愤怒,惊讶,厌恶,恐惧、高兴和悲伤6类表情。y(r)为训练样本的真实标签,当r和表情真实标签相同时y(r)取1,否则取0。

对目标函数求权重的偏导数,可以得到权重的更新值。

如上述步骤s3所述,对于十折交叉验证,将数据集分为了10份,每组实验依次取其中的一组作为测试集,取10组实验的平均准确率作为模型最终的准确率:

其中,表示10组数据中第a组的数据总量,表示以第a组为测试集时预测正确的样本数。

使用adam算法对网络进行批量训练,使得目标函数最小化。设定初始学习率为0.0001,批量训练样本量为30,在训练过程中,adam算法可以根据网络训练的进度逐渐减少学习率,使得网络尽快收敛。训练完成后,保存乘积神经网络模型。

s5、评估乘积神经网络。对于ck+数据集,可以使用所述步骤s402中的十折交叉验证的方法,对于实验结果绘制混淆矩阵,如图8所示,其中。混淆矩阵的行和列都为表情的类别。每一列代表预测值,每一行代表实际类别。把各个类别的预测概率绘制成二维矩阵的形式,所有正确预测的类别在对角线上,通过观察行列的交点可以看出不正确的预测,即将某类样本错误地预测成了另一类的预测值。

从所有的测试样本来看,在ck+数据集上模型的识别率达到了98.3%,从混淆矩阵看,在厌恶(di)、高兴(ha)和悲伤(sa)上识别效果最好,另外三种表情存在少量混淆的可能。总体来说,本发明所用的方法取得了非常不错的效果。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1