参考文献:
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算法(以下简称 ESR),速度极快(单人人脸关键点检测耗时约为1ms),效果也不错。同时又能处理训练集中部分关键点标定缺失的情况。
dlib 库中(http://dlib.net/),有这个算法的完整实现,包括训练和测试部分。
有paper,有code,对我们这些搞算法的底层人员,真是再happy不过了。
算法介绍
LBF(Face Alignment at 3000 FPS via Regressing Local Binary Features)这篇论文也是基于Tree的人脸关键点检测算法。LBF是基于Tree的方法,学习每个关键点的局部二值特征,然后将特征组合起来,使用线性回归检测关键点。与 LBF 不同的是, ESR 是在学习 Tree的过程中,直接将 shape 的更新值 ΔS 存入叶子结点 leaf node. 初始位置 S 在通过所有学习到的 Tree后, mean shape 加上所有经过的叶子结点的 ΔS ,即可得到最终的人脸关键点位置。总体流程如下图所示:
用公式来表示:
Ŝ t+1=Ŝ t+rt(I,Ŝ t)
其中 t 表示级联序号, rt(∙,∙) 表示当前级的回归器regressor。回归器的输入参数为图像 I 和上一级回归器更新后的 shape , 采用的特征可以是灰度值或者其它。
为了训练每一级的 rt , 文章采用了 gradient tree boosting算法减小 initial shape 和 ground truth 的平方误差总和。
每个回归器由很多棵树(tree)组成,每棵树参数是根据 current shape 和 ground truth 的坐标差和随机挑选的像素对训练得到的。具体算法可详见论文(我还没有完全理解清楚)。
总结
跑过dlib代码后,使用默认参数,基本能够重现论文结果。不像LBF算法,无论怎么调参也很难达到论文中的结果。
速度跟LBF是一个数量级,精度也与SDM稍好一些,缺点就是模型稍大了些(基于随机树的算法似乎都是这样)。
后续还要进一步研究算法和论文。
转自:http://blog.youkuaiyun.com/shaoxiaohu1/article/details/50488425