一种基于优化的全卷积神经网络的人脸检测方法与流程

文档序号:16310788发布日期:2018-12-19 05:16阅读:236来源:国知局
一种基于优化的全卷积神经网络的人脸检测方法与流程

本发明涉及人脸识别技术领域,尤其是涉及一种基于优化的全卷积神经网络的人脸识别方法。

背景技术

人脸检测这一任务在计算机视觉相关的研究领域中是一个十分具有代表性的物体检测任务,历经几十年的发展,整体的检测效果也日趋成熟。以深度学习技术的出现为分界点,人脸检测算法可以大致分为基于传统机器学习方法的人脸检测算法和基于深度学习模型的人脸检测方法。基于传统机器学习方法的人脸检测算法在速度上已经可以满足大部分应用的实际要求,然而其检测精度还不能很好地满足工业界的需要,应用的场景和最终的分类效果也不够好。深度学习的出现,在一定程度上很好地弥补了上述传统机器学习方法中的缺陷。

mtcnn(多任务级联卷积网络)模型是目前在精度和速度上表现最好的深度模型之一,采用了级联网络的设计,同时配合了多任务学习的方式进行网络训练,由于采用多个小型网络的设计也使得整体的运算速度比较快,经过测试,目前算法在普通的个人计算机上运行,对一张大小为640*480的图片进行人脸检测,耗时约为90ms。

但在当下实际的应用中,对于人脸检测算法的需求越来越多的是来自于前端,包括嵌入式设备、移动手机等等,这就意味着算法的运行环境会更加苛刻,运算资源和存储资源也会更加有限。在这些实际的应用环境限制之下,目前深度学习的人脸检测方法都显得不太实用,需要更进一步的改进,主要的问题总结如下:

(1)深度模型的运算过程仍然显得有些复杂,在运算环境较差的前端上,算法的运算速度难以达到实时或可以满足应用需要的速度。因此,需要在不降低检测精度的同时,对已有的深度学习人脸检测算法进行速度上的优化;

(2)深度学习模型的参数较多,使得模型的参数文件需要占用较多的存储空间,这对于前端设备而言也会带来更高的应用门槛,从实用性的角度出发,需要对目前的深度模型进行参数压缩,降低模型带来的存储压力。



技术实现要素:

为解决以上问题,本发明提出了一种基于优化的全卷积神经网络的人脸检测方法。

本发明的主要内容包括:

一种基于优化的全卷积神经网络的人脸检测方法,包括如下步骤:

s1.建立全卷积神经网络模型;

s2.准备训练数据;

s3.对所述全卷积神经网络模型进行训练;

s4.使用训练完成后的全卷积神经网络模型对待测图像进行人脸检测;

其中,所述全卷积神经网络模型为改进的mtcnn模型,所述全卷积神经网络模型包括p-net网络层,r-net改进网络层以及o-net改进网络层;且所述p-net网络层通过三层卷积层运算后得到人脸区域的候选窗口和边界框的回归向量;所述r-net改进网络层是指将r-net网络层中的全连接层替换为卷积层;所述o-net改进网络层是指将o-net网络层中的全连接层替换为卷积层;所述p-net网络层,r-net改进网络层以及o-net改进网络层中各卷积层的卷积运算采用级联分解卷积运算,所述级联分解卷积运算包括逐通道卷积运算和逐点卷积运算。

优选的,所述级联分解卷积运算是指依次进行逐通道卷积和逐点卷积运算是指对各网络层的各卷积层进行平面和通道上的分解计算,依次进行卷积计算。

优选的,步骤3中具体包括如下步骤:

s31.利用步骤s2中准备的训练数据,对步骤s1建立的全卷积神经网络模型中p-net网络层的参数依次进行迭代训练;

s32.利用迭代贪心压缩算法分别对步骤s31迭代训练完成的参数进行压缩修剪,得到实用的p-net网络层;

s33.按照步骤s31,s32的训练方法,利用实用的p-net网络层对后续的r-net改进网络层和o-net改进网络层进行级联训练,得到训练好的全卷积神经网络模型。

