一种人脸关键点检测的模型训练方法、检测方法、装置,及终端设备与流程

文档序号:28942712发布日期:2022-02-19 07:15阅读:133来源:国知局

1.本发明涉及计算机视觉和人脸识别技术领域,具体涉及一种人脸关键点检测的模型训练方法、检测方法、装置,及终端设备。


背景技术:

2.人脸关键点检测的重点是对给定的人脸图像进行关键点定位,关键点是人为定义的、用于表示人脸五官和轮廓上的某些点。如何精准高效的定位关键点是人脸分析及识别的重要前提。目前人脸关键点检测方法主要有基于asm(active shape model)和aam(active appearnce model)的传统方法、基于csr(cascaded shape regression)的方法、基于深度学习的方法,但是现有方法很难保证精度的情况下实现快速检测。


技术实现要素:

3.为了克服现有技术的不足,本公开实施例提供了一种人脸关键点检测的模型训练方法、检测方法、装置,及终端设备,可以在保证精度的情况下提高检测速度。技术方案如下:
4.第一方面,提供了一种人脸关键点检测的模型训练方法,该方法包括如下步骤:
5.步骤1,采集包含人脸的原始图像,标注处n个人脸关键点坐标,人脸关键点坐标是相对于原始图像的坐标,原图宽为width,高为height,构建原始训练集。
6.步骤2:获取人脸区域框,并对人脸区域框进行随机放大,得到构建增广训练集;
7.计算每个图像关键点的最大最小横纵坐标,构成原始人脸区域框src_box(x_min,y_min,x_max,y_max),对人脸区域框使用随机放大的方法得到num组放大后的人脸区域enlarge_box(x_min’,y_min’,x_max’,y_max’),并对应将相对原始图像的关键点坐标转换为相对enlarge_box的关键点坐标,从而构建增广训练集。
8.步骤3,对增广数据集进行图像预处理。
9.步骤4,获取增广数据集图像的欧拉角度标签。
10.从人脸关键点中获取左眼角,右眼角,鼻尖,左嘴角,右嘴角,下颌共六个点的坐标,计算旋转矩阵,再转换为欧拉角;所述欧拉角包括俯仰角pitch、偏航角raw、翻滚角roll三个角度。
11.步骤5,对人脸关键点检测模型进行训练,
12.采用增广训练集,以训练集中的图像与其关键点,及其欧拉角度标签为输入,对输入图像使用基础特征提取模块,得到基础特征部分,再采用关键点网络主分支和角度网络辅助分支分别对基础特征部分进行预测。
13.关键点网络主分支包括第一尺度特征提取模块、第二尺度特征提取模块、第三尺度特征提取模块和关键点回归预测模块,对基础特征部分提取第一尺度特征;继续对第一尺度特征提取得到第二尺度特征;再对第二尺度特征提取得到第三尺度特征;最后融合所
有三个尺度的特征作为关键点回归预测模块的输入,得到预测的关键点。
14.角度网络辅助分支包括欧拉角度特征提取模块和欧拉角度特征预测模块,对基础特征部分使用欧拉角度特征提取模块提取欧拉角度特征,再使用欧拉角度特征预测模块,得到预测的欧拉角度。
15.结合预测的关键点坐标与真实关键点坐标计算loss
wing
和坐标回归损失loss
reg
,结合预测的欧拉角度和真实欧拉角度计算关于loss
reg
的影响权重w
θ
;训练的总损失loss为loss
wing
和加权loss
reg
的结合,训练目标是将总损失loss收敛至最小。
16.优选的,步骤2中对人脸区域框进行随机放大,具体方法如下:
17.设置目标框的宽度放大倍数为sw,高度放大倍数为sh,并设定sw、sh的最大阈值η,即1≤sw≤η,1≤sh≤η。
18.设置d
x1
为目标框向左扩大的规模,d
x1
的取值范围为0至sw-1内的随机数;d
y1
为目标框向上扩大的规模,d
y1
的取值范围为0至sh-1内的随机数;d
x2
为目标框向右扩大的规模,d
x2
取值范围在0至1.0-d
x1
的随机数;dy2为目标框向下扩大的规模,d
y2
取值范围在0至1.0-d
y1
的随机数;即:d
x1
∈[0,sw-1],d
y1
∈[0,sh-1],d
x2
∈[0,1.0-d
x1
],d
y2
∈[0,1.0-d
y1
],且0≤d
x1
+d
x2
≤1,0≤d
y1
+d
y2
≤1。
[0019]
目标框向外扩大的最大值为:
[0020]
向左或向右扩大的最大值:max_dx=(sw-1.0)*(x_max-x_min)
[0021]
向上或向下扩大的最大值:max_dy=(sh-1.0)*(y_max-y_min)
[0022]
再进行图像越界处理,以原始图像中左上角点为原始图像的原点,得到随机扩大后新的坐标位置为
[0023]
x_min’=max(0,x_min-d
x1
*max_dx)
[0024]
y_min’=max(0,y_min-d
y1
*max_dy)、
[0025]
x_max’=min(width,x_max+d
x2
*max_dx)
[0026]
y_max’=min(height,y_max+d
y2
*max_dy)
[0027]
即得到经过一次随机放大后区域框enlarge_box(x_min’,y_min’,x_max’,y_max’)。
[0028]
优选的,对增广数据集进行图像预处理的方法包括如下几种方式中的一种或多种:缩放为固定输入尺寸、随机旋转、随机灰度化、随机色彩和饱和度变换、像素值归一化、随机擦除。
[0029]
优选的,步骤5中基础特征提取模块使用基础网络将输入图像转化为尺寸为原图大小1/4的基础特征映射;关键点网络主分支模块中第一尺度特征提取模块将基础特征映射层尺寸由原图1/4大小降采样至1/8大小,使用自适应均值池化操作将降采样后的特征映射为1*1大小;第二尺度特征提取模块将第一尺度特征映射层尺寸由原图1/8大小降采样至1/16大小,使用自适应均值池化操作将降采样后的特征映射为1*1大小;第三尺度特征提取模块将第二尺度特征映射层尺寸由原图1/16大小降采样至1*1;角度网络辅助分支模块中特征提取模块将基础特征映射层尺寸由原图1/4大小降采样至1/16大小。
[0030]
进一步的,步骤5中所述基础特征提取模块包括1个卷积、g-bneck b、g-bneck c、g-bneck d。
[0031]
所述第一尺度特征提取模块包括g-bneck a和n1个g-bneck b,
[0032]
所述第二尺度特征提取模块包括g-bneck a和n2个g-bneck b,
[0033]
所述第三尺度特征提取模块包括1个卷积,
[0034]
所述角度网络辅助分支包括4个卷积、最大池化层、2个全连接层。
[0035]
第二方面,提供了一种人脸关键点检测的方法,该方法具体为:
[0036]
根据所有可能的实现方式中任一项所述的一种人脸关键点检测的模型训练方法,训练得到的人脸关键点检测网络,输入为待检测图像,得到关键点检测结果。
[0037]
同时提供了另一种人脸关键点检测的方法,该方法具体为:
[0038]
根据所有可能的实现方式中任一项所述的一种人脸关键点检测的模型训练方法,训练得到的人脸关键点检测网络,采用其中的基础特征提取模块和关键点网络主分支模块作为检测网络,输入为待检测图像,得到关键点检测结果。
[0039]
优选的,还包括对待检测图像进行处理:使用人脸检测算法获取人脸检测框位置,对人脸检测框尺寸设置阈值,去除人脸检测框尺寸小于阈值的检测框,当人脸检测框尺寸大于阈值时,对人脸框进行scale倍放大,截取放大后的人脸检测框作为检测输入,得到关键点坐标,结合关键点坐标和人脸检测框坐标,计算得到关于待检测图像的人脸关键点坐标。
[0040]
第三方面,提供了一种人脸关键点检测的装置,该装置包括训练模块和检测模块;
[0041]
所述训练模块,用于执行所有可能的实现方式中任一项所述的一种人脸关键点检测的模型训练方法的步骤;
[0042]
所述检测模块,用于执行所有可能的实现方式中任一项所述的一种人脸关键点检测的方法的步骤。
[0043]
第四方面,提供了一种移动端设备,该移动端设备包括所有可能的实现方式中任一项所述一种人脸关键点检测的装置。
[0044]
与现有技术相比,上述技术方案中的一个技术方案具有如下有益效果:
[0045]
1、数据增强时通过采用一种新的随机放大目标框的方式,产生更多不同训练数据,提升模型的精度和泛化能力;
[0046]
2、通过使用轻量级网络作为backbone网络,减少模型的计算量,提高检测速度;
[0047]
3、只在训练阶段使用角度网络辅助分支对模型进行训练加强,测试时不增加计算量的情况下提高检测精度;
[0048]
4、结合加权的关键点坐标回归损失与wing loss对模型进行训练;
[0049]
5、直接回归位置坐标,而不是热力图处理的方式,消除了后处理部分的耗时。
附图说明
[0050]
图1为本公开实施例提供的构建增广训练集示意图。
[0051]
图2为本公开实施例提供的对人脸区域进行随机放大示意图。
[0052]
图3为本公开实施例提供的人脸关键点模型训练网络框架图。
[0053]
图4为本公开实施例提供的人脸关键点模型训练网络结构图。
[0054]
图5为本公开实施例提供的四组g-bneck模块结构图。
[0055]
图6为本公开实施例提供的人脸关键点检测的网络框架图。
[0056]
图7为本公开实施例提供的人脸关键点检测的网络结构图。
具体实施方式
[0057]
为了阐明本发明的技术方案和工作原理,下面将结合附图对本公开实施方式做进一步的详细描述。
[0058]
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
[0059]
本技术的说明书和权利要求书及上述附图中的术语“步骤1”、“步骤2”、“步骤3”等类似描述是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里描述的那些以外的顺序实施。
[0060]
第一方面:本公开实施例提供了一种人脸关键点检测的模型训练方法,该方法包括如下步骤:
[0061]
步骤1,采集包含人脸的原始图像,标注处n个人脸关键点坐标(优选106个关键点),人脸关键点坐标是相对于原始图像的坐标,原图宽为width,高为height,构建原始训练集。
[0062]
步骤2:获取人脸区域框,并对人脸区域框进行随机放大,得到构建增广训练集。
[0063]
图1为本公开实施例提供的构建增广训练集示意图,结合该图步骤2具体方法为:计算每个图像关键点的最大最小横纵坐标,构成原始人脸区域框src_box(x_min,y_min,x_max,y_max),对人脸区域框使用随机放大的方法得到num(默认取20)组放大后的人脸区域enlarge_box(x_min’,y_min’,x_max’,y_max’),并对应将相对原始图像的关键点坐标转换为相对enlarge_box的关键点坐标,从而构建增广训练集。
[0064]
优选的,步骤2中对人脸区域框进行随机放大,具体方法如下,如附图2所示:
[0065]
1)设置目标框(即人脸区域框)宽度放大倍数为sw,高度放大倍数为sh,并设定sw、sh的最大阈值η(默认为2.0),1≤sw≤η,1≤sh≤η。
[0066]
2)设置d
x1
为目标框向左扩大的规模,d
x1
的取值范围为0至sw-1内的随机数;d
y1
为目标框向上扩大的规模,d
y1
的取值范围为0至sh-1内的随机数;d
x2
为目标框向右扩大的规模,d
x2
取值范围在0至1.0-d
x1
的随机数;dy2为目标框向下扩大的规模,d
y2
取值范围在0至1.0-d
y1
的随机数;即:d
x1
∈[0,sw-1],d
y1
∈[0,sh-1],d
x2
∈[0,1.0-d
x1
],d
y2
∈[0,1.0-d
y1
],且0≤d
x1
+d
x2
≤1,0≤d
y1
+d
y2
≤1。
[0067]
3)目标框向外扩大的最大值为:
[0068]
向左或向右扩大的最大值:max_dx=(sw-1.0)*(x_max-x_min)
[0069]
向上或向下扩大的最大值:max_dy=(sh-1.0)*(y_max-y_min)
[0070]
再进行图像越界处理,以原始图像中左上角点为原始图像的原点,得到随机扩大后新的坐标位置为
[0071]
x_min’=max(0,x_min-d
x1
*max_dx)
[0072]
y_min’=max(0,y_min-d
y1
*max_dy)、
[0073]
x_max’=min(width,x_max+d
x2
*max_dx)
[0074]
y_max’=min(height,y_max+d
y2
*max_dy)
[0075]
即得到经过一次随机放大后区域框enlarge_box(x_min’,y_min’,x_max’,y_max’)。
[0076]
这种随机放大机制保证了新的区域框包含了原始人脸区域框,且原始人脸区域框不是坐落于enlarge_box的中心位置,而是等概率的落于新区域框的所有位置,同时新区域框的大小,形状没有被固定,使得初始的一张图片产生了许多的不同样本,让模型训练的最终精度和泛化能力有进一步提升的可能;同时最终的训练模型在测试时如果人脸目标框提取不够精确时也能很好的定位到关键点的位置,甚至人脸在图像区域中占比很大时可不使用目标检测模块直接采用关键点检测即可得到精确的结果。
[0077]
步骤3,对增广数据集进行图像预处理
[0078]
优选的,对增广数据集进行图像预处理的方法包括如下几种方式中的一种或多种:缩放为固定输入尺寸(默认使用112*112)、随机旋转(需要注意的是关键点坐标也需要对应的转换)、随机灰度化、随机色彩和饱和度变换、像素值归一化,(计算训练集所有图像关于rgb三个通道的像素平均值和方差,对图像进行减均值除方差操作)、随机擦除等。
[0079]
步骤4,获取增广数据集图像的欧拉角度标签
[0080]
从人脸关键点中获取左眼角,右眼角,鼻尖,左嘴角,右嘴角,下颌共六个点的坐标,计算旋转矩阵(可优选使用opencv中solvepnp函数计算旋转矩阵),再转换为欧拉角;所述欧拉角包括俯仰角(pitch)、偏航角(raw)、翻滚角(roll)三个角度。
[0081]
步骤5,对人脸关键点检测模型进行训练,
[0082]
图3为本公开实施例提供的人脸关键点模型训练网络框架图,结合该图步骤5具体为:采用增广训练集,以训练集中的图像与其关键点,及其欧拉角度标签为输入,对输入图像使用基础特征提取模块,得到基础特征部分,再采用关键点网络主分支(landmark net module)和角度网络辅助分支(angle net module)分别对基础特征部分进行预测。
[0083]
关键点网络主分支包括第一尺度特征提取模块(scale_1_net)、第二尺度特征提取模块(scale_2_net)、第三尺度特征提取模块(scale_3_net)和关键点回归预测模块(landmark_classfier),对基础特征部分提取第一尺度特征;继续对第一尺度特征提取得到第二尺度特征;再对第二尺度特征提取得到第三尺度特征;最后融合所有三个尺度的特征作为关键点回归预测模块的输入,得到预测的关键点。
[0084]
角度网络辅助分支包括欧拉角度特征提取模块和欧拉角度特征预测模块,对基础特征部分使用欧拉角度特征提取模块提取欧拉角度特征,再使用欧拉角度特征预测模块,得到预测的欧拉角度。
[0085]
结合预测的关键点坐标与真实关键点坐标计算loss
wing
和坐标回归损失loss
reg
,结合预测的欧拉角度和真实欧拉角度计算关于loss
reg
的影响权重w
θ
;训练的总损失loss为loss
wing
和加权loss
reg
的结合,训练目标是将总损失loss收敛至最小。
[0086]
影响权重w
θ

