PFLD:简单、快速、超高精度人脸特征点检测算法

2019 年 3 月 4 日 人工智能前沿讲习班

关注公众号:人工智能前沿讲习

对话框回复“PFLD”获取PFLD-DEMO



什么样的算法才是好算法?

真正能实用的算法才是最好的算法!

这需要实现三个目标:精度高、速度快、模型小!

今天arXiv新发布的文章《PFLD: A Practical Facial Landmark Detector》,则是实用人脸特征点检测算法的典范。

PFLD算法,目前主流数据集上达到最高精度、ARM安卓机140fps,模型大小仅2.1M!

这篇今天新出的论文,必将成为人脸特征点检测领域的重要文献,今天我们就一起来探究一下,PFLD算法到底有什么黑科技。


作者信息



作者分别来自天津大学、武汉大学、腾讯AI实验室、美国天普大学。

感谢各位大牛!


人脸特征点检测的挑战


作者首先从算法实用性角度讨论了人脸特征点检测问题的面临的挑战。

Challenge #1 - Local Variation

人脸表情变化很大,真实环境光照复杂,而且现实中大量存在人脸局部被遮挡的情况等。

Challenge #2 - Global Variation

人脸是3D的,位姿变化多样,另外因拍摄设备和环境影响,成像质量也有好有坏。

Challenge #3 - Data Imbalance

现有训练样本各个类别存在不平衡的问题。

Challenge #4 - Model Efficiency

在计算受限的设备比如手机终端,必须要考虑计算速度和模型文件大小问题。


算法思想


作者使用的网络结构如下:

其中,

黄色曲线包围的是主网络,用于预测特征点的位置;

绿色曲线包围的部分为辅网络,在训练时预测人脸姿态(有文献表明给网络加这个辅助任务可以提高定位精度,具体参考原论文),这部分在测试时不需要。

作者主要用两种方法,解决上述问题。

对于上述影响精度的挑战,修改loss函数在训练时关注那些稀有样本,而提高计算速度和减小模型size则是使用轻量级模型。

Loss函数设计

Loss函数用于神经网络在每次训练时预测的形状和标注形状的误差。

考虑到样本的不平衡,作者希望能对那些稀有样本赋予更高的权重,这种加权的Loss函数被表达为:

M为样本个数,N为特征点个数,Yn为不同的权重,|| * ||为特征点的距离度量(L1或L2距离)。(以Y代替公式里的希腊字母)

进一步细化Yn:

其中

即为最终的样本权重。

K=3,这一项代表着人脸姿态的三个维度,即yaw, pitch, roll 角度,可见角度越高,权重越大。

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

主网络

作者使用轻量级的MobileNet,其参数如下:

辅网络

参数如下:


实验结果


作者在主流人脸特征点数据集300W,AFLW上测试了精度,尽管看起来上述模型很简单,但超过了以往文献的最高精度!

下图是在300W上的CED,完美将其他算法的曲线压在下面。

下图为在300W数据集上不同评价标准IPN\IOP精度比较结果,依然是最棒的。

其中PFLD 1X是标准网络,PFLD 0.25X是MobileNet blocks width 参数设为0.25的压缩网络,PFLD 1X+是在WFLW数据集上预训练的网络。

值得一提的是表格中LAB算法,是CVPR2018上出现的优秀算法,之前一直是state-of-the-art。感兴趣的朋友可以参考52CV当时的报道:重磅!清华&商汤开源CVPR2018超高精度人脸对齐算法LAB 。

下图是该算法在AFLW数据集上与其他算法的精度比较:

同样是达到了新高度!

下面来看一下算法处理速度和模型大小,图中C代表i7-6700K CPU,G代表080 Ti GPU,G*代表Titan X GPU,A代表移动平台Qualcomm ARM 845处理器。

PFDL同样是异乎优秀!与精度差别很小的LAB算法相比,CPU上的速度提高了2000倍!

下面是一些特征点检测示例,尽管很多样本难度很大,但PFLD依然给出了可以接受的结果。

作者没有开源代码,但给出了Android应用 APK 和Android工程(算法封装在bin文件里)。

这个算法实在是太吸引人了,你是不是也想试一下呢?

作者给的网址:

https://sites.google.com/view/xjguo/fld

