【发明内容】
本发明所解决的技术问题在于提供一种快速人脸检测方法,其可以较小的计算量快速检测到人脸。
为解决上述问题,本发明提出一种快速人脸检测方法,其包括:利用人脸检测模型对第一帧输入图像中的所有人脸候选窗口进行人脸检测,如果检测到一个人脸,则记录下该人脸的位置和大小参数,并退出该第一帧输入图像的人脸检测,在检测到一个人脸或在所有人脸候选窗口中均未检测到人脸时,将该第一帧输入图像保存为参考帧图像;如果在先前帧输入图像中未检测到人脸,基于参考帧图像判断当前帧输入图像中的各个人脸候选窗口是否发生运动,通过所述人脸检测模型对发生运动的人脸候选窗口进行人脸检测,如果检测到人脸,则记录下该人脸的位置和大小参数,并退出当前输入图像的人脸检测,在检测到一个人脸或在所有人脸候选窗口均未检测到人脸时,将该当前帧输入图像保存为参考帧图像。
进一步的,所述快速人脸检测方法还包括:训练得到人脸检测模型,对该人脸检测模型进行缩放得到一系列不同尺度的人脸检测模型。
更进一步的,所述快速人脸检测方法还包括:如果在先前帧输入图像中检测到人脸,并且当前帧输入图像的已记录的人脸区域未发生运动,则将先前帧中已记录的人脸的位置和大小参数作为当前帧输入图像的人脸检测结果,并将退出当前输入图像的人脸检测,将所述当前输入图像作为参考帧图像保存下来。
更进一步的,所述快速人脸检测方法还包括:如果在先前帧输入图像中检测到人脸,并且当前帧输入图像的已记录的人脸区域发生了运动,则利用所述人脸检测模型中对当前帧输入图像中的以已记录的人脸的位置为中心的一个矩形搜索区域内的所有人脸候选窗口进行人脸检测,如果检测到一个人脸,则记录下该人脸的位置和大小参数,并退出该当前帧输入图像的人脸检测,在检测到一个人脸或在该矩形搜索区域内的所有人脸候选窗口中均未检测到人脸时,将当前帧输入图像保存为参考帧图像。
再进一步的,所述快速人脸检测方法还包括:统计人脸在相邻两帧输入图像的位置变化以及大小变化符合的概率分布,其中根据所述人脸在相邻两帧输入图像的位置变化符合的概率分布确定所述矩形搜索区域,根据所述人脸在相邻两帧输入图像的大小变化符合的概率分布确定符合尺度要求的人脸检测模型。
再进一步的,所述快速人脸检测方法还包括:计算所述矩形搜索区域内的所有人脸候选窗口可能为人脸的概率,其中按照所述可能为人脸的概率的从大到小排序对所有人脸候选窗口依次进行人脸检测。
进一步的,通过对应矩形区域的归一化运动能量来判断所述人脸候选窗口或已记录的人脸区域是否运动,在所述矩形区域的归一化运动能量大于阈值,则认为所述矩形区域发生了运动,否则认为未发生运动,所述归一化运动能量基于像素运动标志掩模图像获得,求取当前帧输入图像与参考帧图像的像素亮度差,将所述像素亮度差与阈值比较,如果大于阈值,则将该像素的运动标志设定为运动,如果小于阈值,则将该像素的运动标志设定为静止,从而得到所述像素运动标志掩模图像。
进一步的,所述人脸检测模型为层次型自适应增强人脸检测模型,计算输入图像的积分图像,所述人脸检测模型在积分图像的基础上进行人脸检测。
与现有技术相比,在本发明中在先前帧图像未检测到人脸时,只对运动区域进行人脸检测,能够减少对没有发生运动区域进行人脸检测判定的工作量,节省运算量。
【具体实施方式】
下面结合说明书附图来说明本发明的具体实施方式。
图1为本发明中的快速人脸检测方法100在一个实施例中的流程示意图。如图1所示,所述快速人脸检测方法100包括如下操作。
步骤110,训练得到人脸检测模型,对该人脸检测模型进行缩放得到一系列不同尺度的人脸检测模型。
在一个实施例中,设定所述人脸检测模型的宽度和高度分别为MW和MH(比如可以取MW=24,MH=24),采用割取并放缩为此尺度的人脸样本和非人脸样本,训练层次型AdaBoost人脸检测模型。假定放缩比例为SR,则采用特征放缩的方式对所述AdaBoost人脸检测模型进行放缩得到的一系列不同尺度的人脸检测模型,它们的宽度和高度分别为ROUND(MW*SRs)和ROUNS(MH*SRs),其中s为人脸检测模型的个数,其大于0的整数,ROUND()表示对括号内的数值进行四舍五入取整运算。
步骤120,利用不同尺度的人脸检测模型对第一帧输入图像中的所有人脸候选窗口进行人脸检测。如果检测到一个人脸,则记录下该人脸的位置和大小参数(xcf,ycf,wcf,hcf),并退出该第一帧输入图像的人脸检测,其中xcf为人脸中心横坐标xcf,ycf为人脸中心纵坐标,wcf为人脸宽度,hcf为人脸高度。在检测到一个人脸或在所有人脸候选窗口中均未检测到人脸时,将该第一帧输入图像保存为参考帧图像,之后进入步骤130。
在一个实施例中,求取第一帧输入图像的积分图像,利用不同尺度的人脸检测模型分别对第一帧输入图像进行遍历人脸检测。具体的,每个尺度的人脸检测模型对应相同尺度的矩形搜索窗口,将所述搜索窗口在所述积分图像上以固定的水平步长和垂直步长进行逐步搜索,并将所述搜索窗口对应的积分图像区域提供给对应的人脸检测模型进行人脸检测,以检测该搜索窗口对应的区域是否为人脸区域。每个人脸检测模型的每个矩形搜索窗口对应的图像位置都可以被称为一个人脸候选窗口。
步骤130,判断在先前帧输入图像中是否检测到人脸,如果未检测到人脸,则进入步骤140,如果检测到人脸则进入步骤150。
步骤140,基于参考帧图像判断当前帧输入图像中的各个人脸候选窗口是否发生运动,如果一个人脸候选窗口发生运动,则通过其对应的人脸检测模型对该人脸候选窗口进行人脸检测。如果检测到人脸,则记录下该人脸的位置和大小参数(xcf,ycf,wcf,hcf),并退出该输入图像的人脸检测。在检测到一个人脸或在所有人脸候选窗口均未检测到人脸时,将该当前帧输入图像保存为参考帧图像,之后返回步骤130。
在一个实施例中,求取当前帧输入图像与参考帧图像的像素亮度差,将所述像素亮度差与阈值比较,如果大于阈值,则将该像素的运动标志设定为1(表示运动),如果小于阈值,则将该像素的运动标志设定为0(表示静止),从而得到像素运动标志掩模图像MI。可以基于所述像素运动标志掩模图像MI确定一个矩形区域是否发生运动。
在一个示例中,一个矩形区域R(left,top,right,bottom)的运动能量ME为:
其中left,top,right,bottom分别为所述矩形区域左边沿横坐标,上边沿纵坐标,右边沿横坐标,上边沿纵坐标,MI(i,j)为(i,j)像素的运动标志。
所述矩形区域的归一化运动能量NME为:
在另一个示例中,可以采用基于像素运动标志掩模图像MI的积分图像Integ(i,j)的方式计算矩形区域的归一化运动能量,以进一步减少运算量。
所述像素运动标志掩模图像MI的积分图像Integ(i,j)为:
采用积分图像计算的所述矩形区域的归一化运动能量NME为:
其中left,top,right,bottom分别为所述矩形区域的左边缘横坐标,上边缘纵坐标,右边缘横坐,标,下边缘纵坐标。
如果所述矩形区域的归一化运动能量NME大于阈值,则认为所述矩形区域发生了运动,否则认为未发生运动。
上述运动能量的计算方式不限定于上述使用积分图像进行计算,也不限定于使用区域内发生运动的象素数目作为运动能量,除了采用上述两帧间差别的方法衡量区域是否发生变化外,还可以采用计算多帧差别的方法衡量区域是否发生变化,比如采用高通滤波器,或者KDE等方法计算得到发生变化的像素数目作为区域内的运动能量。
在一个实施例中,求取当前帧输入图像的积分图像,对于一个人脸候选窗口,如果该人脸候选窗口未发生运动,则开始处理下一个人脸候选窗口。如果该人脸窗口发生了运动,则采用对应尺度的层次型adaboost检测器对该人脸候选窗口对应的积分图像区域进行人脸检测判定。如果在该人脸候选窗口对应的积分图像区域中检测到人脸,则将该人脸候选窗口的位置和大小作为人脸的位置和大小参数,并退出当前输入图像的人脸检测,将当前帧输入图像作为参考帧图像保存下来,之后返回步骤130。如果在该人脸候选窗口中未检测到人脸,则处理下一个人脸候窗口。如果将所有人脸候选窗口处理完毕还未检测人脸,则直接将该当前帧输入图像作为参考帧图像保存下来,之后返回步骤130。
这样做的好处是,能够减少对没有发生运动区域进行人脸检测判定的工作量,节省运算量。尤其是在采集视频图像静止的情况下,图像中一直处于无人脸的状态时,在现有技术中,往往依然会对图像进行处理,浪费运算资源。而采用本发明,则只需要进行各个人脸候选区域的运动检测即可,不需要对各个人脸候选区域进行更为复杂的人脸检测。
步骤150,判断当前帧输入图像的已记录的人脸区域(xcf,ycf,wcf,hcf)是否发生运动,如果未发生运动,进入步骤160,如果发生运动,则进入步骤170。
在一个实施例中,可以采用步骤140中的描述的判断人脸候选窗口是否运动的方式来判断已记录的人脸区域是否发生运动,具体内容就不再赘述了。
步骤160,将先前帧中已记录的人脸的位置和大小参数作为当前帧输入图像的人脸检测结果,并将退出当前输入图像的人脸检测,将所述当前输入图像作为参考帧图像保存下来,之后返回步骤130。这样,大大节省了计算量。
步骤170,利用所述人脸检测模型中的部分对当前帧输入图像中的以已记录的人脸的中心坐标为中心的一个矩形搜索区域内的所有人脸候选窗口进行人脸检测。如果检测到一个人脸,则记录下该人脸的位置和大小参数(xcf,ycf,wcf,hcf),并退出该当前帧输入图像的人脸检测。在检测到一个人脸或在该矩形搜索区域内的所有人脸候选窗口中均未检测到人脸时,将当前帧输入图像保存为参考帧图像,之后返回步骤130。
在一个实施例中,假定前面检测得到的相邻两帧图像的人脸的宽度变化的绝对值|Wt+1-Wt|(由于人脸模板宽度和高度比例相同,因而仅以宽度计算),中心横坐标变化绝对值|Xt+1-Xt|,中心纵坐标变化绝对值|Yt+1-Yt|,符合高斯概率分布,其中宽度差绝对值符合η(μw,σw)的高斯概率分布,其中μw为分布均值,σw为方差,其中中心横坐标差值绝对值符合η(μcx,σcx)的高斯概率分布,其中μcx为分布均值,σcx为方差,其中纵坐标差值绝对值符合η(μcy,σcy)的高斯概率分布,其中μcy为分布均值,σcy为方差。
假定先前帧中已记录的人脸位置为(xcf,ycf),宽度为wcf,确定当前帧输入图像的人脸搜索范围是以已记录的人脸的中心坐标(xcf,ycf)为中心,Ws=f(σcx)*μcx为宽度,Hs=f(σcy)*μcy为高度的矩形搜索区域,其中,f(σcx)为关于σcx的单调递增函数,简单的可以取为α*σcx,α为常数,f(σcy)为关于σcy的单调递增函数,简单的可以取为β*σcy,β为常数,α,β值越大,越不会漏检人脸,但同时最差情况下的计算量会增加。也就是说,根据所述人脸在相邻两帧输入图像的位置变化符合的概率分布确定所述矩形搜索区域。
人脸候选窗口的大小范围为[wcf-f(σw)*μw,wcf+f(σw)*μw],其中,f(σw)为关于σw的单调递增函数,简单的可以取f(σw)=λ*σw。对于上述人脸候选窗口的大小范围,确定在此范围内的所有人脸检测模型的序号,即满足Wcf-f(σw)*μw≤ROUND(MW*SRs)≤Wcf-f(σw)*μw的所有s,它们为所有人脸检测模型中的部分。也就是说,根据所述人脸在相邻两帧输入图像的大小变化符合的概率分布确定符合尺度要求的人脸检测模型。
对于满足上述宽度的所有人脸检测模型,假定水平步长为δxs,垂直步长为δys,在以已记录的人脸的中心坐标为中心的矩形区域内,得到所有的人脸候选窗口(xsf,ysf,wsf,hsf),其中,(xsf,ysf)为所述人脸候选窗口的中心,wsf为所述人脸候选窗口的宽度,hsf为所述人脸候选窗口的宽度。对于所有人脸候选窗口(xsf,ysf,wsf),分别计算其可能为人脸的概率:
η(|wsf-wcf||μw,σw)2*η(|xsf-xcf||μcx,σcx)*η(|ysf-ycf||μcy,σcy),
其中,
按照上述可能为人脸的概率的从大到小排序对所有人脸候选窗口依次进行人脸检测。如果一个人脸候选窗口通过了人脸检测模型,则该人脸候选窗口的位置和大小记录为人脸的位置和大小参数,并退出该当前帧输入图像的人脸检测,将当前帧输入图像保存为参考帧图像,之后返回步骤130。上述所有人脸候选窗口中均未检测到人脸时,将当前帧输入图像保存为参考帧图像,之后返回步骤130。
从第二张检测到的人脸参数,开始更新人脸参数满足的高斯分布模型。第二次检测到人脸时,计算相邻两帧人脸参数的差值的绝对值,假定分别为宽度差值绝对值Wcf_dif,中心横坐标差值绝对值xcf_dif,中心纵坐标差值绝对值ycf_dif,初始化其分布为η(μw,σw),η(μcx,σcx)和η(μcy,σcy),取μw=Wcf_dif,μcx=xcf_dif,μcy=ycf_dif,σw,σcx,σcy取为各自默认初始值。
当再次检测到人脸时,再次计算宽度差值绝对值Wcf_dif,中心横坐标差值绝对值xcf_dif,中心纵坐标差值绝对值ycf_dif,则更新均值为前述差值绝对值的均值,方差为上述差值绝对值的方差。
一种快速的计算方法是,记录差值绝对值的和,平方和以及出现次数,采用公式快速计算均值和方差。
这样,在先前帧已检测到人脸且人脸区域发生运动时,不需要对整帧图像进行人脸检测,也不需要动用所有的人脸检测模型,只需要利用部分人脸检测模型对已记录人脸的附近区域进行人脸检测,节省了计算量。同时,根据可能为人脸的概率的高低依次对此时的人脸搜索候选窗口,也同样可以进行快速检测。
本发明中的快速人脸检测方法,可以在输入图像中快速的检测出一个人脸的位置和大小。
本发明的一个优点在于:统计人脸在相邻两帧位置变化以及大小变化符合的概率分布,并依据该概率分布确定下帧人脸出现在各个搜索位置的可能性,依据该可能性大小对各个搜索位置进行排序,先处理最可能的位置,然后,处理次可能的,检测到人脸后,直接退出,不进行后续处理。进一步,采用帧间图像内容的变化,来衡量一个位置存在人脸状态是否发生了改变,从而进一步减少了搜索范围。
需要知道的是,当前帧输入图像就是一个正在处理的输入图像,而在当前帧输入图像处理完毕后,下一帧输入图像将会作为当前帧输入图像,而先前帧输入图像是当前帧输入图像的前一帧,这对于所属领域内的普通技术人员来说是可以理解的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。