Dlib库landmark算法解析

      landmark是一种人脸部特征点提取的技术,Dlib库中为人脸68点标记,在《调用Dlib库进行人脸关键点标记》一文中有效果和标定点序号的示意图。今后可采用landmark中的点提取眼睛区域、嘴巴区域用于疲劳检测,提取鼻子等部分可用于3D姿态估计。

      Dlib库使用《One Millisecond Face Alignment with an Ensemble of Regression Trees》CVPR2014中提及的算法:ERT(ensemble of regression trees)级联回归,即基于梯度提高学习的回归树方法。该算法使用级联回归因子,首先需要使用一系列标定好的人脸图片作为训练集,然后会生成一个模型。

      the shape_predictor_trainer object to train a shape_predictor using a set of training images, each annotated with shapes you want to predict. To do this, the shape_predictor_trainer uses the state-of-the-art method.

      使用基于特征选择的相关性方法把目标输出ri投影到一个随机方向w上,并且选择一对特征(u,v),使得Ii(u’)-Ii(v’)与被投影的目标wTri在训练数据上拥有最高的样本相关性。

      当获得一张图片后,算法会生成一个initial shape就是首先估计一个大致的特征点位置,然后采用gradient boosting算法减小initial shape 和 ground truth 的平方误差总和。用最小二乘法来最小化误差,得到每一级的级联回归因子。核心公式如下图所示:


Dlib库landmark算法解析_第1张图片
算法核心公式

      我们使用梯度提高学习的回归树训练每个rt,使用最小二乘法最小化误差。t表示级联序号,rt(∙,∙)表示当前级的回归器regressor。回归器的输入参数为图像I和上一级回归器更新后的shape,采用的特征可以是灰度值或者其它。每个回归器由很多棵树(tree)组成,每棵树参数是根据current shape和ground truth的坐标差和随机挑选的像素对训练得到的。

        与LBF不同,ERT是在学习Tree的过程中,直接将shape的更新值ΔS存入叶子结点leaf node.初始位置S在通过所有学习到的Tree后,meanshape加上所有经过的叶子结点的ΔS,即可得到最终的人脸关键点位置。总体流程如下图所示:


Dlib库landmark算法解析_第2张图片
回归过程,最小化误差

附:人脸特征提取算法比较(ASM、CLM、ERT等 )请参考如下博客:

http://blog.csdn.net/u013803245/article/details/51263808

你可能感兴趣的:(Dlib库landmark算法解析)