优选的,步骤s31的迭代训练采用tensorflow框架,包括:

s311.确定全卷积神经网络模型的目标函数;

s312.使用反向传播和随机梯度下降的方式对模型参数进行迭代训练;

其中,所述全卷积神经网络模型的目标函数为:

ai为p-net网络层,r-net改进网络层以及o-net改进网络层的人脸分类检测、人脸框的位置预测以及人脸关键点的位置预测对应的权重值;lossi为p-net网络层,r-net改进网络层以及o-net改进网络层的人脸分类检测、人脸框的位置预测以及人脸关键点的位置预测对应的损失函数;

loss1为人脸分类预测的损失参数,可以表示为loss1=-(log(p)+(1-x)(1-log(p)));

loss2为人脸框的位置预测的损失函数,可以表示为:

loss3为人脸关键点的位置预测的损失函数,可以表示为:其中,p表示p-net网络层,r-net改进网络层以及o-net改进网络层的输出;x为训练样本的标注信息;1表示是人脸,0表示不是人脸;y0为四维数值向量,表示各网络层对于人脸位置的实际预测值;y为四维数值向量,表示训练样本对应的标注人脸位置信息;z0为十维数值变量,表示各网络层对于人脸五个关键点位置的实际预测值;z为十维数值变量,表示训练样本对应的标注人脸关键点信息。

优选的,所述p-net网络层和r-net改进网络层的人脸分类检测、人脸框的位置预测以及人脸关键点的位置预测的权重系数ai均分别为1.0,0.5,0.5;所述o-net改进网络层的人脸分类检测、人脸框的位置预测以及人脸关键点的位置预测的权重系数ai分别为0.5,1.0,1.0。

优选的,步骤s32中的迭代贪心压缩算法的流程如下:

s321.从单个网络层的第一个特征图开始压缩;

s322.通过置0的方式,得到当前卷积层的各各个特征图对应的测试精度损失;

s323.将精度损失最小的特征图对应的卷积核删除;

s324.对应修改当前卷积层的前后层的大小,并对该网络层进行重新训练至收敛;

s325.判断是否达到终止条件,若是则对本网络层的压缩结束;若否,则转到下一步;

s326.判断是否达到最后一个卷积层,若是,则重新开始步骤s322;若否,则将后一卷积层设置为当前层,转至s322。

优选的,步骤s325中的终止条件为:所述全卷积神经网络模型的精度损失达到设定的不可接受的阈值,或者压缩比例达到设定的期望值。

优选的,步骤s4包括如下具体步骤:

s41.构建图像金字塔;

s42.级联的人脸检测,将图像金字塔内的图片依次输入到训练后的全卷积神经网络模型中的p-net网络层中,并汇总不同尺度图片对应的人脸候选框;

s43.将p-net网络层的输出作为r-net改进网络层的输入,得到优化后的人脸候选框;

s44.将r-net改进网络层的输出作为o-net改进网络层的输入,得到最终的人脸检测结果。

优选的,步骤s41的具体步骤包括:

s411.确定图像金字塔的基础缩放尺度,所述基础缩放尺度为m/12;其中m为图片中需要检测到的最小人脸大小m*m;

s412.构建图像尺度金字塔:将所述基础缩放尺度作为初始值,按照缩放后的图片的面积是前一层的1/2的迭代策略,直到缩放后的图片的较短边的长度小于12停止迭代;

s423.使用构建好的图像尺度金字塔作为缩放比例,将待测图片缩放到不同的大小,已建立该待测图片的图像金字塔。

优选的,步骤s42,s43和s44中,采用nms算法实现去重。

与现有技术相比,本发明的有益效果在于:

(1)通过卷积运算优化的方式,利用级联分解卷积代替原有的标准卷积,以及对原有模型的全卷积结构改造,模型的运算速度得到了有效的提升。相比于原来的mtcnn模型,在同样的计算环境下,算法运算速度达到了原有模型的3倍,目前可以支持在普通的智能手机上实时进行人脸检测。

