[论文笔记] Face Alignment at 3000FPS via Regression Local Binary Features

Contents

名词解释

Shape :关键点的集合,形状包含了关键点的位置信息
绝对shape:关键点相对于整张图像的位置 (0, width)
相对shape:关键点相对于人脸框的位置 (0, 1)

级联分类和级联回归

1. 级联分类器

             选择特征对应的最优弱分类器,级联弱分类器为强分类器

fn=i=1nCi(x)(1)

其中,C代表一个弱分类器,x 代表是特征向量,f 代表得分。
每个弱分类器C根据自己的分类方法对x输出一个分类结果,比如是人脸或者不是人脸。f(n=1~N)都会对应一个阈值threshold,任意一个f小于对应的阈值时,样本会被拒绝。通常不是一张人脸的图片在经过前几个弱分类器的判断后就会被拒绝,根本不需要做后面的判断,速度很快。

2. 级联回归器

学习多个回归函数 f1,f2,f3...fn 来逼近目标函数F。Face alignment at 3000fps被看作是学习一个回归函数θ=F(I)

2.1 级联

input:图像
output:θ 为人脸形状(即关键点位置)

θ=F(I)=fn(fn1(f1(θ0,I),I),I)(2)

θi=fi(θi1,I),i=1,2,,n(3)

  • 所谓级联,即当前函数 fi 的输入依赖于上一级函数 fi1 的输出 θi1 ,而每个函数 fi 的学习目标都是逼近特征点的真实位置θ。

  • 通常情况, fi 不是直接的回归真实位置θ,而回归当前形状 θi1 与真实位置θ之间的差值,即 回归这一阶段的偏移量:∆ θi1 =θ- θi1 ,然后shape加上这个偏移量,反复这个过程

2.2 回归

形状偏移量:

ΔSt=Wtϕt(I,St1)(4)

目标函数:
minwt,Φtli=1N||ΔS^tiΔSti||22(5)

线性回归目标函数:
minw,bi=1N(yiwxib)2(6)

线性回归:
f(xi)=wxi+b使f(xi)yi(7)

3000fps:
ΔSt使ΔStΔS^ti(8)

所以回归包含的是:线性回归、回归树、随机森林、随机蕨回归器等一切可以回归的方法。

3000fps文章逻辑和使用级联回归器的来龙去脉

  1. face alignment最近几年的思路是回归regression,即
    ((S0+ΔS1)+ΔS2)+...+ΔSt

    ΔSt=Wtϕt(I,St1)

    其中 ϕt 为特征映射函数,提取特征; Wt 为线性回归矩阵
  2. 之前的 ϕt ,提取的特征都是人工设计的,如SIFT特征
    本篇文章的 ϕt ,提取的是基于回归树的局部特征,叫做LBF
    优点:学习到的是task-specific feature
    提出疑问:(1)practical issue (2)generalization issue
    解决: “local”principle 即 (1)每个关键点一个 ϕti ; (2)各自 ϕti 独立回归,最后组合成为 ϕt
  3. 过程:stage by stage
    (1). 为一个关键点学习一个 ϕti ,利用 ϕti 得到LBF特征
    (2). concatenate所有的 ϕti ,得到 ϕt
    (3). 通过全局线性回归学习得到 Wt

3.1 ϕt 训练

ϕt=[ϕt1,ϕt2,ϕt3...]

学习 ϕt1 ,回归目标函数为 ΔSt1 即,对于真实值的形状增量
minwt,Φtli=1N||ΔS^tiΔSti||22=minwt,Φtli=1N||ΔS^tiWtiϕti(I,St1)||22=minwt,Φtli=1N||||22

即令差距最小时,求 wt,Φtl

回归过程:
(1)输入:pdf 像素差特征
(2)回归树:训练回归函数即回归树,得到特征提取函数 ϕt ,提取LBF特征
(3)线性回归:回归得到全局的偏移量
(4)输出:回归得到这一阶段的偏移量, 上一阶段shape + 这一阶段偏移量 = 这一阶段shape,反复迭代。即 St1+St=Stt=1,...,T 其中 St=WtΦt(Ii,St1i)

前面内容可知级联回归器可以使一个初始shap,通过级联回归函数无限的去逼近真实人脸关键点位置。由此得到目标函数,去学习每一个stage的 wt,ϕt ,得到每一个stage的回归函数。

其中 St=SgtSt 为第t个stage的形状残差增量; ϕt 代表特征提取函数,提取LBF特征; Wt 为线性回归参数矩阵,即2维×N张图的矩阵,每一列保存叶子节点相应的2D向量

[Δx1Δy1Δx2Δy2Δx3...Δy3...]

  • 所以: ϕt 表示往哪儿偏移, Wt 表示偏移多少。
  • Wt 里面放着所有形状偏移量,所以称之为形状索引。

第t stage,某一个关键点即某一个随机森林,由输入图片根据overlapping分配输入图片数量训练十棵决策树(同其他RF)。
每张图的关键点固定半径内,随机选择两像素差值共500,组成500×N张图的输入矩阵。
分裂原则:对任意输入像素差值,把输入样本分成两部分,对总的样本和左右两子叶的样本分别做方差,其中最大方差衰减的像素差值为分裂节点。即:

argmax(VarVarleftVarright)(9)

详细训练情况可以参照: http://blog.csdn.net/jcx1314/article/details/53781577

3.2 Wt 训练

由回归得到 ΔSt 即相应的 wtϕt ,现在想求一个大 Wt=[w1,w2wn] ,此时要二次回归 !

目标函数:

minwti=1N||ΔS^tiWtΦt(Ii,St1i)||22+λ||Wt||22(10)

L2项,最小化 Wt ,因为 Wt 超级稀疏,防止过拟合。
重新回归全局的 Wt 原因:
再次回归 Wt 可以去除原先小w叶子节点上的噪声,因为随机森林里的决策树都是弱分类器,噪声很多;
Wt 为全局回归(之前的一个个小w也是一个个关键点单独的回归是local回归),全局回归可以有效的实施一个全局形状约束,减少局部误差和模糊不清的局部表现。

3.3 测试

每输入一张图片I,先用随机森林 ϕt 求出LBF,乘 Wt ,得到下一个stage的shape,迭代若干次得到最终的shape,效率惊人。

3.4 3000fps和DLIB比较accuracy and efficient

自己训练的68个点的face alignment at 3000fps的模型在打开OPENMP之后,在单纯的face alignment这一部分,速度比DLIB稍快,大概在3-4ms,但是最后的精确率上不及DLIB。这是现阶段需要个人需要解决的问题。

参考文献

[1]. https://zhuanlan.zhihu.com/p/21456877?refer=dlclass
[2]. http://www.cnblogs.com/sciencefans/p/4394861.html
[3]. http://blog.csdn.net/jcx1314/article/details/53781577

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值