技术简介:
本专利针对现有人脸定位技术精度不足的问题,提出基于深度单卷积神经网络的解决方案。通过构建包含4个卷积层、4个最大池化层和2个全连接层的网络结构,结合预处理生成的多角度训练样本,对网络参数进行优化训练,实现对测试图像中人脸特征点的高精度定位,显著提升了定位准确率。
关键词:人脸定位,深度单卷积神经网络,高精度
本发明涉及人脸定位领域,具体而言,涉及一种人脸定位方法和装置。
背景技术:
:现有技术中,人脸识别技术的应用越来越广泛,但是,在现有的人脸识别方案中关键的步骤为人脸定位技术,其中,人脸定位技术主要是对多个特征点进行定位,即在人脸检测的基础上自动定位出人脸关键点,例如,眼睛、鼻子、嘴巴、轮廓等特征点。特征点定位在识别系统中扮演着一个很重要的角色,它是识别正确与否的关键。因此,所以为了得到识别率高、鲁棒性好的识别系统,研究特征点定位是非常重要的。人脸特征点定位的研究意义不仅仅局限于人脸识别,还可以将其定位结果应用于其他方向,比如现在很火的美图秀秀、自动人脸识别、表情识别以及人脸动画自动合成等。现有技术中,最初的人脸定位算法都是基于局部分类器的滑动窗口搜索方法,这种方法将面部特征描述成高维空间中的一个点,用大量的样本进行训练,构造出能够区分两类样本的分类器,然后用分类器得到每一个关键点坐标;或者基于点分布模型的方法,比如,asm(activeshapemodel)和aam(activeappearancemodel)方法等。近些年来,人脸定位技术的研究取得了飞速的进展,有部分新的人脸定位算法被提出,目前,使用的最多的是级联形状回归模型和基于深度学习的方法。级联形状回归模型就是使用回归模型,直接学习从人脸特征到人脸形状的映射函数,进而,建立从表观到形状的对应关系。现有很多基于回归的方法中,比较突出的有dcr方法(deepcascadedregression)、esr(explicitlyshaperegression)方法、lbf(localbinaryfeatures)方法以及sdm(superviseddecentmethod)方法。上述回归函数的学习依赖于预先选取的训练集,如果训练集中包含了复杂的变化,学习到的函数测试性能就会比较好。但是,上述方法也存在一定的问题,例如,滑动窗口搜索方法是基于局部图像特征的,而局部特征很容易产生歧义点,因此,这类方法很难找到具有全局信息的关键点。基于点分布模型的方法和基于形状回归的方法都很依赖于初始值,其中,初始值通常由训练集的平均形状来给定,如果初始值或者设定的平均形状远远偏离目标位置,很难收敛到正确位置。比如,训练集中大部分都是正脸,那么对于测试集中大偏转角度人脸图像的定位就比较困难。针对上述的问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种人脸定位方法和装置,以至少解决现有的人脸定位技术中定位精确度较差的技术问题。根据本发明实施例的一个方面,提供了一种人脸定位方法,包括:获取待训练样本,其中,所述待训练样本包含至少一个待训练图像,并且所述至少一个待训练图像中包含待训练的人脸图像;使用所述待训练样本训练深度单卷积神经网络模型的目标参数的参数值,得到训练之后的所述深度单卷积神经网络模型;通过训练之后的所述深度单卷积神经网络模型对待测试图像中包含的人脸图像的特征点进行定位,输出定位结果,其中,所述深度单卷积神经网络模型由依次连接的多个网络层构成,所述多个网络层用于对所述待训练样本或所述待测试图像进行单次数据处理,所述多个网络层包括:至少一个卷积层,至少一个最大池化层,至少一个全连接层。进一步地,所述深度单卷积神经网络模型的所述多个网络层依次由4个卷积层、4个最大池化层、2个全连接层构成。进一步地,所述深度单卷积神经网络模型的所述多个网络层依次由第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第一全连接层、第二全连接层构成。进一步地,所述第一卷积层的卷积核为7*7的卷积核,并且所述第一卷积层的步长为1;所述第二卷积层、所述第三卷积层和所述第四卷积层的卷积核均为3*3的卷积核,并且所述第二卷积层、所述第三卷积层和所述第四卷积层的步长均为1。进一步地,获取待训练样本包括:在原始待训练图像中生成人脸检测框,其中,所述人脸检测框中包含所述原始待训练图像中的人脸图像;以所述人脸检测框的中心为旋转中心,按照预设角度旋转所述原始待训练图像,其中,所述预设角度至少为一个;截取旋转之后处于所述人脸检测框中的第一人脸图像,并将截取到的所述第一人脸图像作为所述多个待训练样本。进一步地,所述获取待训练样本还包括:将处于所述人脸检测框中的人脸图像平移预设距离,其中,所述预设距离为所述人脸检测框尺寸的预设倍数,所述平移包括以下至少之一:向上平移、向下平移、向左平移、向右平移;截取平移之后处于所述人脸检测框中的第二人脸图像,并将截取到的所述第二人脸图像作为所述待训练样本。根据本发明实施例的另一方面,还提供了一种人脸定位装置,包括:获取单元,用于获取待训练样本,其中,所述待训练样本包含至少一个待训练图像,并且所述至少一个待训练图像中包含待训练的人脸图像;训练单元,用于使用所述待训练样本训练深度单卷积神经网络模型的目标参数的参数值,得到训练之后的所述深度单卷积神经网络模型;定位单元,用于通过训练之后的所述深度单卷积神经网络模型对待测试图像中包含的人脸图像的特征点进行定位,输出定位结果,其中,所述深度单卷积神经网络模型由依次连接的多个网络层构成,所述多个网络层用于对所述待训练样本或所述待测试图像进行单次数据处理,所述多个网络层包括:至少一个卷积层,至少一个最大池化层,至少一个全连接层。进一步地,所述深度单卷积神经网络模型的所述多个网络层依次由4个卷积层、4个最大池化层、2个全连接层构成。进一步地,所述深度单卷积神经网络模型的所述多个网络层依次由第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第一全连接层、第二全连接层构成。进一步地,所述第一卷积层的卷积核为7*7的卷积核,并且所述第一卷积层的步长为1;所述第二卷积层、所述第三卷积层和所述第四卷积层的卷积核均为3*3的卷积核,并且所述第二卷积层、所述第三卷积层和所述第四卷积层的步长均为1。进一步地,所述获取单元包括:生成模块,用于在原始待训练图像中生成人脸检测框,其中,所述人脸检测框中包含所述原始待训练图像中的人脸图像;旋转模块,用于以所述人脸检测框的中心为旋转中心,按照预设角度旋转所述原始待训练图像,其中,所述预设角度至少为一个;第一截取模块,用于截取旋转之后处于所述人脸检测框中的第一人脸图像,并将截取到的所述第一人脸图像作为所述多个待训练样本。进一步地,所述获取单元还包括:平移模块,用于将处于所述人脸检测框中的人脸图像平移预设距离,其中,所述预设距离为所述人脸检测框尺寸的预设倍数,所述平移包括以下至少之一:向上平移、向下平移、向左平移、向右平移;第二截取模块,用于截取平移之后处于所述人脸检测框中的第二人脸图像,并将截取到的所述第二人脸图像作为所述待训练样本。在本发明实施例中,首先通过待训练样本对待训练图像对深度单卷积神经网络进行训练,其中,主要是对深度单卷积神经网络模型的目标参数的参数值进行训练,得到训练之后的深度单卷积神经网络之后,就可以根据训练好的深度单卷积神经网络对待测试图像中的人脸图形进行测试,相对于现有技术中的人脸定位方法,本发明实施例中采用了深度单卷积神经网络模型进行人脸定位,基于深度单卷积神经网络模型的优点,在进行人脸定位时,达到了对待测试图像中的人脸图像进行精准定位的目的,从而实现了提高了人脸定位技术中的定位精确度的技术效果,进而解决了现有的人脸定位技术中定位精确度较差的技术问题。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据本发明实施例的一种人脸定位方法的流程图;图2是根据本发明实施例的一种深度单卷积神经网络的网络结果的示意图;图3是根据本发明实施例的一种原始框和人脸检测框的示意图;图4是根据本发明实施例的一种对原始待训练图像进行旋转之后的示意图;图5是根据本发明实施例的一种对原始待训练图像进行平移之后的示意图;图6是根据本发明实施例的一种对原始待训练图像进行镜像之后的示意图;图7是根据本发明实施例的一种人脸定位结果的示意图;图8是根据本发明实施例的另一种人脸定位结果的示意图;图9是根据本发明实施例的一种累积误差曲线的示意图;图10是根据本发明实施例的另一种人脸定位方法的流程图;以及图11是根据本发明实施例的一种人脸定位装置的示意图。具体实施方式为了使本
技术领域:
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本发明实施例,提供了一种人脸定位方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本发明实施例的一种人脸定位方法的流程图,如图1所示,该方法包括如下步骤:步骤s102,获取待训练样本,其中,待训练样本包含至少一个待训练图像,并且至少一个待训练图像中包含待训练的人脸图像。在本发明实施例中,待训练样本由至少一个待训练图像组成,每个待训练图像中均包含待训练的人脸图像。上述待训练样本为技术人员对原始图像进行预处理之后得到的图像样本。具体地,对原始图像进行预处理的过程将在下述实施例中进行详细说明。步骤s104,使用待训练样本训练深度单卷积神经网络模型的目标参数的参数值,得到训练之后的深度单卷积神经网络模型。在本发明实例中,使用上述预处理之后得到的待训练样本对深度单卷积神经网络模型进行训练,主要是训练该网络模型的权重和偏置项,进而实现对深度单卷积神经网络的训练,其中,权重和偏置项即为上述目标参数。需要说明的是,在本发明实施例中,选取的深度单卷积神经网络模型由依次连接的多个网络层构成,多个网络层用于对待训练样本或待测试图像进行单次数据处理,多个网络层由至少一个卷积层,至少一个最大池化层,至少一个全连接层构成。由于深度单卷积神经网络具有无级联,无多任务,无多网络融合的特性。因此,在对人脸进行定位时,采用深度单卷积神经网络模型不仅能够在一定的程度上解决大角度偏转图像对结果的影响,而且深度单卷积神经网络算法在时间和空间的复杂度都要比多层深度网络低,因此,泛化性和识别结果要优于一般方法。步骤s106,通过训练之后的深度单卷积神经网络模型对待测试图像中包含的人脸图像的关键位置点进行定位,输出定位结果。在本发明实施例中,在对深度卷积神经网路进行多次训练之后,就可以使用训练好的深度单卷积神经网络模型对待测试图像中包含的人脸图像的关键位置点进行定位,并输出定位结果。在本发明实施例中,首先通过待训练样本对待训练图像对深度单卷积神经网络进行训练,其中,主要是对深度单卷积神经网络模型的目标参数的参数值进行训练,得到训练之后的深度单卷积神经网络之后,就可以根据训练好的深度单卷积神经网络对待测试图像中的人脸图形进行测试,相对于现有技术中的人脸定位方法,本发明实施例中采用了深度单卷积神经网络模型进行人脸定位,基于深度单卷积神经网络模型的优点,在进行人脸定位时,达到了对待测试图像中的人脸图像进行精准定位的目的,从而实现了提高了人脸定位技术中的定位精确度的技术效果,进而解决了现有的人脸定位技术中定位精确度较差的技术问题。优选地,在本发明实施例中,可以选取如图2所示的深度单卷积神经网络模型对待测试图像进行人脸定位。在如图2所示的深度单卷积神经网络模型中,多个网络层依次由4个卷积层convolution,4个最大池化层max-pooling和2个全连接层构成。需要说明的是,上述4个卷积层、4个最大池化层、2个全连接层具体连接关系有很多种,在本发明实施例中,深度单卷积神经网络模型的多个网络层依次由第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第一全连接层、第二全连接层构成。也就是说,在本发明实施例中,采用了卷积层和最大池化层max-pooling交替排布的排列方式。从图2中可以看出,第一卷积层即为深度单卷积神经网络模型的输入层,该输入层用于输入待训练图像或者输入待测试图像,其中,通过第一卷积层输入的待测试图像或者待训练图像的特征图像信息为1*224*224,即灰色图。进一步地,由于输入的待训练图像或者待测试图像很大,且深度单卷积神经网络模型的初始层提取的是简单特征,所以如图2所示,第一卷积层的卷积核选定7*7的卷积核。通过实验证明小卷积核不仅可以减少参数,还可以提高网络的非线性,因此,剩下的几个卷积核均为3*3,也就是说,第二卷积层、第三卷积层和第四卷积层的卷积核均为3*3的卷积核,其中,第一卷积层、第二卷积层、第三卷积层和第四卷积层的步长均为1。另外,在卷积中的步长为1,所有边均加上个zero-padding,通过padding,使得卷积层的输入和输出大小保持不变,也就是说,如果卷积层的输入为224*224,那么该卷积层的输出也将是224*224。进一步地,从图2中可以看出,4个最大池化层max-pooling的核均为3*3,步长均选取为2,其中,4个最大池化层max-polling层中每个最大池化层的输出为输入的一半。也就是说,第一最大池化层、第二最大池化层、第三最大池化层和第四最大池化层的输出均为输入的一半。如图2所示,在深度单卷积神经网络模型中,与第四最大池化层相连接的依次为第一全连接层和第二全连接层。从图2中可以看出,第一全连接层fc输出为120维的数据,第二全连接层fc生成68个点的坐标,即136维的数据。需要说明的是,在本发明实施例中,在每个卷积层后都有一个relu激活函数,通过设置激活函数不仅增加了深度单卷积神经网络模型的稀疏性,还提高了深度单卷积神经网络模型的非线性表征能力。其中,使用relu作为非线性激活函数能够使得深度单卷积神经网络的学习不需要预训练,在大数据和复杂的数据上,相比于sigmoid函数等更加快速和更有效率。在搭建好上述深度单卷积神经网络模型之后,就可以通过使用待训练图像对搭建好的模型进行训练,并在训练结束之后,通过训练之后的模型对待测试图像进行定位处理。其中,使用待训练图像对该深度单卷积神经网络模型进行训练时的数据处理过程,与使用训练之后的深度单卷积神经网络模型进行人脸定位时的数据处理过程相同。下面将就使用待训练图像对深度单卷积神经网络模型进行训练的训练过程进行介绍:以提取到的每个待训练图像的像素值作为输入,通过深度单卷积神经网络模型处理后,期望输出得到特征点坐标。具体地,记深度单卷积神经网络模型的输入层(即,上述第一卷积层)为i(h,w),其中,h和w分别表示为待训练图像的长和宽。在通过该输入层输入提取到的像素值之后,就可以将像素值输入至第一卷积层中进行卷积处理,其中,深度单卷积神经网络模型中的每个卷积层都有很多个卷积核作用于卷积层,第一卷积层可以表示为c(k,s,n),其中,k表示卷积核的大小,s表示步长,n表示卷积层中的特征图数量。假设,当前卷积层并不是第一卷积层,也就是说在当前卷积层之前,包含其他的网络层,并且当前卷积层的前一网络层有m个特征图(featuremaps),在此情况下,c(k,s,n)可以描述为下述公式:其中,i=0,s,2s,...,h-k+1、j=0,s,2s,...,w-k+1、t=0,...,n-1、x和y分别表示指前一层和当前层的输出、w是权重、b是偏置项。需要说明的是,在通过上述4个卷积层中的任意一个卷积层对待训练图像进行卷积处理的过程中,可以通过当前卷积层中的一个可学习的卷积核(s*s)对当前卷积层的上一网络层输出的特征图(featuremaps)进行卷积,再使用激活函数对当前卷积层输出的卷积处理结果进行进一步地处理,就可以得到当前卷积层输出的特征图(featuremaps)。在本发明实施例中,使用的激活函数是relu激活函数,该激活函数可表示为:f(x)=max(0,x)。在本发明实施例中,使用relu作为非线性激活函数能够使得深度卷积神经网络的学习不需要进行预训练,在大数据和复杂的数据上,相比于sigmoid函数等更加快速和更有效率。标准的sigmoid输出不具备稀疏性,需要通过惩罚因子来训练大量的接近于0的冗余数据,从而产生稀疏数据,比如,通过使用l1,l2作为惩罚因子来进行正则化。然而,relu作为一种线性修正的激活函数,如果当前卷积层的计算输出小于0,经过relu之后,该计算输出就等于0,否则保持原来的值。通过描述可知,relu是一种简单直接的强制将某些数据取值为0的方法,并且,训练后的深度单卷积神经网络完全具备适度的稀疏性,训练后的可视化效果和传统预训练的效果很相似。当前卷积层在采用上述方法对上一网络层输出的特征图进行卷积处理之后,当前卷积层的输出将作为下一网络层的输入,即当前卷积层的下一最大池化层的输入,并使用最大池化层对当前卷积层的输出进行处理,其中,最大池化层可以表示为p(k,s),具体地,最大池化层p(k,s)可以表示为如下公式:其中,s表示核大小,o表示步长。对于最大池化层来说,输入的特征个数与输出特征图的个数的相同,但是,输出的特征图的尺寸相对变小了,即,输出的特征图的尺寸为输入的特征图的尺寸的1/2。在前向传播的下采样操作时需要记下最大值的索引位置,用于后来的bp神经网络反传时的权值更新,其中,下采样操作由最大池化层来完成。在本发明实施例中,在使用第四最大池化层对第四卷积层的输出进行最大池化处理之后,就可以采用第一全连接层对第四最大池化层的输出进行处理,其中,第一全连接层f(n)表示为如下公式:其中,n和m分别表示为第一全连接层和第一全连接层的前一网络层的神经元数。在使用第一全连接层对第四最大池化层的输出进行处理之后,特征点的最终预测是采用第二全连接层来实现的,其中,在对特征点进行最终预测之后,还可以通过最小化代价函数数来调整参数,该参数表示为:综上,在本发明实施例中的深度单卷积神经网络模型中各个网络层的网络结构的具体参数可以表示为表1这种形式。从表1中可以看出,输入至深度单卷积神经网络模型中的特征图的像素值为224*224;然后,将该像素值依次输入至第一卷积层c1第一最大池化层p1、第二卷积层c2、第二最大池化层p2、第三卷积层c3、第三最大池化层p3、第四卷积层c4、第四最大池化层p4、第一全连接层、第二全连接层中进行相应地处理,其中,第一卷积层c1的输出即为第一最大池化层的输入,第一最大池化层的输出即为第二卷积层的输入,第二卷积层的输出即为第二最大池化层的输入,第二最大池化层的输出即为第三卷积层的输入,第三卷积层的输出即为第三最大池化层的输入,第三最大池化层的输出即为第四卷积层的输入,第四卷积层的输出即为第四最大池化层的输出,第四最大池化层的输出经过第一全连接层f5和第二全连接层(也即,输出层out)之后,得到输出定位结果。表1输入c1p1c2p2c3p3c4p4f5outi(224,224)c(7,2,20)p(3,2)c(3,1,4)p(3,2)c(3,1,6)p(3,2)c(3,1,8)p(3,2)f(120)136在本发明实施例中,待训练样本为技术人员对原始图像进行预处理之后,得到的训练样本。在人脸特征点的定位过程中,预处理是个非常重要的步骤。由于对人脸图像的特征点定位在人脸检测的基础上进行,因此,首先需要将原始图像进行人脸检测。然而,在对原始图像进行检测时,往往会出现人脸形状不全的现象,因此,在对人脸图像进行定位前,需要对原始图像进行一系列的预处理。下面将结合图3至图6对原始图像的预处理过程(即,上述步骤s102)进行详细描述。在本发明的一个可选实施方式中,获取待训练样本包括如下步骤:步骤s1021,在原始待训练图像中生成人脸检测框,其中,人脸检测框中包含原始待训练图像中的人脸图像;步骤s1022,以人脸检测框的中心为旋转中心,按照预设角度旋转原始待训练图像,其中,预设角度至少为一个;步骤s1023,截取旋转之后处于人脸检测框中的第一人脸图像,并将截取到的第一人脸图像作为多个待训练样本。如图3中的所示的图像为3个原始待训练图像,从图3中可以看出,原始待训练图像中除了包含人脸图像之外,还包含其余不属于人脸图像的冗余部分。因此,在对原始待训练图像进行预处理之前,需要对原始待训练图像去除冗余部分。具体地,首先可以采用现有技术中的人脸识别方法,框选原始待训练图像中包含的人脸图像,如图3所示,图3中符号1和符号3所示的方框即为对2个原始待训练图像中的人脸图像进行初步框选之后的方框(也即,原始框)。但是,从图3中可以看出,方框1和方框3虽然框选了人脸部分,但是,并没有框选全部的人脸,例如,部分下颚并未框选在方框1和方框3中。由于本发明实施例中,选取的关键位置点的数量为68点,因此,如果人脸的部分轮廓未框选在方框中,那么方框中框选的关键位置点的数量将少于68个。因此,为了保证68个关键位置点(也即,轮廓点)在训练样本中,在方框1和方框3的基础上,需要对方框1和方框3进行调整。例如,将原始框向上,向下,向左或者向右扩展一定距离,进而,使得68个关键位置点能够全部包含于扩展之后的原始框中,即,图3中方框2和方框4中,其中,方框2和方框4即上述人脸检测框。由于将原始框进行调整的方式有很多种,在本发明实施例中,优选地,将检测方框(即,方框1和方框3)按照如表2中所示的阈值进行调整,即,以原始框左下角的边界点为原点,向下扩展了0.12,并左右各扩展0.06。假设,对方框1和方框3(原始框)进行上述操作之后,得到人脸检测框如图3中方框2和方框4所示。从图3中可以看出,对原始框进行调整之后,人脸检测框中包含整个人脸部分,也就是说,上述68个关键位置点全部包含于人脸检测框中。表2位置上下左右变化量01.12-0.061.06在执行上述步骤s1021之后,实现了在原始待训练图像中框选人脸图像,框选上述人脸图像之后,将框选的人脸图像截取下来,即将原始待训练图像中除人脸图像之外的部分进行裁剪,得到裁剪之后的原始待训练图像。接下来,对原始待训练图像按照步骤s1022和步骤s1023中描述的方案对裁剪之后的原始待训练图像进行后续处理,例如,对裁剪之后的原始待训练图像进行旋转或者镜像,并截取旋转或者镜像处理之后处于人脸检测框中的第一人脸图像,并将截取到的第一人脸图像作为多个待训练样本。下面将旋转、平移或者镜像进行详细说明。处理一、旋转现有技术中对原始待训练图像进行旋转的方法是先将原始待训练图像进行旋转,然后,再对原始待训练图像中的人脸进行检测,得到旋转后的人脸样本,但是,该方式无法保证旋转后的特征点都在原始框内。在本发明实施例中,是以人脸检测框的中心为旋转中心,将图片按照该中心旋转特定的角度,得到旋转后的人脸样本,其中,旋转角度的范围为:±30,25,…,±5。由于本发明实施例中的旋转方式是中心旋转方式,所以即使对人脸检测框中的人脸图像旋转30度或者更多角度时,依旧能够保证所有的关键位置点在人脸检测框内。如图4所示的图就是旋转图例,其中,图4中的第一张为原图,后面4张分别为向左旋转20度、向左旋转30度,向右旋转20度,以及向右旋转30度后的图像得到一组待训练图像。进一步地,在得到如图4所示的一组待训练图像之后,还可以对上述待训练图像做镜像,得到另外一组待训练图像,以扩充训练样本。处理二、平移在本发明的一个可选实施方式中,在将添加的原始框进行调整之后,方法还包括如下步骤:步骤s1024,将处于人脸检测框中的人脸图像平移预设距离,其中,预设距离为人脸检测框尺寸的预设倍数,平移包括以下至少之一:向上平移、向下平移、向左平移、向右平移;步骤s1025,截取平移之后处于人脸检测框中的第二人脸图像,并将截取到的第二人脸图像作为待训练样本。在本发明实施例中,在将处于人脸检测框中的人脸图像平移预设距离之前,需要按照上述步骤s1021中所描述的方案确定人脸检测框,在确定人脸检测框之后,将人脸检测框所框选的人脸图像截取下来,即将原始待训练图像中除人脸图像之外的部分进行裁剪,得到裁剪之后的原始待训练图像。接下来,除了对原始待训练图像按照步骤s1021和步骤s1023中描述的方案对裁剪之后的原始待训练图像进行旋转处理之外,还可以按照上述步骤s1024和步骤s1025对裁剪之后的原始待训练图像进行平移处理预设距离,其中,预设距离为人脸检测框尺寸的预设倍数。例如,可以向上、向下、向左和向右平移,其中,向上、向下、向左和向右平移的范围为-0.03倍到0.03倍,其中,0.03倍为相对于人脸检测框的倍数。因此,上述平移的取值范围是相对于人脸检测框的大小进行选取的,也就是说,在平移时是按照不同图像的人脸检测框的大小决定的平移步长,这样能够使得平移的数量保持不变。图5显示的是平移图例的示意图,其中,第一张为裁剪之后的原始待训练图像,后面4张分别为向下、向左、向右、向上平移后的图像,平移之后得到一组待训练图像,即,图5中所示的一组待训练图像。进一步地,在得到上述待训练图像之后,还可以将上述待训练图像做镜像处理,得到另外一组待训练图像。其中,在对原始图像进行平移或者镜像处理之后,就可以截取平移或者镜像处理之后处于人脸检测框中的第二人脸图像,并将截取到的第二人脸图像作为待训练样本,以扩充训练样本。综上,在本发明实施例中,为了扩充训练样本,以保证训练集足够复杂,将裁剪之后的原始待训练图像进行中心旋转、平移,再对这些样本做镜像,最终得到多个待训练样本,优选地,本发明实施例中,可以通过上述方法得到126774个待训练样本。在得到上述多个待训练样本之后,就可以将每个训练样本进行重新裁剪224*224的样本,并将每个样本的像素值归一化到[0,1]之间,进而,得到最终的待训练样本。需要说明的是,通过上述描述可知,在本发明实施例中,待训练样本的生成方法是将原始待训练图像进行旋转,然后,再进行镜像处理;或者将原始待训练图像进行平移,然后,再进行镜像处理。除了上述方式之外,还可以首先将原始待训练图像进行旋转,然后,再进行平移,最后,进行镜像处理,得到多个待训练图像;或者首先对原始待训练图像进行平移、然后,再进行旋转,最后,进行镜像处理。如图6所示是镜像图例的示意图,其中,第二张为第一张镜像处理之后的图像,第四张为第三张镜像处理之后的图像。在本发明的一个可选实施方式中,在获取到待训练样本之后,就可以提取至少一个待训练图像中每个待训练图像的特征图像信息,例如,提取每个待训练图像的像素值,然后,使用像素值训练上述搭建完成的深度单卷积神经网络模型的目标参数的参数值。最后,将训练好的深度单卷积神经网络模型对待测试图像进行测试,经过神经网络的非线性表征输出关键位置点的坐标。通过本发明上述实施例的描述可知,在本发明中,采用的是深度单卷积神经网络模型,该模型中的多个网络层用于对待训练样本或者待测试图像进行单次数据处理,其中,单次数据处理的处理过程可以描述如下:步骤s1,将特征图像信息作为当前网络层的输入进行处理,得到处理结果,其中,当前网络层的起始网络层为深度单卷积神经网络模型的第一层网络层;步骤s2,判断当前网络层是否存在下一个网络层;步骤s3,如果判断出当前网络层存在下一个网络层,则将处理结果作为下一个网络层的输入进行处理,并根据处理结果调整目标参数的参数值;步骤s4,如果判断出当前网络层不存在下一个网络层,则将处理结果作为深度单卷积神经网络模型的训练结果。具体地,在本发明实施例中,由于深度单卷积神经网络模型包括多个网络层,并且,多个网络层是依次连接的。因此,在对深度单卷积神经网络模型进行训练时,首先,将待训练图像的特征图像信息(例如,待训练图像的像素值)输入至第一网络层a1中进行处理,得到处理结果b1。然后,判断第一网络层a1是否存在下一网络层a2,其中,如果判断出第一网络层a1存在下一网络层a2,那么根据处理结果b1调整目标参数的参数值,例如,调整深度单卷积神经网络模型中权重和偏置项的取值。在调整之后,将处理结果b1作为下一网络层a2的输入,并通过下一网络层a2对b1进行处理,得到处理结果b2。如果判断出第一网络层a1不存在下一网络层,那么将处理结果b1作为深度单卷积神经网络模型的训练结果。也就是说,在本发明实施例中,第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第一全连接层、第二全连接层中的每个网络层对待训练图像或者待测试图像的像素值均执行一遍数据处理,不会进行多次数据处理。需要说明的是,在本发明实施例中,在对深度单卷积神经网络模型进行训练的过程中,深度单卷积神经网络模型就是基于随机梯度下降法(sgd),利用大量的待训练样本去不断优化可训练参数的模型,直至网络收敛或者达到设定的学习次数训练才停止。在使用上述步骤s1至步骤s4中描述的方法对搭建好深度单卷积神经网络模型进行训练之后,就可以使用训练之后的深度单卷积神经网络dcnn来对待测试图像中的人脸进行特征点定位。在对人脸的特征点进行定位的过程中,选取了包含人脸图像中唇部的特征点、人脸图像中眼睛的特征点、人脸图像中鼻子的特征点和人脸图像中人脸轮廓的特征点等68个特征点。如图7所示,图(a)为定位之前的原图像,(b)为定位之后的图像。下面将结合图8和图9对本发明的另一可选实施例进行具体介绍。假设,在一个具体的实施方式中,按照上述方法得到的训练集为扩展后的126774张图片(即,至少一个待训练图像组成的集合),测试集为689张图片(即,至少一个待测试图像组成的集合),其中,训练集中的每张照片需要手动标定68个特征点的位置,这些图片称为标签(lable),用于训练深度单卷积神经网络的所有权值以及偏置项。对深度单卷积神经网络进行训练的最终目标就是最小化代价函数,即当训练结果满足最小化代价函数时,停止对深度单卷积神经网络模型的训练,其中,最小化代价函数使用的是平方损失函数:即:在对深度单卷积神经网络模型进行训练时,可以使用开源框架caffe训练网络对上述深度单卷积神经网络模型进行训练,其中,训练的参数可以设置为:学习率的初始值为1e-3,逐渐降到5e-5,gamma为0.94,即每50000次迭代后学习率下降为前一次的0.94倍,momentum为0.9,其中,momentum可以让使用sgd的深度学习方法更加稳定及快速。在设置完成上述训练参数之后,就可以训练集对深度单卷积神经网络模型进行训练,直至训练结果满足最小化代价函数。在使用上述训练集(即,至少一个待训练图像)对深度单卷积神经网络进行训练之后,就可以使用训练之后的深度单卷积神经网络对待测试图像进行测试。如图8所示的即为人脸的定位结果,从图8中可以看出,采用本发明实施例提供的人脸定位方法能够准确地实现人脸关键位置点的定位,并输出定位结果。需要说明的是,在本发明实施例中,可以采用300-w数据库作为实验数据,旨在优化大角度偏转图片。300-w数据库包含了很多68点定位库,比如afw,lfpw,helle,以及ibug。这个数据集对于定位来说是非常具有挑战性的,不管旋转角度还是遮挡程度都非常大。选取helen的2000张,lfpw的811张,afw的337张,总共3148张图片作为训练集,并用helen和lfpw的554张,ibug的135张图片,总共689张图片作为测试集。这个测试集的评判分为3个标准:common,challenge,fullset。其中,common包含前面554张图片,challenge包含后面135张图片,fullset就是689张图片。对这三个标准分别测试,得出测试结果。在使用上述训练之后的深度单卷积神经网络模型对待测试图像进行测试之后,发明人使用两种方法对该训练好的网络模型的性能进行了测试,其中,检验标准一般要用到的一个性能标准:就是预测的坐标值跟真实坐标值之间的平均距离。在本发明实施例中,发明人采用平均定位误差和累积误差曲线两种方法对上述网络模型的性能进行了测试。第一种算法:平均定位误差算法平均定位误差算法主要是指所有样本的所有特征点的定位误差,主要采用如下计算方式进行计算:其中,m是特征点的数目(在本发明实施例中,选取为68),p是预测值,g是真实值坐标,l和r是左瞳孔和右瞳孔的坐标,在68点的定位中不包含眼睛中心的点,用的是眼睛周围5个点的平均值作为瞳孔点的坐标。通过上述计算方法进行计算可知,采用本发明实施例中的深度单卷积神经网络进行定位时,平均定位误差为:7.49%。第二种算法:累积误差曲线累计误差曲线:平均定位误差小于设定阈值序列的样本比例曲线。累计误差曲线中的横坐标表示阈值序列,纵坐标表示样本比例,该曲线类似于人脸识别中的roc曲线,横坐标越小曲线越陡越好,用公式表示为:其中,per(i)表示平均误差小于阈值ε(i)的样本比例,ε(i)为阈值序列中第i个阈值,通常阈值序列有效取值范围在[0,0.2],mean_err(j)表示第j个样本的平均定位误差,具体地,在对上述68个点进行测试时,每个点的累积误差曲线如图9所示。通过上述性能测试可知,采用本发明实施例中的深度单卷积神经网络模型对人脸关键位置点进行定位时,定位精度明显提高,即对姿态、表情等具有鲁棒性。综上,本发明实施例,利用深度单卷积神经网络模型,自动提取待测试图像中包含的人脸图像的面部特征,然后,对人脸特征点进行了定位。同时,在本发明实施例中,还采用300-w(68点)数据库作为实验数据,旨在优化大角度偏转图片,通过中心旋转、平移和镜像对训练样本进行扩充。由于上述深度单卷积神经网络为单级网络(无级联,无多任务,无多网络融合),因此,就使得在大角度偏转图片上的定位效果大大提高,即对姿态、表情等具有鲁棒性。进一步地,在300w测试库上的3个标准:common,challenge,fullset下的测试平均错误率分别达到6.18%、12.9%、7.49%。图10是根据本发明实施例的另一种人脸定位方法的流程图,如图10所示,本发明实施例提供的人脸定位方法主要包含数据预处理过程,模型训练过程和人脸定位过程。数据预处理过程主要是对待训练图像(也即,训练样本)进行预处理,即,首先对在原始待训练图像中添加原始框,然后,对原始框进行调整,得到人脸检测框,其中,人脸检测框中包含原始待训练图像中的全部人脸图像。接下来,将人脸检测框中人脸图像截取下来,按照上述步骤s1021和步骤s1023中所描述的方案对其进行旋转和镜像处理;或者按照上述步骤s1024和步骤s1025中所描述的方案对其进行平移和镜像处理,以实现训练样本的扩充,即实现待训练图像的扩充。在扩充得到待训练图像之后,就可以使用caffe框架提取待训练图像中特征图像信息(例如,像素值),并将特征图像信息作为深度单卷积神经网络模型的输入进行训练处理。在对深度单卷积神经网络模型进行训练之后,就可以使用训练好的深度单卷积神经网络模型对待测试图像进行测试。具体地,对待测试图像进行测试的过程为:首先,调用待测试样本,然后,对待测试图像中添加原始框,并对原始框进行调整,得到人脸检测框。接下来,使用caffe框架提取设定人脸检测框之后的待测试图像的特征图像信息。最后,使用训练好的深度单卷积神经网络对特征图像信息进行测试,得到定位结果。本发明实施例还提供了一种人脸定位装置,该人脸定位装置主要用于执行本发明实施例上述内容所提供的人脸定位装置,以下对本发明实施例所提供的人脸定位装置做具体介绍。图11是根据本发明实施例的一种人脸定位装置的示意图,如图11所示,该装置包括获取单元1101、训练单元1103和定位单元1105,其中:获取单元1101,用于获取待训练样本,其中,待训练样本包含至少一个待训练图像,并且至少一个待训练图像中包含待训练的人脸图像。在本发明实施例中,待训练样本由至少一个待训练图像组成,每个待训练图像中均包含待训练的人脸图像。上述待训练样本为技术人员对原始图像进行预处理之后得到的图像样本。具体地,对原始图像进行预处理的过程将在下述实施例中进行详细说明。训练单元1103,用于使用待训练样本训练深度单卷积神经网络模型的目标参数的参数值,得到训练之后的深度单卷积神经网络模型。在本发明实例中,使用上述预处理之后得到的待训练样本对深度单卷积神经网络模型进行训练,主要是训练该网络模型的权重和偏置项,进而实现对深度单卷积神经网络的训练,其中,权重和偏置项即为上述目标参数。需要说明的是,在本发明实施例中,选取的深度单卷积神经网络模型由依次连接的多个网络层构成,多个网络层用于对待训练样本或待测试图像进行单次数据处理,多个网络层包括:至少一个卷积层,至少一个最大池化层,至少一个全连接层。由于深度单卷积神经网络具有无级联,无多任务,无多网络融合的特性。因此,在对人脸进行定位时,采用深度单卷积神经网络模型不仅能够在一定的程度上解决大角度偏转图像对结果的影响,而且深度单卷积神经网络算法在时间和空间的复杂度都要比多层深度网络低,因此,泛化性和识别结果要优于一般方法。定位单元1105,用于通过训练之后的深度单卷积神经网络模型对待测试图像中包含的人脸图像的特征点进行定位,输出定位结果,其中,深度单卷积神经网络模型由依次连接的多个网络层构成,多个网络层用于对待训练样本或待测试图像进行单次数据处理,多个网络层包括:至少一个卷积层,至少一个最大池化层,至少一个全连接层。在本发明实施例中,在对深度卷积神经网路进行多次训练之后,就可以使用训练好的深度单卷积神经网络模型对待测试图像中包含的人脸图像的关键位置点进行定位,并将定位结果。在本发明实施例中,首先通过待训练样本对待训练图像对深度单卷积神经网络进行训练,其中,主要是对深度单卷积神经网络模型的目标参数的参数值进行训练,得到训练之后的深度单卷积神经网络之后,就可以根据训练好的深度单卷积神经网络对待测试图像中的人脸图形进行测试,相对于现有技术中的人脸定位方法,本发明实施例中采用了深度单卷积神经网络模型进行人脸定位,基于深度单卷积神经网络模型的优点,在进行人脸定位时,达到了对待测试图像中的人脸图像进行精准定位的目的,从而实现了提高了人脸定位技术中的定位精确度的技术效果,进而解决了现有的人脸定位技术中定位精确度较差的技术问题。可选地,深度单卷积神经网络模型的多个网络层依次由4个卷积层、4个最大池化层、2个全连接层构成。可选地,深度单卷积神经网络模型的多个网络层依次由第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、第四卷积层、第四最大池化层、第一全连接层、第二全连接层构成。可选地,第一卷积层的卷积核为7*7的卷积核,并且第一卷积层的步长为1;第二卷积层、第三卷积层和第四卷积层的卷积核均为3*3的卷积核,并且第二卷积层、第三卷积层和第四卷积层的步长均为1。可选地,获取单元包括:生成模块,用于在原始待训练图像中生成人脸检测框,其中,人脸检测框中包含原始待训练图像中的人脸图像;旋转模块,用于以人脸检测框的中心为旋转中心,按照预设角度旋转原始待训练图像,其中,预设角度至少为一个;第一截取模块,用于截取旋转之后处于人脸检测框中的第一人脸图像,并将截取到的第一人脸图像作为多个待训练样本。可选地,获取单元还包括:平移模块,用于将处于人脸检测框中的人脸图像平移预设距离,其中,预设距离为人脸检测框尺寸的预设倍数,平移包括以下至少之一:向上平移、向下平移、向左平移、向右平移;第二截取模块,用于截取平移之后处于人脸检测框中的第二人脸图像,并将截取到的第二人脸图像作为待训练样本。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域:
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12