文章目录
一、前言
这篇文章提出了一种高效、快速的人脸对齐算法,该算法在电脑上能达到 3000 FPS 的速度,在手机上也能达到 300 FPS 的速度,因此业界称其 face3000。算法的创新点在于局部二值特征以及训练这些局部二值特征的规则,即随机森林,连接所有根据随机森林得到的局部二值特征对线性回归器进行训练以得到最终结果。详细过程会在后面介绍。算法的总体概览如下:
二、基于形状回归的人脸对齐算法
基于形状回归的人脸对齐算法以级联的方式对最终的人脸形状进行预测,给定一个初始形状 S 0 S^{0} S0,最终的形状 S 通过 △ S \triangle S △S 逐层逼近。其中 △ S \triangle S △S 的计算公式如下:
△ S t \triangle S^{t} △St = W t W^{t} Wt ϕ t \phi^{t} ϕt( I, S t − 1 S^{t-1} St−1 ) ……………………………………………………公式(1)
其中,I 代表输入图像, S t − 1 S^{t-1} St−1 表示上一阶段的形状, ϕ t \phi^{t} ϕt 代表全局二值特征, ϕ t \phi^{t} ϕt 由输入图像 I 和 S t − 1 S^{t-1} St−1 共同决定, W t W^{t} Wt 是线性回归矩阵。
三、previous work
在以往的研究工作中, ϕ t \phi^{t} ϕt 通常通过两种方式得到,一种是使用 SIFT 特征点,另一种是通过 tree-based regression 方式,理论上,后者的效果应该比前者好,但事实上,这两种方式相差无几,作者认为这主要是因为对 ϕ t \phi^{t} ϕt 的限制过于宽松造成的,一是因为对整个人脸区域进行训练将得到很大的 feature pool,这将增大计算开销;二是大的 feature pool 有很多噪声特征点,这将会在测试过程中造成过拟合而影响效果。
四、算法的具体实现
- 首先需要明确的是 ϕ t \phi^{t} ϕt 由一系列局部二值特征组成的,即 ϕ t \phi^{t} ϕt = [ ϕ 1 t \phi^{t}_{1} ϕ1t, ϕ 2 t \phi^{t}_{2} ϕ2t,…, ϕ L t \phi^{t}_{L} ϕLt],L 代表 landmark 的数量;
- 每个 ϕ L t \phi^{t}_{L} ϕLt 的训练是在第 L 个 landmark 相应局部区域内独立训练的。
这种方式将有效的减少噪声并降低训练复杂度。
公式(1)中, ϕ t \phi^{t} ϕt 和 W t W^{t} Wt 都是未知的,首先对每个 landmark 训练局部映射函数以得到局部二值特征,然后将所有的局部二值特征连接起来得到全局二值特征,最后对全局线性回归矩阵 W t W^{t} Wt 进行训练。以级联的方式重复以上步骤以得到最终形状 S。
4.1 ϕ t \phi^{t} ϕt 的训练
局部映射函数
ϕ
l
t
\phi^{t}_{l}
ϕlt 的训练是通过随机森林得到的。对于某张图片某个阶段 t 的某个 landmark 的随机森林的训练,首先在 landmark 周围随机抽取 500 对像素点,并计算他们的像素差,然后从中选取使得方差减小最大的像素差特征点作为分裂节点,最终的叶子节点存储的是在该叶子节点中所有训练样本的平均值(二维偏移量,x 坐标和 y 坐标的平均值)。
注:
- landmark 的区域半径 r 与 △ S \triangle S △S 的标准差线性相关,如果 △ S \triangle S △S 比较分散,则 r 的值较大,反之亦反;
- 级联层数 t 和 随机树的深度都是一定的。
在测试阶段,每个样例都对随机森林进行遍历,直到到达叶子节点为止,假设叶子节点的个数为 D,那么测试的输出如下:
W l t W^{t}_{l} Wlt ϕ l t \phi^{t}_{l} ϕlt( I i I{i} Ii, S i t − 1 S{i}^{t-1} Sit−1)
其中, W l t W^{t}_{l} Wlt 是一个 2 X D 的矩阵,每一列存储的是叶子节点中的二维偏移量,即每一列包含一对 W x W{x} Wx 和 W y W{y} Wy; ϕ l t \phi^{t}_{l} ϕlt 是一个 D 维的向量,对于 ϕ l t \phi^{t}_{l} ϕlt 中的每个值,如果样例能到达叶子节点则值为 1,否则为 0。因此,实际上 ϕ l t \phi^{t}_{l} ϕlt 是一个非常稀疏的二值向量,它的非零元素与随机森林中随机树的数量一样,远小于 D。
4.2 全局线性回归矩阵 W t W^{t} Wt 的训练
在随机森林训练完成之后,我们不仅得到了 二值特征
ϕ
l
t
\phi^{t}_{l}
ϕlt,同时也得到了矩阵
W
l
t
W^{t}_{l}
Wlt,但作者并没有用这个矩阵,而是将所有二值特征连起来通过最小化以下目标函数来得到全局线性回归矩阵
W
t
W^{t}
Wt ,目标函数如下:
五、局部规则
- 每个 landmark 的随机森林的训练是独立的;
- 对于每个 landmark 作者只考虑其局部区域的像素点特征。
首先作者解释了为什么是局部区域。
作者首先提出了一个假设,即如果想对某个 landmark 的 △ S \triangle S △S 进行预测,那么所选取的最佳特征点半径 r 应该与 △ S \triangle S △S 分布有关。
为了研究 △ S \triangle S △S 的分布与最佳半径 r 之间的关系,对于每个 landmark, 作者综合训练集和测试集中所有 △ S \triangle S △S 服从高斯分布(不同标准差)的样例区域,对于每个不同的分布,通过使用不同的半径对随机森林进行训练以得到最佳区域半径,因为随机森林的参数都是一样的(树的深度和数量),因此,在所有的 landmark 上进行训练,最后取平均最佳区域半径。
图三显示了标准差分别为 0.05,0.1,0.2 的高斯分布的不同区域半径下的人脸对齐错误率,可以看到,它们的最佳区域半径分别为 0.12,0.21,0.39。
实验结果表明最佳区域半径 r 与
△
S
\triangle S
△S 的标准差线性相关,因此,作者认为对于给定的计算开销(训练随机森林的特征点数目一定),只考虑局部区域的特征点比考虑整张人脸的特征点更为有效。
在实际的级联训练中,对于每一个阶段,通过保持验证集的交叉验证??从 10 个离散的值中选取最佳区域半径。从图四中可以看出,在级联过程中,随着人脸形状变化的减小区域半径也逐渐减小。
然后作者解释了为什么每个 landmark 的随机森林的训练是独立的。
从表面上看,对每个 landmark 进行单独的回归训练似乎不是最优的,比如说,我们可能会错过某个好的特征点被几个 landmark 共享的情况,但是,局部训练要优于全局训练,原因如下:
- 局部特征点噪声点较少。全局训练可能会有更多有用的特征点,但是全局训练的信噪比(signal-to-noise ratio)更低,这将导致特征点的选取更难;
- 局部训练并不是局部预测。本文算法的第二步利用了所有局部特征点做线性回归进行全局预测,由于 landmark 的训练是独立的,因此得到的局部特征点更加的多元化而且互补,这些特征点将更适合第二步的全局训练;
- 局部训练更加适合不同的阶段。在早期阶段,局部区域较大,因此可能会覆盖几个 landmarks,通过某个 landmark 训练得到的特征点可能会对其他 landmark 有所帮助;在后期阶段,局部区域减小,局部回归对每个 landmark 进行微调。
作者强调并不是说全局训练不如局部训练,而是说在一定的限定条件下(训练集的大小、训练时间、可用的计算资源以及算法的学习能力),局部训练更善于抵挡全局特征池(非常大而且容易产生过拟合)中的噪声点。
六、实验
数据集
- LFPW
- Helen
- 300-W
为了扩大数据集以增强泛化能力,作者通过多次随机采样初始形状,每个悬链图像将被转换成多个训练图像;在测试阶段,使用平均脸 mean shape 作为初始化形状。
为了测试不同的精度与速速,算法的参数有两个版本:
LBF(more accurate):T = 5,N = 1200,D = 7
LBF(faster):T = 5,N = 300,D = 5
PPT展示