为什么要追踪人脸?
大概,是想要实现什么大胆的想法吧。比如加个贴紧脸部的特技:
有个叫做Niko的程序猿,发布了拥有81个关键点的面部检测工具:
Niko说,他在Dlib库68个关键点的基础上加了13个,把前额也包含在追踪范围里。
那样,就可以加上更丰富的特技了。比如,带个帽子:
先来仔细看一看这只斯嘉丽,脸上81个关键点的分布:
0-67是dlib既有的68个脸部关键点;
68-80是程序猿新增的13个前额关键点。
程序猿说,他是从Patrick Huber的eos项目 (一个轻量级3DMM) 上,fork出了一个分支,用Surrey人脸模型找到了自己需要的这13个额外的点。
然后,用整个ibug大数据库训练了模型,拿81点替换了原本的68点。不过,训练方法还是和dlib差不多的。
成果,就是文章开头见到的样子。不过,也可以做成表情包:
Dlib,是用C++写成的机器学习库,提供了C++和Python接口。
库里面有许多常见的算法,人脸标记便是赫赫有名的一个。
缘起2014年,Dlib实现了当年一篇著名CVPR论文的算法:
“用回归树,一毫秒搞定人脸对齐。”
由此,Dlib名声大振。人脸标记、人脸识别、人脸姿态估计,库里面各种各样的算法都广为流传。
后来出现的许多库,都是在它的基础上开发的:Python人脸识别库face_recognition便是其一。
Niko的81个关键点,也是借鉴了Dlib人脸标记的68个点。
如今,Dlib已经更新到19.17版本了。
Niko的81点传送门: https://github.com/codeniko/shape_predictor_81_face_landmarks
Dlib的68点传送门: http://dlib.net/face_landmark_detection.py.html
Surrey Face Model: https://cvssp.org/faceweb/3dmm/facemodels/
作者系网易新闻·网易号“各有态度”签约作者
— 完 —