发明内容
本发明的发明目的在于:针对上述存在的问题,提供一种运算速度快,识别率高的用于手持设备的人脸识别方法。
本发明的用于手持设备的人脸识别方法,包括下列步骤:步骤1:设置包含N个分类器的级联分类器,其中N大于或等于2:采用LBP((LocalBinaryPattern,局部二值模式))对训练样本进行特征提取,并基于所提取的特征进行分类器训练,得到级联分类器的前N-1级分类器;采用组合邻接LBP特征对训练样本进行特征提取,并基于所提取的特征进行分类器训练,得到级联分类器第N级分类器;其中,训练各分类器的特征数量逐级增大,第N级分类器所对应的特征数量最大;训练的具体方法可以采用Adaboost算法,其核心思想是针对同一个训练样本集训练不同的分类器(弱分类器),然后将所训练的弱分类器集合起来,构成一个更强的分类器(强分类器)。其算法本身是通过改变数据分布来实现的。它根据每次训练集中每个样本的分类是否正确,以及上次的总体分类的准确率来确定每个样本的权值。将修改过权值的新数据集送给下一层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器。目前最为常用的Adaboost算法有DiscreteAdaboost,RealAdaboost和GentleAdaboost等,优选为GentleAdaboost。
其中LBP的编码为P表示在像素点(x,y)的邻域半径Δr内的采样像素点个数,ic表示像素点(x,y)的灰度值,ip表示各邻域像素点的灰度值,函数σ(x)为符号函数,当x大于或等于0时,σ(x)的取值为1;否则σ(x)的取值为0。
组合邻接LBP特征的编码为:获取各像素点的LBPP,Δr(x,y),并将LBPP,Δr(x,y)分为两组:和其中表示水平和垂直方向的邻域像素点得到的LBPP,Δr(x,y)值;其中表示斜相邻的邻域像素点得到的LBPP,Δr(x,y)值;再分别计算所对应的组合邻接LBP特征值:根据公式计算关联矩阵其中I表示各训练样本所对应的图像,下标i、j的取值为[0~2P/2-1],函数fi(x,y)的取值为:若像素点(x,y)的或为i,则fi(x,y)=1;否则fi(x,y)=0,位置关系向量a∈{(Δs,0)T,(Δs,Δs)T,(0,Δs)T,(-Δs,Δs)T},参数Δs表示相邻间隔;对关联矩阵Hi,j按列求和即得到所对应的组合邻接LBP特征值;
步骤2:将待识别图像转换为灰度图后,进行滑动窗口扫描,采用LBP对窗口中的图片进行特征提取,并将所提取的特征作为级联分类器的输入,对前N-1级分类器,若大于或等于当前分类器的分类阈值,则将所述特征输入下一级分类器,当大于或等于第N-1级分类器的阈值时,基于所提取的特征转换为组合邻接LBP特征后再输入第N级分类器,若满足第N级分类器的分类阈值,则判定当前窗口中的图像为人脸图像。
综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明将常规LBP与组合邻接LBP特征相结合用于训练人脸检测分类器。实验中发现,利用特征提取简单、计算量小的LBP特征快速筛选出近似人脸的区域,再通过准确度高、计算量较大的组合邻接LBP特征对近似区域做细筛选,在保证良好检测效果的同时能有效减少分类器的级联级数。从而在分类器训练中,简化各级指标的分配和弱分类器选取过程,保证训练过程快速完成。同时该种组合下的训练的分类器能够满足人脸检测的实时性需求。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。
参见图1,在实现本发明时,可分为线下训练和线上检测两个模块。在线下训练模块中,分别对训练库中的图片提取LBP特征和组合邻接LBP特征,并采用GentleAdaboost算法对所取特征训练得到若干弱分类器,然后将各弱分类器串联后形成N级级联分类器的各级分类器。
在线上检测模块中,首先对输入图像(待识别图像)进行预处理:转换为灰度图,然后对输入图像进行多尺度、逐窗口扫描,例如进行3次逐窗口扫描,各次的滑动窗口的尺寸依次为5×5、6×6和7×7。在基于预设尺寸的滑动窗口执行逐窗口扫描时,对每一个窗口中的图像进行特征提取(提取LBP特征),并将该特征作为级联分类器的输入,依据各级分类器的分类阈值做出判决:均满足各分类阈值的判定为人脸框,不满足任何一级分类器的分类阈值的窗口图像都将被视为非人脸,即当前窗口为非人脸候选框,参见图2。即对前N-1级分类器,若大于或等于当前分类器的分类阈值Thi(i=1,2,…,N),则将所述特征输入下一级分类器,当大于或等于第N-1级分类器的阈值时,基于所提取的特征转换为组合邻接LBP特征后(将LBP特征分为两组和然后分别计算自关联矩阵H(a),再对H(a)按列求和)再输入第N级分类器,若满足第N级分类器的阈值ThN,则判定当前窗口中的图像为人脸图像,即当前窗口为人脸候选框。
为保证处理的速度,本发明的N级级联分类器中各级分类器的分布遵循“先简后繁”的原则,即按照复杂度递增的顺序进行排列,每一级的分类器均使用GentleAdaBoost算法训练弱分类器串联而成的强分类器。如图2所示的N级级联分类器,前面(N-1)级采用LBP特征进行训练,并且越靠后,训练中使用的特征数越多,强分类中弱分类器的数量也随之增加。这样就可以做到由前面的简单分类器排除大量易于排除的非人脸窗口,而用特征数较多较为复杂的强分类器排除少数不易排除的非人脸窗口。为进一步提升系统检测的正检率,系统的第N级为组合邻接LBP特征训练的强分类器。该级较之前的任何一级都更为复杂,训练所用的特征数更多,但分类效果却最为理想。实验发现,400个组合邻接LBP特征训练的分类器可以实现99%的正确率和1%的误检率。虽然组合邻接LBP特征提取的计算复杂度较高,但考虑到实际采集的图片中人脸数有限,不会对系统整体的运行时间产生太大影响。
为了简化计算,在提取LBP特征时,设置邻域半径Δr的取值为1,所采集的相邻像素点个数为8,基于各中心像素点与其相邻像素点的灰度值的差值进行阈值化比较后求和,若中心像素点的灰度值小于或等于相邻像素点的灰度值,则标记为1,否则标记为0,如图3所示(中心像素点的灰度值为5,第(0)~(7)邻接位置的灰度值分别为1、2、2、6、1、3、5、9),从而得到该中心像素点的二进制模式值(00010011),即为该中心像素点的LBP特征。
与上述基于标记的LBP特征相比,组合邻接LBP特征将LBP特征对之间的位置关系考虑在内,能够表达更为丰富的纹理特征。因此,与原始的LBP直方图特征相比具有更高的分辨力。其基本思想为:将中心像素点的P个邻域像素点分为两组,一组为:水平和垂直方向相邻的邻域像素点;一组为斜相邻的邻域像素点,并基于与前N-1级所对应的LBP特征相同的标记方式为各邻域像素点进行标记后得到其对应的模式值。以邻接半径为1,邻域像素点为8为例,基于图4所给出的中心像素点及其邻域像素点的灰度值,可得到的模式值(0011),如图4-a所示,的模式值为(1001),如图4-b所示。
接着基于各像素点的的模式值的十进制取值进行对应的编码,以得到当前图像的组合邻接LBP特征值:
首先基于公式计算自关联矩阵、j=0,2,…,2P/2-1,函数其中 本具体实施方式中,邻域像素点为8个,则自关联矩阵为H16×16(a),位置关系向量用于描述参考LBP与相邻LBP之间的相对位置关系的位置关系向量a∈{(Δs,0)T,(Δs,Δs)T,(0,Δs)T,(-Δs,Δs)T},如图5所示。最后,对自关联矩阵H(a)按列求和即可得到当前图像的组合邻接LBP特征值,即 分别对应一个自关联矩阵H(a)。图6给出了的一个提取示例,图6-a中给出了4个不同位置关系的(Δr=1,Δs=2),其模式值分别为:0010、1110、1001、1000,图6-b为其对应的自关联矩阵H(a)。
在对训练样本进行特征提取时,参数Δr、Δs的取值将影响所取特征的稳定性和分辨力。若取值较大可以捕获尺寸较大的纹理特征,但提取到的特征数量也因此减少,其稳定性随之降低。根据人脸重要特征的尺寸大小,建议取下列值,Δr={1,...,5},Δs={1,...,20},其中优选的参数对为(Δr=1,Δs=2)。
合理分配各级分类器的检测指标,包括正检率和误检率,是系统稳定实现的关键。对于级联分类器,假设第i级分类器的误检率为fi,正检率为di,则整个级联分类器的误检率为:整个级联分类器的正检率为:其中N为分类器层数。因此,在对N级级联分类器的各分类器分配性能指标时,可遵循如下的原则:基于LBP特征的分类器初始级采用少量特征,允许由此产生的相对较高的误检率。后续每级的误检率保持5~20%(优选10%)的下降速率,并依此确定该级分类应当采用的特征数量ni。然而,第4级以后,若仍保持10%左右的下降速率则需要大量特征,影响系统性能,因此后面的几个级(不含第N级)的分类器的误检率只要保持20%左右(15~25%)的误检率即可。随着层数增加,不断评估系统的总体指标,直至整体接近理想指标。然后适当选取特征数(具体的特征数量为经验值)训练基于组合邻接LBP特征分类器设计,完成剩余指标。
在对各级的分类器分配检测指标(误检率fi、正检率di)后,可基于下列步骤进行级联分类器的训练,以确定各级分类器所对应的特征数量ni、调整预设的分类阈值Ci:
具体的,可基于下列步骤设置级联分类器中各级分类器所对应的特征数量ni、阈值Ci:
预设各分类器的分类阈值Ci、各级分类器所对应的特征数量误检率fi、误检率di、系统总误检率Ftarget后,输入训练样本集:
步骤1):初始化i=1,第i级的特征个数ni=0;
步骤2):基于公式计算前i级的总误检率Fi=fi×Fi-1,其中F0=1,若Fi>Ftarget,则执行下列步骤:
步骤2-1):令ni=ni+1,用GentleAdaBoost算法对输入的训练样本提取ni个特征进行第i级的分类器训练(当i=1,...,N-1时提取LBP特征,i=N时提取组合邻接LBP特征);
步骤2-2):输入测试样本,基于分类阈值Ci确定当前分类器的误检率fi′、di′;
步骤2-3):判断是否Di≥di′×Di-1且Fi<fi′×Fi-1,若是,则执行步骤3);否则调整分类阈值Ci后,继续执行步骤2-1);其中D0=1;
步骤3)判断i是否等于N,若是,则执行步骤5);否则令i=i+1后继续执行步骤2);
步骤4):输出各级分类器所对应的特征数量ni、调整后的分类阈值Ci。
在对本发明的N级级联分类器测试时,首先在测试图片中人为标注眼睛的位置,然后确定人脸整体位置并用方框予以标定,如图7所示(图中d表示两眼瞳孔的距离,左右瞳孔分别到标定人脸整体位置方框(2.5d×2.5d)的左右边框距离为0.75d,瞳孔到上下边框的距离分别为0.83d、1.67d)。依据如下准则对检测结果做出正判决:
(1)检测到的框与人为标注框中心位置差值不超过人为标注框尺寸的三分之一;
(2)检测到的框与人为标注框重叠区域不低于人为标注框总体大小的50%。