Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass)
这篇文章还是通过训练形状误差与特征的回归模型来做人脸配准(face alignment)。重点在于它用回归树学习一个局部二值特征(LBF,注意不是LBP),用线性回归来训练回归模型。
由于提取和回归局部二值特征计算量很低,我们这个系统的方法比之前方法快很多。它在笔记本上定位一组人脸标记点获得了3000帧每秒的处理速度,或者在智能手机上(主要是ARM低功耗,计算能力差)300帧每秒。
形状回归方法以级联的方式预测脸部形状 S 。从一个初始的形状
,S
通过一级一级估计形状增量
进阶式改善的。在一个通用形式下,一个形状增量
在
t 级回归为
(1)
其中 I 是输入图像,
是来自于上一级的形状,
是特征映射函数,
是线性回归矩阵。应当注意的是
依赖于
I 和
。 在这种方式下学到的特征是指的是作为一个“形状编码”特征。通过将
加入到
,将回归带入到下一级。
这个特征映射函数
在形状回归中是必须的(意在说明LBF特征的重要性)。在前人的工作中,它不是由人工设定,就是通过学习得到。文献32的过程简单的使用了SIFT特征作为特征映射并通过线性回归训练
(本文的方法与这片文章相比是只是特征更好,比如速度更快,局部性的优势?)。相比于这种简单方法的优良工作特性,手工设置的通用目标特征并不是特定人脸配准问题的最优特征。相反,文献[5,3]方法以基于树的回归结合
和
,并且是整个人脸区域的数据驱动的方法。
从原理上讲,后面的基于学习的方法应该更好,因为它学习的特征是有针对性的。但是在已有文献的报告中,它的效果只是与使用手工设的SIFT特征的方法持平(on par 怎么翻译好?),我们认为这主要由于过高自由度的
导致的两个问题。第一个是实际操作的问题。使用整个人脸区域作为训练输入结果导致了极大的特征池,如果我们想要学习最具判别性的特征组合,这个问题转换为了无法负担的训练消耗。第二个是泛化问题,这个问题更为显著。这个巨大的特征池具有太多的噪声特征。这将很容易导致过拟合并有损测试集上的表现。
在我们的工作中,我们提出了一个更好地基于学习的方法。它通过一个“局部”原理使学习有规则的进行。这个原则主要是由于两方面的见解:在一级中对于定位一个确定的地标点,1)最具判别性的纹理信息分布在上一级估计出的地标店的周围,2)形状的信息内容和这个地标点的局部纹理提供了充足的信息。这些见解表明我们或许应该首先独立的为每一个地标点学习最具直觉型的特征来编码局部纹理特征,然后再执行联合的回归去融合形状的信息内容。
为学习
,我们提出了两种正则化方法:
被分解为一组独立的特征特征映射函数,例如
(L
是地标点的数量)。每一个
通过独立的在第L个地标点的周围的区域回归学习到的。
这个提出的正则化方法可以有效的筛选出主要的噪声和判别性较弱的特征,降低学习的复杂度,从而导致更好地泛化性能。(我想这句话最重要)
为学习每一个
,我们使用基于回归的集成树去归纳二值特征。为预测地标点,这个二值特征编码了一个区域内的直觉性的结构信息。在集成了所有的局部二值特征去组成特征映射
之后,我们为全图的形状估计判别性的学习了
。我们发现我们的二步学习处理方法(局部二值特征和全局线性特征)比通过基于树的回归[5,3]的一步联合的学习
和
要好很多。
除了具有更好地准确性,我们的方法还更高效。因为局部二值特征是基于树的,并且高度稀疏,处理提取和回归这样的特征是十分迅速的。我们展出了一个快速的版本在一个单核笔记本上跑出了3000+fps,获得了与最杰出的方法相媲美的结果。我们的正常情况下的版本跑出了300+fps的结果,并且在各种benchmark的精准度的比较上都比之前最杰出的方法更胜一筹。我们方法的高速性能在一些计算性能有限和计算负担被主要担心的场景和设备中显得极为重要。比如说,我们的快速版本仍然可以现代手机上跑出300fts的成绩。据我们所知,在移动终端上这是速度几倍于实时方法的第一种方法。这将为一些在线人脸应用开辟新的机遇。
1st pass 小结
这篇文章有很高的应用价值。它与之前的face alignment by explicit shape regression都属于判别性形状回归的方法。这片文章主要用的方法是线性回归和回归树。这片文章的主要贡献是使用限制使用了局部特征和回归树,将特征空间映射到线性空间,再使用线性回归学习。文章对于如何提取一个landmark周围的像素点没有说明。应该是先求得当前形状和平均形状之间的旋转和尺寸变换后,在用变换后的offset去像素点(在One
Millisecond Face Alignment with an Ensemble of Regression Trees中有详细说明)。
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次。就是整体的过程。
这个图比较宏观,可以看出的是第二列的特征是通过学习得到的,第四列的回归关系是线性的,也是通过学习得到的(这个过程本人还不是很懂,懂了之后对这一部分要丰富一下,但我知道可以用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.
这篇文章还是通过训练形状误差与特征的回归模型来做人脸配准(face alignment)。重点在于它用回归树学习一个局部二值特征(LBF,注意不是LBP),用线性回归来训练回归模型。
摘要翻译
这篇文章展示了对人脸配准问题的一个高效,非常准确的回归方法。我们的方法有两个新颖的部分: 一组 局部二值特征, 和学习这些特征的局部性准则。这个局部性准则指导我们独立的为每个人脸标记学习一组高判别性的局部二值特征。这个得到的局部二值特征会用于为最终输出联合的学习一个线性回归模型(就是将这些局部而知特征连起来作为一个特征向量)。我们的方法在目前很具有挑战性的测试目标上获得了超好的效果。进一步,由于提取和回归局部二值特征计算量很低,我们这个系统的方法比之前方法快很多。它在笔记本上定位一组人脸标记点获得了3000帧每秒的处理速度,或者在智能手机上(主要是ARM低功耗,计算能力差)300帧每秒。
介绍翻译
判别性形状回归方法以解决准确和鲁邦的人脸配准的主流方法先后涌现出来。这主要是因为这些方法有一些显著的特征:1)它们是纯判别性的(这有什么理论基础么?);2) 它们可以迭代的执行形状约束(意思是,迭代的将形状收敛到最好。);3)它们有能力有效平衡训练数据的具体体型(主要是由于线性回归有一个正则化项)。形状回归方法以级联的方式预测脸部形状 S 。从一个初始的形状
,S
通过一级一级估计形状增量
进阶式改善的。在一个通用形式下,一个形状增量
在
t 级回归为
(1)
其中 I 是输入图像,
是来自于上一级的形状,
是特征映射函数,
是线性回归矩阵。应当注意的是
依赖于
I 和
。 在这种方式下学到的特征是指的是作为一个“形状编码”特征。通过将
加入到
,将回归带入到下一级。
这个特征映射函数
在形状回归中是必须的(意在说明LBF特征的重要性)。在前人的工作中,它不是由人工设定,就是通过学习得到。文献32的过程简单的使用了SIFT特征作为特征映射并通过线性回归训练
(本文的方法与这片文章相比是只是特征更好,比如速度更快,局部性的优势?)。相比于这种简单方法的优良工作特性,手工设置的通用目标特征并不是特定人脸配准问题的最优特征。相反,文献[5,3]方法以基于树的回归结合
和
,并且是整个人脸区域的数据驱动的方法。
从原理上讲,后面的基于学习的方法应该更好,因为它学习的特征是有针对性的。但是在已有文献的报告中,它的效果只是与使用手工设的SIFT特征的方法持平(on par 怎么翻译好?),我们认为这主要由于过高自由度的
导致的两个问题。第一个是实际操作的问题。使用整个人脸区域作为训练输入结果导致了极大的特征池,如果我们想要学习最具判别性的特征组合,这个问题转换为了无法负担的训练消耗。第二个是泛化问题,这个问题更为显著。这个巨大的特征池具有太多的噪声特征。这将很容易导致过拟合并有损测试集上的表现。
在我们的工作中,我们提出了一个更好地基于学习的方法。它通过一个“局部”原理使学习有规则的进行。这个原则主要是由于两方面的见解:在一级中对于定位一个确定的地标点,1)最具判别性的纹理信息分布在上一级估计出的地标店的周围,2)形状的信息内容和这个地标点的局部纹理提供了充足的信息。这些见解表明我们或许应该首先独立的为每一个地标点学习最具直觉型的特征来编码局部纹理特征,然后再执行联合的回归去融合形状的信息内容。
为学习
,我们提出了两种正则化方法:
被分解为一组独立的特征特征映射函数,例如
(L
是地标点的数量)。每一个
通过独立的在第L个地标点的周围的区域回归学习到的。
这个提出的正则化方法可以有效的筛选出主要的噪声和判别性较弱的特征,降低学习的复杂度,从而导致更好地泛化性能。(我想这句话最重要)
为学习每一个
,我们使用基于回归的集成树去归纳二值特征。为预测地标点,这个二值特征编码了一个区域内的直觉性的结构信息。在集成了所有的局部二值特征去组成特征映射
之后,我们为全图的形状估计判别性的学习了
。我们发现我们的二步学习处理方法(局部二值特征和全局线性特征)比通过基于树的回归[5,3]的一步联合的学习
和
要好很多。
除了具有更好地准确性,我们的方法还更高效。因为局部二值特征是基于树的,并且高度稀疏,处理提取和回归这样的特征是十分迅速的。我们展出了一个快速的版本在一个单核笔记本上跑出了3000+fps,获得了与最杰出的方法相媲美的结果。我们的正常情况下的版本跑出了300+fps的结果,并且在各种benchmark的精准度的比较上都比之前最杰出的方法更胜一筹。我们方法的高速性能在一些计算性能有限和计算负担被主要担心的场景和设备中显得极为重要。比如说,我们的快速版本仍然可以现代手机上跑出300fts的成绩。据我们所知,在移动终端上这是速度几倍于实时方法的第一种方法。这将为一些在线人脸应用开辟新的机遇。
1st pass 小结
这篇文章有很高的应用价值。它与之前的face alignment by explicit shape regression都属于判别性形状回归的方法。这片文章主要用的方法是线性回归和回归树。这片文章的主要贡献是使用限制使用了局部特征和回归树,将特征空间映射到线性空间,再使用线性回归学习。文章对于如何提取一个landmark周围的像素点没有说明。应该是先求得当前形状和平均形状之间的旋转和尺寸变换后,在用变换后的offset去像素点(在One
Millisecond Face Alignment with an Ensemble of Regression Trees中有详细说明)。
整体思路
先说下整体的思路,再说这篇文章的特点,最后再说下问题(主要是我有疑问没弄懂和弄懂的地方)。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.