人脸对齐LBF算法中用到的算法
1:相似变换
相似变换的目的是求解两个形状之间的尺度和角度关系,和普氏分析的作用相同,不同点是不需要迭代求解,普氏分析理论上更准确,实际上在这里没什么特殊效果。
算法步骤和思想:
1)中心化两个形状;
2)以质心为原点,计算其到没一个形状点之间的距离,并求和
3)两个形状的尺度系数为2)中计算得到值的比值
4)以质心为原点,计算其到每一个形状点之间的向量,并求解两个形状对应向量之间的角度
5)两个形状之间的角度即4)得到角度的平均值
2:均值人脸
对齐的过程是迭代进行基于估计人脸提取特征,然后预测偏移量,最后对估计人脸变形得到新的估计人脸,估计人脸的初值即均值人脸,均值人脸需要根据样本统计生成。初始的估计人脸是均值人脸,那么能够得到每一个人脸的估计人脸和真实人脸之间的偏移量,根据这个偏移量,提取每一个样本的特征,进行训练随机森林,每一个树的叶子节点都是偏移量。新估计的人脸貌似是通过相似变换得到当前形状和真实形状的角度和缩放的尺度,然后真实形状减去当前的形状,得到偏移量,偏移量乘以角度和缩放的尺度,得到增量,然后用当前的形状+增量=下一个预估的形状。
两种的算法步骤:
1 平均形状:输入为大量人脸形状数据,人脸标准大小
1)对每一一张人脸形状,计算外接矩形,以最长边和人脸标准大小之间的比例缩放人脸形状,float型数值
2)对1)中生成的人脸求平均值,即得到均值人脸
2 迭代求解:输入为大量的人脸形状,人脸标准大小:
1)对每一张人脸形状,计算外接矩形,以最长边和人脸标准大小之间的比例缩放人脸形状,缩放到float型的实数
2)对1)中生成的人脸求平均值,得到均值人脸
3)将输入人脸通过相似变换使得其和均值人脸角度和尺度统一
4)将3)中的到的形状求平均得到新的均值人脸
5)重复3),4)使得前后的均值人脸误差小于指定值(L2范数),即收敛状态
3:特征提取
3.1 特征模板
特征模板包含的元素:
1)形状点ID1,
2)基于ID1的偏移量dx1,dy1,
3)形状点ID2,
4)基于ID2的便宜量dx2,dy2。
3.2 形状索引特征
在对齐的过程中特征是基于当前形状提取的,为了能够提取特征统一,所以有了形状索引特征,主要是保证,假如特征模板指的是在人眼上方某处的点,对于不同角度不同尺度的人脸形状应该也是从同样的位置上获取像素。形状索引特征的提取方式如下:
1)计算当前形状与均值形状之间的角度和尺度
2)根据1)中的值使当前形状和均值形状角度和尺度统一
3)2)中得到的形状加上对应偏移量
4) 3)中得到的形状根据1)中的角度和尺度进行恢复
5)根据4)中得到的形状提取制定像素值
根据几何关系可以将偏移量根据1)中得到的角度和尺度进行变化,然后加到当前形状上,这样做更省时。
shape index feature,就是基于人脸形状的几何关系求解两个像素点之差。
3.3 决策树
决策数是cart树,是一个完全二叉树,深度至少为4,越高的树需要的样本量越大。
决策树的节点保存有回归器,回归器是一种在形状索引特征的基础上保证样本指定形状点的偏移量(真实形状和估计形状之间的差值,形状要归一化到均值形状计算)方差最小,用于将偏移量相近的样本分为同一类。
决策树的叶节点保存有偏移量,样本在决策树森林中通过的叶节点的偏移量的和为样本形状的偏移量。在多级森林的情况下,形状的变化是一级森林结束后,而不是每一棵决策树。
对于一个样本,如果经过决策树,落在决策树地一个叶节点,那么形成特征10000000 (八个叶节点,需保证每棵决策树叶节点一致),如果落在第二个叶节点那么形成特征01000000。将一级中的决策树的特征按次序组合,就形成用于回归的全局二值特征。
在训练的过程中,我们得到N个特征Fi,组合形成F,设样本的形状点数量为68,一个点两个(x,y),那么对应有136个偏移量,N个Rij,形成Rj,通过解2中的方程形成136个W。假如有136棵决策数,那么Fi的维度是136x8=1088, Wi的维度是1088x1,那么W的维度是1088x136。
从这些数据可以看出,W可以分散到各个叶节点,那么就形成每个叶节点包含136个偏移量,这样在预测的时候就不用带入2章中的方程了,直接累加即可。这就是3000fps快的原因之一。