一种Android平台下基于人脸关键点的预测系统及其方法与流程

文档序号:11865259阅读:229来源:国知局

本发明涉及计算机视觉领域,具体地说是一种Android平台下基于人脸关键点的预测系统及其方法。



背景技术:

人脸关键点的检测和定位技术是指在人脸图片中精确定位面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴,脸部轮廓等。使用关键点检测技术,可以为人脸识别提供准确信息,还可以精确定位人脸局部区域进行美化,目前已经广泛应用于安防,身份识别以及娱乐等方面。

目前已有的人脸关键点定位工作主要包括基于模型的方法和基于回归的方法,基于模型的方法包括,主动形状模型(Active Shape Model,ASM),主动外观模型(ActiveAppearance Model,AAM),贝叶斯切线模型(Bayesian Tangent Shape Model,BTSM)等,基于回归的方法包括显示形状回归(Explicit Shape Regression,ESR)等。如今,由于智能移动设备的普及,在移动平台上利用人脸关键点定位技术实现诸如美颜解锁等功能,已经成为一种需求,但已有的算法计算复杂度较高,内存消耗大,应用在移动平台上极少。此外,目前使用智能移动设备的中老年人也较多,但其中的绝大多数使用者不会操作较为复杂的图像处理类软件。



技术实现要素:

本发明是为了克服现有技术存在的不足之处,提供一种Android平台下基于人脸关键点的实时预测系统及其方法,以期能提升算法运行效率,在移动平台下,消耗较小的内存,高速精确地定位人脸关键点,从而能快速进行人脸关键部位美化。

本发明为解决技术问题采用如下技术方案:

本发明一种Android平台下基于人脸关键点的预测系统的特点是包括:人脸关键点定位模块;所述人脸关键点定位模块是对人脸样本图片集进行训练,获得回归模型,以所述回归模型实现人脸关键点的预测功能。

本发明一种Android平台下基于人脸关键点的预测方法的特点是如下步骤进行:

步骤1、收集人脸样本图片集,并对所述人脸样本图片集中每个人脸样本图片的每个人脸关键点进行人工标定,获得真实人脸关键点形状集合;所述人脸样本图片集中样本图片数量为N,且第α个人脸样本图片与第α个真实人脸关键点形状相对应;1≤α≤N;

步骤2、计算所述真实人脸关键点形状集合中人脸关键点形状的平均值,获得人脸关键点平均形状,即人脸关键点初始形状S0;N个人脸关键点初始形状构成人脸关键点初始形状集合,且每个初始形状相同;

步骤3、定义级联层数为t,级联最大层数为T;初始化级联层数t=0;则第t层级联的人脸关键点形状集合为St;且第α个真实人脸关键点形状与第t层级联时第α个人脸关键点形状相对应;

由所述人脸样本图片集、真实人脸关键点形状集合、第t层级联时人脸关键点形状集合,构成第t层级联时的总的训练样本集合;

将第t层级联时总的训练样本集合分为k份第t层级联时的训练样本集合,其中第p份第t层级联时的训练样本集中人脸样本图片数量、真实人脸关键点形状数量、第t层级联时人脸关键点形状数量均为np;且第p份第t层级联时的训练样本集与第p+1份第t层级联时的训练样本集之间存在重合训练样本;1≤p≤k;

步骤4、将k份第t层级联时所有人脸关键点形状同时进行处理;

定义j为关键点序号,初始化关键点序号j=1;1≤j≤m;

步骤5、训练随机二叉树

步骤5.1、定义抽取总次数为Q;定义当前抽取次数为q,初始化q=1;

步骤5.2、定义第p份t层级联时人脸关键点形状集中任意一个关键点形状记为第i个人脸关键点形状;初始化i=1;1≤i≤np

步骤5.3、将第p份第t层级联时的人脸关键点形状集合中第i个人脸关键点形状的第j个关键点记为在所述第i个人脸关键点形状相对应的人脸样本图片中以所述为圆心,经过所述且平行于所述第i个人脸关键点形状相应的人脸样本图片的底边方向为X轴,经过所述且垂直与所述底边方向为Y轴,建立图像坐标系则所述的坐标为

