这篇文章还是通过训练形状误差与特征的回归模型来做人脸配准(face alignment)。重点在于它用回归树学习一个局部二值特征(LBF,注意不是LBP),用线性回归来训练回归模型。
摘要翻译
这篇文章展示了对人脸配准问题的一个高效,非常准确的回归方法。我们的方法有两个新颖的部分: 一组 局部二值特征, 和学习这些特征的局部性准则。这个局部性准则指导我们独立的为每个人脸标记学习一组高判别性的局部二值特征。这个得到的局部二值特征会用于为最终输出联合的学习一个线性回归模型(就是将这些局部而知特征连起来作为一个特征向量)。我们的方法在目前很具有挑战性的测试目标上获得了超好的效果。进一步, 由于提取和回归局部二值特征计算量很低,我们这个系统的方法比之前方法快很多。它在笔记本上定位一组人脸标记点获得了3000帧每秒的处理速度,或者在智能手机上(主要是ARM低功耗,计算能力差)300帧每秒。
介绍翻译
整体思路
先说下整体的思路,再说这篇文章的特点,最后再说下问题(主要是我有疑问没弄懂和弄懂的地方)。
1 整体思路是这样的
Step 1 对图片初始化 1 个shape(这个shape 就是一组点,目标是将它们移动到相应的眼睛鼻子嘴巴上)
Step 2 基于这个Shape 计算其每个点的周围像素,或者两shape两个点中间像素的值(为了对光照鲁棒,一般是两个点像素的差值),这个特征记做Features。
Step 3 计算当前Shape 和 人工标记好Shape 的差异Delta_Shape , 然后训练一个函数y = f(x) , 使 Delta_Shape = f(Features)。
Step 4 将这个Delta_Shape 加上初始的Shape 就是最终要求的人脸形状。
这个过程就是该方法的Face Alignmeng 核心过程。所谓配准就是计算这个增量。训练就是学习特征与这个增量的关系。本文的方法是对这个过程进行了级联,从而降低了每次配准的难度。将上文Step 4 中的结果代入Step1 循环10次。就是整体的过程。
本文特点
首先是特征的学习。和之前的方法不同,这篇文章使用 Random Forest 学习的结果作为特征。而不是直接向之前一样用像素差值作为特征,上个图吧
这个图比较宏观,可以看出的是第二列的特征是通过学习得到的,第四列的回归关系是线性的,也是通过学习得到的(这个过程本人还不是很懂,懂了之后对这一部分要丰富一下,但我知道可以用liblinear来做,过几天做出来再讲讲里面的细节和问题 ,对于内存不够的问题可以用稀疏矩阵, 可以看出第三列里特征矩阵式稀疏的)。
我现在还在研究上一幅图第三列之前的过程是如何计算的, 主要先说这一部分吧。当然如果计算出了这个局部二值特征,本文的工作也完成一大半。因为后面的工作是交给liblinear库去做的。
对于局部二值特征的学习现在是伤透了脑筋,对于连续的变量,不知道如何使用回归树,更确切的讲,离散的值可以算一个信息增益来选择特征,那么连续的变量如何选择特征呢,使用哪些指标?
对于这个问题,现在找到了两种办法,第一个办法是使用特征与属性的相关性来选择特征,然后在随机给出阈值。另一个方法是选择一个特征和阈值,这个特征和阈值可以让将样本分为两部分,每一部分求一个平均,然后两部分的样本各自减去平均值再求平方和。
FAQ
1. 对连续的X和Y 如何学习回归树
这个可以参考face alignment by explicit shape regression这片文章和CART算法。
有些问题大家一起思考一下,尽可能写下您的见解。
1 深度为 5 和 7 的树分别多少个splite node 和 leaf node。
2 什么是回归?
3 回归树的X 和 Y 分别是什么 ?
4 对于树中的一个split node ,它分到这个节点的样本继续分成两部分,怎样的两部分才是最好的?
5 什么是SSE?
6 信息增益是什么?(学习回归树之前必看)
7 什么叫做model combination ?
8 随机森林和Boosted Tree 有什么区别,本文的方法是那种?
参考资料
龙星课程2012lesson7 model combination.
X. P. Burgos-Artizzu, P. Perona, and P. Dollar. Robust face
landmark estimation under occlusion. 2013. (有源码)
X. Cao, Y. Wei, F. Wen, and J. Sun. Face alignment by
explicit shape regression. In Computer Vision and Pattern
Recognition (CVPR), 2012 IEEE Conference on. IEEE,
2012.