前两周研究了一点关于人脸表情识别的文章,很多方法都是基于在提取人脸特征点的基础上完成的,然后利用网格模型或者形变模型对特征点进行分析和检测以及分类的方法实现对人脸表情的识别,可以看出人脸关键点(特征点)的提取与定位在人脸表情识别占有很重要的地位,决定画1-2周时间研读一些人脸关键点提取的文章,本周主要调研了人脸特征点检测、定位和人脸校准的算法:
人脸特征点检测的方法主要看了ASM(Active Shape Model)算法,是基于点分布模型PDM的算法,在近几年的CVPR很多文章有介绍,主要也是包括训练和搜索两个部分,训练的样本只需要包括人脸区域就可以了,不需要考虑图像尺寸问题,但是必须要手动记录每个训练样本的K个特征呢个点,主要是记录关键特征点的位置坐标信息,保存在文本文件中,可以考虑使用编码来实现。然后是构建训练集的特征向量,比如N个训练样本,就得到了N个特征向量,构建好特征向量后将形状归一化,目的就是在于对前面的手动标定的人脸特征点进行对齐,消除不同角度、不同距离、不同姿态等外界因素造成的非形状干扰,从而使得模型更有效,一般该步骤都是采用的是Procrustes方法进行归一化,主要也是将点分布模型进行适当的平移、缩放等变换,在不改变分布模型的情况下得到同一个点分布模型。Procrustes方法也是一种求解变换矩阵的方法,得到最后的平均人脸模型,然后将模型进行PCA处理,选取前几个特征向量。然后就为每个特征点构建局部特征,主要也是在特征点上选取m个像素得到特征向量,对向量进行灰度求导得到局部纹理。得到纹理均值和方差,这样一个特征点的新特征与其训练好的局部特征之间的相似性度量就可以用马氏距离来表示。第二步就是ASM的搜索,主要也是通过仿射变换旋转缩放操作计算每个特征点的新位置。整个ASM算法操作思路比较清晰。
另外也看了ECCV2014上哦人脸检测和校准的文章以及CVPR2014上面利用局部二值特征进行人脸配准的算法。前一篇文章主要级联检测器进行分类,很多方法都用到了前人的方法,包括回归函数,特征点回归算法还有state-of-the-art方法都是直接采用的,但是从检测效果来看非常不错,完全弄懂该算法,还需要学习以前的基础算法,主要是机器学习相关的基本算法的实现和流程。前面一篇文章的方法在后面的文章中也有介绍,第二篇文章的应用价值很高,属于现行判别形状回归的方法,主要介绍线性回归和回归树(什么是回归树还不知道?),整体思路 首先对图片初始化
1 个shape(这个shape 就是一组点,目标是将它们移动到相应的眼睛鼻子嘴巴上)然后基于这个Shape计算其每个点的周围像素,或者两shape两个点中间像素的值(为了对光照鲁棒,一般是两个点像素的差值),这个特征记做Features。
随后计算当前shape和人工标记好shape 的差异Delta_Shape , 然后训练一个函数y = f(x) , 使 delta_Shape = f(Features)。最后将这个Delta_Shape 加上初始的Shape 就是最终要求的人脸形状。这个过程就是该方法的Face Alignmeng核心过程。所谓配准就是计算这个增量。训练就是学习特征与这个增量的关系。本文的方法是对这个过程进行了级联,从而降低了每次配准的难度。将上文最后的结果代入第一步循环10次。就是整体的过程。下图是整个思路:
文章对于如何提取一个landmark周围的像素点没有说明。应该是先求得当前形状和平均形状之间的旋转和尺寸变换后,在用变换后的offset去像素点(在One Millisecond Face Alignment with anEnsemble of Regression Trees中有详细说明)。
参考文献:
[1] Joint Cascade Face Detectionand Alignment.ECCV 2014.
[2] Face Alignment at 3000 FPS viaRegressing Local Binary Features.CVPR 2014.
[3] Cascade Pose Regression.CVPR2010.