可惜国内不能下载,不过小编把它搬到百度网盘了,在“人工智能前沿讲习”公众号对话界面回复“PFLD”即可收到下载地址。

小编下载了APK试用,好像没看到效果,不知是不是手机兼容性有问题)

提醒一下,作者声明,该工程仅可用于研究比较,如需商业使用需要联系作者获得授权。

论文地址:

https://arxiv.org/pdf/1902.10859.pdf

PFLD算法看起来简单,但精度却很高,这无疑来自作者设计的Loss函数很好的处理了样本类别不平衡的问题,你觉得还有更好的处理方法吗?欢迎留言。


@我爱计算机视觉

版权声明

本文版权归《我爱计算机视觉》,转载请自行联系。


点击下方图片或点击文末阅读原文,了解课程详情


历史文章推荐:

基于深度学习的图像超分辨率最新进展与趋势【附PDF】

t-SNE:最好的降维方法之一

年龄估计技术综述

重磅 |《模式识别与机器学习》资源大礼包

从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

SFFAI分享 | 曹杰:Rotating is Believing

SFFAI分享 | 黄怀波 :自省变分自编码器理论及其在图像生成上的应用

AI综述专栏 | 深度神经网络加速与压缩

SFFAI分享 | 田正坤 :Seq2Seq模型在语音识别中的应用



点击下方阅读原文了解课程详情↓↓


若您觉得此篇推文不错,麻烦点点好看↓↓

登录查看更多
6

相关内容

在数学和计算机科学之中,算法(Algorithm)为一个计算的具体步骤,常用于计算、数据处理和自动推理。精确而言,算法是一个表示为有限长列表的有效方法。算法应包含清晰定义的指令用于计算函数。 来自维基百科: 算法
专知会员服务
73+阅读 · 2020年5月21日
专知会员服务
31+阅读 · 2020年4月24日
专知会员服务
160+阅读 · 2020年4月21日
PFLD:简单高效的实用人脸关键点检测算法
PaperWeekly
20+阅读 · 2019年4月17日
1500+ FPS!目前最快的CNN人脸检测算法开源
极市平台
25+阅读 · 2019年3月15日
AI综述专栏 | 人脸检测算法综述
人工智能前沿讲习班
6+阅读 · 2018年9月10日
一文综述人脸检测算法(附资源)
数据派THU
7+阅读 · 2018年5月8日
【CVPR2018】实时旋转鲁棒人脸检测算法
深度学习大讲堂
4+阅读 · 2018年4月19日
CVPR 2017 | Tiny Faces 小人脸检测算法简介
极市平台
10+阅读 · 2018年2月1日
人脸表情分类与识别:人脸检测+情绪分类
北京思腾合力科技有限公司
27+阅读 · 2017年12月18日
keras实战︱人脸表情分类与识别:人脸检测+情绪分类
数据挖掘入门与实战
21+阅读 · 2017年12月16日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
Equalization Loss for Long-Tailed Object Recognition
Arxiv
5+阅读 · 2020年4月14日
Arxiv
5+阅读 · 2019年2月28日
Arxiv
6+阅读 · 2018年7月9日
Arxiv
4+阅读 · 2018年1月19日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
PFLD:简单高效的实用人脸关键点检测算法
PaperWeekly
20+阅读 · 2019年4月17日
1500+ FPS!目前最快的CNN人脸检测算法开源
极市平台
25+阅读 · 2019年3月15日
AI综述专栏 | 人脸检测算法综述
人工智能前沿讲习班
6+阅读 · 2018年9月10日
一文综述人脸检测算法(附资源)
数据派THU
7+阅读 · 2018年5月8日
【CVPR2018】实时旋转鲁棒人脸检测算法
深度学习大讲堂
4+阅读 · 2018年4月19日
CVPR 2017 | Tiny Faces 小人脸检测算法简介
极市平台
10+阅读 · 2018年2月1日
人脸表情分类与识别:人脸检测+情绪分类
北京思腾合力科技有限公司
27+阅读 · 2017年12月18日
keras实战︱人脸表情分类与识别:人脸检测+情绪分类
数据挖掘入门与实战
21+阅读 · 2017年12月16日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
Top
微信扫码咨询专知VIP会员