论文名称《Deep Alignment Network: A convolutional neural network for robust face alignment》
代码实现:https://github.com/MarekKowalski/DeepAlignmentNetwork
1 摘要
DAN,Deep Alignment Network,使用深度学习进行人脸关键点提取。DAN包含多个阶段,每个阶段都是对上一阶段估计的人脸关键点位置进行修正。相比于其他方法,DAN在每一阶段都是使用完整的人脸图像而不是局部图像块进行特征点估计。这主要得益于作者使用了人脸关键点热度图(heatmap)。
通过使用完整的人脸图像,DAN可以对头部姿势存在较大变化和不太理想的人脸检测初始化的图像进行精确的关键点检测,取得了state-of-art的效果。
2 简介
近年来,大多数的人脸对齐算法都是基于shape indexed feature,在这些方法中,是对关键点不为的图像块进行特征提取,然后使用这些特征迭代进行关键点位置的修正。这些方法在图像质量较好时可以取得不错的效果,但是对于图像质量较差、头部偏转角度大和初始化不理想的情况下,效果仍然有待于提升。作者认为这主要是由于对于这些比较难以进行关键点检测的图像而言,只是提取图像局部块的特征不能够提供足够多的信息,最后算法会收敛到局部最小值。
作者解决办法就是本文的DAN算法,DAN包含多个stage的neural network,每个stage的神经网络都对上一个stage检测的结果进行修正,迭代的修正改善人脸关键点的位置。每一个阶段(第一个stage除外)都使用完整的对齐到标准位置的人脸图像、上一阶段检测到的关键点的heatmap、上一阶段的特征图作为输入。
关键点heatmap是指在关键点位置图像像素值较大,离最近的关键点越远的位置,heatmap的像素值越小。作者使用该heatmap间上一阶段的关键点检测结果传递到下一阶段。
2 相关工作
关键点检测的技术发展途径是从最开始的 Active Appearance Models 发展到 Constrainted Local Mldels, 再到最近流行的 Cascaded Shape Regression(CSR)和深度学习方法。
在CSR类方法中,思路都是给出初始的人脸关键点估计然后迭代修正。初始的人脸关键点
S0
是在人脸检测框内部的平均人脸形状。每一个CSR方法的迭代过程都可以表示成:
St+1=St+rt(ϕ(T,St))
其中,
St
是第 t 轮迭代估计的人脸关键点;
rt
是回归函数,返回对
St
的更新值;
ϕ
为从图像
I
中提取的特征点处的特征。
不同的CSR方法的区别在于特征提取方法
3 DAN
DAN方法需要一个初始的关键点估计
S0
,但是用单个stage的神经网络代替CSR类方法中的单轮迭代修正。DAN中的神经网络同时完成特征提取和回归功能。网络结构如下表所示:
DAN中每一个stage有三个输入:对齐到标准位置 S0 的人脸图像,上一stage关键点检测结果的热度图 Ht ,根据上一stage倒数第二个全连接层生成的特征图 Ft 。但是,第一个stage的输入只有人脸图像及初始人脸形状 S0 .
DAN中单个stage包含单个前向神经网络完成特征点的估计,同时包含一个连接层生成下个stage的输入数据。连接层包含一个变换估计层,一个图像变换层,一个特征点变换层,一个heatmap生成层和一个特征生成层,如下图所示。
第t个stage的变换估计层生成变换
Tt+1
,计算过程就是求
St
和
S0
之间的相似变换矩阵,使用
Tt+1
对输入图像
I
和
3.1 前向神经网络
前向神经网络输出对输入特征点 St 的更新量 ΔSt .网络结构如图2所示。
3.2 归一化到标准形状
DAN中每一个stage的输入图像
I
都进行了相似变换,目的是当前stage估计的特征点都和标准的形状
变换估计层根据当前stage计算的特征点坐标
St
和参考矩阵特征点坐标
S0
之间的相似变换矩阵
Tt+1
;图像变换层对原始图像
I
进行变换得到第 t+1 stage的输入图像;关键点变换层根据
对每一个stage而言,输入图像都是原始图像对齐到标准形状之后的图像,所以如果要得到在原始图像中的关键点的位置,需要进行反变换,变换过程为:
3.3 关键点heatmap
H
是heatmap图像,
3.4 特征图
特征图
3.5 训练过程
DAN的训练过程是分stage训练的,第一个stage的验证误差不再减小时才开始训练第二个stage,以此类推,完成整个DAN的训练。
DAN中使用的结果度量是,最小化检测到的关键点和ground truth之间的误差除以双眼瞳孔之间的距离。如下图所示:
S∗
为ground truth。
4 实验
训练了两个模型,根据训练数据集不同分为DAN和DAN-Menpo。
每个模型都包含两个stage,Adam最优化,初始step size 0.001,batch size 64.
初始化不好的时候也可以得到良好的检测结果。
5 TODO
根据https://github.com/zjjMaiMai/Deep-Alignment-Network-A-convolutional-neural-network-for-robust-face-alignment 加深对论文的理解及完成tensorflow模型的训练。
水平有限,上述理解如有错误,欢迎批评指正。