(2)通过提出的迭代贪心压缩算法,对原有的模型进行了有效地参数压缩。相比于原来的mtcnn模型,在精度损失不超过5%的情况下,参数规模为原有参数规模的1/3,在精度损失不超过10%的情况下,参数规模为原有规模的1/5,在确保检测精度的情况下,目前在智能手机端运行的模型参数大小可以控制在500kb以内。

附图说明

图1为本发明全卷积神经网络的结构示意图;

图2为现有标准卷积示意图;

图3为本发明逐通道卷积示意图;

图4为本发明逐点卷积示意图;

图5为迭代贪心压缩算法的流程图。

具体实施方式

以下结合附图对本发明所保护的技术方案做具体说明。

请参阅图1至图5。本发明提出了一种基于优化的全卷积神经网络的人脸检测方法,是对现有mtcnn模型的改进,主要包括训练阶段和使用阶段两个部分;主要包括如下步骤:

s1.建立全卷积神经网络模型;

本发明的全卷积神经网络模型是在现有mtcnn模型的基础上的改进,具体地,将mtcnn模型中的全连接层全部替换为卷积层,即将现有mtcnn模型中的r-net网络层的全连接层替换为卷积层,构成r-net改进网络层,将现有mtcnn模型中的o-net网络层的全连接层替换为卷积层,构成o-net改进网络层,而p-net网络层与mtcnn模型中的p-net相同。

s2.准备训练数据;

同其他的人脸检测模型一样,首先需要准备大量的训练图片用于训练网络参数,训练图片中都必须包含至少一个人脸,同时需要获取到这些人脸在图片中的位置信息,同时考虑到模型多任务学习设计中的人脸关键点检测任务,因此还需要知道这些人脸对应的关键点位置信息,需要包含5个关键点:左眼、右眼、鼻子、左嘴角、右嘴角。由于在实际场景中,人脸所出现的场景是十分多样的,人脸本身的表情等变化也十分丰富,因此在准备训练数据时,需要尽可能地包含多种不同场景下、不同人脸变化的图片,通过对这些复杂多变的训练数据进行拟合学习,训练出的模型才能在更加复杂的真实场景中表现得更加鲁棒。准备好足够的训练数据之后,就可以按照后续的步骤进行模型的训练。

在其中一个实施例中,训练数据可以来源于wider_face,celeba等数据库。

s3.对所述全卷积神经网络模型进行训练;

在本实施例中,对本发明的全卷积神经网络模型进行训练采用tensorflow框架,为加快模型各网络层的运算速度,对各网络层的卷积运算采用级联分解卷积运算,所述级联分解卷积运算包括逐通道卷积运算和逐点卷积运算,在本实施例中,参照mobilenet模型(请参阅howardag,zhum,chenb,etal.mobilenets:efficientconvolutionalneuralnetworksformobilevisionapplications[j].arxivpreprintarxiv:1704.04861,2017.)中深度可分解卷积的设计,将现有mtcnn模型中的标准卷积进行平面和通道上的分解计算,依次进行卷积计算。

在标准的卷积运算中,面对多个特征图的输入,对应的卷积核会有多个多通道的卷积核,如图2所示,一次卷积层的前馈计算需要的计算量是s*s*l*k*t*t;计算量加大,如图3和图4可知,分解后的逐通道卷积运算和逐点卷积运算的计算量分别为s*s*l*t*t和s*s*l*k,故采用级联分解卷积运算的计算量为(s*s*l*t*t+s*s*l*k),通过比较本发明的级联分解卷积运算和现有的标准卷积运算的计算量可知,两者的比值为(1/k+1/t2),而通常卷积核的个数k值较大,故现有的标准卷积的计算量约为本发明级联分解卷积运算计算量的t2,由此可知,采用本发明的级联分解卷积运算能够有效的降低卷积部分的计算量。

