PFLD: A Practical Facial Landmark Detector论文及代码学习

论文摘要翻译:

准确、高效、紧凑是人脸标记检测器实际应用的必要条件。为了同时考虑这三个问题,本文研究了一个简洁的模型,该模型在野生环境(例如,不受约束的姿势、表情、光照和遮挡条件)下具有很好的检测精度,并且在移动设备上具有超实时速度。更具体地说,我们定制了一个与加速技术相关的端到端单级网络。在训练阶段,对于每个样本,估计旋转信息以几何正则化地标定位,然后不涉及测试阶段。设计了一种新的损失,除了考虑几何正则化之外,还通过调整样本的权重到不同的状态来缓解数据不平衡的问题,例如训练集中的大姿势、极端光照和遮挡。进行了大量的实验来证明我们的设计的有效性,并揭示了它在广泛采用的具有挑战性的基准上优于最先进的替代方案,即300W(包括iBUG, LFPW, AFW, HELEN和XM2VTS)和AFLW。我们的模型可以只有2.1Mb大小,在移动电话(高通ARM 845处理器)上达到140帧/秒以上,具有高精度,使其对大规模或实时应用具有吸引力。

论文链接:1902.10859.pdf (arxiv.org)

代码链接:GitHub - polarisZhao/PFLD-pytorch: PFLD pytorch Implementation

论文创新

  1. 制定了一个与加速技术相关的端到端单级网络,在训练阶段,对于每个样本,估计旋转信息以几何正则化地标定位,然后不涉及测试阶段。

  1. 设计了一种新的损失,除了考虑几何正则化之外,还通过调整样本的权重到不同的状态来缓解数据不平衡的问题。

论文针对面部捕捉中的四大挑战做了总结:

1.Challenge #1 - Local Variation.

挑战1:局部变异。表情、局部极端光照(如高光和阴影)和遮挡对人脸图像造成局部变化/干扰。部分区域的地标可能会偏离其正常位置,甚至消失。 2.Challenge #2 - Global Variation

挑战2:全球变化。姿态和成像质量是影响图像中人脸外观的两个主要因素,当人脸的整体结构被错误估计时,这将导致(大)部分地标的定位不佳。 3.Challenge #3 - Data Imbalance.

挑战3:数据不平衡。在浅层学习和深度学习中,可用数据集在类/属性之间表现出不平等的分布是很常见的。这种不平衡很可能导致算法/模型无法正确地表示数据的特征,从而提供不令人满意的准确性跨越不同的属性。

4.Challenge #4 - Model Efficiency

挑战4:模范效率。对适用性的另外两个限制是模型大小和计算要求。机器人、增强现实和视频聊天等任务都需要在智能手机或嵌入式产品等计算和内存资源有限的平台上及时执行。这一点特别要求探测器的模型尺寸小,处理速度快。毫无疑问,构建准确、高效、紧凑的地标检测系统是实际应用的必然要求。

论文提出的网络模型分两个部分(如下图):上分支的辅助网络和下分支的主干网络。

PFLD: A Practical Facial Landmark Detector论文及代码学习_第1张图片

主干网络

采用的是MobileNet,对MobileNet网络的介绍可以参考这篇:通俗易懂(膜拜大佬)

(7条消息) MobileNet原理+手写python代码实现MobileNet_走召大爷的博客-CSDN博客_mobilenet原理

mobileNet 是在做卷积的时候,和一般的CNN的kernel处理不一样。

一般的CNN model kernel 卷积的时候,通道channel也要考虑到,所以导致那个kernel的参数很多,eg, 3 × 3 × 4 3\times3\times43×3×4, 如果output有要求第三维是2,那么就要做两次这样子size的不同kernel的处理。

但是MobileNet中,它做卷积的时候,不再有那个第三维channel的同时处理,一开始就是2维的 $3\times3$ 的处理卷积,之后再用新的kernel 对卷积之后的那么多channel的结果处理,处理之后再做summation,如果最后要求的结果是第三维是2, 那么再重新找2组 那么多channel的1*1的kernel进行处理。像链接中举的例子那样的处理。

考虑到人脸具有很强的全局结构,将其扩展为多比例尺图,而不是单比例尺图。通过跨步进行卷积运算完成延伸,扩大了接受野。然后通过多尺度特征图的完全连接来进行最终的预测。骨干子网的详细配置如下所示。从架构的角度来看,骨干网很简单。

PFLD: A Practical Facial Landmark Detector论文及代码学习_第2张图片

对于辅助网络的作用

1.预先定义一张标准人脸(在一堆正面人脸上平均),并在主人脸平面上固定11个地标作为所有训练人脸的参考;

  1. 利用每个面对应的11个标志和参考标志估计旋转矩阵;3)根据旋转矩阵计算欧拉角。为了精确起见,每个面的角度可能不准确,因为所有面都使用平均面。下表提供了论文提议的辅助网络的配置,辅助网的输入来自骨干网的第4块。

辅助网络的用处是对于每一个输入的人脸样本,对该样本进行三维旋转信息的的估计

目的是监督和辅助训练收敛,主要是为了服务树干网络,值得注意的是辅助网络的输入不是训练数据,而是PFLD主网络的中间输出(想要详细了解网络结构可以使用Netron工具查看:GitHub - lutzroeder/netron: Visualizer for neural network, deep learning, and machine learning models)

总的来说,主干网络主要作用是预测landmarks提供变量,辅助网络用于估计几何信息提供变量

PFLD: A Practical Facial Landmark Detector论文及代码学习_第3张图片

其中M为样本个数,N为特征点个数,C为不同的人脸类别数,文章将人脸分成多个类别,比如侧脸、正脸、抬头、低头、表情、遮挡等,w为与类别对应的给定权重,如果某类别样本少则给定权重大。

K等于3,表示ground-truth和预测在yaw、pitch、roll(上下翻转,水平翻转,平面内反转)三种角度之间的偏差,角度越大cos值越小,权重越大

|| ||为测量第m个输入的第n个landmarks的误差

实现详述

输入数据预处理:根据给定的包围框对所有人脸进行裁剪和调整为112 × 112进行预处理。

使用netron工具查看网络结构输入/输出数据格式如下:

PFLD: A Practical Facial Landmark Detector论文及代码学习_第4张图片

输出数据

PFLD: A Practical Facial Landmark Detector论文及代码学习_第5张图片

你可能感兴趣的:(人工智能)