基于多任务神经网络的人脸状态检测方法

文档序号:30519863发布日期:2022-06-25 04:34阅读:84来源:国知局
基于多任务神经网络的人脸状态检测方法

1.本发明涉及神经网络目标检测技术领域,尤其涉及一种基于多任务神经网络的人脸状态检测方法。


背景技术:

2.人脸所能表达的信息极为丰富,通过建立各种模型获取人脸的各项参数,进而获取高层语义信息以得到当前人脸的状态,因此人脸状态监测逐渐成为智能时代、智能系统中不可缺少的一环,例如对司机进行疲劳驾驶监测,在疲劳时对其发出提醒;或是进行人脸识别时人脸特征的提取、活体检测,都需要人脸状态监测这项技术的支撑。
3.目前在各个应用场景中,人脸识别几乎离不开人们的生活,快速高质量的识别是大家研究的重点。人脸识别目前的应用场景面部特征点检测与头部姿态估计是计算机视觉与深度学习中较为常见的,但无论是使用计算机视觉方法还是深度学习方法,目前的许多检测方法都以单一检测任务为目的进行,没有充分利用两个任务间的关联特性以将两个任务高效地结合起来。


技术实现要素:

4.技术目的:针对现有技术中的缺陷,本发明公开了一种基于多任务神经网络的人脸状态检测方法,将面部特征点检测与头部姿态参数检测两个任务结合,共享核心网络的特征图,提高两任务的检测精度,实现人脸状态检测。
5.技术方案:为实现上述技术目的,本发明采用以下技术方案。
6.一种基于多任务神经网络的人脸状态检测方法,包括以下步骤:
7.s1、图像预处理:将待检测图像输入至dlib库中,在dlib库中通过人脸定位算法,结合宽容度算法输出预处理后图像,预处理后图像中包含裁决后的完整的人脸图像;
8.s2、多任务神经网络输出面部特征点与头部姿态参数:构建基于面部特征点检测和头部姿态参数检测的多任务神经网络,所述多任务神经网络包括核心网络和子网络1、子网络2,子网络1、子网络2共享核心网络,子网络1用于实现面部特征点检测,子网络2用于头部姿态参数检测;对多任务神经网络进行预训练,将预处理后图像输入预训练后的多任务神经网络中的核心网络中,输出特征图;特征图分别输入至子网络1和子网络2中,子网络1输出面部特征点坐标向量;子网络2输出头部姿态参数坐标向量;
9.s3、人脸状态监测:将若干待检测图像依次通过步骤s1和步骤s2,根据步骤s2输出的面部特征点坐标向量和头部姿态参数坐标向量,计算人脸状态信息,实现人脸状态检测。
10.优选地,所述步骤s1包括:
11.s11、将待检测图像输入至dlib库中,通过人脸定位算法输出裁剪区域坐标;
12.s12、将裁剪区域坐标和待检测图像通过宽容度算法对裁剪区域坐标进行更新,输出预处理后图像;所述宽容度算法用于确保裁剪区域中的人脸图像完整;所述预处理后图像大小统一设定为128*128*3,其中128*128为像素坐标数,3为通道数。
13.优选地,所述宽容度算法的实现过程为;
14.输入裁剪区域坐标,获取左上角坐标(lx
or
,ly
or
)和右下角坐标(rx
or
,ry
or
),
15.根据预设的宽容度系数α和β对左上角坐标(lx
or
,ly
or
)和右下角坐标(rx
or
,ry
or
)进行扩展,输出更新后的左上角坐标(lx
new
,l
ynew
)和右下角坐标(rx
new
,ry
new
);其计算公式为:
[0016][0017]
根据更新后的左上角坐标和右下角坐标在待检测图像中框选中预处理后图像。
[0018]
优选地,所述预设的宽容度系数α和β通过预训练获取,其过程为:
[0019]
构建宽容度系数训练样本,包括若干第一样本图像,以及已知的每个第一样本图像中五个面部特征点坐标,
[0020]
将所有第一样本图像依次输入至dlib数据库中,通过人脸定位算法输出对应的裁剪区域坐标;
[0021]
将每组裁剪区域坐标和第一样本图像通过宽容度算法对裁剪区域坐标进行更新,每组裁剪区域坐标和第一样本图像依次完成:
[0022]
输入裁剪区域坐标,获取第一样本i的左上角坐标和右下角坐标
[0023]
设定宽容度系数α和β初值均为1;
[0024]
判断五个面部特征点坐标是否全部在裁剪区域坐标范围内,
[0025]
若是,则裁剪区域坐标不变,即宽容度系数α和β取值均为1;若否,则执行:
[0026][0027]
重复上一步骤,直至五个面部特征点坐标全部在裁剪区域坐标范围内,输出训练后的宽容度系数α和β数值,作为预设的宽容度系数α和β。
[0028]
优选地,所述步骤s2中,特征图大小为1*1024;面部特征点坐标向量大小为1*10,包括五个面部特征点坐标;头部姿态参数坐标向量大小为1*3,包括三个欧拉角yaw、pitch、roll。
[0029]
优选地,所述步骤s2中,核心网络包括依次连接的8个卷积层、4个池化层和1个全连接层,全连接层输出特征图,采用relu作为激活函数,子网络1包括2个全连接层,子网络2包括3个全连接层。
[0030]
优选地,所述步骤s2中,对多任务神经网络进行预训练,其过程包括:
[0031]
s21、引入dlib数据库,将dlib数据库中的所有图像通过s1中的图像预处理后划分为训练集和测试集;
[0032]
s22、多任务神经网络训练:将训练集输入至多任务神经网络后,对子网络1、子网络2和多任务神经网络采用不同的损失函数进行训练,子网络1采用l2范数损失函数;子网络2采用l2范数损失函数;多任务神经网络整体采用任务间的同方差不确定性损失函数,通过整个多任务神经网络的输出来平衡两个子网络的损失函数;
[0033]
s23、多任务神经网络测试:将测试集输入至多任务神经网络。
[0034]
优选地,所述子网络1采用l2范数损失函数,其计算公式为:
[0035][0036]
其中,为子网络2损失函数,为预测的面部坐标,为该样本的真实坐标;
[0037]
子网络2采用l2范数损失函数,其计算公式为:
[0038][0039]
其中,为子网络2损失函数,为预测的欧拉角值,为真实欧拉角值;
[0040]
多任务神经网络整体采用任务间的同方差不确定性损失函数,通过整个多任务神经网络的输出来平衡两个子网络的损失函数,其计算公式为:
[0041][0042]
其中,l
t
为多任务神经网络的损失函数。
[0043]
优选地,所述计算人脸状态信息,实现人脸状态检测,具体包括:根据步骤s2输出的面部特征点坐标向量和头部姿态参数坐标向量,计算人脸状态信息,包括眨眼频率、哈欠频率、头部位置和头部方向,进而实现人脸状态检测。
[0044]
有益效果:本发明通过将面部特征点检测与头部姿态参数检测两个任务结合,共享核心网络的特征图,提高两任务的检测精度,最终实现人脸状态检测。
附图说明
[0045]
图1是本发明的总方法流程图;
[0046]
图2是本发明的建模流程示意图;
[0047]
图3是本发明的图像预处理流程图。
具体实施方式
[0048]
以下结合附图和实施例对本发明的一种基于多任务神经网络的人脸状态检测方法做进一步的说明和解释。
[0049]
如附图1和附图2所示,一种基于多任务神经网络的人脸状态检测方法,包括以下步骤:
[0050]
s1、图像预处理:将待检测图像输入至dlib库中,在dlib库中通过人脸定位算法,即在dlib中实现人脸定位,结合宽容度算法输出预处理后图像,预处理后图像中包含裁决后的完整的人脸图像;
[0051]
如附图3所示,图像预处理的具体过程包括:
[0052]
s11、将待检测图像输入至dlib库中,通过人脸定位算法输出裁剪区域坐标;
[0053]
s12、将裁剪区域坐标和待检测图像通过宽容度算法对裁剪区域坐标进行更新,输出预处理后图像;所述宽容度算法用于确保裁剪区域中的人脸图像完整;所述预处理后图
像大小统一设定为128*128*3,其中128*128为像素坐标数,3为通道数;
[0054]
宽容度算法的实现过程为;
[0055]
输入裁剪区域坐标,获取左上角坐标(lx
or
,ly
or
)和右下角坐标(rx
or
,ry
or
),
[0056]
根据预设的宽容度系数α和β对左上角坐标(lx
or
,ly
or
)和右下角坐标(rx
or
,ry
or
)进行扩展,输出更新后的左上角坐标(lx
new
,ly
new
)和右下角坐标(rx
new
,ry
new
);其计算公式为:
[0057][0058]
根据更新后的左上角坐标(lx
new
,ly
new
)和右下角坐标(rx
new
,ry
new
)在待检测图像中框选中预处理后图像;
[0059]
其中预设的宽容度系数α和β通过预训练获取,其过程为:
[0060]
构建宽容度系数训练样本,包括若干第一样本图像,以及已知的每个第一样本图像中五个面部特征点坐标;在一些实施例中,宽容度系数训练样本中包括21997张人脸图像,即第一样本图像;宽容度系数训练样本中的图像也可以从dlib数据库或其他数据库中选用;
[0061]
将所有第一样本图像依次输入至dlib数据库中,通过人脸定位算法输出对应的裁剪区域坐标;
[0062]
将每组裁剪区域坐标和第一样本图像通过宽容度算法对裁剪区域坐标进行更新,每组裁剪区域坐标和第一样本图像依次完成:
[0063]
输入裁剪区域坐标,获取第一样本i的左上角坐标和右下角坐标
[0064]
设定宽容度系数α和β初值均为1;
[0065]
判断五个面部特征点坐标是否全部在裁剪区域坐标范围内,
[0066]
若是,则裁剪区域坐标不变,即宽容度系数α和β取值均为1;若否,则执行:
[0067][0068]
重复上一步骤,直至五个面部特征点坐标全部在裁剪区域坐标范围内,输出训练后的宽容度系数α和β数值,作为预设的宽容度系数α和β。
[0069]
算法实现过程为:
[0070][0071]
其中,为第一样本i中第n个面部特征点的坐标,n=1,2,3,4,5;
[0072]
本发明中引入宽容度算法,确保预处理后图像中包含所有面部特征点,提高后续面部特征点检测的准确性。
[0073]
s2、多任务神经网络输出面部特征点与头部姿态参数:构建基于面部特征点检测和头部姿态参数检测的多任务神经网络,所述多任务神经网络包括核心网络和子网络1、子网络2,子网络1、子网络2共享核心网络,即共享子网络1和子网络2两个任务间的内在联系以及非线性映射关系,子网络1用于实现面部特征点检测,子网络2用于头部姿态参数检测;对多任务神经网络进行预训练,将预处理后图像输入预训练后的多任务神经网络中的核心网络中,输出特征图,所述特征图大小为1*1024;特征图分别输入至子网络1和子网络2中,子网络1输出面部特征点坐标向量,面部特征点坐标向量大小为1*10,包括五个面部特征点坐标;子网络2输出头部姿态参数坐标向量,头部姿态参数坐标向量大小为1*3,包括三个欧拉角yaw、pitch、roll;
[0074]
核心网络包括依次连接的8个卷积层、4个池化层和1个全连接层,全连接层输出特征图,采用relu作为激活函数,子网络1包括2个全连接层,子网络2包括3个全连接层,本发明通过在核心网络中添加较多的卷积层以稳定地增加网络深度,在核心网络所有层中卷积滤波器被设置为3x3大小,有效地减小参数,可更好地提取深层特征。本发明中的多任务神经网络为固定的结构,输入输出均为大小固定的数据,使用该种结构设计的多任务神经网络,极大地降低网络的参数量,使网络的性能达到较高的水平;同时利用两任务间的相关性,使网络的准确率、鲁棒性达到较高的水平,很好的满足了两任务的要求。
[0075]
本发明采用多任务神经网络同时完成面部特征点检测与头部姿态估计两项任务,并且在检测速度、精度上有较大的提升。使用多任务学习可充分利用隐含在多个相关训练任务中的特定信息,相比于单任务学习多任务学习可以获得适用不同任务的特征,共享不同任务之间的内在联系以及复杂的非线性映射关系,且有效地增加了用于训练模型的样本大小。
[0076]
如附图3所示,所述对多任务神经网络进行预训练,其过程包括:
[0077]
s21、引入dlib数据库,将dlib数据库中的所有图像通过s1中的图像预处理后划分为训练集和测试集,其比例7∶3,本步骤中进行数据增强,通过对图像数据进行随机平移、旋转变换等数据增强操作将训练数据扩充至原训练数据的30倍;
[0078]
s22、多任务神经网络训练:将训练集输入至多任务神经网络后,对子网络1、子网络2和多任务神经网络采用不同的损失函数进行训练,子网络1采用l2范数损失函数,其计算公式为:
[0079][0080]
其中,为子网络2损失函数,为预测的面部坐标,为该样本的真实坐标;
[0081]
子网络2采用l2范数损失函数,其计算公式为:
[0082][0083]
其中,为子网络2损失函数,为预测的欧拉角值,为真实欧拉角值;
[0084]
本发明中的多任务学习希望通过共享表示特征来提升精度、速度和泛化能力,而不同任务间的尺度不同,常见的训练多任务学习方法是将每个任务的损失函数相加,神经网络的整体性能很大程度上取决于每个损失函数的表现,使用加权求和时整个多任务神经网络的性能受权值影响,因此本发明基于子网络1与子网络2采用不同的损失函数,不同任务的损失尺度差异对多任务神经网络的影响较大,对此多任务神经网络整体采用任务间的同方差不确定性损失函数,通过整个多任务神经网络的输出来平衡两个子网络的损失函数,基于使用的方差不确定性损失函数,该多任务神经网络可在训练过程动态调整权重参数而非传统的一成不变的参数配置,使神经网络的表现更为出色,其计算公式为:
[0085][0086]
其中,l
t
为多任务神经网络的损失函数;同时式中等号右侧的前两项与后一项存在着平衡关系,很好地解决了不同任务之间的尺度差异和两任务计算数值相差较大的问题。
[0087]
s23、多任务神经网络测试:将测试集输入至多任务神经网络,对多任务神经网络整体进行性能测试,测试通过后,完成多任务神经网络的预训练。
[0088]
s3、人脸状态监测将若干待检测图像依次通过步骤s1和步骤s2,根据步骤s2输出的面部特征点坐标向量和头部姿态参数坐标向量,计算人脸状态信息,实现人脸状态检测。
[0089]
将若干待检测图像基于dlib进行预处理,将人脸图像裁剪并缩放,作为多任务神经网络的输入,经多任务神经网络得到的头部姿态参数与面部特征点,后续将进一步进行数值计算,得到当前目标的头部位置、方向等信息,并定位出眼睛、嘴巴,进行眨眼频率、哈欠频率等状态监测,或抽烟、打电话等行为的检测。
[0090]
在面部特征的识别上,目前多数使用级联卷积神经网络进行面部特征点检测的效
果较好,使用三层级联卷积神经网络进行人脸关键点检测,将多个网络的输出融合在一起进行估计,该网络结构是现有技术中较为优秀的检测算法,在相同实验条件下,该方法对每张图片的推演耗时为102.28ms,以网络标定的各点与数据集中标定各点的偏移为度量,五个面部特征点的平均准确率为92.38%,而本发明对每张图片的推演耗时为98.40ms,平均准确率为96.29%。
[0091]
对于头部姿态估计的方法,在相同实验环境下,以预测的三个头部姿态值与原数据集中头部姿态的三个值的误差为度量进行评判。由于受噪声的影响较大,传统方法的表现并不优秀,例如基于面部特征点对头部姿态进行估计,一种将图像中人脸五官特征点使用修正牛顿法与模型对齐以确定人脸姿态的方法,对每张图片的推演耗时为70.16ms,但平均准确率仅有76.39%;一种通过训练一个多损失的卷积神经网络,使用rgb图像结合分类和回归损失的方法来预测欧拉角的方法对每张图片的推演耗时为109.31ms,平均准确率仅有90.26%,而本发明对每张图片的推演耗时仍为98.40ms,平均准确率为97.37%。
[0092]
在性能均大幅优于其他单任务方法的情况下,本方法仍表现优秀,准确率较高且表现稳定,不失为一种较好的人脸状态监测方式。
[0093]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1