HyperLandmark-开源人脸106点关键点检测SDK

人脸关键点检测,是人脸识别、视频娱乐化等应用的基础算法,用于标定人脸轮廓及五官。研究人员大多基于300w,helen等68点数据集进行算法的研究,存在训练集小,标定点不充分等因素。目前业内主流算法包括face++及商汤的人脸标定sdk,支持106点人脸关键点标定。北京智云视图科技有限公司开源了一款106人脸标定SDK,在主流android平台每帧速度5-8ms,速度快,稳定性高,效果与商汤及face++人脸标定SDK效果基本一致,这里提供给大家免费使用。

2. 开发步骤

2.1. Shufflenet-v2

  • 为了获得更好的性能,近些年设计的CNN更深,更复杂,这样明显阻碍了模型的部署应用。而手机端的应用越来越广泛,因此,一种轻量化,高效率的网络——Shufflenet,应运而生。ECCV 2018,face++团队将Shufflenet-V1的升级版——Shufflenet-V2.我们改进了Shufflenet-v2的结构,用于关键点特征提取。

2.2. Wing Loss

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

2.3. 人脸姿态估计

  • 人脸姿态估计,顾名思义,给定一张人脸图像,确定其姿态,姿态由什么构成呢?很简单(pitch,yaw,roll)三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度。
    人脸姿态估计图
    目前,人脸姿态估计有多种方法,可以分为基于模型的方法,基于表观的方法,基于分类的方法。我之前做过 这方面的调研,调研的结果很明显,基于模型的方法得到的效果最好,因为其得到的人脸姿态是连续的,而另外两种,是离散的,并且很耗时间。基于模型的估计方法的前提是,手头必须具备两样东西,一个是人脸特征点(眼镜,嘴巴,鼻子等处的像素位置),另外一个,是需要自己制作一个3维的,正面的“标准模型”。算法最重要的还是思想,其余诸如流程什么的,都是实现思想的手段而已。人脸姿态估计的思想:旋转三维标准模型一定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽量重合。这时候我们脑海中就应该浮现出一种诡异的场景:在幽暗的灯光中,一个发着淡蓝色光芒的人皮面具一点点的“自我调整”,突然一下子“完美无缺”的“扣在了你的脸上”。这就是人脸姿态估计的思想。参考:人脸姿态估计

2.4. 多任务学习

  • 我们在训练过程中,加入了多任务,包括微笑、张嘴、墨镜、年龄、性别等属性的识别。

3.后记

  • 人脸标定目前是短视频社交、人脸识别领域应用广泛,我们旨在提供一种可行的方案,让更多的用户能够体验新的算法带来的效果提升,同时提供一个交流的平台,使得更多的算法爱好者进行交流。
  • 开源实现
  • 北京智云视图科技有限公司

4.参考链接

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