人脸关键点检测,也可以认为是人脸对齐(face alignment)可以采用多种方法进行实现,其中一种比较有代表性的方法是使用回归来完成这一功能。2014年CVPR上“One Millisecond Face Alignment with an Ensemble of Regression Trees”这篇文章是回归方法中的一种,Dlib库中的人脸关键点检测就是依据这一方法进行了实现。
论文主要特点
1,使用级联的回归树(ensemble of regression trees)来实现人脸对齐
2,将此方法拓展使得可以轻易的处理缺失数据
3,在速度和准确率上都得到了很优秀的效果
论文主要方法
此方法与之前的“Cascaded pose regression”和“Face alignment by explicit
shape regression”方法属于同一个类型,其核心都是使用了两层的回归来建立数学模型。
在第一层回归,其迭代公式为:
其中S是形状向量,存储着所有脸部关键点的位置, γt γ t 是一层的回归器,其输入为当前的形状向量和训练图片,其输出则是对所有的关键点的位置更新量。可以看到,在第一层的级联回归器中,每经过一级级联回归器,就会对所有关键点位置进行一次更新来达到更正确的位置。
在第二层回归,也就是 γt γ t 内部也是一次回归的过程,在本篇文章中采用的是Gradient Tree Boosting Algorithm的方法来得到一系列的回归树(Regression Tree)最终完成第二级的回归,需要注意的是,第二级回归的对象是当前预测值和真实值的差值。
第一层回归训练过程
首先,有训练数据集 (I1,S1),...(In,Sn) ( I 1 , S 1 ) , . . . ( I n , S n ) ,其中 Ii I i 图片, Si S i 为人脸关键点的位置。
在第一层的回归训练中,数据组织形式可以写为 (Iπi,Si^(t),ΔS(t)i) ( I π i , S i ^ ( t ) , Δ S i ( t ) ) ,其中 Iπi I π i 为数据集中的图片, Si^(t) S i ^ ( t ) 是第一层级联回归的第t层的预测关键点位置, ΔS(t)i Δ S i ( t ) 是这一层回归结果和真实值的差值。
其迭代公式为:
按照这样的方式不断进行迭代,当第一层回归级联层数设置为K层时,就会产生 γ1,γ2,...,γk γ 1 , γ 2 , . . . , γ k 这些回归器,这K个回归器就是我们通过训练所要得到的回归模型。
第二层回归训练过程
第二层的训练就是要具体到每一个 γt γ t </