步骤5.3、在以关键点为圆心、rt为半径的圆形区域内第q次随机抽取两个特征点,记为和表示所述关键点邻域内第一个特征点的X轴增量;表示所述关键点的邻域内第一个特征点的Y轴增量;表示所述的邻域内第二个特征点的X轴增量;表示所述的邻域内第二个特征点的Y轴增量;

以第q次随机抽取的两个特征点的像素差值作为在第p份第t层级联时人脸关键点形状集合中第q次随机抽取的第i个人脸关键点形状中第j个关键点的特征值

步骤5.4、将i+1赋值给i,并返回执行步骤5.2~步骤5.3,直到i=np为止,从而获得在第p份第t层级联时第q次随机抽取的所有人脸关键点形状中第j个关键点的特征值集合

步骤5.5、将所述特征值集合作为第p颗随机二叉树的根结点rootp的输入;

步骤5.6、计算所述特征值集合中所有特征值的方差,记为

步骤5.7、随机选取所述特征集合中任意一个特征值作为判决条件判断特征集合中的每个特征值是否小于等于若小于等于则将相应的特征值放入特征值集合中,并作为特征集合在第p颗随机二叉树的第2层的左孩子结点lchildp,统计落入第p颗随机二叉树的第2层的左孩子结点lchildp的样本个数为否则将相应的特征值放入特征值集合并作为特征集合在第p颗随机二叉树的第2层的右孩子结点rchildp,统计落入第p颗随机二叉树的第2层的右孩子结点rchildp的样本个数为

步骤5.8、计算第p颗随机二叉树的根结点rootp的第2层的左孩子结点lchildp的特征值集合中特征值的方差和第2层结点的右孩子结点rchildp的特征值集合中特征值的方差

步骤5.9、利用式(1)计算第p份第t层级联时第q次随机抽取所有人脸关键点形状中第j个关键点的特征值方差衰减系数

