人脸特征点定位方法和装置
技术领域
本发明涉及图像处理技术领域,尤其涉及一种人脸特征点定位方法和装置。
背景技术
人脸特征点定位技术是基于人脸的人机交互中的一个关键步骤,人脸特征点信息可以用于表情识别,姿态估计,人脸识别等应用场景。
目前,可以采用基于分类的方法实现人脸特征点定位,基于分类的方法是利用机器学习的方法建立从图像特征到特征点信息的映射。基于分类的方法包括训练过程和定位过程,训练过程是在已有大量人脸图像及其对应的特征点信息基础上,利用回归方法建立图像特征与差分的映射关系,差分是指特征点的真实坐标与初始坐标之间的差分,并采用迭代的方法使得这个差分量越来越小,从而不断逼近正确的目标,每一次迭代结束生成一个回归模型。定位过程是在输入人脸图像上首先初始化人脸特征点坐标,在这些特征点位置提取图像特征,根据提取的图像特征和训练过程得到的第一次迭代的回归模型得到第一次特征点坐标差分,利用差分信息更新初始特征点坐标,再次计算图像特征,并与第二次迭代的回归模型得到第二次特征点坐标差分,再次更新关键点坐标,依次反复,经过所有迭代模型后得到特征点坐标即为最终结果。
但是,上述方法每一次迭代采用的模型大小相同,该模型是维度与特征点的数目平方正相关的矩阵,当特征点的数目比较大或者迭代次数比较多时,会涉及大量的数据运算,使得定位过程中计算繁琐,定位效率低。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种人脸特征点定位方法,该方法可以降低人脸特征点定位时的运算量,提高人脸特征点定位效率。
本发明的另一个目的在于提出一种人脸特征点定位装置。
为达到上述目的,本发明实施例提出的人脸特征点定位方法,包括:接收人脸图片,以及,获取所述人脸图片中人脸特征点的初始值;根据所述初始值,从所述人脸图片中提取图像特征;对所述图像特征和所述初始值进行子区域划分,得到与子区域对应的分离图像特征和分离特征点坐标;根据所述分离图像特征和预先建立的分离子模型,计算得到对应子区域的特征点子坐标差分,其中,所述分离子模型是根据对应子区域内的训练样本得到的;根据所述特征点子坐标差分和所述分离特征点坐标,更新人脸特征点坐标。
本发明实施例提出的人脸特征点定位方法,通过对图像特征和人脸特征点的初始值进行子区域划分,获取分离图像特征和分离特征点坐标,并根据分离图像特征和预先建立的分离子模型获取特征点子坐标差分,分离子模型也与子区域对应,由于运算时可以以子区域对应的数据量进行运算,可以降低人脸特征点定位时的运算量,提高人脸特征点定位效率。
为达到上述目的,本发明实施例提出的人脸特征点定位装置,包括:接收模块,用于接收人脸图片,以及,获取所述人脸图片中人脸特征点的初始值;提取模块,用于根据所述初始值,从所述人脸图片中提取图像特征;划分模块,用于对所述图像特征和所述初始值进行子区域划分,得到与子区域对应的分离图像特征和分离特征点坐标;计算模块,用于根据所述分离图像特征和预先建立的分离子模型,计算得到对应子区域的特征点子坐标差分,其中,所述分离子模型是根据对应子区域内的训练样本得到的;更新模块,用于根据所述特征点子坐标差分和所述分离特征点坐标,更新人脸特征点坐标。
本发明实施例提出的人脸特征点定位装置,通过对图像特征和人脸特征点的初始值进行子区域划分,获取分离图像特征和分离特征点坐标,并根据分离图像特征和预先建立的分离子模型获取特征点子坐标差分,分离子模型也与子区域对应,由于运算时可以以子区域对应的数据量进行运算,可以降低人脸特征点定位时的运算量,提高人脸特征点定位效率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一实施例提出的人脸特征点定位方法的流程示意图;
图2是本发明另一实施例提出的人脸特征点定位方法的流程示意图;
图3是本发明实施例中训练过程的流程示意图;
图4是本发明另一实施例的人脸特征点定位装置的结构示意图;
图5是本发明另一实施例的人脸特征点定位装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
下面参考附图描述根据本发明实施例的人脸特征点定位方法和装置。
图1是本发明一实施例提出的人脸特征点定位方法的流程示意图,该方法包括:
S101:接收人脸图片,以及,获取所述人脸图片中人脸特征点的初始值。
其中,人脸图片是指要进行人脸特征点定位的人脸图片。该人脸图片可以是本地已存储的图片,或者当前拍摄获取的图片。
人脸特征点的初始值可以是采用预设算法得到的人脸图片中人脸特征点的初始坐标,预设算法例如取图片中心点为鼻子的坐标等。
其中,人脸特征点可以预先设定,例如为左眼、右眼、鼻子、嘴巴等一个或多个特征对应的点。
S102:根据所述初始值,从所述人脸图片中提取图像特征。
具体地,可以在各个人脸特征点的初始坐标位置提取图像特征,例如可以提取SIFT(Scale-invariant feature transform,尺度不变特征转换)特征、HOG(Histogram ofOriented Gradient,方向梯度直方图)特征或LBP(Local Binary Patterns,局部二值模式)特征等描述图像边缘或纹理的特征。图像特征的具体提取方法可以采用目前通用的相应的特征提取算法。
在提取图像特征时,可以对应每个人脸特征点提取一个图像特征,当存在多个人脸特征点时,多个图像特征可以组成特征向量。
例如,多个图像特征组成的特征向量可以表示为:
[Ftr1,Ftr2,...,Ftrm],
其中,Ftri表示在第i个人脸特征点的坐标(x,y)i上提取的图像特征,i=1,2,...m,m表示人脸特征点的个数。
S103:对所述图像特征和所述初始值进行子区域划分,得到与子区域对应的分离图像特征和分离特征点坐标。
具体地,可以根据预设算法进行子区域划分,例如在实施例中,可以分成左眼、右眼、鼻子和嘴巴四个子区域,每个子区域包括一个或多个人脸特征点。
分离图像特征是指对提取到的整体的图像特征进行子区域划分后,得到的与每个子区域对应的图像特征,例如,以划分上述四个子区域为例,分离图像特征可以分别表示为[Ftr]L-Eye,[Ftr]R-Eye,[Ftr]Nose,[Ftr]Mouth。具体的,与每个子区域对应的分离图像特征可以由属于该子区域的人脸特征点对应的图像特征组成。
分离特征点坐标是指对初始值进行子区域划分后,得到的与每个子区域对应的坐标。具体的,与每个子区域对应的分离特征点坐标可以由属于该子区域的人脸特征点对应的初始值组成。
上述子区域划分时以不同的子区域包括不同的人脸部位为例,可以理解的是,子区域划分时也可以将不同部位组合为同一个子区域,例如,左眼与右眼组合为子区域L-Eye-R-Eye,左眼与鼻子组合为子区域L-Eye-Nose,或右眼与鼻子组合为子区域R-Eye-Nose等。
S104:根据所述分离图像特征和预先建立的分离子模型,计算得到对应子区域的特征点子坐标差分,其中,所述分离子模型是根据对应子区域内的训练样本得到的。
其中,分离子模型可以在训练过程中得到,分离子模型与每个子区域对应,用于表明分离图像特征与特征点子坐标差分的映射关系,特征点子坐标差分是该子区域内的人脸特征点的真实值与初始值之间的差分。
对应一个子区域,在获取该子区域的分离图像特征和分离子模型后,由于分离子模型可以表明分离图像特征与特征点子坐标差分的映射关系,因此根据已知的分离图像特征和分离子模型,可以得到已知的特征点子坐标差分。
具体的,可以采用如下公式获取特征点子坐标差分:
Δ(x,y)part=ModelPart·FtrPart;
其中,Δ(x,y)part是子区域part对应的特征点子坐标差分,ModelPart是子区域part对应的分离子模型,FtrPart是子区域part对应的分离图像特征。
可选的,所述建立分离子模型,包括:
获取训练样本;
获取所述训练样本的训练数据,并组成训练数据集,所述训练数据是对所述训练样本的初始值和提取的图像特征进行分离后得到的;
确定所述训练样本的权重;
根据所述训练数据集和所述权重,计算得到分离子模型。
可选的,所述训练数据包括特征点子坐标差分和分离图像特征,所述获取所述训练样本的训练数据,包括:
获取所述训练样本的人脸特征点的初始值,并根据所述初始值从所述训练样本中提取图像特征;
根据所述训练样本的初始值和所述训练样本的对应的人脸特征点的真实值,获取所述训练样本的坐标差分;
对所述训练样本的图像特征和所述训练样本的坐标差分进行子区域划分,得到与子区域对应的所述训练样本的分离图像特征和特征点子坐标差分。
可选的,所述确定所述训练样本的权重,包括:
获取所述训练样本在当前迭代后更新后的坐标值;
计算所述当前迭代后更新后的坐标值与真实值之间的差值;
根据所述差值确定所述训练样本的权重,其中,所述权重与所述差值成正比关系。
可选的,所述根据所述差值确定所述训练样本的权重,包括:
将所述差值确定为所述训练样本的权重,其中,所述差值是当前迭代后更新后的坐标值与真实值之间的距离信息。
其中,距离信息可以具体是欧式距离或者棋盘距离。
具体的建立分离子模型的流程可以参见后续实施例。
S105:根据特征点子坐标差分和分离特征点坐标,更新人脸特征点坐标。
其中,在得到特征点子坐标差分和分离特征点坐标后,可以将两者相加得到更新后的人脸特征点坐标。具体公式可以如下:
U(x,y)i=(xI+Δx,yI+Δy)i,i=1,2,...,m
其中,U(x,y)i表示更新后的特征点坐标,xI,yI表示特征点坐标初始值,Δx,Δy表示特征点坐标差分,m表示特征点个数。
可以理解的是,通过上述S101-S105可以完成一次迭代,在定位过程中可以根据训练过程得到的多个模型进行多次迭代。在其他迭代过程中采用的模型可以是分离子模型,也可以是现有技术中未进行子区域划分时的模型。另外,采用未进行子区域划分时得到的模型进行迭代和采用分离子模型进行迭代的过程可以交叉进行,也可以分别进行,并且可以先采用分离子模型进行迭代或者后采用分离子模型进行迭代。
例如,以未子区域划分时得到的模型称为回归模型,分离子模型称为回归子模型为例,且,先采用回归模型进行迭代为例,参见图2,另一实施例中,该方法可以包括:
S201:提取图像特征。
在接收到人脸图片,对获取人脸图片中人脸特征点的初始值后,可以在初始值上提取图像特征。
S202:计算特征点坐标差分。
其中,可以根据图像特征以及训练过程中得到的回归模型计算得到特征点坐标差分。
回归模型用于表明图像特征与特征点坐标差分之间的映射关系,因此,根据该映射关系以及已知的图像特征,可以得到已知的特征点坐标差分。
S203:更新特征点坐标。
例如,得到特征点坐标差分后,可以将人脸特征点的初始值与该特征点坐标差分进行相加,得到更新后的特征点坐标。
通过S201-S203可以完成定位过程的第一次迭代。之后,还可以采用其他训练模型完成再次迭代。例如,采用回归子模型可以完成如下迭代:
S204:提取图像特征。
S205:分离图像特征。
S206:分离特征点坐标。
S207:计算特征点子坐标差分。
S208:更新特征点子坐标。
上述的S204-S208的具体内容可以参见S101-S105中的相应内容,在此不再赘述。
通过S204-S208可以完成定位过程的第二次迭代,之后还可以继续迭代,在此不再赘述。
本实施例通过对图像特征和人脸特征点的初始值进行子区域划分,获取分离图像特征和分离特征点坐标,并根据分离图像特征和预先建立的分离子模型获取特征点子坐标差分,分离子模型也与子区域对应,由于运算时可以以子区域对应的数据量进行运算,可以降低人脸特征点定位时的运算量,提高人脸特征点定位效率。
图3是本发明实施例中训练过程的流程示意图,该方法包括:
S301:获取训练样本的人脸特征点的初始值,并根据初始值从训练样本中提取图像特征。
具体地,训练样本是指已知的大量的人脸图片,该人脸图片上人脸特征点的坐标真实值是已知的。
可以采用预设算法对训练样本进行初始化,得到人脸特征点的初始值。
初始值是人脸特征点的初始坐标,在得到初始坐标后,可以在初始坐标上按照相应的图像特征提取算法提取图像特征,图像特征例如为SIFI特征等。
对应不同人脸特征点的图像特征可以组成特性向量,例如,特征向量可以表示为:
[Ftr1,Ftr2,...,Ftrm]
其中,Ftri表示在第i个人脸特征点的坐标(x,y)i上提取的图像特征,i=1,2,...m,m表示人脸特征点的个数。
S302:根据训练样本的初始值和训练样本的对应的人脸特征点的真实值,获取训练样本的特征点坐标差分。
具体地,特征点坐标差分的计算公式如下:
Δ(x,y)i=(xT-xI,yT-yI)i,i=1,2,...,m, (1)
其中,xT,yT表示特征点坐标真实值,xI,yI表示特征点坐标初始值,m表示人脸特征点的个数。
S303:对训练样本的图像特征进行子区域划分,得到与子区域对应的训练样本的分离图像特征。
其中,可以采用预设的子区域划分算法进行子区域划分,将一个子区域内的人脸特征点对应的图像特征组成该子区域对应的分离图像特征。例如,可以划分为4个子区域,相应的分离图像特征可以分别表示为[Ftr]L-Eye,[Ftr]R-Eye,[Ftr]Nose,[Ftr]Mouth。
具体的,与每个子区域对应的分离图像特征可以由属于该子区域的人脸特征点对应的图像特征组成。
S304:对训练样本的坐标差分进行子区域划分,得到与子区域对应的训练样本的特征点子坐标差分。
具体地,可以采用与S303相同的子区域划分算法对特征点坐标差分进行划分。
例如,可以根据左眼、右眼、鼻子和嘴巴四个部位划分子区域,得到对应的特征点子坐标差分,分别表示为[Δ(x,y)]L-Eye,[Δ(x,y)]R-Eye,[Δ(x,y)]Nose,[Δ(x,y)]Mouth。
S305:计算各分离子模型。
具体地,可以根据不同的子区域将分离图像特征与对应的特征点子坐标差分通过回归的方法训练得到分离子模型,分离子模型也可以称为回归子模型,分别表示为ModelL -Eye,ModelR-Eye,ModelNose,ModelMouth。
回归方法可以采用最小二乘回归,也可以采用岭回归或者支持向量机回归等。
具体的,训练公式如下:
其中,Α
0是子区域i对应的分离子模型Model
i,具体可以是一个矩阵,θ是子区域i对应的特征点子坐标差分组成的向量,
是子区域i对应的分离图像特征组成的向量,A是要优化的矩阵。
θ和
是根据训练样本得到训练数据,多个训练数据可以组成训练数据集
其中,N表示训练样本的个数。
根据训练数据集以及上述公式(2)可以得到分离子模型。
初始训练时各训练数据的权重可以为预设的初始值,例如各训练数据的权重相同。
S306:计算训练样本的回归误差。
其中,可以根据训练得到的分离子模型计算特征点子坐标差分,再根据初始值和特征点子坐标差分得到估计值,再将真实值与估计值的差值确定为训练样本的回归误差。
具体地,计算特征点子坐标差分的公式如下:
(Δ(x,y)1,Δ(x,y)2,...,Δ(x,y)mi)=Modeli·(Ftr1,Ftr2,...,Ftrmi), (3)
其中,Δ(x,y)j,(j=1,2,...mi)表示每次迭代时的坐标差分,Ftrj,(j=1,2,...mi)表示在当前特征点坐标上提取的图像特征,mi表示第i个子区域中特征点个数,Modeli表示第i个子区域对应的分离子模型。
根据初始值和特征点子坐标差分得到估计值的公式如下:
U(x,y)i=(xI+Δx,yI+Δy)i,i=1,2,...,m, (4)
其中,U(x,y)i表示更新后的特征点坐标,xI,yI表示特征点坐标初始值,Δx,Δy表示特征点坐标差分,m是特征点个数。
真实值与估计值的差值可以是欧式距离或者棋盘距离。
欧式距离的计算公式为:
其中,U(x,y)表示更新后的特征点坐标,T(x,y)表示特征点真实坐标,xU,yU表示更新后的特征点坐标值,xT,yT表示特征点坐标真实值,Dist[U(x,y),T(x,y)]i表示更新后的特征点坐标与特征点真实坐标的欧式距离,i=1,2,...,N,N是训练样本的数目。
棋盘距离的计算公式如下:
其中,U(x,y)表示更新后的特征点坐标,T(x,y)表示特征点真实坐标,xU,yU表示更新后的特征点坐标值,xT,yT表示特征点坐标真实值,Dist[U(x,y),T(x,y)]i表示更新后的特征点坐标与特征点真实坐标的棋盘距离,i=1,2,...,N,N是训练样本的数目。
S307:更新训练样本的权重。
在具体的实施例,可以将真实值与估计值差值确定为训练样本的权重,差值的具体计算方式可以参见S306。
在更新训练样本权重后,可以得到新的训练数据集为:
可以理解的是,在训练过程中也可以进行多次迭代,每次迭代获取相应的回归模型,因此,在S307之后还可以继续进行迭代。该新的训练数据集可以用于在下次迭代时重新确定训练模型。
对每次更新后的训练数据集进行迭代,反复执行步骤S201-S207,每一次迭代结束都会生成一个分离子模型,当迭代后更新后的坐标值与真实值之间的差值小于预设阈值时,可以结束迭代过程。
在现有技术中,对人脸图像的所有特征点整体建立模型,每一次迭代产生的模型大小相同,得到的模型矩阵的维度与m2正相关,当特征点的数目m比较大或者迭代次数比较多时,整个系统的模型大小会相应成比例增加。本实施例在每次训练迭代时采用分离式的迭代子模型,每一个子模型的大小只与该子区域内的特征点的数目有关,能够有效降低模型的大小,并降低子模型矩阵维度,加快定位过程中的计算速度。
本实施例中,通过子区域划分,得到分离图像特征和分离特征点坐标,并根据分离图像特征和分离特征点坐标计算得到分离子模型,分离子模型的维度相对于不进行子区域划分可以大大降低,该分离子模型可以用于人脸特征点定位过程,从而可以降低定位过程的运算量,提高定位效率。并且,本实施例通过调整训练样本的权重,使得上一次迭代误差大的训练样本在下一次迭代过程中占用较大权重,可以更关注误差较大的训练样本,从而降低训练模型的误差,进而提高人脸特征点定位的准确度。
为了实现上述实施例,本发明还提出一种人脸特征点定位装置。
图4是本发明另一实施例的人脸特征点定位装置的结构示意图。如图4所示,该人脸特征点定位装置包括:接收模块100、提取模块200、划分模块300、计算模块400和更新模块500。
具体地,接收模块100用于接收人脸图片,以及,获取所述人脸图片中人脸特征点的初始值。其中,人脸图片是指要进行人脸特征点定位的人脸图片。该人脸图片可以是本地已存储的图片,或者当前拍摄获取的图片。
人脸特征点的初始值可以是采用预设算法得到的人脸图片中人脸特征点的初始坐标,预设算法例如取图片中心点为鼻子的坐标等。
其中,人脸特征点可以预先设定,例如为左眼、右眼、鼻子、嘴巴等一个或多个特征对应的点。
提取模块200用于根据所述初始值,从所述人脸图片中提取图像特征。更具体地,提取模块200可以在各个人脸特征点的初始坐标位置提取图像特征,例如可以提取SIFT(Scale-invariant feature transform,尺度不变特征转换)特征、HOG(Histogram ofOriented Gradient,方向梯度直方图)特征或LBP(Local Binary Patterns,局部二值模式)特征等描述图像边缘或纹理的特征。图像特征的具体提取方法可以采用目前通用的相应的特征提取算法。
在提取图像特征时,提取模块200可以对应每个人脸特征点提取一个图像特征,当存在多个人脸特征点时,多个图像特征可以组成特征向量。
例如,多个图像特征组成的特征向量可以表示为:
[Ftr1,Ftr2,...,Ftrm],
其中,Ftri表示在第i个人脸特征点的坐标(x,y)i上提取的图像特征,i=1,2,...m,m表示人脸特征点的个数。
划分模块300用于对所述图像特征和所述初始值进行子区域划分,得到与子区域对应的分离图像特征和分离特征点坐标。更具体地,划分模块300可以根据预设算法进行子区域划分,例如在具体实施例中,可以分成左眼、右眼、鼻子和嘴巴四个子区域,每个子区域包括一个或多个人脸特征点。
分离图像特征是指对提取到的整体的图像特征进行子区域划分后,得到的与每个子区域对应的图像特征,例如,以划分上述四个子区域为例,分离图像特征可以分别表示为[Ftr]L-Eye,[Ftr]R-Eye,[Ftr]Nose,[Ftr]Mouth。具体的,与每个子区域对应的分离图像特征可以由属于该子区域的人脸特征点对应的图像特征组成。
分离特征点坐标是指对初始值进行子区域划分后,得到的与每个子区域对应的坐标。具体的,与每个子区域对应的分离特征点坐标可以由属于该子区域的人脸特征点对应的初始值组成。
上述子区域划分时以不同的子区域包括不同的人脸部位为例,可以理解的是,子区域划分时也可以将不同部位组合为同一个子区域,例如,左眼与右眼组合为子区域L-Eye-R-Eye,左眼与鼻子组合为子区域L-Eye-Nose,或右眼与鼻子组合为子区域R-Eye-Nose等。
计算模块400用于根据所述分离图像特征和预先建立的分离子模型,计算得到对应子区域的特征点子坐标差分,其中,所述分离子模型是根据对应子区域内的训练样本得到的。其中,分离子模型可以在训练过程中得到,分离子模型与每个子区域对应,用于表明分离图像特征与特征点子坐标差分的映射关系,特征点子坐标差分是该子区域内的人脸特征点的真实值与初始值之间的差分。
对应一个子区域,在获取该子区域的分离图像特征和分离子模型后,由于分离子模型可以表明分离图像特征与特征点子坐标差分的映射关系,因此根据已知的分离图像特征和分离子模型,计算模块400可以计算得到对应子区域的特征点子坐标差分。
具体的,计算模块400可以采用如下公式获取特征点子坐标差分:
Δ(x,y)part=ModelPart·FtrPart;
其中,Δ(x,y)part是子区域part对应的特征点子坐标差分,ModelPart是子区域part对应的分离子模型,FtrPart是子区域part对应的分离图像特征。
具体的建立分离子模型的过程可以参见后续实施例。
更新模块500用于根据所述特征点子坐标差分和所述分离特征点坐标,更新人脸特征点坐标。其中,在得到特征点子坐标差分和分离特征点坐标后,更新模块500可以将两者相加得到更新后的人脸特征点坐标。具体公式可以如下:
U(x,y)i=(xI+Δx,yI+Δy)i,i=1,2,...,m
其中,U(x,y)i表示更新后的特征点坐标,xI,yI表示特征点坐标初始值,Δx,Δy表示特征点坐标差分,m表示特征点个数。
可以理解的是,在定位过程中可以根据训练过程得到的多个模型进行多次迭代。在其他迭代过程中采用的模型可以是分离子模型,也可以是现有技术中未进行子区域划分时的模型。另外,采用未进行子区域划分时得到的模型进行迭代和采用分离子模型进行迭代的过程可以交叉进行,也可以分别进行,并且可以先采用分离子模型进行迭代或者后采用分离子模型进行迭代。
本实施例通过对图像特征和人脸特征点的初始值进行子区域划分,获取分离图像特征和分离特征点坐标,并根据分离图像特征和预先建立的分离子模型获取特征点子坐标差分,分离子模型也与子区域对应,由于运算时可以以子区域对应的数据量进行运算,可以降低人脸特征点定位时的运算量,提高人脸特征点定位效率。
图5是本发明另一实施例的人脸特征点定位装置的结构示意图。如图5所示,该人脸特征点定位装置包括:接收模块100、提取模块200、划分模块300、计算模块400、更新模块500、建立模块600、获取子模块610、组成子模块620、第一获取单元621、第二获取单元622、划分单元623、确定子模块630、第三获取单元631、计算单元632、确定单元633和计算子模块640。其中,建立模块600包括获取子模块610、组成子模块620、确定子模块630和计算子模块640;组成子模块620包括第一获取单元621、第二获取单元622和划分单元623;确定子模块630包括第三获取单元631、计算单元632和确定单元633。
具体地,建立模块600用于建立分离子模型,所述建立模块600包括:
获取子模块610,用于获取训练样本。其中,训练样本是指已知的大量的人脸图片,该人脸图片上人脸特征点的坐标真实值是已知的。
组成子模块620,用于获取所述训练样本的训练数据,并组成训练数据集,所述训练数据是对所述训练样本的初始值和提取的图像特征进行分离后得到的。所述训练数据包括特征点子坐标差分和分离图像特征,所述组成子模块620包括:
第一获取单元621用于获取所述训练样本的人脸特征点的初始值,并根据所述初始值从所述训练样本中提取图像特征;
第二获取单元622用于根据所述训练样本的初始值和所述训练样本的对应的人脸特征点的真实值,获取所述训练样本的坐标差分;
划分单元623用于对所述训练样本的图像特征和所述训练样本的坐标差分进行子区域划分,得到与子区域对应的所述训练样本的分离图像特征和特征点子坐标差分。
更具体地,第一获取单元621可以采用预设算法对训练样本进行初始化,得到人脸特征点的初始值。
初始值是人脸特征点的初始坐标,在得到初始坐标后,可以在初始坐标上按照相应的图像特征提取算法提取图像特征,图像特征例如为SIFI特征等。对应不同人脸特征点的图像特征可以组成特性向量,例如,特征向量可以表示为:
[Ftr1,Ftr2,...,Ftrm]
其中,Ftri表示在第i个人脸特征点的坐标(x,y)i上提取的图像特征,i=1,2,...m,m表示人脸特征点的个数。
第二获取单元622可根据训练样本的初始值和训练样本的对应的人脸特征点的真实值,获取训练样本的特征点坐标差分。特征点坐标差分的计算公式如下:
Δ(x,y)i=(xT-xI,yT-yI)i,i=1,2,...,m, (1)
其中,xT,yT表示特征点坐标真实值,xI,yI表示特征点坐标初始值,m表示人脸特征点的个数。
划分单元623可以采用预设的子区域划分算法进行子区域划分,将一个子区域内的人脸特征点对应的图像特征组成该子区域对应的分离图像特征。例如,可以划分为4个子区域,相应的分离图像特征可以分别表示为[Ftr]L-Eye,[Ftr]R-Eye,[Ftr]Nose,[Ftr]Mouth。具体的,与每个子区域对应的分离图像特征可以由属于该子区域的人脸特征点对应的图像特征组成。
划分单元623还可以采用与上述方法相同的子区域划分算法对特征点坐标差分进行划分,得到与子区域对应的训练样本的特征点子坐标差分。例如,可以根据左眼、右眼、鼻子和嘴巴四个部位划分子区域,得到对应的特征点子坐标差分,分别表示为[Δ(x,y)]L-Eye,[Δ(x,y)]R-Eye,[Δ(x,y)]Nose,[Δ(x,y)]Mouth。
确定子模块630用于确定所述训练样本的权重。所述确定子模块630包括:
第三获取单元631用于获取所述训练样本在当前迭代后更新后的坐标值;
计算单元632用于计算所述当前迭代后更新后的坐标值与真实值之间的差值;
确定单元633用于根据所述差值确定所述训练样本的权重,其中,所述权重与所述差值成正比关系。
计算子模块640用于根据所述训练数据集和所述权重,计算得到分离子模型。
更具体地,计算子模块640可以根据不同的子区域将分离图像特征与对应的特征点子坐标差分通过回归的方法训练得到分离子模型,分离子模型也可以称为回归子模型,分别表示为ModelL-Eye,ModelR-Eye,ModelNose,ModelMouth。
回归方法可以采用最小二乘回归,也可以采用岭回归或者支持向量机回归等。
具体的,训练公式如下:
其中,Α
0是子区域i对应的分离子模型Model
i,具体可以是一个矩阵,θ是子区域i对应的特征点子坐标差分组成的向量,
是子区域i对应的分离图像特征组成的向量,A是要优化的矩阵。
θ和
是根据训练样本得到训练数据,多个训练数据可以组成训练数据集
其中,N表示训练样本的个数。
根据训练数据集以及上述公式(2)可以得到分离子模型。
初始训练时各训练数据的权重可以为预设的初始值,例如各训练数据的权重相同。
计算单元632可以根据训练得到的分离子模型计算特征点子坐标差分,再根据初始值和特征点子坐标差分得到估计值,再将真实值与估计值的差值确定为训练样本的回归误差。
计算特征点子坐标差分的公式如下:
(Δ(x,y)1,Δ(x,y)2,...,Δ(x,y)mi)=Modeli·(Ftr1,Ftr2,...,Ftrmi), (3)
其中,Δ(x,y)j,(j=1,2,...mi)表示每次迭代时的坐标差分,Ftrj,(j=1,2,...mi)表示在当前特征点坐标上提取的图像特征,mi表示第i个子区域中特征点个数,Modeli表示第i个子区域对应的分离子模型。
根据初始值和特征点子坐标差分得到估计值的公式如下:
U(x,y)i=(xI+Δx,yI+Δy)i,i=1,2,...,m, (4)
其中,U(x,y)i表示更新后的特征点坐标,xI,yI表示特征点坐标初始值,Δx,Δy表示特征点坐标差分,m是特征点个数。
真实值与估计值的差值可以是欧式距离或者棋盘距离。
欧式距离的计算公式为:
其中,U(x,y)表示更新后的特征点坐标,T(x,y)表示特征点真实坐标,xU,yU表示更新后的特征点坐标值,xT,yT表示特征点坐标真实值,Dist[U(x,y),T(x,y)]i表示更新后的特征点坐标与特征点真实坐标的欧式距离,i=1,2,...,N,N是训练样本的数目。
棋盘距离的计算公式如下:
其中,U(x,y)表示更新后的特征点坐标,T(x,y)表示特征点真实坐标,xU,yU表示更新后的特征点坐标值,xT,yT表示特征点坐标真实值,Dist[U(x,y),T(x,y)]i表示更新后的特征点坐标与特征点真实坐标的棋盘距离,i=1,2,...,N,N是训练样本的数目。
在具体的实施例,确定单元633可以将真实值与估计值差值确定为训练样本的权重。其中,所述差值是当前迭代后更新后的坐标值与真实值之间的距离信息,例如欧式距离或棋盘距离。
在更新训练样本权重后,可以得到新的训练数据集为:
可以理解的是,在训练过程中也可以进行多次迭代,每次迭代获取相应的回归模型,因此,之后在更新训练数据集后还可以继续进行迭代。该新的训练数据集可以用于在下次迭代时重新确定训练模型。
对每次更新后的训练数据集进行迭代,每一次迭代结束都会生成一个分离子模型,当迭代后更新后的坐标值与真实值之间的差值小于预设阈值时,可以结束迭代过程。
在现有技术中,对人脸图像的所有特征点整体建立模型,每一次迭代产生的模型大小相同,得到的模型矩阵的维度与m2正相关,当特征点的数目m比较大或者迭代次数比较多时,整个系统的模型大小会相应成比例增加。本实施例在每次训练迭代时采用分离式的迭代子模型,每一个子模型的大小只与该子区域内的特征点的数目有关,能够有效降低模型的大小,并降低子模型矩阵维度,加快定位过程中的计算速度。
本实施例中,通过子区域划分,得到分离图像特征和分离特征点坐标,并根据分离图像特征和分离特征点坐标计算得到分离子模型,分离子模型的维度相对于不进行子区域划分可以大大降低,该分离子模型可以用于人脸特征点定位过程,从而可以降低定位过程的运算量,提高定位效率。并且,本实施例通过调整训练样本的权重,使得上一次迭代误差大的训练样本在下一次迭代过程中占用较大权重,可以更关注误差较大的训练样本,从而降低训练模型的误差,进而提高人脸特征点定位的准确度。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。