一种基于改进的MTCNN人脸检测方法

文档序号:33400424发布日期:2023-03-08 16:20阅读:160来源:国知局
一种基于改进的MTCNN人脸检测方法
一种基于改进的mtcnn人脸检测方法
技术领域
1.本发明涉及深度学习中的目标检测领域,具体涉及一种改进的mtcnn人脸检测方法。


背景技术:

2.人脸检测技术可以在一张图片中检测出人脸的位置和数量。这种技术可以将检测出的人脸输出到人脸识别的模型中,以便于进行人脸识别的相关工作。其还可以应用在视频监控领域,用来捕获视频中的人脸个数。将其应用在相机中,相机通过检测人脸,可以实现自动对焦。
3.传统的人脸检测技术存在着检测准确率低和运行速度慢的问题,而基于深度学习的人脸检测技术可以有效的改善这些问题。现有基于深度学习进行人脸检测的技术包括:r-cnn、fast r-cnn、faster r-cnn、mtcnn等等,但mtcnn模型因检测准确度较高,同时运行速度较快而在业界受欢迎。
4.mtcnn模型是有三个部分组成的:p-net(proposal net),r-net(refine net)和o-net(output net);p-net是一个小型的卷积网络,可以快速产生大量候选框并进行初步筛选;r-net的网络结构比p-net增加了一个全连接层,p-net的筛选结果输入到r-net中进一步筛选;o-net比r-net多了一层卷积层,对候选框进行最终的筛选,并且给出人脸的五个关键点位置。该模型的运行速度较快,同样的硬件环境下,对于640
×
480大小的图片,gpu的运算速度达到90fps,而在cpu上也达到了12fps,已经基本接近了实际的应用要求。但模型还存在改进的空间,从而提高运行速度。


技术实现要素:

