人脸特征点定位

   other http://www.face-rec.org/algorithms/#Image

人脸特征点定位——ASM和AAM算法

  (2013-12-15 14:50:59)
   

人脸特征点定位的目的是在人脸检测的基础上,进一步确定脸部特征点(眼睛、眉毛、鼻子、嘴巴、脸部外轮廓)的位置。定位算法的基本思路是:人脸的纹理特征和各个特征点之间的位置约束结合。经典算法是ASM和AAM。

1

1. ASM(Active Shape Model):分为训练和搜索两步。训练时,建立各个特征点的位置约束,构建各个特定点的局部特征。搜索时,迭代的匹配。

   第一步:训练:

                首先,构建形状模型:  

                         搜集n个训练样本(n=400);

                         手动标记脸部特征点;

                         将训练集中特征点的坐标串成特征向量;

                         对形状进行归一化和对齐(对齐采用Procrustes方法);

                         对对齐后的形状特征做PCA处理。

                接着,为每个特征点构建局部特征。目的是在每次迭代搜索过程中每个特征点可以寻找新的位置。局部特征一般用梯度特征,以防光照变化。有的方法沿着边缘的法线方向提取,有的方法在特征点附近的矩形区域提取。

   第二步:搜索:

                首先:计算眼睛(或者眼睛和嘴巴)的位置,做简单的尺度和旋转变化,对齐人脸;

                接着:匹配每个局部特征点(常采用马氏距离),计算新的位置;

                        得到仿射变换的参数,迭代直到收敛。

  另外,常采用多尺度的方法加速。搜索的过程最终收敛到高分辨率的原图像上。

2. AAM(Active Appreance Model):ASM只用了形状约束(加上特征点附近的特征),AAM又加入了整个脸部区域的纹理特征。即:Appreance  = Shape + Texture。

    在对形状和纹理特征统一量纲后,建模和搜索过程和ASM基本相同。

    有个区别是纹理特征的搜索过程:由于纹理特征维数较高,搜索过程是一个高维的优化问题。解决方法是事先学习出纹理预测需要的线性模型,根据该模型调整参数,提高搜索效率。

2

其中矩阵A就是先验。

    下面是随着迭代次数增加,模型收敛情况示例:

3

3. 开源库和SDK

         am_tools(原作者提供的demo)

         Stasm

         Face++ Research Toolkit

参考:

Active Shape Models

Active Appearance Models

Statistical Models of Appearance for Computer Vision.

ASM(Active Shape Model)算法介绍

AAM(Active Appearance Model)算法介绍

几种关于ASM & AAM 模型代码实现的对比

Active Shape Models with Stasm

(学习笔记)Stasm的接口和使用

原文地址:https://www.cnblogs.com/developer-ios/p/5257113.html