PFLD:简单、快速、超高精度人脸特征点检测算法
作者 | 周强(CV君)
来源 | 我爱计算机视觉(公众号id:aicvml)
60s测试:你是否适合转型人工智能?
https://edu.csdn.net/topic/ai30?utm_source=cxrs_bw
什么样的算法才是好算法?
真正能实用的算法才是最好的算法!
这需要实现三个目标:精度高、速度快、模型小!
近期,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
可惜国内不能下载,不过不用担心,(本文作者)已经把它搬到百度云了
链接:
https://pan.baidu.com/s/16HjDy9TyotCVwDdd55oWVQ
提取码:glwr
作者也下载了APK试用,表示好像没看到效果,不知是不是手机兼容性有问题。提醒一下,论文作者声明,该工程仅可用于研究比较,如需商业使用需要联系作者获得授权。
论文地址:
https://arxiv.org/pdf/1902.10859.pdf
PFLD算法看起来简单,但精度却很高,这无疑来自作者设计的Loss函数很好的处理了样本类别不平衡的问题,你觉得还有更好的处理方法吗?欢迎留言。
(本文为AI科技大本营转载文章,转载请联系作者)
人工智能的现状及今后发展趋势如何?
https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
群招募
扫码添加小助手微信,回复:公司+研究方向(学校+研究方向),邀你加入技术交流群。技术群审核较严,敬请谅解。
推荐阅读:
投稿近2000,NAACL 2019接收率仅为22.6%|附录取论文名单
如何从零开始用PyTorch实现Chatbot?(附完整代码)
成长路线图:如何成为一名Python开发者?
春招已近,这份面试指南请收下
20万赚200万,48岁创业者是这样吊打小鲜肉的!
一部刷爆朋友圈的5G短片,看完才知道5G多暖多重要!
他修过车、杀过鱼,最终进入阿里巴巴打造9个本地版支付宝!
光凭 5G 根本无法解决宽带问题!
为啥程序员下班后只关显示器从不关电脑?
❤点击“阅读原文”,查看历史精彩文章。
PFLD:简单、快速、超高精度人脸特征点检测算法相关推荐
- 重磅!清华商汤开源CVPR2018超高精度人脸对齐算法LAB
清华&商汤开源超高精度人脸对齐算法LAB 同时发布含10000张人脸的多属性人脸关键点数据集 该算法来自CVPR2018论文<Look at Boundary: A Boundary-A ...
- 3d人脸对齐代码matlab,重磅!清华商汤开源CVPR2018超高精度人脸对齐算法LAB
清华&商汤开源超高精度人脸对齐算法LAB 同时发布含10000张人脸的多属性人脸关键点数据集 该算法来自CVPR2018论文<Look at Boundary: A Boundary-A ...
- 『深度学习项目四』基于ResNet101人脸特征点检测
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- CPU上跑到 100 fps 的高精度PyTorch人脸特征点检测库
视学算法分享 作者 | cunjian 编译 | CV君 转自 | 我爱计算机视觉 [导读]向大家推荐一款基于PyTorch实现的快速高精度人脸特征点检测库,其在CPU上的运行速度可达100 ...
- ShapeNet:超实时人脸特征点检测与形状拟合开源库
点击我爱计算机视觉标星,更快获取CVML新技术 近日,来自德国亚琛工业大学的研究人员开源了形状拟合库ShapeNet,其可以实现超实时的人脸特征点检测,也可以用在其他任何需要形状拟合的应用场景. 开源 ...
- 第二篇:基于深度学习的人脸特征点检测 - 数据与方法(转载)
https://yinguobing.com/facial-landmark-localization-by-deep-learning-data-and-algorithm/ 在上一篇博文中,我们了 ...
- Facial Landmark Detection(人脸特征点检测)
原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸 ...
- 第四篇:基于深度学习的人脸特征点检测 - 数据预处理
在上一篇博文中,我们整理了300-W.LFPW.HELEN.AFW.IBUG和300-VW这6个数据集,使用Python将特征点绘制在对应的图片上,人工验证了数据集的正确性,最终获得了223034个人 ...
- C++ OpenCV Contrib模块LBF人脸特征点检测
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为3322字,预计阅读9分钟 前言 <OpenCV源码Android端编译,用时三天,我编了个寂寞...>文中介绍了编 ...
最新文章
- 秋天六食物吃出好皮肤
- GridView 控件的执行顺序
- linux vlc流媒体服务器,vlc media server rtsp 流媒体服务器搭建成功经验分享
- python3 for计数_python怎么实现计数?
- [转]C++操作oracle数据库
- HDU 4389——X mod f(x)(数位DP)
- linux下libpng库的安装以及使用
- rms 公式 有效值_为什麼均方根值(RMS)比平均值表达好一些?
- 63 Defi过后,人生第一次玩DAO----超级君【2020-08-22 2234】
- 英文写作盲点-less than 和 fewer than 、only
- Themeforest 热卖 Shopify 主题 六折促销活动进行中
- Working Practice-设置免打扰时间
- 粉丝福利!Matlab自动配色神器ColorForFans
- CDN,你知道是什么吗?
- window操作系统下的句柄机制说明
- 当你的网站被百度定义为“风险“ “百度网址安全中心提醒您:该页面可能已被非法篡改!“
- 医学影像处理学习资料(含CT图像文件)
- 初识思科模拟器7.2
- 腾讯云存储cos-php-sdk-v5接口文档
- if语句里面continue和break的区别
热门文章
- Java 过滤特殊字符的 正则表达式
- IDEA2020如何设置全局maven路径
- 别只顾着写代码,学会这 25 条比涨工资都重要,你信不?
- 计算机语言学教程,《语言学教程》-中文笔记(完整).doc
- 暑期集训3:几何基础 练习题G: HDU - 1052
- 18,rand('state',sum(100*clock))
- SpringBoot第十篇:thymeleaf详解
- Excel-姓名列中同一个人汇总金额列,得出总金额
- 设计模式学习笔记(一)之工厂模式、单例模式
- 刻意练习:LeetCode实战 -- Task14. 最长公共前缀