下面给大家介绍一下人脸关键点检测之ASM、AAM模型,人脸关键点检测主要是在人脸图像中定位出关键位置如脸部轮廓、眉毛、眼睛、鼻子、嘴巴等,是人脸识别中重要的基础环节,应用场景主要有人脸姿态矫正、3D人脸重建、表情识别、脸型识别等。
人脸关键点标注图:
人脸关键点检测的算法大致有如下几个,ASM主动形状模型、AAM主动表观模型、CLM局部约束模型、CPR级联姿态回归模型之后就是深度学习,本文主要讲述在人脸关键点检测的方法发展史当中最为经典的人脸关键点检测方法ASM(Active Shape Models)、AAM(Active Appearance Models),首先来介绍一下点分布模型。
由于ASM 是一种基于点分布模型(Point Distribution Model)的算法,这里先对其做个简单介绍。从维基百科中定义得知点分布模型是通过训练集来建立描述对象轮廓的模型,比如PDM模型可用于可变手势的跟踪,如图:
跟踪过程可分为两个阶段:
2.然后根据静态手势的类型赋予手形不同的跟踪参数进行跟踪。
其中可以利用点分布模型结合图像特征对手部轮廓的变形进行统计上的描述,应用于手、人体等具有可变形轮廓的目标轮廓跟踪。
ASM主动形状模型,即通过形状模型对目标物体进行抽象。主动形状模型的基本思路:
1.选取一组人脸图像的训练样本,用形状向量(由所有特征点的坐标组成)描述人脸的形状,首先将训练集中各样本对齐,使样本间形状尽可能相似
3.最后通过关键点的搜索实现特定物体的匹配。
具体操作步骤:
如上图所示对一张女性人脸进行标注共有n个点,各个标注点可以用一个矩阵表示:
训练图像对齐
由于原始图像环境、角色、角度、距离远近、姿势变换等一系列问题会导致向量在计算过程中会出现误差,所以要对向量进行对齐处理,一般采用Procrustes分析进行对齐处理。
实现对齐处理具体过程:
1.将特征点中心坐标位置移到坐标系原点得到:
定义变换后的特征点g为,其中
将特征点进行正规化处理变成单位向量
2.经过变换训练集中每一个人脸将映射到人脸空间集合Sg的一个点。
其中
这是一个2n维球面,其中的奇数部分(对应着特征点的横坐标部分)和偶数部分(对应着特征点的纵坐标部分)坐标和为0。由于人脸存在的隐性约束,在人脸空间Sg并不是所有的点都是有效点。因此,定义Sg中有效的点所在的空间为Sfs,所有规范化的人脸特征都在空间Sfs中,在这里将Sfs作为有效人脸空间。
3.由于人脸旋转特征会影响到人脸间距离计算的准确性所以对人脸图像进行旋转变换,即定义一个旋转变换R,每张人脸图像的特征点进行如式的运算:
g’i是特征点旋转后得到的,也可以将上式定义成如下简单的形式g’=R 。g,为了求得这个旋转变换R,在人脸空间Sfs中,给定两个人脸g1,g2,计算他们之间最佳旋转变换R*12,可以通过求解如式的最优化问题,由此完成人脸对齐处理。
图像的PCA分析
从论文中可以看出为了得到形状模型要先进行PCA分析1.前面我们已经得到了平均形状向量,下一步算出其协方差矩阵
2.P为S的特征向量组成的矩阵,有p=p0,p1,…,pt,当映射到新的空间后,各个形状偏离平均形状的向量可以用新空间的特征向量线性表达。
由此我们得到以下公式
根据以上公式可以得到
这里的bi表示第i张图片形状与平均形状的偏离程度。论文中可看出只要不脱离bi这个区间就能检测到人脸,bi的区间
ASM搜索匹配
通过训练样本集得到ASM模型之后即可进行ASM搜索,首先对平均形状进行仿射变换得到一个初始模型:
通过迭代的方式来实现这一点:
匹配模型到目标点
先把形状参数b初始化为零, 用x = x + Pb生成模型位置点,再按照3到7步骤处理若为收敛反复调参迭代,最终得到收敛的b
ASM的搜索过程:
搜索新的位置过程如图
在搜索过程中每个模型点沿着垂直边界的轮廓,通过轮廓来定位最强的边缘,这个位置给出模型点的新的位置建议。
对于给定的点样本单独在训练图像中的模型点的任意一个侧面的K个像素。有2k+1个样本放在向量G中。为了减少全局强度变化影响,我们沿着轮廓来采样。之后对样本进行归一化处理
对每一个训练图像重复这一点,得到给定模型点的一组归一化样本{gi},假设这些点为高斯分布,并估计它们的均值-g和协方差Sg,得到关于点的灰度轮廓的统计模型。重复每一个模型点,给出每一个点的灰度模型,通过模型得到新样本gs的拟合质量。
上图是样本与模型平均值的马氏距离,与从分布中提取gs的概率成线性相关,从分布图中可以看到最小化的f(gs)等价于最大化gs的概率
在搜索过程中,在当前点M>K的任何一侧采样一个轮廓m像素然后在样本的2(m-k)+1可能的位置上测试相应灰度模型的拟合质量,并给出最佳匹配点f(gs)。
对于每一个点提供一个建议的新位置,然后通过上述搜索过程中使用的迭代方式来更新当前姿势和形状参数使得模型与新位点匹配完成搜索。
AAM算法主要是在ASM上进行改进,不仅采用形状约束,而且又加入整个脸部区域的纹理特征。AAM 于 ASM 一样,主要分为两个阶段,模型建立阶段和模型搜索匹配阶段,其中模型建立阶段包括对训练样本分别建立形状模型和纹理模型,然后将两个模型进行结合,形成 AAM 模型。
可以参照上述ASM步骤之后利用PCA对形状进行主成分分析计算,得到以下模型:
Ps为PCA计算得到的形状主成分特征分量形成的变换矩阵。bs是控制形状变化的统计形状参数。
之后在对纹理进行PCA分析得到模型
Pg为PCA计算得到的纹理主成分特征分量形成的变换矩阵。bg是控制纹理变化的统计纹理参数。
下一步使用PCA来判断bs与bg之间是否存在某种关联性,从而生成级联向量。具体可参考上述论文最终我们得到
通过生成向量g纹理图像并利用X所描述的控制点对其进行翘曲,可以合成给定图像的示例图像。
将适当的姿态应用于点,并将纹理向量投影到图像中。实验效果
AAM搜索
从论文可以看出(1) 首先初始化:t=0,模型参数初始化为Ct=0下图Initial
(2) 最小化一个新图像纹理与一个外观模型合成的图像纹理之间的差值
(3) 为了找到模型和图像之间的最佳匹配,我们希望最小化差分向量的大小
通过改变模型参数C,由于外观模型具有许多参数,我们可以把匹配过程看成优化,通过调参我们得到了运行时间算法。主要解决两个问题:(1)I与模型参数中的误差(2)C和最小化Δ的迭代算法中的关系,利用图像和模型的差别I与模型参数C之间存在线性关系,利用线性回归模型预测参数I变化:其中C=A*I其中线性回归变换矩阵A可以在训练阶段通过人为干扰的方法获得。
(4)尝试新的模型参数:
(5)重新计算误差函数:I’
(6)比较,如果Δ<Δ’,则接受Ct’作为新的参数如上图2it-20its,否则转第4步,尝试k=1.5;0.5;0.25等
(7)t=t+1,如果
或者迭代次数t超过预定次数,则退出,否则返回第2步.
总结ASM 主要分为两步:
第一步:模型训练,1.构建形状模型,2.寻找训练样本,3.标记人脸关键点形成特征向量4.进行Procrustes处理5.PCA处理6.构建局部特征准备搜索
第二步:搜索匹配,1.计算眼睛(或者眼睛和嘴巴)的位置,做简单的尺度和旋转变化,对齐人脸;2.在对齐后的各个点附近搜索,匹配每个局部关键点(常采用马氏距离),得到初步形状;再用平均人脸(形状模型)修正匹配结果;迭代直到收敛。
AAM模型主要是在ASM模型基础上在脸部区域添加纹理特征其大致算法与ASM相同。
参考文献:
[1]Cootes T. An Introduction to Active Shape Models[J]. 2000.
[2]Cootes T F, Edwards G J, Taylor C J. Active Appearance Models[C]// European Conference on Computer Vision. Springer Berlin Heidelberg, 1998:484-498.