Guo X , Li S , Zhang J , et al. PFLD: A Practical Facial Landmark Detector[J]. 2019.

该论文亮点如下:

  • 轻量级:以MobileNet blocks构建轻量级网络。
  • 设计新的损失函数:一个训练集可能包含大量的正面人脸,而缺乏大姿势人脸数据。这将降低处理大姿态情况下的准确性。为了解决这个问题,我们对与丰富的训练样本相对应的错误给予更多的惩罚。考虑到上述两个问题,即几何约束和数据不平衡,我们设计了一个新的损失。
  • 增加多尺度全连接层:扩大感受野,更好地捕捉人脸的整体结构。
  • 在性能上,模型可以调整到仅有2.1Mb的大小,在手机上可以达到140帧以上,在表现上:


MNE指标的计算方法如上所示,dIODd_{IOD}dIOD​表示两眼之间的距离,体现了标准化。总地来说就是,N个关键点ΣΣΣ归一化坐标和真实坐标的范式距离除以两眼间距离
更多参考:人脸对齐算法常用评价标准总结

  • 1、面对的四大挑战
    • 1.1 局部变化
    • 1.2 全局变化
    • 1.3 数据不平衡
    • 1.4 模型效率
    • Methodology
  • 2、损失函数的设计
  • 3、网络结构设计
    • 3.1 主干网络
    • 3.2 辅助网络
      • 3.2.1 本文中是如何计算三个欧拉角的?
      • 3.2.2 如何通过旋转矩阵计算欧拉角?
  • 4、实验的细节

1、面对的四大挑战

1.1 局部变化

表情、高光、阴影和遮挡给人脸图像带来部分挑战和干涉,一些区域的地标可能偏离其正常位置,甚至消失。

1.2 全局变化

(头部)姿态和图像质量是影响图像表现的两个主要全局因素,当人脸全局结构被错误估计时,将导致一部分的关键点定位差。

1.3 数据不平衡

数据集在类别(或者属性)分布不均衡,很可能导致算法不能正确的表示数据的特征,从而在不同属性上得到不满意的精度。

1.4 模型效率

诸如在嵌入式、手机等上面的应用,大家希望建立一个准确、高效、紧凑、实用的关键点检测系统。

Methodology

针对挑战1、2和3,设计了一个损失函数
针对挑战4,使用MobileNet Block作为主干网络

2、损失函数的设计

首先,平等地处理丰富的类型样本和稀少的类型样本是不公平的,训练的网络对极端情况不能做出很好的处理。所以一个基本原则就是:对稀有训练样本的错误进行(更深的)惩罚,对丰富的样本进行(普通的)惩罚。

Loss公式如下:

∣∣d∣∣||d||∣∣d∣∣:就是L2L_2L2​距离,常规的MSE
γγγ:一个与头部姿态有关的值,姿态越扭转该值越大,姿态越扭转该值越小。印证了稀有样本(大姿态)的惩罚(Loss)更深(大),丰富的样本(小姿态,正常脸)的惩罚(Loss)更普通(小)

将γγγ展开:

  • ωnω_nωn​为可调控的权值函数,针对不同的情况选取不同的权值,如正常情况、遮挡情况、暗光情况等等(针对挑战1-局部变化)。
  • θθθ为人脸姿态的三维欧拉角(针对挑战2-全局变化)。
  • Loss:结合ωnω_nωn​和θθθ,Loss对稀少数据进行更深的惩罚(针对挑战3-数据不平衡)。

因:情况极端、姿态大→ωnω_nωn​和(1−cosθ)(1-cosθ)(1−cosθ)变大→Loss变大
故:该Loss对稀少样本的惩罚更大

3、网络结构设计

该网络结构分为了两个自子网络。橙色虚线框是网络的主干网络,用于预测关键点坐标,绿色虚线框用于人脸三维欧拉角的预测,该三维欧拉角最终会被嵌入上述的Loss中,帮助主干网络在极端数据下的收敛。

