Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural
Networks 

由萨里大学研究人员(第一至四作者)与江南大学研究人员(第五作者)共同研究,被CVPR2018收录,最早于2017年11月在arXiv上发表(美[ˈɑ:rkaɪv])
: 
https://arxiv.org/abs/1711.06753v4 <https://arxiv.org/abs/1711.06753v4>

近几年,人脸关键点检测大多在“由粗到精”(coarse to fine)上研究,而这篇文章则另辟蹊径。依作者所说,这是第一篇在人脸关键点检测任务上对loss
function进行讨论分析的文章,文章在loss function上进行改进,为人脸关键点检测任务提出“专用”的loss function——Wing
loss,作者的出发点值得借鉴。

<>创新点:

1.针对人脸关键点检测提出新的loss function —— Wing Loss 
2.针对人脸姿态角度多样而导致的检测精度不高问题,提出一种基于姿态的数据均衡方法,
从而提升人脸姿态变化时的关键点检测精度,这也是文章题目中“Robust”的体现

主要工作: 
除上述两点外,第三点是采用 two-stage landmark
localisation,其实就是级联卷积神经网络的思想,更多人脸关键点检测中的级联思想可参见: 
级联MobileNet-V2实现CelebA人脸关键点检测
<https://blog.csdn.net/u011995719/article/details/79435615> 
深度学习人脸关键点检测方法—综述 <https://blog.csdn.net/u011995719/article/details/78890333>

我将从三个部分进行介绍这篇论文,分别是Wing loss、数据均衡方法 和 Two-stage landmark localisation
,重点当然是Wing loss啦~~

<>Wing loss

命名:文中没有提到为什么命名为Wing loss,但是从 Wing loss的曲线图看到,好像翅膀(Wing),或许因此得名吧 


Wing loss 公式如下: 


这里抛出两个问题: 

第一,这是一个分段函数,为什么是分段函数? 
第二,当|x|<w|x|<w 时,主体是一个对数函数,另外还有两个控制参数,分别是w和ε,为什么是对数函数?为什么要加控制参数? 

先解释第二个问题,通常的人脸关键点检测任务(回归任务)loss function都采用L2、L1和smooth L1 ,其中L2是使用最为广泛的 
这三个loss function曲线如下图所示:



 



讲到这里,Wing loss的由来就讲完啦,但是最最关键的还是要调参。要找合适的 w和ϵw和ϵ ,作者做了一系列实验,给出了推荐值,请实验结果: 


<>PBD(Pose-based Data Balancing)

本文除了提出一种新的loss function,还针对人脸关键点检测任务中遇到的人脸姿态多样化问题,提出一种基于姿态的数据均衡方法,来提升人脸关键点检测精度。

在分类任务中,数据不均衡非常容易导致模型性能不佳,而在人脸关键点任务(回归任务)中,
作者同样认为,正脸太多,有旋转的脸太少,从而导致模型对有旋转的人脸的关键点检测精度低。 因此,提出一种基于姿态的数据均衡方法——PDB(Pose-based
Data Balancing)

PDB方法:首先将 training shapes进行对齐,将对齐后的training shapes进行PCA,用shape
eigenvector将original shapes进行投影至一维空间,用来控制姿态变化。整个训练集投影后的系数通过一个直方图来展示,如下图所示: 


有了这个直方图,就可以看到哪些姿态的人脸图像多,哪些少,然后通过复制那些占比较少的样本
,使得所有样本均衡,这就是PDB方法。实验结果表明PDB方法可以提升人脸关键点检测精度: 


<>Two-stage landmark localisation(Pose-based Data Balancing)

为了进一步提升精度,作者采用了级联思想,在文中称之为 Two-stage landmark localisation

level-1 采用的是CNN-6,level-2采用的是CNN-7, CNN-7与CNN-6不同之处在于:

* input比CNN-6大一倍,为128*128*3
* 多了一组操作——卷积、池化
* 第一个卷积层的卷积核个数为64(CNN-6为32)
level-1输出的landmark有两个作用:

* 移除人脸角度;
* 矫正bounding box 为level-2 提供更好的输入
CNN-6 模型如下: 


<>小结

通过阅读该文章可知,在做人脸关键点时,可以注意以下几点:

*
由于人脸关键点检测是特殊的回归任务,因而要注意loss function是否对每一个点都“友好”,选用不同的loss function尝试实验,或许有新发现

*

数据不均衡问题不仅困扰分类任务,在人脸关键点检测任务中,不同姿态的人脸样本不均衡,同样会影响模型获得更高的精度,因此可尝试使用某一种指标,去衡量训练样本当中,人脸姿态的分布情况,然后对应的做数据均衡(该法数据数据增强)

*
级联,利用上一级的output,对iamge进行矫正,使下一级获得更好的input

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信