[0087][0088]
其中θ1、θ2、θ3分别表示了pitch,yaw,roll三个欧拉角的值
[0089]
loss
reg

[0090]
[0091]
其中n为关键点的个数(默认为106个),表示第n个关键点预测值与对应点真实值的距离。
[0092]
loss
wing

[0093][0094]
其中w,ε,c为常量,可以根据情况进行设置(此处优选取值分别为w=10.0,ε=2.0,c=10*ln6)
[0095]
训练的总损失loss为
[0096]
loss=(1+w
θ
)*loss
reg
+loss
wing
[0097]
优选的,步骤5中基础特征提取模块使用基础网络将输入图像转化为尺寸为原图大小1/4的基础特征映射;关键点网络主分支模块中第一尺度特征提取模块将基础特征映射层尺寸由原图1/4大小降采样至1/8大小,使用自适应均值池化操作将降采样后的特征映射为1*1大小;第二尺度特征提取模块将第一尺度特征映射层尺寸由原图1/8大小降采样至1/16大小,使用自适应均值池化操作将降采样后的特征映射为1*1大小;第三尺度特征提取模块将第二尺度特征映射层尺寸由原图1/16大小降采样至1*1;角度网络辅助分支模块中特征提取模块将基础特征映射层尺寸由原图1/4大小降采样至1/16大小。
[0098]
进一步,如附图4和附图5所示,步骤5中所述基础特征提取模块包括1个卷积、g-bneck b、g-bneck c、g-bneck d。
[0099]
所述第一尺度特征提取模块包括g-bneck a和n1个g-bneck b
[0100]
所述第二尺度特征提取模块包括g-bneck a和n2个g-bneck b
[0101]
所述第三尺度特征提取模块包括1个卷积
[0102]
所述角度网络辅助分支包括4个卷积、最大池化层、2个全连接层。
[0103]
第二方面:本公开实施例提供了一种人脸关键点检测的方法;
[0104]
附图6为本公开实施例提供的人脸关键点检测的网络框架图,结合该图,人脸关键点检测的方法为:
[0105]
采用根据所有可能的实现方式中任一项所述的一种人脸关键点检测的模型训练方法,训练得到的人脸关键点检测网络,采用其中的基础特征提取模块和关键点网络主分支模块作为检测网络,输入为待检测图像,得到关键点检测结果(或关键点检测坐标)。
[0106]
实际运用时,经常出现人脸与摄像头距离比较近的场景,比如安检入口处的人脸检测、在待检测图像中人脸的比例较大时,无需采用人脸检测算法对人脸框进行放大处理,直接以原图输入关键点检测网络得到关于原图片的人脸关键点坐标位置。但是针对人脸与摄像头距离比较远的场景,待检测图像中人脸数量不止一个时,往往出现人脸检测框过小的情况,可优选使用人脸检测算法(优选采用mtcnn)获取人脸检测框位置,对人脸检测框尺寸设置阈值,去除人脸检测框尺寸小于阈值的检测框,当人脸检测框尺寸大于阈值时,对人脸框进行scale(优选1.8)倍放大,截取放大后的人脸检测框作为检测输入,得到关键点检测结果,结合预测的关键点坐标和人脸检测框坐标,计算得到关于待检测图像的人脸关键点坐标。
[0107]
优选的,附图7为本公开实施例提供的人脸关键点检测的网络结构图,结合该图,所述基础特征提取模块包括1个卷积、g-bneck b、g-bneck c、g-bneck d;关键点网络主分
支包括第一尺度特征提取模块(scale_1_net)、第二尺度特征提取模块(scale_2_net)、第三尺度特征提取模块(scale_3_net)和关键点回归预测模块(landmark_classfier);所述第一尺度特征提取模块包括g-bneck a和n1个g-bneck b,所述第二尺度特征提取模块包括g-bneck a和n2个g-bneck b,所述第三尺度特征提取模块包括1个卷积。
[0108]
需要说明的是测试部分只使用基础特征提取模块和关键点网络主分支模块,得到最终的人脸关键点预测结果。而在训练时添加角度网络辅助分支的作用主要是让训练的模型能够对人脸的角度有一定的学习能力,使模型在针对不同角度人脸时能够更准确地预测关键点信息,提示模型在人脸角度因素上的泛化能力,提高人脸关键点检测的准确率。
[0109]
第三方面:本公开实施例提供了一种人脸关键点检测的装置;
[0110]
基于相同的技术构思,该装置包括训练模块和检测模块;
[0111]
所述训练模块,用于执行所有可能的实现方式中任一项所述的一种人脸关键点检测的的模型训练方法的步骤;
[0112]
所述检测模块,用于执行所有可能的实现方式中任一项所述的一种人脸关键点检测的方法的步骤。
[0113]
上述实施例提供的一种人脸关键点检测的装置与一种人脸关键点检测的模型训练方法和检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0114]
第四方面,本公开实施例提供了一种终端设备,该终端设备包括所有可能的实现方式中任一项所述一种人脸关键点检测的装置。
[0115]
以上结合附图对本发明进行了示例性描述,显然,本发明具体实现并不受上述方式的限制,凡是采用了本发明的方法构思和技术方案进行的各种非实质性的改进;或者未经改进、等同替换,将本发明的上述构思和技术方案直接应用于其他场合的,均在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1