wandaxiao 2019-03-18
【新智元导读】人脸特征点检测是人脸检测过程中的一个重要环节。以往我们采用的方法是OpenCV或者Dlib,虽然Dlib优于OpenCV,但是检测出的68个点并没有覆盖额头区域。Reddit一位网友便在此基础上做了进一步研究,能够检测出81个面部特征点,使得准确度有所提高。
或许,这就是你需要的人脸特征点检测方法。
人脸特征点检测(Facial landmark detection)是人脸检测过程中的一个重要环节。是在人脸检测的基础上进行的,对人脸上的特征点例如嘴角、眼角等进行定位。
近日,Reddit一位网友po出一个帖子,表示想与社区同胞们分享自己的一点研究成果:
其主要的工作就是在人脸检测Dlib库68个特征点的基础上,增加了13个特征点(共81个) ,使得头部检测和图像操作更加精确。
现在来看一下demo:
demo视频链接:
https://www.youtube.com/watch?v=mDJrASIB1T0
以往我们在做人脸特征点检测的时候,通常会用OpenCV来进行操作。
但自从人脸检测Dlib库问世,网友们纷纷表示:好用!Dlib≥OpenCV!Dlib具有更多的人脸识别模型,可以检测脸部68甚至更多的特征点。
我们来看一下Dlib的效果:
Dlib人脸特征点检测效果图
那么这68个特征点又是如何分布的呢?请看下面这张“面相图”:
人脸68个特征点分布
但无论是效果图和“面相图”,我们都可以发现在额头区域是没有分布特征点的。
于是,网友便提出了一个特征点能够覆盖额头区域的模型。
该模型是一个自定义形状预测模型,在经过训练后,可以找到任何给定图像中的81个面部特征点。
它的训练方法类似于Dlib的68个面部特征点形状预测器。只是在原有的68个特征点的基础上,在额头区域增加了13个点。这就使得头部的检测,以及用于需要沿着头部顶部的点的图像操作更加精准。
81个特征点效果图
这13个额外的特征点提取的方法,是根据该博主之前的工作完成的。
GitHub地址:
https://github.com/codeniko/eos
该博主继续使用Surrey Face Model,并记下了他认为适合他工作的13个点,并做了一些细节的修改。
当然,博主还慷慨的分享了训练代码,链接:
GitHub:
https://github.com/codeniko/shape_predictor_81_face_landmarks
参考链接:
Reddit:
https://www.reddit.com/r/MachineLearning/comments/b20b9i/p_i_trained_a_face_predictor_that_detects_fulls/
Youtube:
https://www.youtube.com/watch?v=mDJrASIB1T0