5.为了进一步提高mtcnn人脸检测的精度和运行速度,本发明提出了一种基于改进的mtcnn人脸检测方法。
6.具体包括以下步骤:
7.1.进行图像预处理。由于在实际操作中,人脸检测图像受外部因素的影响很大,通过srgan(使用生成对抗网络的超分辨率)技术,超分辨率恢复是将低像素图像转换为高像素图像,srgan使用反学习方法,结合像素均方误差、vgg高维特征均方误差和针对训练损失的深度卷积网络来实现超分辨率恢复。网络输入不引入任何随机变量,而是直接输入图像,然后输出图像,其结构类似于自动编码器。生成器首先将输入图像编码为高维特征,然后通过残差网络处理特征,最后对恢复的高像素图像进行解码。通过上述图像预处理过程,使图像中的人脸更加清晰,其应用特征更加突出,更易于检测。
8.2.在原有mtcnn网络结构中引入了inception模块,提高了网络的学习性能,既保留了原有网络结构的优点,又进一步提高了人脸检测算法的效率和准确性。该模块通过对特征图进行三种不同的卷积(1
×
1,3
×
3,5
×
5)来提取更多的特征。不同的卷积检查对不同位置的人脸具有不同的学习效果。使用不同的卷积核进行学习可以更好地达到理想的学习
效果。卷积核卷积后提取的特征图和池化层的结果作为输出进行聚合,但这种结构中参数的快速增加将导致大量的计算量。在改进方案中,在3
×
3,5
×
5卷积之前和池化层之后增加1
×
1卷积以降低维数。它不仅提取了大量的特征,而且减少了计算量。1
×
1卷积核神经元在不改变原始图像信息的情况下,对特征映射进行了维数深化,并在生成的特征映射中引入了非线性因素。本发明采用了inceptionv2模块。引入的inception v2模块在原有mtcnn网络结构的3
×
3卷积核和3
×
3池化层前增加了1
×
1卷积核,并将原有的3
×
3卷积核优化为1
×
3和3
×
1,提高了网络的学习率。
9.3.训练改进的mtcnn网络,具体包括:使用交叉熵损失函数确定人脸分类输出损失;使用欧几里德损失函数确定人脸框位置回归输出损失和人脸关键点位置回归输出损失,再将人脸分类输出损失、人脸框位置回归输出损失和人脸关键点位置回归输出损失进行加权求和,确定对应网络层的总损失。
附图说明
10.图1为:srgan的网络结构示意图。
11.图2为:优化后的网络结构示意图。
具体实施方式
12.下面结合具体实施方式和说明书附图对本发明做出详细的说明。本发明提供了一种基于改进的mtcnn模型人脸检测方法,包括以下步骤:
13.1、获取待检测人脸图像并对图像基于srgan图像处理网络的预处理,srgan的网络结构如图1所示;
14.2、将人脸图像缩放到不同尺寸,形成一个图像金字塔;
15.3、分别在p-net、r-net和o-net中加入inceptionv2模块进行训练;
16.4、利用训练后的mtcnn模型对所述人脸图片进行检测人脸位置和人脸关键点位置;得到并输出检测结果。
17.其中,所述mtcnn模型三层网络结构中,p-net、r-net和o-net网络层的输出层均为卷积层。本实施例中,将r-net和o-net网络层的输出层设置为卷积层可以在保证人脸检测准确度较高的同时提高人脸检测方法的运行速度。优化后的网络结构如图2所示。
18.本实施例,p-net、r-net和o-net网络层的输出层均输出三个部分:face classification:对应图像区域为人脸图像的概率;bounding box:输出矩形框位置信息,和facial landmark localization:输入人脸关键点位置。
19.(1)p-net网络层将所有训练样本resize转化为shape=(12
×
12
×
3)的图像,通过10个3
×3×
3的卷积核,2
×
2的max pooling(stride=2)操作,生成10个5
×
5的特征图;再通过16个3
×3×
10的卷积核,生成16个3*3的特征图,再通过32个3
×3×
16的卷积核,生成32个1
×
1的特征图,最后在输出层,通过2个1
×1×
32的卷积核,生成2个1
×
1的特征图用于分类;4个1
×1×
32的卷积核,生成4个1
×
1的特征图用于回归框判断;10个1
×1×
32的卷积核,生成10个1
×
1的特征图用于人脸轮廓点的判断。
20.(2)r-net网络层将输入样本resize转化为shape=(24
×
24
×
3)的图像,通过28个3
×3×
3的卷积核,3
×
3的max pooling(stride=2)操作,生成28个11
×
11的特征图;再通
过48个3
×3×
28的卷积核和3
×
3(stride=2)的max pooling后生成48个4*4的特征图;通过64个2
×2×
48的卷积核后,生成64个3
×
3的特征图;最后在输出层,通过2个1
×1×
64的卷积核,生成2个1*1的特征图用于分类;4个1
×1×
64的卷积核,生成4个1
×
1的特征图用于回归框判断;10个1
×1×
64的卷积核,生成10个1
×
1的特征图用于人脸轮廓点的判断。(3)r-net网络层将输入样本resize转化为shape=(48
×
48
×
3)的图像,通过32个3
×3×
3的卷积核,3
×
3的max pooling(stride=2)操作,生成32个23
×
23的特征图;再通过64个3
×3×
32的卷积核和3
×
3(stride=2)的max pooling后生成64个10
×
10的特征图;再通过64个3
×3×
64的卷积核和3
×
3(stride=2)的max pooling后生成64个4
×
4的特征图;通过128个3
×
63
×
64的卷积核后,生成128个3
×
3的特征图;最后在输出层,通过2个1
×1×
128的卷积核,生成2个1
×
1的特征图用于分类;4个1
×1×
128的卷积核,生成4个1
×
1的特征图用于回归框判断;10个1
×1×
128的卷积核,生成10个1
×
1的特征图用于人脸轮廓点的判断。
21.本实施例,对网络模型进行训练具体包括以下步骤:mtcnn模型中每个网络层都有三部分输出,因此训练时损失的定义也由三部分组成;针对人脸分类(是人脸、不是人脸),使用交叉熵损失行数;针对人脸框位置回归预测和人脸关键点位置回归预测,使用欧几里德损失函数;最后这三部分损失各自乘以自身的权重再加起来,形成最后的总损失。p-net和r-net网络层偏重于框位置的准确性,o-net偏重于关键点判定,它们三部分的各自权重是不一样的。
22.(1)人脸分类
23.因为人脸分类是一个二分类问题,所以该任务的损失函数采用交叉熵损失函数。对于训练样本xi,其损失函数为:
[0024][0025]
其中,pi是网络的输出,表示对应区域是人脸的概率;为样本xi的标签,0表示不是人脸,1表示是人脸。
[0026]
(2)人脸框位置回归预测
[0027]
对于在人脸图片中划分出来的所有窗口,回归的目标是距离这些窗口最近的标记人脸窗口,人脸框通过其左上右下四个位置组成的四维向量表示,选用欧几里德损失函数作为该任务的损失函数,对于样本xi,其损失函数为如下形式:
[0028][0029]
其中,是网络输出的人脸窗口,是距离此窗口最近的标记人脸窗口位置坐标。
[0030]
(3)人脸关键点位置回归预测
[0031]
人脸关键点位置使用五个点的坐标拼接成的十维向量表示。选用欧几里德函数作为该任务的损失函数,对于某个训练样本xi,其损失函数为:
[0032][0033]
其中,是网络输出的人脸关键点的坐标,是样本xi的标记关键点的坐标构成的十维向量,其中十维向量的排列顺序为左眼、右眼、鼻子、左嘴角、右嘴角。上述
为三个子任务的损失函数,在网络中对损失函数优化时,要综合三个子任务进行,这里需要考虑两点(1)在识别不同的人脸图片时,三个子任务可以选择是部分启用还是全部启用。(2)二是对于p-net、r-net和o-net三个网络层,在训练这三个网络层时,三个子任务重要性不同,因此在优化损失函数时,三个子任务的损失函数所占的比例也不同。因此,最终的目标函数为:
[0034][0035]
其中n是用于训练网络的样本个数,j表示不同的子任务,j为d e t、b o x或landmark,αj表示某个子任务的权重,表示对于样本xi,在计算损失函数时是否启用子任务j,如果为1,表示启用该损失函数。是样本xi在子任务j上的损失函数。在p-net、r-net网络层中,三个子任务的对应权重相等,分别为(α
det
=1,α
box
=0.5,α
landmark
=0.5),因为在这两个网络中,更加关注人脸分类的准确率,所以子任务人脸分类所占的权重更高一些;在o-net中,三个子任务的权重分别为(α
det
=1,α
box
=0.5,α
landmark
=1),因为在这个网络中,要输出人脸五个关键点位置的坐标,所以子任务人脸关键点位置回归的权重也调整为1。
[0036]
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1