由图1可知,本发明的模型的网络结构,其中,p-net网络层的第一层卷积层的逐通道卷积运算采用1个3*3的卷积核,而逐点卷积运算采用3个1*1卷积核;第二层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和10个1*1卷积核;第三层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和16个1*1卷积核;而r-net改进网络层的第一层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和3个1*1卷积核;第二层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和28个1*1卷积核;第三层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和48个1*1卷积核;所述o-net改进网络层的第一层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和3个1*1卷积核;第二层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和32个1*1卷积核;第三层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和64个1*1卷积核;第四层卷积层的逐通道卷积运算和逐点卷积运算分别采用1个3*3的卷积核和64个1*1卷积核。

由以上可知,虽然各网络层的结构略有不同,但三者的预测任务均由人脸的分类预测、人脸的位置预测以及人脸关键点的位置预测三个子任务组合而成;其中,所述人脸的分类预测是指判断对应区域中是否含有人脸;所述人脸的位置预测是指若含有人脸的话,则预测对应人脸在图像中的具体位置;所述人脸关键点的位置预测是指若含有人脸的话,则预测人脸中的五个关键点在图像中的具体位置;故将以上三个子任务作为本网络的预测目标。

具体地,本步骤包括如下具体步骤:

s31.利用步骤s2中准备的训练数据,对步骤s1建立的全卷积神经网络模型中p-net网络层的参数依次进行迭代训练;

s32.利用迭代贪心压缩算法分别对步骤s31迭代训练完成的参数进行压缩修剪,得到实用的p-net网络层;

s33.按照步骤s31,s32的训练方法,利用实用的p-net网络层对后续的r-net改进网络层和o-net改进网络层进行级联训练,得到训练好的全卷积神经网络模型。

由于本发明提出的全卷积神经网络模型的三个网络层为级联结构,即p-net网络层的输出作为r-net改进网络层的输入,而r-net改进网络层的输出作为o-net网络层的输入;故在对本发明的模型进行训练时,训练过程也采用级联的方式进行,即先完成p-net网络层的训练,得到实用的p-net网络层,然后再对后续的r-net改进网络层进行训练,即需要使用训练好的p-net网络层对训练数据进行计算,并将输出结果整理好,作为r-net的训练样本;对于o-net改进网络层的训练亦如此。

对于步骤s31,包括如下更具体的步骤:

s311.确定全卷积神经网络模型的目标函数;

s312.使用反向传播和随机梯度下降的方式对模型参数进行迭代训练;

其中,所述全卷积神经网络模型的目标函数为:

ai为p-net网络层,r-net改进网络层以及o-net改进网络层的人脸分类检测、人脸框的位置预测以及人脸关键点的位置预测对应的权重值;lossi为p-net网络层,r-net改进网络层以及o-net改进网络层的人脸分类检测、人脸框的位置预测以及人脸关键点的位置预测对应的损失函数;

loss1为人脸分类预测的损失参数,可以表示为loss1=-(log(p)+(1-x)(1-log(p)));

loss2为人脸框的位置预测的损失函数,可以表示为:

loss3为人脸关键点的位置预测的损失函数,可以表示为:其中,p表示p-net网络层,r-net改进网络层以及o-net改进网络层的输出;x为训练样本的标注信息;1表示是人脸,0表示不是人脸;y0为四维数值向量,表示各网络层对于人脸位置的实际预测值;y为四维数值向量,表示训练样本对应的标注人脸位置信息;z0为十维数值变量,表示各网络层对于人脸五个关键点位置的实际预测值;z为十维数值变量,表示训练样本对应的标注人脸关键点信息。

由于各个网络层的训练侧重点不同,故各个网络层训练时的权重值的偏重不同,如p-net网络层和r-net改进网络层的更需要有效地甄别出非人脸的区域,故其权重值更偏向于人脸分类预测任务,在其中一个实施例中,其在三个子任务的权重值ai均分别为1.0,0.5,0.5;而o-net改进网络层的作为最终的输出网络层,对于检测位置的精度要求更高,故其更偏向于人脸框的位置预测以及人脸关键点的位置预测,在其中一个实施例中,其在三个子任务的权重值ai分别为0.5,1.0,1.0。

