人脸对齐: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 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

用TensorFlow做Kaggle“手写识别”达到98%准确率-详解

这是一个TensorFlow的系列文章,本文是第三篇,在这个系列中,你讲了解到机器学习的一些基本概念、TensorFlow的使用,并能实际完成手写数...

4279
来自专栏云时之间

通过BP神经网络对于图像压缩的实现

BP神经网络现在来说是一种比较成熟的网络模型了,因为神经网络对于数字图像处理的先天优势,特别是在图像压缩方面更具有先天的优势,因此,我这一段时间在研究神经网络的...

33610
来自专栏机器学习算法与Python学习

干货|多重预训练视觉模型的迁移学习

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 源 | 全球人工智能 本文介绍的是基...

4267
来自专栏AI科技评论

学界 | 微软亚洲研究院提出两大创新模块,构建可变形卷积神经网络

论文摘要 由于用于构建卷积神经网络(CNNs)的各个模块具有较为固定的几何结构,从而在根本上限制了 CNNs 算法对几何变换的建模。在《Deformable C...

3225
来自专栏小石不识月

测试数据集与验证数据集之间有什么区别呢?

验证数据集(Validation Datasets)是训练模型时所保留的数据样本,我们在调整模型超参数时,需要根据它来对模型的能力进行评估。

44910
来自专栏AI研习社

谷歌工程师:聊一聊深度学习的weight initialization

编者按:本文作者夏飞,清华大学计算机软件学士,卡内基梅隆大学人工智能硕士。现为谷歌软件工程师。作者授权雷锋网 AI 研习社发布。 ? █ TLDR (or th...

2565
来自专栏数据派THU

独家 | 一文带你上手卷积神经网络实战(附数据集、学习资料)

原文标题:Understanding deep Convolutional Neural Networks with a practical use-case ...

3738
来自专栏机器之心

入门 | 机器学习研究者必知的八个神经网络架构

33812
来自专栏专知

【NLP专题】斯坦福CS224n课程笔记02:词向量表示(1)

1702
来自专栏AI研习社

基于 Keras 对深度学习模型进行微调的全面指南 Part 2

本部分属该两部系列中的第二部分,该系列涵盖了基于 Keras 对深度学习模型的微调。第一部分阐述微调背后的动机和原理,并简要介绍常用的做法和技巧。本部分将详细地...

753

扫码关注云+社区