导语 :人脸对齐领域较早但是非常重要的ASM算法介绍
主动形状模型发表在95年,已经是比较老的模型了, 但是该算法是以后很多人脸对齐算法的基础,对理解人脸对齐领域算法有益,所以做了些研究。
ASM是一种基于点分布模型(Point Distribution Model,PDM)的算法。ASM是一个通用的形状模型,在这里, 我们重点讨论在人脸上的应用。在PDM中,外形相似的物体,例如人脸、人手等几何形状可以通过若干关键特征点(landmarks)的坐标依次串联形成一个形状向量来表示。例如, 对于人脸:
这里的Xi 即为上图人脸的形状向量。
ASM通过对形状向量的统计建模来控制合理的形状分布,同时每个单独特征点的局部梯度统计模型,用于在预测迭代时确定点的移动方向和位置。下文内容主要有
1 面部几何约束
2 线性形状模型
3 特征点局部梯度模型
4 ASM搜索
对于局部非刚性形变,在ASM中使用线性形状模型来建模这种变形,见下文。在介绍线性形状模型之前, 我们了解下怎么将原始形状向量去掉刚性变换,因为线性形状模型只是对非刚性变换建模的。
首先对所有样本去中心话,即各维度减去均值
找到一个旋转、缩放,变换之后,使得变换后的形状向量与标准形状最接近
旋转与缩放一共是两个自由度, 所以在线性变换矩阵中只有a,b两个未知数,该优化目标有封闭解(各变量取偏导等于0,得到方程组)。
对齐效果
上图中每个特征点是一种颜色。
这样, 我们得到了每个样本对齐之后形状向量。把这些形状向量作为线性形状模型的输入。
ASM中假设合理的人脸形状向量分布在 高维空间的一个超平面上, 并且每个维度合理范围限制在3倍方差(3 sigma 原则)。 下面介绍怎么找到这个超平面。 很自然的,对于降维,我们想到了PCA。
特征值谱(muct数据集), 这个图显示,特征值迅速减小,说明用PCA来建立模型是可行的。
特征值越小对应的特征向量描述的是更为细节的局部变化,特征值大的特征向量描述的框架面部各个方向上的变化。
在每个特征点的Profile方向选择2k个点,采集这2k个点的梯度,即局部profile梯度, 假设所有样本的对应的特征点的profile服从高维高斯分布,从而可以估计出该高斯分布的参数,均值、协方差矩阵。同时,规定了两个profile的相似度计算公式。为后面搜索时提供比较依据。profile的方向可以选择为前后两个特征点的连线的法向量。这样, 我们建立了每个特征点的局部梯度模型--高斯分布模型。
在初始形状x 的每个特征点处,profile方向前后选择2K(K>k)个点,即上图的Sampled Profile,然后用前面对该特征点建立的高斯分布的均值向量去前后滑动对比相似度, 选择相似度最高的位置,这样就计算出一个这个点需要调整方向以及值,即dXi, 最终所有特征点的调整组合成调整矩阵dX。
在上一步中,每个特征点的调整是独立, 通常情况下,调整后的形状已经不符合形状的几何约束了。所以,我们需要将全局调整映射到形状调整上来, 这就需要用到我们前面建立的线性形状模型
即调整值修正到db。 下面我们看调整步骤
初始位置,x为mean shape, M为旋转缩放矩阵, Xc为平移向量。
因为初始X是合理的形状, 我们知道刚性变换不会改变形状,所以首先我们要将上面得到的dX修正到刚性变换上来,即去除破坏了几何约束(这里是刚性的)的部分,最大程度保留第一步调整之后得到的形状, 同时调整之后的形状还是合理的。
解得:
这里dXc不会改变形状约束。
现在得到了一个修正之后的合理的dx, 但是这个dx只是在刚性约束上合理。 然而每个人的面部是不一样的, 所以在经过了刚性约束变换之后,我们需要将此变换修正到形状上的修整。
这样, 调整之后的形状也是符合形状约束的了。
迭代终止条件是db前后两次变化很小或者达到了规定的迭代次数。
优点: 快速、模型小、简单
缺点:精确度不高、受噪声干扰大,对图像的信息利用的少,点的局部模型是独立的。
Active Shape Models-Their Training and Application
《Mastering OpenCV with Practical Computer Vision Projects》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。