深度学习网络模型部署——人脸关键点检测论文详解(PFLD)

效果图

一、前言

PFLD全称A Practical Facial Landmark Detector是一个精度高,速度快,模型小的人脸关键点检测模型。在移动端达到了超实时的性能(模型大小2.1Mb,在Qualcomm ARM 845 处理器上达到140fps),作者分别来自武汉大学,天津大学,腾讯AI Lab,美国天普大学,有较大的实用意义。

二、挑战

人脸关键点检测作为人脸相关应用中的一个基础任务面临了很多挑战,包括检测精度,处理速度,模型大小这些因素都要考虑到,并且在现实场景中很难获取到质量非常高的人脸,所以人脸关键点检测主要面临下面几个挑战:

1,局部变化:现实场景中人脸的表情,广告,以及遮挡情况都有较大的变化
2,全局变化:姿态和成像质量是影响图像中人脸的表征的两个主要因素,人脸全局结构的错误估计将直接导致定位不准
3,数据不平衡:不平衡的数据使得算法模型无法正确表示数据的特征
4,模型的性能:由于手机和嵌入式设备计算性能和内存资源的限制,必须要求检测模型的size小处理速度快

三、PFLD网络结构

image.png
整个网络结构由两个部分组成:predicting landmark主网络head pose 辅助网络。在主网络上采用的是以MobilenetV2轻量型网络,但又为了增加模型的表达能力,在MobilenetV2进行了结构化修改,通过多尺度融合来增加模型的表达能力
三个不同尺度融合
样本不均衡的问题上,PFLD为其设计的损失函数:
image.png
该损失函数设计的目的是,对于样本量比较大的数据(如正脸,即欧拉角都相对较小的情况),给予一个小的权值,在进行梯度的反向传播的时候,对模型训练的贡献小一些;对于样本量比较少的数据(侧脸、低头、抬头、表情极端),给予一个较大的权值,从而使在进行梯度的反向传播的时候,对模型训练的贡献大一些。该模型的损失函数的设计,非常巧妙的解决了平衡各类情况训练样本不均衡的问题。

小知识点:欧拉角
欧拉角也可以描述三维刚体旋转,它将刚体绕过原点的轴(i,j,k)旋转θ,分解成三步(蓝色是起始坐标系,而红色的是旋转之后的坐标系。)。

image.png

  1. 绕z轴旋转α,使x轴与N轴重合,N轴是旋转前后两个坐标系x-y平面的交线
  2. 绕x轴(也就是N轴)旋转β,使z轴与旋转后的z轴重合
  3. 绕z轴旋转γ,使坐标系与旋转后的完全重合

按照旋转轴的顺序,该组欧拉角被称为是“zxz顺规”的。对于顺规的次序,学术界没有明确的约定。
欧拉角的旋转矩阵为:Rz(α)⋅Rx(β)⋅Rz(γ)

我们知道一般的回归损失是MSE或者Smooth L1 Loss,但它们都难以应对数据不均衡的情况,以MSE Loss为例,损失函数可以写成:
image.png

其中M表示人脸样本的数量,N表示每张人脸预设的需要检测的特征点数目,||.||在本文表示L2距离,rn表示不同类型样本的不同权重。

四、总结与感想

总的来说FPLD是一个idea非常好并且实用价值比较大的人脸关键点检测算法,无论是人脸姿态估计子网络的引入还是针对数据不平衡重新设计损失函数都是值得借鉴的。

在该篇论文当中,提出新的损失函数,能够有效缓解数据不均衡问题。另外,在网络结构方面,提出了用一个辅助网络结构去监督和辅助关键点检测。

在idea方面,对于轻量型网络,除了Mobilenet Block外,还可以考虑运用其它的网络结构(例如:Inexception)作为主干网络。网络构造方面,可以就某一特征专门设计一个辅助网络结构提取。

你可能感兴趣的:(深度学习网络模型部署——人脸关键点检测论文详解(PFLD))