<mrow> <msubsup> <mo>&dtri;</mo> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>root</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>-</mo> <mrow> <mo>(</mo> <mfrac> <msubsup> <mi>n</mi> <msub> <mi>p</mi> <mn>1</mn> </msub> <mi>q</mi> </msubsup> <msub> <mi>n</mi> <mi>p</mi> </msub> </mfrac> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>lchild</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>+</mo> <mfrac> <msubsup> <mi>n</mi> <msub> <mi>p</mi> <mn>2</mn> </msub> <mi>q</mi> </msubsup> <msub> <mi>n</mi> <mi>p</mi> </msub> </mfrac> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>rchild</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

步骤5.10、将q+1赋给q,并返回步骤5.2~步骤5.10,直到q=Q;从而获得

步骤5.11、从中选出最大值,并将最大值所对应的抽取次数,记为

步骤5.12、清空第p颗随机二叉树的根结点rootp的左孩子结点lchildp和右孩子结点rchildp中存储的所有数据,并将第p份训练样本集中第t层级联时第次随机抽取的第j个关键点的特征值集合存入第p颗随机二叉树的根结点rootp的左孩子结点,存入第p颗随机二叉树的根结点rootp的右孩子结点;

步骤5.13、定义第p颗随机二叉树的深度为Deep、第p颗随机二叉树的当前深度为layer;初始化layer=2;

步骤5.13.1、对于第p颗随机二叉树根第layer层的第τ个结点随机选取特征集合中任意一个特征值作为判决条件判断特征集合中的每个特征值是否小于等于若小于等于则将相应的特征值放入其左孩子结点;否则将相应的特征值放入其右孩子结点;

步骤5.13.2、将layer+1赋值给layer,返回执行步骤5.13.1,直到layer+1=Deep为止;从而获得Deep层的所有叶子结点,所述叶子结点的数目为2Deep-1

步骤6、根据第p份第t层级联时每个人脸关键点形状中第j个关键点的特征值在所述Deep层的所有叶子结点中的分布情况,将第i个人脸关键点形状的第j个关键点特征值所在的叶子结点设为“1”,其余叶子结点设为“0”,从而得到第p份第t层级联时所有人脸关键点形状的第j个关键点的局部二值化特征,输出

步骤7、将j+1赋给j,返回并执行步骤5~步骤6,直到j=m为止,得到第p份第t层级联时所有人脸关键点形状的所有关键点全局二值特征集合进而得到第t层级联时所有人脸关键点形状中所有人脸关键点的全局二值特征集

步骤8、初始化α=1;

利用式(2)训练线性回归器Wt

<mrow> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>=</mo> <munder> <mrow> <mi>arg</mi> <mi> </mi> <mi>min</mi> </mrow> <msup> <mi>W</mi> <mi>t</mi> </msup> </munder> <munderover> <mo>&Sigma;</mo> <mrow> <mi>&alpha;</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mo>|</mo> <mo>|</mo> <mi>&Delta;</mi> <msubsup> <mover> <mi>S</mi> <mo>^</mo> </mover> <mi>&alpha;</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <mo>-</mo> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>&CenterDot;</mo> <msub> <mi>&Phi;</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mi>&alpha;</mi> </msub> <mo>,</mo> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> <mo>|</mo> <msubsup> <mo>|</mo> <mn>2</mn> <mn>2</mn> </msubsup> <mo>+</mo> <mi>&lambda;</mi> <mo>|</mo> <mo>|</mo> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>|</mo> <msubsup> <mo>|</mo> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

式(2)中,表示总的训练样本集合中第t层级联时第α个真实人脸关键点形状的形变增量,Iα表示第α个人脸样本图片,表示总的训练样本集合中第t层级联时第α个人脸关键点形状;是利用和Iα训练的总的训练样本集合中第t层级联时第α个人脸关键点形状中所有关键点的全局二值特征集合;表示总的训练样本集合中第t层级联时第α个人脸关键点形状的预测形变增量,λ为抑制系数;是求使得总的训练样本集合中第t层级联时每个真实人脸关键点形状的形变增量和预测形变增量之差的二范数之和最小;

步骤9、式(3)为总的训练样本集合中第t+1层级联时第α个人脸关键点形状,设为

<mrow> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>&CenterDot;</mo> <msub> <mi>&Phi;</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mi>&alpha;</mi> </msub> <mo>,</mo> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

步骤10、将α+1赋值给α,返回执行步骤8~步骤9,直到α=N为止,从而获得总的训练样本集第t+1层级联时所有人脸关键点形状

步骤11、将t+1赋值给t,并返回执行步骤4~步骤10,直到级联层数t的级联最大层数T为止,获得总的训练样本集中所有人脸关键点最终形状和回归模型;以所述回归模型实现人脸关键点的预测功能。

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

1、本发明利用基于回归的方法提高了人脸关键点定位的速度和精度;为了实现高效的回归,通过使用关键点邻域内的两个位置的像素差作为特征,相比于传统使用的harr特征,计算复杂度大大减少。同时,使用局部坐标而不是全部坐标,增强了特征的鲁棒性。

2、本发明使用随机森林作为分类器,训练和预测速度快,不易出现过拟合,并且实现简单,容易并行计算。

附图说明

图1为本发明方法流程图。

具体实施方式

本实施例中,一种Android平台下基于人脸关键点的预测系统包括:人脸关键点定位模块;人脸关键点定位模块是对人脸样本图片集进行训练,获得回归模型,利用回归模型对测试图片实现人脸关键点的预测功能。

本实施例中,如图1所示,一种Android平台下基于人脸关键点的预测方法是如下步骤进行:

步骤1、收集人脸样本图片集,并对人脸样本图片集中每个人脸样本图片的每个人脸关键点进行人工标定,获得真实人脸关键点形状集合;人脸样本图片集中样本图片数量为N,且第α个人脸样本图片与第α个真实人脸关键点形状相对应;1≤α≤N;

具体实施中,收集人脸样本图片集,并对每张人脸样本图片上的每个关键点进行人工标定,每张人脸样本图片将生成一组数据,即真实人脸关键点形状,N张人脸样本图片将生成N个真实人脸关键点形状,构成人脸关键点形状集合。本实施例中,人脸样本图片集中有1000张人脸样本图片,每张人脸样本图片标定了68个人脸关键点。

步骤2、计算真实人脸关键点形状集合中人脸关键点形状的平均值,获得人脸关键点平均形状,即人脸关键点初始形状S0;N个人脸关键点初始形状构成人脸关键点初始形状集合,且其中每个初始形状相同;

本实施例中,由1000个真实人脸关键点形状计算68个人脸关键点的平均位置,68个人脸关键点平均值所构成人脸关键点形状称为人脸关键点初始形状,N个相同的人脸关键点初始形状构成人脸关键点初始形状集合,记为S0

步骤3、定义级联层数为t,级联最大层数为T;初始化级联层数t=0;则第t层级联的人脸关键点形状集合为St;且第α个真实人脸关键点形状与第t层级联时第α个人脸关键点形状相对应;

由所述人脸样本图片集、真实人脸关键点形状集合、第t层级联时人脸关键点形状集合,构成第t层级联时的总的训练样本集合;

将第t层级联时总的训练样本集合分为k份第t层级联时的训练样本集合,其中第p份第t层级联时的训练样本集中人脸样本图片数量、真实人脸关键点形状数量、第t层级联时人脸关键点形状数量均为np;且第p份第t层级联时的训练样本集与第p+1份第t层级联时的训练样本集之间存在重合训练样本;1≤p≤k;

本实施例中,T取10;人脸关键点初始形状集合S0即级联层数t=0时的人脸关键点形状集合。当级联层数t=0时,其训练样本集合包含人脸样本图片集合、真实人脸关键点形状集合、人脸关键点初始形状集合;当级联层数t增加,训练样本集合中人脸关键点初始形状集合被相应地替换为第t层级联时人脸关键点形状集合;为了防止过拟合,当级联层数t=0时,将总的训练样本集合分为k份训练样本集,其中第p份训练样本集与第p+1份训练样本集之间必须存在重合训练样本;1≤p≤k;当级联层数t增加,其训练样本的划分仍然保持不变;本发明中,k取值为5,且将总的训练样本等分为5份;

步骤4、将k份第t层级联时所有人脸关键点形状同时进行处理;

定义j为关键点序号,初始化关键点序号j=1;1≤j≤m;

本实施例中,每份训练样本集合对应一棵随机二叉树,5个训练样本集合对应5棵随机二叉树,构成随机森林;利用随机二叉树,逐个训练每份训练样本集合中每个人脸关键点形状的每个人脸关键点;以第p棵随机二叉树的第1个关键点为例,训练随机二叉树;

步骤5、训练随机二叉树

步骤5.1、定义抽取总次数为Q;定义当前抽取次数为q,初始化q=1;

步骤5.2、定义第p份t层级联时人脸关键点形状集中任意一个关键点形状记为第i个人脸关键点形状;初始化i=1;1≤i≤np

步骤5.3、将第p份第t层级联时的人脸关键点形状集合中第i个人脸关键点形状的第j个关键点记为在所述第i个人脸关键点形状相对应的人脸样本图片中以所述为圆心,经过所述且平行于所述第i个人脸关键点形状相应的人脸样本图片的底边方向为X轴,经过所述且垂直与所述底边方向为Y轴,建立图像坐标系则所述的坐标为

本实施例中,将第p份第t层级联时的人脸关键点形状集中第i个人脸关键点形状的第1个关键点记为即将该训练样本集中的第i个人脸样本图片以第t层级联时的第1个人脸关键点为圆心,以经过该人脸关键点并平行于人脸样本图片底边的方向为X轴,经过该人脸关键点并垂直于人脸样本图片底边的方向为Y轴建立坐标系;

在以关键点为圆心、rt为半径的圆形区域内第q次随机抽取两个特征点,记为和表示邻域内第一个特征点的X轴增量;表示关键点的邻域内第一个特征点的Y轴增量;表示关键点的邻域内第二个特征点的X轴增量;表示所述的邻域内第二个特征点的Y轴增量;

本实施例中,以关键点为圆心、rt为半径的圆形区域内随机选取两个特征点做像素差,由此可以得到第p份第t层级联时所有人脸人脸关键点形状的第1个关键点邻域内的两个特征点像素差,将像素差作为特征值,则np个像素差构成第一个特征值差集合;其中rt将随着级联层数的增加而减小;

以第q次随机抽取的两个特征点的像素差值作为在第p份第t层级联时人脸关键点形状集合中第q次随机抽取的第i个人脸关键点形状中第j个关键点的特征值

按上述规则抽取Q次,本实施例中,选择Q取值为500,得到Q组特征值集合;并将Q组特征值集合逐组输入第s棵随机二叉树的根结点,选择最有分辨力的特征值集合;其筛选过程如下:

步骤5.4、将i+1赋值给i,并返回执行步骤5.2~步骤5.3,直到i=np为止,从而获得在第p份第t层级联时第q次随机抽取的所有人脸关键点形状中第j个关键点的特征值集合

步骤5.5、将所述特征值集合作为第p颗随机二叉树的根结点rootp的输入;

步骤5.6、计算所述特征值集合中所有特征值的方差,记为

第一次抽取为例,即第一组特征值集合,以计算其所有特征值的方差并以第一组特征值集合中的任意一个特征值作为判决条件;判断第一个特征集合中的每个特征值是否小于等于若小于等于则将相应的特征值放入根结点的左孩子结点lchildp,并统计样本数量,设为否则将相应的特征值放入根结点的右孩子结点rchildp,并统计样本数量,设为

计算落入lchildp的特征值方差和落入rchildp的特征值方差计算方差衰减系数

<mrow> <msubsup> <mo>&dtri;</mo> <mrow> <mn>1</mn> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mn>1</mn> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>Var</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mn>1</mn> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>root</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>-</mo> <mrow> <mo>(</mo> <mfrac> <msubsup> <mi>n</mi> <msub> <mi>p</mi> <mn>1</mn> </msub> <mn>1</mn> </msubsup> <msub> <mi>n</mi> <mi>p</mi> </msub> </mfrac> <msubsup> <mi>Var</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mn>1</mn> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>lchild</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>+</mo> <mfrac> <msubsup> <mi>n</mi> <msub> <mi>p</mi> <mn>2</mn> </msub> <mn>1</mn> </msubsup> <msub> <mi>n</mi> <mi>s</mi> </msub> </mfrac> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mn>1</mn> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>rchild</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

按照上述步骤,将Q组特征值集合逐个输入随机二叉树并判断,选择Q组特征值集合中方差衰减系数最大的特征值集合作为随机二叉树的输入,即认为是最有分辨力的特征值集合,设其为第组特征集合;并清空随机二叉树中所有数据;

步骤5.7、随机选取所述特征集合中任意一个特征值作为判决条件判断特征集合中的每个特征值是否小于等于若小于等于则将相应的特征值放入特征值集合中,并作为特征集合在第p颗随机二叉树的第2层的左孩子结点lchildp,统计落入第p颗随机二叉树的第2层的左孩子结点lchildp的样本个数为否则将相应的特征值放入特征值集合并作为特征集合在第p颗随机二叉树的第2层的右孩子结点rchildp,统计落入第p颗随机二叉树的第2层的右孩子结点rchildp的样本个数为

步骤5.8、计算第p颗随机二叉树的根结点rootp的第2层的左孩子结点lchildp的特征值集合中特征值的方差和第2层结点的右孩子结点rchildp的特征值集合中特征值的方差

步骤5.9、利用式(1)计算第p份第t层级联时第q次随机抽取所有人脸关键点形状中第j个关键点的特征值方差衰减系数

<mrow> <msubsup> <mo>&dtri;</mo> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>root</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>-</mo> <mrow> <mo>(</mo> <mfrac> <msubsup> <mi>n</mi> <msub> <mi>p</mi> <mn>1</mn> </msub> <mi>q</mi> </msubsup> <msub> <mi>n</mi> <mi>p</mi> </msub> </mfrac> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>lchild</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>+</mo> <mfrac> <msubsup> <mi>n</mi> <msub> <mi>p</mi> <mn>2</mn> </msub> <mi>q</mi> </msubsup> <msub> <mi>n</mi> <mi>p</mi> </msub> </mfrac> <msubsup> <mi>Var</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>t</mi> </mrow> <mrow> <mi>q</mi> <mo>,</mo> <mi>p</mi> </mrow> </msubsup> <mo>(</mo> <mrow> <msub> <mi>rchild</mi> <mi>p</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

步骤5.10、将q+1赋给q,并返回步骤5.2~步骤5.10,直到q=Q;从而获得

步骤5.11、从中选出最大值,并将最大值所对应的抽取次数,记为

步骤5.12、清空第p颗随机二叉树的根结点rootp的左孩子结点lchildp和右孩子结点rchildp中存储的所有数据,并将第p份训练样本集中第t层级联时第次随机抽取的第j个关键点的特征值集合存入第p颗随机二叉树的根结点rootp的左孩子结点,存入第p颗随机二叉树的根结点rootp的右孩子结点;

步骤5.13、定义第p颗随机二叉树的深度为Deep、第p颗随机二叉树的当前深度为layer;初始化layer=2;

步骤5.13.1、对于第p颗随机二叉树根第layer层的第τ个结点随机选取特征集合中任意一个特征值作为判决条件判断特征集合中的每个特征值是否小于等于若小于等于则将相应的特征值放入其左孩子结点;否则将相应的特征值放入其右孩子结点;

本实施例中,从第组特征值集合中随机抽取一个特征值作为判决条件,将第p颗随机二叉树的根结点rootp的左孩子结点所存的特征集合记为第p颗随机二叉树的根结点rootp的左孩子结点所存的特征集合记为随机二叉树的第二层和更深层的结点分裂同根结点分裂过程类似;以第p颗随机二叉树第layer层的任意一个结点为例,从其存储的特征值集合中随机选取一个特征值作为该节点的判决条件,将大于判决条件的特征值存在该结点的左孩子结点,小于判决条件的特征值存在该结点的右孩子结点;直到第Deep层为止;

步骤5.13.2、将layer+1赋值给layer,返回执行步骤5.13.1,直到layer+1=Deep为止;从而获得Deep层的所有叶子结点,所述叶子结点的数目为2Deep-1

步骤6、根据第p份第t层级联时每个人脸关键点形状中第j个关键点的特征值在所述Deep层的所有叶子结点中的分布情况,将第i个人脸关键点形状的第j个关键点特征值所在的叶子结点设为“1”,其余叶子结点设为“0”,从而得到第p份第t层级联时所有人脸关键点形状的第j个关键点的局部二值化特征,输出

本实施例中,根据第p份第t层级联时所有人脸关键点形状的第1个关键点特征值在Deep层的所有叶子结点中的分布情况,将第i个人脸关键点形状的第1个关键点特征值所在的叶子结点设为“1”,其余叶子结点设为“0”,从而得到第s份第t层级联时所有人脸关键点形状的第1个关键点的局部二值化特征,输出

步骤7、将j+1赋给j,返回并执行步骤5~步骤6,直到j=m为止,得到第p份第t层级联时所有人脸关键点形状的所有关键点全局二值化特征集合

由于k份第t层级联时所有人脸关键点形状同时进行处理,从而得到第t层级联时所有人脸关键点形状中所有人脸关键点的全局二值特征集

本实施例中,第2个关键点以及其他关键点的局部二值化特征的训练过程同前述步骤,从而得到第p份第t层级联时所有人脸关键点形状的所有关键点全局二值化特征集合

步骤8、初始化α=1;

利用式(2)训练线性回归器Wt

<mrow> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>=</mo> <munder> <mrow> <mi>arg</mi> <mi> </mi> <mi>min</mi> </mrow> <msup> <mi>W</mi> <mi>t</mi> </msup> </munder> <munderover> <mo>&Sigma;</mo> <mrow> <mi>&alpha;</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mo>|</mo> <mo>|</mo> <mi>&Delta;</mi> <msubsup> <mover> <mi>S</mi> <mo>^</mo> </mover> <mi>&alpha;</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <mo>-</mo> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>&CenterDot;</mo> <msub> <mi>&Phi;</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mi>&alpha;</mi> </msub> <mo>,</mo> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> <mo>|</mo> <msubsup> <mo>|</mo> <mn>2</mn> <mn>2</mn> </msubsup> <mo>+</mo> <mi>&lambda;</mi> <mo>|</mo> <mo>|</mo> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>|</mo> <msubsup> <mo>|</mo> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

式(2)中,表示总的训练样本集合中第t层级联时第α个真实人脸关键点形状的形变增量,Iα表示第α个人脸样本图片,表示总的训练样本集合中第t层级联时第α个人脸关键点形状;是利用和Iα训练的总的训练样本集合中第t层级联时第α个人脸关键点形状中所有关键点的全局二值特征集合;表示总的训练样本集合中第t层级联时第α个人脸关键点形状的预测形变增量,λ为抑制系数;是求使得总的训练样本集合中第t层级联时每个真实人脸关键点形状的形变增量和预测形变增量之差的二范数之和最小;

本实施例中,训练目标函数目的是为了训练出能够使预测形变增量和真实形变增量的偏差最小的线性回归器,其中的目的是为了防止过拟合;

步骤9、式(3)为总的训练样本集合中第t+1层级联时第α个人脸关键点形状,即为第t+1层级联时第α个人脸关键点形状,设为

<mrow> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msup> <mi>W</mi> <mi>t</mi> </msup> <mo>&CenterDot;</mo> <msub> <mi>&Phi;</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mi>&alpha;</mi> </msub> <mo>,</mo> <msubsup> <mi>S</mi> <mi>&alpha;</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

步骤10、将α+1赋值给α,返回执行步骤8~步骤9,直到α=N为止,从而获得总的训练样本集第t+1层级联时所有人脸关键点形状

本实施例中,遍历整个训练样本集合,从而获得第t+1层级联总的训练样本集合中所有人脸关键点形状

步骤11、将t+1赋值给t,并返回执行步骤4~步骤10,直到级联层数t的级联最大层数T为止,获得总的训练样本集中所有人脸关键点最终形状和回归模型,以回归模型实现对人脸关键点的预测功能。

本实施例中,将所得的作为训练样本集合中第t+1层级联时人脸关键点形状,迭代至最大层数T=10为止,获得总的训练样本集合中所有人脸关键点最终形状和回归模型,以回归模型实现对人脸关键点的预测功能,具体的说:

步骤12、采集人脸图片并输入回归模型;拍摄者在一定距离范围内对脸部进行图片拍摄并保存,拍摄图片传入人脸关键点定位模块,并生成测试图像的人脸关键点初始形状S0′,利用人脸关键点定位模型中的全局二值特征集合和线性回归器Wt对所拍摄的人脸关键点进行预测;

步骤13、由所得到的人脸关键点,获得人脸关键区域,针对待处理区域进行处理,包括以下步骤:

13.1.1、利用边缘检测获得人脸脸颊轮廓,并对脸颊轮廓取点,利用Newton插值,获得人脸脸颊轮廓曲线;

13.1.2、保存人脸脸颊关键点的邻域的像素信息;

13.1.3、计算脸颊曲线在经过人脸脸颊关键点的斜率和该关键点的法向量,法向量指向人脸区域;对人脸脸颊关键点向法向量所指方向移动10个像素位置,得到新的人脸脸颊关键点;

13.1.4、利用获得的脸颊轮廓曲线,拟合新的人脸脸颊关键点,得到新的人脸脸颊轮廓;

13.1.5、对新的人脸脸颊轮廓由保存的像素值进行像素填充,生成新的人脸脸颊;

由所得的人脸关键点,获得眼睛区域,针对待处理区域进行处理,包括以下步骤:

13.2.1、获得眼睛区域的图像,并保存眼睛关键点邻域的像素信息;

13.2.2、对眼睛区域图像110%地放大处理,并覆盖原图的眼睛位置,得到新的眼睛区域;

13.2.3、将保存的像素信息覆盖入新的眼睛邻域像素,得到最终人眼效果图;

由所得的人脸关键点,获得鼻子区域,针对待处理区域进行处理,包括以下步骤:

13.3.1、利用类似于步骤2的方法,对鼻翼区域进行缩小处理;

13.3.2、提高所检测的鼻梁区域的亮度值。

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