人脸特征点定位
other http://www.face-rec.org/algorithms/#Image
人脸特征点定位——ASM和AAM算法
(2013-12-15 14:50:59)人脸特征点定位的目的是在人脸检测的基础上,进一步确定脸部特征点(眼睛、眉毛、鼻子、嘴巴、脸部外轮廓)的位置。定位算法的基本思路是:人脸的纹理特征和各个特征点之间的位置约束结合。经典算法是ASM和AAM。
1. ASM(Active Shape Model):分为训练和搜索两步。训练时,建立各个特征点的位置约束,构建各个特定点的局部特征。搜索时,迭代的匹配。
第一步:训练:
首先,构建形状模型:
搜集n个训练样本(n=400);
手动标记脸部特征点;
将训练集中特征点的坐标串成特征向量;
对形状进行归一化和对齐(对齐采用Procrustes方法);
对对齐后的形状特征做PCA处理。
接着,为每个特征点构建局部特征。目的是在每次迭代搜索过程中每个特征点可以寻找新的位置。局部特征一般用梯度特征,以防光照变化。有的方法沿着边缘的法线方向提取,有的方法在特征点附近的矩形区域提取。
第二步:搜索:
首先:计算眼睛(或者眼睛和嘴巴)的位置,做简单的尺度和旋转变化,对齐人脸;
接着:匹配每个局部特征点(常采用马氏距离),计算新的位置;
得到仿射变换的参数,迭代直到收敛。
另外,常采用多尺度的方法加速。搜索的过程最终收敛到高分辨率的原图像上。
2. AAM(Active Appreance Model):ASM只用了形状约束(加上特征点附近的特征),AAM又加入了整个脸部区域的纹理特征。即:Appreance = Shape + Texture。
在对形状和纹理特征统一量纲后,建模和搜索过程和ASM基本相同。
有个区别是纹理特征的搜索过程:由于纹理特征维数较高,搜索过程是一个高维的优化问题。解决方法是事先学习出纹理预测需要的线性模型,根据该模型调整参数,提高搜索效率。
其中矩阵A就是先验。
下面是随着迭代次数增加,模型收敛情况示例:
3. 开源库和SDK
参考:
Statistical Models of Appearance for Computer Vision.
AAM(Active Appearance Model)算法介绍