原
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,作者的出发点值得借鉴。
- *
2.3. 人脸姿态估计
- 人脸姿态估计,顾名思义,给定一张人脸图像,确定其姿态,姿态由什么构成呢?很简单(pitch,yaw,roll)三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度。
目前,人脸姿态估计有多种方法,可以分为基于模型的方法,基于表观的方法,基于分类的方法。我之前做过 这方面的调研,调研的结果很明显,基于模型的方法得到的效果最好,因为其得到的人脸姿态是连续的,而另外两种,是离散的,并且很耗时间。基于模型的估计方法的前提是,手头必须具备两样东西,一个是人脸特征点(眼镜,嘴巴,鼻子等处的像素位置),另外一个,是需要自己制作一个3维的,正面的“标准模型”。算法最重要的还是思想,其余诸如流程什么的,都是实现思想的手段而已。人脸姿态估计的思想:旋转三维标准模型一定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽量重合。这时候我们脑海中就应该浮现出一种诡异的场景:在幽暗的灯光中,一个发着淡蓝色光芒的人皮面具一点点的“自我调整”,突然一下子“完美无缺”的“扣在了你的脸上”。这就是人脸姿态估计的思想。参考:人脸姿态估计
2.4. 多任务学习
- 我们在训练过程中,加入了多任务,包括微笑、张嘴、墨镜、年龄、性别等属性的识别。
3.后记
- 人脸标定目前是短视频社交、人脸识别领域应用广泛,我们旨在提供一种可行的方案,让更多的用户能够体验新的算法带来的效果提升,同时提供一个交流的平台,使得更多的算法爱好者进行交流。
- 开源实现
- 北京智云视图科技有限公司