步骤32用于完成对各网络层中参数的修剪,采用迭代贪心压缩算法进行运算,如图5所示,具体包括如下步骤:

s321.从单个网络层的第一个特征图开始压缩;

s322.通过置0的方式,得到当前卷积层的各各个特征图对应的测试精度损失;

s323.将精度损失最小的特征图对应的卷积核删除;

s324.对应修改当前卷积层的前后层的大小,并对该网络层进行重新训练至收敛;

s325.判断是否达到终止条件,若是则对本网络层的压缩结束;若否,则转到下一步;

s326.判断是否达到最后一个卷积层,若是,则重新开始步骤s322;若否,则将后一卷积层设置为当前层,转至s322。

优选的,步骤s325中的终止条件为:所述全卷积神经网络模型的精度损失达到设定的不可接受的阈值,或者压缩比例达到设定的期望值。具体的阈值数值可以根据实际应用的需要来自由设定,但一般要考虑客观的情况,需要遵循压缩比例过大会导致模型精度出现明显下降这一实际的规律。

以上,首先通过对p-net网络层进行训练,并对其参数进行修剪,已建立实用的p-net网络层,随后,利用实用的p-net网络层的输出作为r-net改进网络层的输入,重复步骤s31,和s32,对r-net改进网络层进行训练,并完成其参数的修剪;最后将r-net改进网络层的输出作为o-net改进网络层的输入,对其进行训练,并完成其参数的修剪,从而实现对整个模型的训练;且经过以上训练后,三个网络层的训练都顺利收敛。

s4.使用训练完成后的全卷积神经网络模型对待测图像进行人脸检测;

当完成对模型的全部训练,建立实用的全卷积神经网络模型后,即进入本模型的使用阶段,具体包括如下步骤:

s41.构建图像金字塔;

为了尽可能地提升检测的召回率,在将图片输入到网络之前,需要对图片进行不同尺度上的伸缩变换,本发明采用建立图像金字塔的方式,以使得网络可以对不同大小的人脸都能有效检出,构建图像金字塔的步骤包括如下步骤:

s411.确定图像金字塔的基础缩放尺度,所述基础缩放尺度为m/12;其中m为图片中需要检测到的最小人脸大小m*m;由于p-net网络层的输入大小为12*12,故将基础缩放尺度设定为m/12。

s412.构建图像尺度金字塔:将所述基础缩放尺度作为初始值,按照缩放后的图片的面积是前一层的1/2的迭代策略,直到缩放后的图片的较短边的长度小于12停止迭代;

s423.使用构建好的图像尺度金字塔作为缩放比例,将待测图片缩放到不同的大小,已建立该待测图片的图像金字塔。

s42.级联的人脸检测,将图像金字塔内的图片依次输入到训练后的全卷积神经网络模型中的p-net网络层中,并汇总不同尺度图片对应的人脸候选框,由于不同尺度的图片突出了不同尺度的人脸,因此需要将每个尺度图片得到的输出人脸候选框进行汇总,在其中一个实施例中,同时使用nms算法消除所有候选框中的重复框。

s43.将p-net网络层的输出作为r-net改进网络层的输入,得到优化后的人脸候选框;

r-net改进网络层的主要作用是进一步甄别出p-net网络层的输出结果中并不包含人脸的候选框,以及尽可能对p-net网络层中的输出的比较粗糙的人脸框位置进行更精细的调整,缩小人脸框的范围,同样需要对输出结果进行汇总,在其中一个实施例中,同样采用nms算法实现去重,以得到一些相对比较可能的人脸候选框的结果,作为后续o-net改进网络层的输入。

s44.将r-net改进网络层的输出作为o-net改进网络层的输入,得到最终的人脸检测结果;本步骤是对r-net改进网络层的输出进行最终的分类判断,以及最终的人脸位置的精细化测定,同时还需要对每个输出的人脸框给出对应的五个人脸关键点的位置信息,在其中一个实施例中,同样采用nms算法实现去重,从而得到最终的人脸检测结果。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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