来源:http://impd.tencent.com/?p=33
人脸特征点定位就是通过计算机在人脸图像中自动地定位出人脸各个器官(嘴巴、鼻子、眼睛、眉毛、人脸轮廓等)的准确位置,如图1所示。人脸特征点定位技术有很多的应用,如人脸识别、人脸表情分析、人脸动画、人脸美化等。然而,实际应用中存在各种因素严重影响了人脸特征点的正确定位,这些因素主要有光照变化、姿态变化、表情变化、头发、眼镜、装饰物、遮挡物等。因此,人脸特征点定位是一项非常有挑战性的技术。

图1. 人脸特征点
目前,在人脸特征点定位方面,常用的方法是基于主动形状模型 (Active Shape Models, ASM)的方法,它是由Cootes等人于1995年提出的。该模型是基于统计学习的方法,其思想是:首先通过统计一组已给出特征点位置的人脸图像,建立反映人脸图像的全局形状变化规律的统计形状模型以及反映特征点局部区域灰度变化规律的局部纹理模型。在特征点定位过程中,先用这个统计得到的形状模型作为初始的形状模型,然后通过不断地调节以获得最优的形状模型。具体的定位过程如下:
1) 人脸检测。通过人脸检测算法确定人脸在图像中的大致位置。
2) 初始化形状模型。利用训练得到的形状模型作为初始模型。
3) 局部搜索特征点。利用训练得到的局部纹理模型,对每个特征点沿其法线方向在一定范围内进行搜索,以得到最佳的位置。
4) 重构新形状。通过平移、旋转等重新构建形状。
5) 迭代。当相邻两次循环得到的形状向量的距离小于某一阈值时,则认为算法收敛,形状最优,迭代结束,否则转到第2步继续迭代。图2是算法的迭代过程,从中可以看出,随着迭代次数的增加,人脸形状模型的精确度越来越高,直至最优模型。

图2. 人脸特征点定位算法的迭代过程
对于视频,最为简单的方法是对每一帧图像独立进行特征点定位,但这种方法有定位精确度较低,计算时间长等缺点。一种改进的方法是利用视频跟踪技术等,如图3所示,这种改进方法的主要步骤:
1) 初始化形状模型。首先,如果是处理第一帧,则直接进行人脸检测并用训练得到的形状模型初始化;否则,判断上一帧特征点定位是否成功,如果成功,则直接用上一帧的形状模型初始化当前帧的形状模型,如果失败,就重新检测人脸并用训练得到的形状模型初始化。由于前后帧人脸变动通常比较小,用上一帧的结果初始化,可以获得更好的初始模型,并且只需要更少的迭代就可以获得最优结果。
2) 特征点跟踪。利用跟踪技术预测当前帧的形状模型,这可以进一步提高定位的精确度和稳定性。
3) 特征点定位。
这种方法的优点:
精确度更高。利用前一帧的结果初始化,精确度更高;利用跟踪技术进一步提高精确度。
稳定性更强。利用跟踪技术可以获得更加稳定的特征点坐标,帧间之间的特征点坐标更加平滑。
计算时间更短。不需要每帧都进行人脸检测,可以减少很多计算时间;同时,利用前一帧的结果初始化,使得迭代次数更少,进一步减少计算时间。

图3. 视频中的人脸特征点定位算法的算法流程
可以将该技术应用于视频聊天中的道具互动,以提高用户的互动性和娱乐程度。道具互动就是在视频聊天过程中,使用该技术定位出人脸的各个特征点,然后根据这些特征点的位置给自己或对方的人脸贴上各种道具如帽子、面具、眼镜、胡须等,以提高用户的互动性和娱乐程度,让用户在视频聊天中停留更长的时间,吸引更多的用户使用视频聊天功能。视频聊天中的道具互动效果如图4所示。

图4. 视频聊天中的道具互动