从上图中可以看出该网络架构的特性:

  • 1、主干网络+辅助网络:一个用于关键点的预测,一个用于脸姿态的估计(三维欧拉角,即Loss中的θ)
  • 2、主干网络使用MobileNetBlock:构建轻量级网络
  • 3、MobileNetBlock的特征输出即作为关键点预测的特征输入,也作为人脸姿态的特征输入
  • 4、多尺度特征:人脸具有强大的全局结构:诸如对称性和空间关系,因此使用跨尺度(stride>1)卷积运算完成多尺度特征的扩展

3.1 主干网络

主干网络结构图如下:

表:主干网配置。每一行代表一个相同层的sequence,重复n次。相同sequence中的所有层都有相同数量的输出通道。每个sequence的第一层都有一个stride:s。扩展因子t总是应用于输入大小。

首先,考虑到人脸有很强的全局结构,比如五官的对称性和空间关系,这种全局结构能够帮助我们更精准地定位关键的,因此我们将其扩展到多尺度映射,而不是但尺度的特征映射。扩展是通过逐步卷积实现的,扩大了感受野。最后通过完全连接多尺度特征图完成最终的预测。详细配置见上图。由于MobileNet技术(深度可分离卷积、线性瓶颈和反向残差)[13,26]的满意性能,我们用MobileNet块取代了传统的卷积操作。

3.2 辅助网络

辅助网络结构图:

该网络只在训练时使用,应用的时候不存在
辅助网络的输入是来自主干网的 4-th block(见表1)

辅助网络主要用来估计头部的三维旋转角:yaw、pitch、roll角,有了这三个欧拉角,就可以估计头部姿态了。

“为什么不直接用预测的关键的和关键的标签直接计算欧拉角呢?”:
One may wonder that given predicted and ground-truth
landmarks, why not directly compute the Euler angles from
them? Technically, it is feasible. However, the landmark
prediction may be too inaccurate especially at the beginning
of training, which consequently results in a low-quality estimation of the angles. This could drag the training into
dilemmas, like over-penalization and slow convergence. To
decouple the estimation of rotation information from landmark localization, we bring the auxiliary subnet.

大概意思是,通过预测的关键的和真实关键计算的欧拉角可能不太准(毕竟此时预测的关键点本身就不太准),会将其引入到Loss中可能会影响网络的训练,比如过度惩罚或者收敛缓慢。

3.2.1 本文中是如何计算三个欧拉角的?

辅助网络是计算三个欧拉角的,那么这个label是来的呢?其实是一开始先经过某种方式计算得到的,然后储存为label再来训练辅助网络直接预测欧拉角。计算方式如下:

  1. 预定义一个标准脸(在一堆正面上取平均值),并在主脸平面上固定11个关键点训练脸作为所有的参考;
  2. 使用每个脸对应的11个关键点和参考关键点来估计旋转矩阵;
  3. 从旋转矩阵计算欧拉角;

3.2.2 如何通过旋转矩阵计算欧拉角?

DeTone等人。[1] 提出了一种估计两幅相关图像之间同源性的深度网络。偏航角、滚转角和俯仰角可以从估计的同源矩阵中计算出来。注意:这里的同源性图片其中一张是标准正脸,在本文中的标准正脸在认为标准人脸都具有相似结构的基础上,使用平均方法算出来的标准脸。

[1] D. DeTone, T. Malisiewicz, and A. Rabinovich.
Deep image homography estimation. CoRR,
abs/1606.03798, 2016.

4、实验的细节

在训练过程中,

  • 人脸都被裁剪并调整为112×112
  • 使用Keras框架(原文中是“Kera framework”,应该就是Keras)
  • bitch_size=256
  • 使用Adam优化器
  • 权重衰减=10−610^{-6}10−6,momentum=0.9
  • 在整个训练过程中,学习率固定为10−4
  • 最大迭代次数为64K

整个网络都在Nvidia GTX1080Ti GPU上进行训练。对于300W,我们通过翻转每个样本,并以5°的间隔将它们从−30°旋转到30°来增加训练数据。此外,每个样本都有一个20%的面部大小的区域被随机遮挡。而对于AFLW,我们将原始训练集输入网络,而没有任何数据增强。在测试中,只有主干网络(没有辅助网络)。

