本文主要是介绍论文《Face Alignment at 3000 FPS via Regressing Local Binary Features》笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文:Face Alignment at 3000 FPS via Regressing Local Binary Features.pdf
实现:https://github.com/luoyetx/face-alignment-at-3000fps
摘要&介绍:
论文有两个新颖的点,一是采用局部二值特征,二是用局部性规则指导学习这些特征,最终的识别效果和实现速度俱佳。
论文首先夸赞了一番——形状回归(shape regression ),该方法已经被业内广泛认可,其高精度和强鲁棒性主要得益于三点:1)区分能力强;2)形变可控;3)能带得动大量数据训练。
形状回归方法遵循级连原则,假设其初始形状为S0,S通过在每一层预测一个增量∆S来不断修正其自身, ∆St表示在t层获得的增量,其公式的一般形式如下所示:
I表示输入图像,St-1 为上一层的结果,Φt 是一个特征映射函数,Wt是一个线性回归矩阵,采用的特征为shape-indexed。
Φt最开始用的是一些诸如SIFT等的设计好的特征,其取得了不错的表现,人们认为利用学习获得的Φt能够取得更佳的效果,然而并不是这样,之所以没有获得增强的原因有两点:一是选择整张图片训练输入数据会导致特征群过于庞大;二是过量的噪声同样带来大量的噪声,这会导致其过拟合,从而在测试集上准确率不高。
本篇论文的着手点就在 Φt上,针对上面提到的问题,作者提出了一种局部性原则,可以理解为如下两点:
1)对于确定某个关键点的最有用的信息往往集中于上一层预测的该关键点周围。
2)其他关键点的位置信息和该关键点的局部信息足以用于预测该关键点位置。
基于这一原则,我们可以将特征锁定于局部然后联合这些关键点确定最终形状。
这样,就可以将Φt分步到所有关键点上,对应每个关键点,都有一个φlt。通过这种做法,可以显著降低噪声,剔除非关键特征,降低计算复杂度。
对于每一个φlt,利用回归树诱导二值特征,所有二值特征来自于局部信息,当构建完所有φlt后组合为Φt,学习Wt回归整体形状。
训练过程:
训练分两步,先训练Φt,然后组织其结果用以训练Wt,其过程如下图所示。
1、训练Φt:
目标函数:
其中i表示所有训练数据,l表示关键点,t表示训练层树,πl 表示提取 l 点。
公式的前半部分表示当前形状与实际形状的增量,后半部分表示当前形状与预测形状的增量。
引用自:http://blog.jobbole.com/85783/
Φ代表特征提取函数,论文中称Φ的输出为局部二值特征(LBF),W为线性回归参数矩阵,其实就是把提取出来的特征映射到一个二维的偏移量上,是一个2*lenth(特征空间维数)的变换矩阵。
首先讲Φ是怎么训练的:Φ其实就是一个随机森林。输入像素差特征(pixel-difference features),输出一个offest。训练的时候随机给每个根节点像素差特征中的一部分。非叶节点的分裂依据是从输入的pixel-difference features中找出能够做到最大的方差衰减的feature。在最后的叶子节点上写上落在叶子节点上的样本偏移量,这个偏移量在之前说到的fern里有用,但是在这里没啥用,因为作者最后不是用这个做回归的而是用LBF,详细的得往下看。如果有多个样本都落在这里,则求平均。这样训练出来的东西就是下面这个公式所表达的东西:
但是我只想要其中的Φ,于是这里给出了LBF(local binary feature)的定义,直接简单粗暴地统计所有树叶节点是否被该样本落入,如果落入了就记为1否则记为0,然后把所有的01串连起来就是LBF了。还是看图说话:
先看b,随机森林的三棵树,样本经过三棵树后分别落在了第1,2,3个叶子节点上,于是三棵树的LBF就是1000,0100,0010.连接起来就是100001000010.然后看a,把27个特征点的lbf都连接起来形成总的LBF就是Φ了。接下来是训练w:之前已经得到了wΦ(I,S)以及Φ(I,S),现在想求w,这还不容易吗,直接算呀。不过作者又调皮了,他说他不想求w,而是想求一个总的大W=[w1,w2,w3,…,w27].怎么求呢?得做二次回归。至于为什么要这么做下面会介绍。目标函数:
后面加了个L2项,因为W是炒鸡sparse的,防止过拟合。做线性回归即可得到W。现在解释一下为啥不直接用w1w2w3…而是要再回归出来一个W:原因有两个:1. 再次回归W可以去除原先小wi叶子节点上的噪声,因为随机森林里的决策树都是弱分类器嘛噪声多多滴;2.大W是全局回归(之前的一个一个小w也就是一个一个特征点单独的回归是local回归),全局回归可以有效地实施一个全局形状约束以减少局部误差以及模糊不清的局部表现。这样一来,测试的时候每输入一张图片I,先用随机森林Φ求出它的LBF,然后在用W乘一下就得到了下一个stage的shape,然后迭代几次就得到了最终的shape。所以效率十分的快。
这篇关于论文《Face Alignment at 3000 FPS via Regressing Local Binary Features》笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!