人脸对齐:ASM (主动形状模型)算法

导语 :人脸对齐领域较早但是非常重要的ASM算法介绍

主动形状模型发表在95年,已经是比较老的模型了, 但是该算法是以后很多人脸对齐算法的基础,对理解人脸对齐领域算法有益,所以做了些研究。

ASM是一种基于点分布模型(Point Distribution Model,PDM)的算法。ASM是一个通用的形状模型,在这里, 我们重点讨论在人脸上的应用。在PDM中,外形相似的物体,例如人脸、人手等几何形状可以通过若干关键特征点(landmarks)的坐标依次串联形成一个形状向量来表示。例如, 对于人脸:

这里的Xi 即为上图人脸的形状向量。

ASM通过对形状向量的统计建模来控制合理的形状分布,同时每个单独特征点的局部梯度统计模型,用于在预测迭代时确定点的移动方向和位置。下文内容主要有

1 面部几何约束

2 线性形状模型

3 特征点局部梯度模型

4 ASM搜索

一、 面部几何约束

1 全局刚性形变

2 局部非刚性形变

对于局部非刚性形变,在ASM中使用线性形状模型来建模这种变形,见下文。在介绍线性形状模型之前, 我们了解下怎么将原始形状向量去掉刚性变换,因为线性形状模型只是对非刚性变换建模的。

3 去除刚性变换

首先对所有样本去中心话,即各维度减去均值

找到一个旋转、缩放,变换之后,使得变换后的形状向量与标准形状最接近

旋转与缩放一共是两个自由度, 所以在线性变换矩阵中只有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前后两次变化很小或者达到了规定的迭代次数。

五、 ASM的有点与缺点

优点: 快速、模型小、简单

缺点:精确度不高、受噪声干扰大,对图像的信息利用的少,点的局部模型是独立的。

参考文献

Active Shape Models-Their Training and Application

《Mastering OpenCV with Practical Computer Vision Projects》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

深层神经网络参数调优(五) ——超参数调试、batch归一化、softmax回归

深层神经网络参数调优(五) ——超参数调试、batch归一化、softmax回归 (原创内容,转载请注明来源,谢谢) 一、超参数调试 1、超参数 超参数是不直...

4288
来自专栏用户2442861的专栏

VGG论文笔记/小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

2312
来自专栏贾志刚-OpenCV学堂

理解CNN卷积层与池化层计算

深度学习中CNN网络是核心,对CNN网络来说卷积层与池化层的计算至关重要,不同的步长、填充方式、卷积核大小、池化层策略等都会对最终输出模型与参数、计算复杂度产生...

1601
来自专栏计算机视觉战队

详聊CNN的精髓

现在的深度学习发展速度已经超出每个人的想象,很大一部分人只是觉得我用他人的框架去实现自己的目的,并且效果很好就可以了,这也是现在一大部分的一个瓶颈。曾经有一个老...

3625
来自专栏Pytorch实践

Pytorch实现CNN时间序列预测

本公众号曾经推出过PyTorch实现的LSTM时间序列预测,并开源了其源码。细心的童鞋可能发现了,我之前使用的LSTM是生成式模型,而不是使用判别式进行预测。换...

7517
来自专栏瓜大三哥

DeepFace

检测→对齐→表示→分类 在文章中,通过3d模型改进了人脸对齐的方法。然后,通过基于4million人脸图像(4000个个体)训练的一个9层的人工神经网络来进行人...

2426
来自专栏AI研习社

用Kaggle经典案例教你用CNN做图像分类!

前言 在上一篇专栏《利用卷积自编码器对图片进行降噪》中,我们利用卷积自编码器对 MNIST 数据进行了实验,这周我们来看一个 Kaggle 上比较经典的一...

3896
来自专栏null的专栏

简单易学的机器学习算法——EM算法

一、机器学习中的参数估计问题 image.png 二、EM算法简介     在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解...

1.1K5
来自专栏闪电gogogo的专栏

《统计学习方法》笔记七(1) 支持向量机——线性可分支持向量机

应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,一是因为对偶问题往往更容易求解,二是自然引入核函数,进而推广到非线性分类的问题。

562
来自专栏机器学习、深度学习

人脸对齐--Dense Face Alignment

Dense Face Alignment ICCVW2017 http://cvlab.cse.msu.edu/project-pifa.html ...

4437

扫码关注云+社区