参考文献:
Kazemi V, Sullivan J. One millisecond face alignment with an ensemble of regression trees[C]//Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on. IEEE, 2014: 1867-1874
简介
CVPR 2014的一篇关于人脸关键点检测的论文,基于Ensemble of Regression Tress算法(以下简称 ERT),速度极快(单人人脸关键点检测耗时约为1ms),效果也不错。同时又能处理训练集中部分关键点标定缺失的情况。
dlib 库中(http://dlib.net/),有这个算法的完整实现,包括训练和测试部分。
有paper,有code,对我们这些搞算法的底层人员,真是再happy不过了。
算法介绍
LBF(Face Alignment at 3000 FPS via Regressing Local Binary Features)这篇论文也是基于Tree的人脸关键点检测算法。LBF是基于Tree的方法,学习每个关键点的局部二值特征,然后将特征组合起来,使用线性回归检测关键点。与 LBF 不同的是, ERT 是在学习 Tree的过程中,直接将
shape
的更新值
ΔS
存入叶子结点 leaf node. 初始位置
S
在通过所有学习到的 Tree后,
用公式来表示:
S^t+1=S^t+rt(I,S^t)
其中
t
表示级联序号,
为了训练每一级的 rt , 文章采用了 gradient tree boosting算法减小 initial shape 和 ground truth 的平方误差总和。
每个回归器由很多棵树(tree)组成,每棵树参数是根据 current shape 和 ground truth 的坐标差和随机挑选的像素对训练得到的。具体算法可详见论文(我还没有完全理解清楚)。
总结
跑过dlib代码后,使用默认参数,基本能够重现论文结果。不像LBF算法,无论怎么调参也很难达到论文中的结果。
速度跟LBF是一个数量级,精度也与SDM稍好一些,缺点就是模型稍大了些(基于随机树的算法似乎都是这样)。
后续还要进一步研究算法和论文。