PFLD: A Practical Facial Landmark Detector--Xiaojie Guo相关推荐

  1. 《PFLD: A Practical Facial Landmark Detector》论文笔记

    PFLD: A Practical Facial Landmark Detector 1. Introduction 人脸特征点检测又称为人脸对齐,旨在自动定位人脸上一组预定义的基准点(如眼角.嘴角等 ...

  2. PFLD: A Practical Facial Landmark Detector

    PFLD: A Practical Facial Landmark Detector 论文链接:https://arxiv.org/abs/1902.10859 发表出处:2019 CVPR 1.背景 ...

  3. Facial Landmark Detecion 论文及代码汇总,持续更新~~~

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 人脸关键点检测相关文献.持续更新中~~ 文章目录 Arxiv ECCV 2020 CVPR 2020 ICCV 20 ...

  4. Facial Landmark Detection(人脸特征点检测)

    原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸 ...

  5. learnOpenCv】Facial Landmark Detection:人脸特征点检测的一些应用

    目前在计算机视觉领域,人脸方向的研究非常之多.人脸分析最常见的应用是人脸识别,但是如果我们想要验证图像中一个人的身份,需要先知道这个图像中人脸的位置.因此,人脸检测(在图像中定位人脸,并返回一个包含人 ...

  6. [人脸对齐] SAN:Style Aggregated Network for Facial Landmark Detection 论文阅读

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 论文链接: Style Aggregated Network for Facial Landmark Detecti ...

  7. 文献记录(part41)--Residual multi-task learning for facial landmark localization and expression ...

    学习笔记,仅供参考,有错必纠 关键词:面部地标定位:面部表情识别:深层神经网络:多任务学习 随便看看- 文章目录 Residual multi-task learning for facial lan ...

  8. 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks

    原文链接:https://blog.csdn.net/u011995719/article/details/80150508#commentsedit Wing Loss for Robust Fac ...

  9. [人脸对齐--综述] Facial Landmark Detection: a Literature Survey(2018)

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 论文链接:Facial Landmark Detection: a Literature Survey 作者及团队: ...

最新文章

  1. IE8的项目在IE11下 一些功能无法实现的解决方案
  2. PHP带头大哥谈程序语言的学习体会!
  3. 别再说PHP已死了,它活得好着呢
  4. 大剑无锋之如何查看一个java进程的堆内存使用情况(jps,jstack,jmap)【面试推荐】
  5. ABAP 调用第三方 API,遇到乱码该怎么办?
  6. java弃用标签_Java 9 揭秘(15. 增强的弃用注解)
  7. JavaSE | 多线程
  8. 《C++标准程序库》学习笔记5 — 第七章
  9. 深度解说阿里云 Serverless Kubernetes
  10. python解压打开文件过多_让Python在后台自动解压各种压缩文件!
  11. 不了解这些“高级货”,活该面试当炮灰......
  12. 某大型银行深化系统技术方案之九:核心层之流程数据管理
  13. UE4之设置打包程序分辨率
  14. iOS 开发 初级:应用内购买 In-App Purchase
  15. 【浏览器硬件交互篇】浏览器js调用摄像头拍照
  16. 【Spark重点难点08】Spark3.0中的AQE和DPP小总结
  17. 多个APP合并为一个APP开发的实现方案
  18. 华为云服务器怎么备份文件,云服务器系统如何备份文件
  19. 华尔街远邻 | 解读国际清算银行对加密货币的暧昧态度
  20. Redis的客户端Jedis

热门文章

  1. 数据结构:10大经典排序
  2. 如何使用media-server搭建DASH服务
  3. be going to用法口诀
  4. checkbox 选中触发js事件
  5. html+css实现多层表格嵌套
  6. oracle 表空间转换,Oracle表空间数据文件移动的方法
  7. 家庭宽带搭建ipv6私人网盘
  8. 在c语言如何对拨码开关编程,拨码开关控制实验
  9. 【C初阶】第一篇——初识C语言(万字篇,带你敲响C语言的大门)
  10. mysql 安时间查询格式_安装MySQL慢查询日志工具Anemometer