《Super-realtime facial landmark detection and shape fitting by deep regression of shape model parameters》
来源:德国亚琛工业大学
论文:https://arxiv.org/abs/1902.03459
源码:https://github.com/justusschock/shapenet
前言
1)本文提出了一种高效特征点检测方法,一种结合CNN和PCA的基于模型的拟合算法
2)通过基于形状(active shapes)拟合方法的激励,本文使用PCA来进行人脸关键点建模; PCA被当着新型层类型使用在深度神经网络中,而不是迭代优化来计算模型参数
3)整个架构允许对基于模型的人脸关键点检测方法进行直接的端到端训练
4)该方法不仅用于人脸特征点检测,还可以用于医学图像,红外,猫等其他形状拟合任务,只需要配置参数即可
框架
框架整体可理解为3个部分 :
1) feature extraction layers
其CNN结构简单,由C2DB和DN模块堆叠;C2DB表示3x3卷积和relu,每block可能由多个(Frequency)C2DB组成;DN是下采样和归一化,采用的是stride为2的3x3卷积+relu+norm来实现
在整个框架中充当特征提取器,接受人脸图像,回归输出:PCA参数的预测权重(
w
1
,
.
.
.
,
w
n
w_1,...,w_n
w1,...,wn)+同步的全局变换参数(1个缩放参数,1个旋转参数,2个变换参数)
2)PCA
首先:
接受CNN输出为输入
然后:
w
1
,
.
.
.
,
w
n
w_1,...,w_n
w1,...,wn表示n个PCA特征向量对应的特征权值,它们对应进行线性组合,如下图中:
红色框中,那排人脸图,表示n个PCA特征向量,它是在预处理阶段,由训练集计算得到,在训练中加载到内存的
蓝色框中,人脸则是线性组合的结果
最后:
将线性组合结果进行全局变换
3)output
上一步中全局变换的结果就是最终结果
PCA维度
实验证明该本文框架在PCA维度为50时效果最好;维度从5到50呈上升趋势,而增加到75反而影响效果,当然这能与数据标注存在噪声有关,PCA压缩丢弃这部分信息反而更好
实验
作者在人脸数据集(300w indoor,300w outdoor),红外人脸数据集(Thermal),猫脸数据集(Cats),医学图像数据集(JSRT lungs,PROMISE2)上都进行了实验;
但论文并未提到与其他算法的比较,更加强调库的简单、通用和高效(GTX2080ti上410fps)
效果
代码官网给出了shapenet人脸特征点与dlib库的对比,源为gif格式,这里我截2张图
效果嘛,有待提高