本发明涉及人脸笑容处理领域,具体涉及一种人脸笑容评分方法及人脸情绪分类方法。
背景技术:
目前笑容评分的方案主要是根据人脸关键点进行信息挖掘,得到笑容评分。一般有两种方式进行计算:(1)只用嘴部关键点计算:将嘴唇高度与嘴角宽度的比值作为笑容得分,或者直接将嘴角宽度作为笑容得分,由于个体差异,评分不够客观;(2)结合眼部和嘴部关键点计算:根据嘴唇的高宽比,结合眼睛的弧度共同计算笑容得分,受年龄、遗传等因素限制,眼睛弧度会呈现很大差异,评分不够准确。上述现有的笑容评分方案计算方式不合理导致评分结果不尽如人意。
技术实现要素:
为解决上述问题,本发明提供一种人脸笑容评分方法及人脸情绪分类方法,提出具有普遍适用性的笑容得分公式,并融合人脸关键点和表情识别分类进行最终笑容得分,计算方式较合理,符合评分标准。
本发明的技术方案是:一种人脸笑容评分方法,包括以下步骤:
对人脸图像提取人脸矩形框,对人脸矩形框提取包含嘴部关键点的人脸关键点,根据嘴部关键点计算笑容得分;
其中笑容得分为smilescore,
式中,dis1=(disl1 … disli … disln)/n,
dis2=(d1 … di … dn)/n;
li为上唇上边缘标记点与对应下唇下边缘标记点之间的连线;disli为li的距离,di为li上的下唇下边缘标记点到li与两嘴角之间连线交点的距离;n为大于等于1的整数。
进一步地,所提取人脸关键点包含眼部关键点;
进行笑容得分计算前,根据眼部关键点对人脸关键点进行仿射变换对齐人脸,获得人脸校正图像;对矫正后的嘴部关键点计算笑容得分。
进一步地,所述根据眼部关键点对人脸关键点进行仿射变换对齐人脸,具体为:
以人脸区域的中心点为参照点旋转angle的角度;
式中,dx=landmarks[37].x-landmarks[46].x,
dy=landmarks[37].y-landmarks[46].y;
其中,landmarks[37].x为右眼外眼角标记点的x坐标,
landmarks[37].y为右眼外眼角标记点的y坐标,
landmarks[46].x为左眼外眼角标记点的x坐标,
landmarks[46].y为左眼外眼角标记点的y坐标。
进一步地,采用dlib算法提取人脸矩形框和人脸关键点。
进一步地,若未提取到人脸矩形框,则自定义矩形区域作为人脸矩形框。
本发明的技术方案还包括一种基于上述方法的人脸情绪分类方法,包括以下步骤:
对人脸图像进行情绪识别分类,定义情绪标签,情绪标签包括′happy′,′neutral′,′angry′,′disgust′,′fear′,′sad′,′surprise′;
根据笑容得分smilescore重定义情绪标签,将smilescore>th2,且不是′happy′和′neutral′的修改为′happy′;th2为预设笑容得分值。
进一步地,所述对人脸图像进行情绪识别分类,具体为基于人脸校正图像进行情绪识别分类,人脸校正图像是根据眼部关键点对人脸关键点进行仿射变换对齐人脸所获得的人脸校正图像。
进一步地,基于keras训练好的hdf5模型进行情绪识别分类。
本发明技术方案还包括一种基于上述方法的人脸笑容评分方法,包括以下步骤:
根据嘴部关键点判断是否张嘴;
若dis3/dis1>th1则判断为张嘴,否则为闭嘴;th1为预设判断值;
根据是否张嘴,结合情绪标签重新确定笑容得分;
其中dis3=(d1 … dj … dm)/m;
式中,dj为上唇下边缘标记点与对应下唇上边缘标记点之间的距离,m为大于等于1的整数。
进一步地,所述根据是否张嘴,结合情绪标签重新确定笑容得分,具体为:
如果张嘴大笑,将笑容得分归一化到[80,100]的得分区间;
如果闭嘴微笑,将笑容得分归一化到[70,85]的得分区间;
如果情绪标签为′neutral′,将笑容得分归一化到[60,75]的得分区间;
如果情绪标签为除′happy′和′neutral′之外的其他情绪标签,将smilescore归一化到[0,60]的得分区间。
本发明提供的人脸笑容评分方法及人脸情绪分类方法,具有以下有益效果:
(1)人脸区域提取及关键点提取都是采用的dlib,速度快准确度高;
(2)表情识别之前对人脸区域进行对齐,提高了表情识别分类的精度;
(3)表情识别的模型很小,只有2.47m,在准确度较好的情况下能够满足实时;
(4)首次提出的计算笑容得分的公式具有普遍适用性,而且符合大样本人群人脸表情变化规律,不会出现个体差异;
(5)对于笑容得分较高的错误情绪标签重定义,融合情绪标签以及是否张嘴分段更新笑容得分的设计也更加符合人的主观判断。
附图说明
图1是本发明具体实施例方法流程示意图。
图2是人脸关键点图。
图3是嘴部关键点计算笑容得分示意图。
图4是嘴部关键点判断是否张嘴示意图。
具体实施方式
下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
实施方式一
现有技术只用嘴角宽度或者嘴唇高度与嘴角宽度之比作为笑容得分,因个体差异会导致差距较大,计算方式不合理,本实施方式提供一种人脸笑容评分方法,提出具有普遍适用性的笑容得分计算公式,该方法包括以下步骤:
对人脸图像提取人脸矩形框,对人脸矩形框提取包含嘴部关键点的人脸关键点,根据嘴部关键点计算笑容得分;
其中笑容得分为smilescore,
式中,dis1=(disl1 … disli … disln)/n,
dis2=(d1 … di … dn)/n;
li为上唇上边缘标记点与对应下唇下边缘标记点之间的连线;disli为li的距离,di为li上的下唇下边缘标记点到li与两嘴角之间连线交点的距离;n为大于等于1的整数。
需要说明的是,提取关键点为上下唇边缘轮廓的形状有拐点变换的标记点,li为上唇上边缘的第i个标记点与下唇下边缘的第i个的标记点之间的连线。
在大概率样本中,如果一个人笑的越开心,嘴角越往上翘,公式中ratio的值就应该越大,所以可以用这个得分作为笑容评分smilescore,超出100的值置为100。这里的距离都是计算的欧氏距离。
利用上述公式计算笑容得分具有普遍适用性,而且符合大样本人群人脸表情变化规律,不会出现个体差异。
本实施例中,采用dlib算法提取人脸矩形框和人脸关键点,速度快准确率高。所获取人脸图像一般包含周围背景,但位于摄像头边界的人脸图像则可能只包括人脸区域,导致提取不到人脸矩形框,此时可自定义矩形区域作为人脸矩形框,如将图像的[5,5,width-5,height-5]区域作为人脸矩形框。
为提高计算准确度,在计算前先对图像进行校正,具体为:在所提取人脸关键点包含眼部关键点;进行笑容得分计算前,根据眼部关键点对人脸关键点进行仿射变换对齐人脸,获得人脸校正图像;对矫正后的嘴部关键点计算笑容得分。
其中,根据眼部关键点对人脸关键点进行仿射变换对齐人脸的具体方法为:
以人脸区域的中心点为参照点旋转angle的角度;
式中,dx=landmarks[37].x-landmarks[46].x,
dy=landmarks[37].y-landmarks[46].y;
其中,landmarks[37].x为右眼外眼角标记点的x坐标,
landmarks[37].y为右眼外眼角标记点的y坐标,
landmarks[46].x为左眼外眼角标记点的x坐标,
landmarks[46].y为左眼外眼角标记点的y坐标。
实施方式二
现有技术情绪标签分类准确率有待提高,本实施例提供一种人脸情绪分类方法,基于实施方式一的笑容得分对情绪标签重定义,提高准确率。
该方法包括以下步骤:
对人脸图像进行情绪识别分类,定义情绪标签,情绪标签包括′happy′,′neutral′,′angry′,′disgust′,′fear′,′sad′,′surprise′;
根据笑容得分smilescore重定义情绪标签,将smilescore>th2,且不是′happy′和′neutral′的修改为′happy′;th2为预设笑容得分值。
需要说明的是,可基于keras训练好的hdf5模型进行情绪识别分类。另外,上述在对人脸图像进行情绪识别分类时,是对校正后的人脸图像进行情绪识别分类,校正后的人脸图像是指根据眼部关键点对人脸关键点进行仿射变换对齐人脸所获得的人脸校正图像,可提高情绪识别的准确率。
本实施方法基于笑容得分重定义情绪标签,将笑容得分较高但情绪标签有误的情况进行情绪标签重定义。
实施方式三
在上述对情绪标签重定义的基础上,为使笑容得分设计更加符合实际应用,本实施例提供一种人脸笑容评分方法,融合情绪标签以及是否张嘴分段更新笑容得分。
该方法具体包括以下步骤:
根据嘴部关键点判断是否张嘴;
若dis3/dis1>th1则判断为张嘴,否则为闭嘴;th1为预设判断值;
根据是否张嘴,结合情绪标签重新确定笑容得分;
其中dis3=(d1 … dj … dm)/m;
式中,dj为上唇下边缘标记点与对应下唇上边缘标记点之间的距离,m为大于等于1的整数。
上述根据是否张嘴,结合情绪标签重新确定笑容得分,具体为:
如果张嘴大笑,将笑容得分归一化到[80,100]的得分区间;
如果闭嘴微笑,将笑容得分归一化到[70,85]的得分区间;
如果情绪标签为′neutral′,将笑容得分归一化到[60,75]的得分区间;
如果情绪标签为除′happy′和′neutral′之外的其他情绪标签,将smilescore归一化到[0,60]的得分区间。
实施方式四
为进一步详细解释本发明方案,提供一具体的融合人脸关键点和表情识别分类的笑容评分方法。
如图1所示,本方法具体包括以下步骤:
s1,获取人脸图像,提取人脸矩形框。
以公司笑脸打卡为例,输入图像为前端人脸打卡获取的人脸图像(应用中此人脸图像包含周围背景,位于摄像头边界的人脸图像则可能只包括人脸区域,导致后续提取不到人脸矩形框)。
基于人脸图像采用dlib提取人脸矩形框,若提取到人脸矩形框则进入下一步;若未提取到则将图像的[5,5,width-5,height-5]区域作为人脸矩形框,然后进入下一步。
s2,基于人脸矩形框提取人脸关键点。
对上一步获得的人脸矩形框利用dlib检测提取68个人脸关键点landmarks,图2是68个人脸关键点图,每个点对应一组(x,y)坐标。
s3,根据眼部关键点对齐人脸获得人脸校正图像。
根据两眼角(图2中所示37、46点)标记点对人脸图像及关键点进行仿射变换对齐人脸,以人脸区域的中心点为参照点旋转angle的角度,angle的计算公式如下:
其中,
dx=landmarks[37].x-landmarks[46].x
dy=landmarks[37].y-landmarks[46].y
式中,landmarks[37].x为右眼外眼角标记点的x坐标,
landmarks[37].y为右眼外眼角标记点的y坐标,
landmarks[46].x为左眼外眼角标记点的x坐标,
landmarks[46].y为左眼外眼角标记点的y坐标。
s4,基于上一步所获得人脸校正图像进行情绪识别分类。
所用的情绪识别模型为基于keras训练好的hdf5模型,主要情绪标签有七种:′happy′,′neutral′,′angry′,′disgust′,′fear′,′sad′,′surprise′。
s5,对校正后的嘴部关键点进行计算,得到笑容得分并判断是否张嘴。
(一)计算笑容得分smilescore
如图3所示是嘴部关键点计算笑容得分示意图。点49与点55的连线为l1,点51与点59的连线为l2,距离为disl2,点52与点58的连线为l3,距离为disl3,点53与点57的连线为l4,距离为disl4;l1与l2的交点为c1,l1与l3的交点为c2,l1与l4的交点为c3;c1与点59的连线距离为d1,c2与点58的连线距离为d2,c3与点57的连线距离为d3。
dis1=(disl2 disl3 disl4)/3
dis2=(d1 d2 d3)/3
在大概率样本中,如果一个人笑的越开心,嘴角越往上翘,上式中ratio的值就应该越大,所以可以用这个得分作为笑容评分smilescore,超出100的值置为100。这里的距离都是计算的欧氏距离。
(二)判断是否张嘴
如图4所示是嘴部关键点判断是否张嘴示意图。点62与点68的距离为d1,点63与点67的距离为d2,点64与点66的距离为d3,这几个点为上下唇内边缘的标记点。
dis3=(d1 d2 d3)/3
如果dis3/dis1>th1,则判断为张嘴,否则为闭嘴,此处th1设为0.2。
s6,根据笑容得分重定义情绪标签。
将笑容得分smilescore>th2的重定义情绪标签,此处th2设为80,即将smilescore>80,但情绪标签emotion-label不是′happy′和′neutral′的修改为′happy′,再转到下一步。
s7,根据是否张嘴及重定义后的情绪标签重新划分笑容得分。
如果张嘴大笑,将smilescore归一化到[80,100]的得分区间;
如果闭嘴微笑,将smilescore归一化到[70,85]的得分区间;
如果emotion-label为′neutral′,将smilescore归一化到[60,75]的得分区间;
如果emotion-label为除′happy′和′neutral′之外的其他情绪标签,将smilescore归一化到[0,60]的得分区间。
s8,输出最终情绪标签及最终的笑容得分。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
1.一种人脸笑容评分方法,其特征在于,包括以下步骤:
对人脸图像提取人脸矩形框,对人脸矩形框提取包含嘴部关键点的人脸关键点,根据嘴部关键点计算笑容得分;
其中笑容得分为smilescore,
式中,dis1=(disl1 … disli … disln)/n,
dis2=(d1 … di … dn)/n;
li为上唇上边缘标记点与对应下唇下边缘标记点之间的连线;
disli为li的距离,di为li上的下唇下边缘标记点到li与两嘴角之间连线交点的距离;n为大于等于1的整数。
2.根据权利要求1所述的人脸笑容评分方法,其特征在于,所提取人脸关键点包含眼部关键点;
进行笑容得分计算前,根据眼部关键点对人脸关键点进行仿射变换对齐人脸,获得人脸校正图像;对矫正后的嘴部关键点计算笑容得分。
3.根据权利要求2所述的人脸笑容评分方法,其特征在于,所述根据眼部关键点对人脸关键点进行仿射变换对齐人脸,具体为:
以人脸区域的中心点为参照点旋转angle的角度;
式中,dx=landmarks[37].x-landmarks[46].x,
dy=landmarks[37].y-landmarks[46].y;
其中,landmarks[37].x为右眼外眼角标记点的x坐标,
landmarks[37].y为右眼外眼角标记点的y坐标,
landmarks[46].x为左眼外眼角标记点的x坐标,
landmarks[46].y为左眼外眼角标记点的y坐标。
4.根据权利要求1、2或3所述的人脸笑容评分方法,其特征在于,采用dlib算法提取人脸矩形框和人脸关键点。
5.根据权利要求4所述的人脸笑容评分方法,其特征在于,若未提取到人脸矩形框,则自定义矩形区域作为人脸矩形框。
6.一种基于1-5任一项所述方法的人脸情绪分类方法,其特征在于,包括以下步骤:
对人脸图像进行情绪识别分类,定义情绪标签,情绪标签包括'happy','neutral','angry','disgust','fear','sad','surprise';
根据笑容得分smilescore重定义情绪标签,将smilescore>th2,且不是'happy'和'neutral'的修改为'happy';th2为预设笑容得分值。
7.根据权利要求6所述的人脸情绪分类方法,其特征在于,所述对人脸图像进行情绪识别分类,具体为基于人脸校正图像进行情绪识别分类,人脸校正图像是根据眼部关键点对人脸关键点进行仿射变换对齐人脸所获得的人脸校正图像。
8.根据权利7所述的人脸情绪分类方法,其特征在于,基于keras训练好的hdf5模型进行情绪识别分类。
9.一种基于权利要求6-8任一项所述方法的人脸笑容评分方法,其特征在于,包括以下步骤:
根据嘴部关键点判断是否张嘴;
若dis3/dis1>th1则判断为张嘴,否则为闭嘴;th1为预设判断值;
根据是否张嘴,结合情绪标签重新确定笑容得分;
其中dis3=(d1 … dj … dm)/m;
式中,dj为上唇下边缘标记点与对应下唇上边缘标记点之间的距离,m为大于等于1的整数。
10.根据权利要求9所述的人脸笑容评分方法,其特征在于,所述根据是否张嘴,结合情绪标签重新确定笑容得分,具体为:
如果张嘴大笑,将笑容得分归一化到[80,100]的得分区间;
如果闭嘴微笑,将笑容得分归一化到[70,85]的得分区间;
如果情绪标签为'neutral',将笑容得分归一化到[60,75]的得分区间;
如果情绪标签为除'happy'和'neutral'之外的其他情绪标签,将smilescore归一化到[0,60]的得分区间。
技术总结