一种基于查找表激活函数的人脸关键点检测方法与流程

文档序号:17604600发布日期:2019-05-07 20:37阅读:456来源:国知局
一种基于查找表激活函数的人脸关键点检测方法与流程
本发明涉及图像检测
技术领域
,特别是涉及一种基于查找表激活函数的人脸关键点检测方法。
背景技术
:人脸关键点检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸图像,定位出人脸面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓等。人脸关键点检测方法大致分为三种,分别是基asm(activeshapemodel)和aam(activeappearncemodel)的传统方法,基于级联形状回归的方法以及基于深度学习的方法。深度学习近年发展迅猛,以神经网络为代表,解决了诸多领域以前难以解决的问题。目前形成的基本共识是在神经网络每层的结尾加上激活函数来提高神经网络的非线性表达能力,常用的激活函数为relu,以及一些变种包括prelu、leaky_relu等,这些激活函数能一定程度上增加网络非线性,但是形式过于固定,不够灵活。在人脸关键点检测中,目前使用的神经网络的非线性表达能力差,导致人脸关键点检测的精度低,计算量高。技术实现要素:为了解决上述问题,本发明提供一种基于查找表激活函数的人脸关键点检测方法,提出一种基于查找表的激活函数实现方法,并且将其应用在人脸关键点检测中,能大大提高网络的非线性表达能力,提高人脸关键点检测的精度,并且计算量小。为此,本发明采用的技术方案是:提供一种基于查找表激活函数的人脸关键点检测方法,该方法包括以下步骤:s1、获取包含人脸的rgb图像,并获取所述rgb图像中矩形人脸框,得到带人脸框的rgb图像;s2、将带人脸框的rgb图像转换为灰度图像;s3、将步骤s2中的所述人脸框转换为第一正方形框;s4、根据所述第一正方形框对所述灰度图像进行剪裁,得到第一剪裁图像;将所述第一剪裁图像缩放到64x64,得到第一人脸图像;s5、将所述第一人脸图像输入预设的基于查找表激活函数的第一网络,输出得到人脸各部位的mask图;s6、将人脸各部位的mask图二值化,得到二值化图像;s7、获取人脸各部位的中心坐标;s8、根据人脸各部位的中心坐标确定第二正方形框;s9、根据所述第二正方形框对所述灰度图像进行剪裁,得到第二剪裁图像;将所述第二剪裁图像缩放到64x64,得到第二人脸图像;s10、将所述第二人脸图像输入预设的基于查找表激活函数的第二网络,输出得到坐标值;s11、将步骤s10得到的所述坐标值映射到所述灰度图像中,得到最终的人脸关键点。进一步的是,步骤s5中,所述第一网络为基于查找表激活函数的全卷积网络。进一步的是,步骤s9中,所述第二网络为基于查找表激活函数的cnn+fc网络。进一步的是,所述查找表激活函数的定义如下:其中,wj为第一网络或第二网络中训练得到的参数,其构成长度为2n+1的一维向量w={w-n,w-n+1,...,w0,...,wn-1,wn},x表示查找表激活函数输入,y表示查找表激活函数输出,n为大于1的整数,n的值根据情况设置(通过观察卷积层和全连接层输出的数值分布进行行设置),n越大,查找表越大,相应的精度越高。查找表激活函数初始化按照y=x进行。进一步的是,所述查找表激活函数出现在卷积层或全连接层之后。进一步的是,由于经过训练的神经网络的数值范围可能变小(比如集中在-1到1之间),因此,在此情况下,对查找表激活函数的输入数值进行放大2-3倍。进一步的是,所述人脸各部位包括左眼、右眼和嘴唇。进一步的是,步骤s3中,所述转换的方法为:其中,fr2为第一正方形框的四元组,x1为所述人脸框左上角的横坐标,y1为所述人脸框左上角的纵坐标,w1为所述人脸框的长度,h1为所述人脸框的宽度。进一步的是,获取左眼、右眼或嘴唇的中心坐标的方法包括:s71、获取所述二值化图像的有效区域中所有像素点坐标;s72、计算所有像素点坐标的平均值,得到第一平均值;s73、计算每个像素点到所述第一平均值的距离,并将所述像素点按所述距离的大小升序排列,得到升序排列后的像素点;s74、计算所述升序排列后的像素点的前50%的像素点坐标的平均值,得到所述第一中心坐标;s75、计算所述第一中心坐标在所述灰度图像中的坐标,获得左眼、右眼或嘴唇的中心坐标,所述左眼、右眼或嘴唇的中心坐标的获得方法为:p=qm2*ratio1+fr2(0,1)其中,p为左眼、右眼或嘴唇的中心坐标,qm2为步骤s74得到的第一中心坐标,ratio1为步骤s4中第一比例,fr2(0,1)为所述第一正方形框的左上角的横纵坐标。进一步的是,步骤s11的映射方法为:其中,landmark表示最终的人脸关键点,landmark1表示步骤s10得到的坐标值,ratio2表示步骤s9中缩放比例,b0(0)表示点b0的x坐标,b0(1)表示点b0的y坐标。本发明方法的理论原理如下:图像中人脸关键点检测的精度要求使其对非线性表达能力的要求较高,现有技术以具有较强非线性表达能力神经网络来满足上述要求,激活函数是加强神经网络非线性表达能力的重要部分,查找表的激活方式,本质上是分段线性函数,每段线性函数之间的值通过线性插值获取激活值,相比常用的relu等激活函数拥有更强的非线性,将其运用到神经网络中,使计算简单快速,并不增加原有网络的计算负担,且提高人脸关键点检测的精度。采用本技术方案的有益效果:与现有技术相比,本发明使用的全卷积网络具有非常好的平移不变性,能够比较准确地找到眼睛和嘴唇区域;使用全卷积网络重新确定的人脸区域,能够有效地降低人脸关键点检测对原始人脸框的依赖,实验证明,无论实际人脸位于原始人脸框的哪个角落,本文算法均能准确地检测到人脸关键点的坐标;同时,所使用的神经网络训练时引入lut查找表激活函数,拟合复杂的映射函数,增加神经网络的非线性表达能力,提高人脸关键点检测的精度,计算简单,运算速度快。附图说明图1是本发明方法的流程图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明作进一步阐述。在本实施例中,如图1所示,一种基于查找表激活函数的人脸关键点检测方法,该方法包括以下步骤:s1、获取包含人脸的rgb图像,并获取所述rgb图像中矩形人脸框fr1,得到带人脸框的rgb图像;fr1可以进一步表示为(x1,y1,w1,h1)四元组,其中x1,y1代表矩形框左上角的横纵坐标,w1,h1代表矩形框的长和宽,本实施例中以fr1(0)表示访问四元组的第一个元素,即x1,fr1(0,1)表示x1,y1,其它类推。s2、将带人脸框的rgb图像irgb转换为灰度图像igray;s3、将步骤s2中的所述人脸框转换为第一正方形框fr2;其中,fr2为第一正方形框的四元组,x1为所述人脸框左上角的横坐标,y1为所述人脸框左上角的纵坐标,w1为所述人脸框的长度,h1为所述人脸框的宽度。s4、根据所述第一正方形框fr2对所述灰度图像igray进行剪裁,得到第一剪裁图像;将所述第一剪裁图像进行缩放,得到第一人脸图像iroi1(64x64);令缩放比例为ratio1。s5、将所述第一人脸图像iroi1输入预设的基于查找表激活函数的第一网络net1,得到人脸各部位的mask图m0,m1,m2,具体指左眼、右眼和嘴唇;s6、将m0,m1,m2二值化,得到二值化图像mbin0,mbin1,mbin2,,白色表示有效区域,黑色表示无效区域;s7、获取人脸各部位的中心坐标左眼p0=(x0,y0),右眼p1=(x1,y1),嘴唇p2=(x2,y2);以p0为例,其计算方式为:设二值化图mbin0的白色区域内像素点坐标为qk,k=0,1,2,…,n-1,n,表示白色像素点个数;a.取mbin0内白色区域像素点坐标的均值qm1;b.计算qk到qm1的距离dk;c.将qk按dk大小对应进行升序排列,计算排序前50%的像素点坐标的均值qm2,qm2即为p0的中心坐标;d.计算所述中心坐标在igray中的坐标,公式为p0=qm2*ratio1+fr2(0,1);p1和p2的中心坐标点的计算方式类推可得。s8、根据人脸各部位的中心坐标确定第二正方形框;a1.计算点p2到直线p0p1的距离d2;b1.计算中点坐标其中|p0p1|代表p0到p1的距离;c1.令r1=1.4max(|p0p1|,d2),r2=1.8max(|p0p1|,d2),r3=2.2max(|p0p1|,d2),b0b1b2b3所确定的正方形即是第二正方形框。s9、根据所述第二正方形框对所述灰度图像进行剪裁,得到第二剪裁图像;将所述第二剪裁图像进行缩放,得到第二人脸图像iroi2;具体的,裁剪b0b1b2b3区域的图像,并缩放到固定大小(64x64),记缩放比例为ratio2,缩放后的图像作为精确的人脸图像区域iroi2,同时计算b0b1b2b3区域相对于igray的旋转角度θ,即与x正方向的夹角(逆时针);本文所涉及到的坐标均是以图像左上角为原点,图像右边为x正方向,图像下边为y正方向;s10、将所述第二人脸图像iroi2输入预设的基于查找表激活函数的第二网络net2,得到坐标值landmark1;其中landmark1为3×m的矩阵(每一列代表一个点的坐标以及一个常数1),m为正整数,本实施例取68;s11、将landmark1所述坐标值映射到所述灰度图像igray中,得到最终的人脸关键点。映射方法为:本实施例中,第一网络net1为基于查找表激活函数全卷积网络,具体的:net1:该网络主要完成semanticsegment任务,输入为单通道灰度图,输出为4通道分类结果,4个通道分别代表背景、左眼区域、右眼区域、嘴唇区域(后三个结果分别对应m0,m1,m2),网络采用全卷积网络,配合softmaxcrossentropy分类器。网络的使用查找表(lut)激活函数的使用,表1的结构是本实施例使用的一个全卷积网络的例子。表1本实施例中全卷积网络结构net2:在本实施例中,该网络输入为单通道灰度图,输出为人脸关键点坐标,该网络为典型的cnn+fc的结构,使用了查找表(lut)激活函数,表2的结构是本实施例使用的一个全卷积网络的例子。表2本实施例中cnn+fc网络结构blk(1,20,5×5,1)maxpooling(2×2,2)blk(20,48,5×5,1)maxpooling(2×2,2)blk(48,64,3×3,1)maxpooling(2×2,2)blk(64,64,3×5,1)fc(1024,256)lutfc(256,136)在表1和表2中:blk(in,out,k×k,s):输入为in通道,输出为out通道,k×k的kernel,stride为s的卷积层+lut;maxpooling(k×k,s):k×k的kernel,stride为s的最大池化;fc(in,out):输入为in个节点,输出为out个节点的全连接层;unpooling(k×k,s):k×k的kernel,stride为s的反池化,本文中的unpooling(2x2,2)相当于将featuremap逐个放大2倍;lut:查找表激活层;softmax:softmax激活函数;element-wiseadd:逐元素加法;本实施例使用的lut激活函数出现在卷积层以及fc层之后,卷积层的输出特征图的维度为b×c×h×w,fc层的输出特征图的维度为b×c,b代表batchsize,c代表通道数,h代表卷积层的输出特征图高度,w代表卷积层的输出特征图宽度。本实施例提出的lut激活层根据通道数设置为c个查找表。所述查找表激活函数的定义如下:其中,wj为第一网络或第二网络中训练得到的参数,其构成长度为21(n=10)的一维向量w={w-n,w-n+1,...,w0,...,wn-1,wn},x表示查找表激活函数输入,y表示查找表激活函数输出,j=-10,-9,-8...9。查找表激活函数初始化按照y=x进行。对查找表激活函数的输入数值进行放大3倍。以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1