1. 什么是关键点检测?
人脸关键点检测是指给定人脸图像,定位出人脸面部的关键点,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓区域的点,由于受到姿态和遮挡等因素的影响,人脸关键点检测是一个富有挑战性的任务。
人脸关键点是人脸各个部位的重要特征点,通常是轮廓点与角点,下图是96个面部关键点检测结果。
其中点代表位置,数字代表序号。人脸关键点可以有以下主要应用:
- 人脸姿态对齐,人脸识别等算法都需要对人脸的姿态进行对齐从而提高模型的精度。
- 人脸美颜与编辑,基于关键点可以精确分析脸型、眼睛形状、鼻子形状等,从而对人脸的特定位置进行修饰加工,实现人脸的特效美颜,贴片等娱乐功能,也能辅助一些人脸编辑算法更好地发挥作用。
- 人脸表情分析,基于关键点可以对人的面部表情进行分析,从而用于互动娱乐,行为预测等场景。
2. 人脸关键点数据集
关键点能够反映各个部位的脸部特征,随着技术的发展和对精度要求的增加,人脸关键点的数量经历了从最初的5个点到如今超过200个点的发展历程,在人脸等算法上拥有领先技术优势的商汤科技先后定出过106个关键点等行业标准。
2.1 5点标注
人脸面部最关键的有5个点,分别为左右两个嘴角,两个眼的中心,鼻子,这5个关键点属于人脸内部关键点,根据它们就可以计算出人脸的姿态。当然早期也有标注4个点以及6个点的方案。 2005年发布的 FRGC-V2(Face Recognition Grand Challenge Version2.0)中标注了双眼、鼻子、嘴巴、下巴共5个关键点。 2007年发布的Caltech 10000 Web Faces数据集中标注了双眼、鼻子和嘴巴共4个关键点。 2013年的AFW数据集中标注了双眼、鼻子、嘴唇共6个关键点,其中嘴唇有3个点。 2014年发布的MTFL/MAFL数据集中标注了双眼、鼻子和2个嘴角共5个关键点。
2.2 68点标注
68点标注是现今最通用的一种标注方案,早期在1999年的Xm2vtsdb数据集中就被提出,300W数据集和XM2VTS等数据集也都采用了68个关键点的方案,被OpenCV中的Dlib算法中所采用。 68个关键点的标注也有一些不同的版本,这里我们介绍最通用的Dlib中的版本,它将人脸关键点分为内部关键点和轮廓关键点,内部关键点包含眉毛、眼睛、鼻子、嘴巴共计51个关键点,轮廓关键点包含17个关键点。
Dlib所采用的68个人脸关键点标注可以看上图,单边眉毛有5个关键点,从左边界到右边界均匀采样,共5×2=10个。 眼睛分为6个关键点,分别是左右边界,上下眼睑均匀采样,共6×2=12个。 嘴唇分为20个关键点,除了嘴角的2个,分为上下嘴唇。上下嘴唇的外边界,各自均匀采样5个点,上下嘴唇的内边界,各自均匀采样3个点,共20个。 鼻子的标注增加了鼻梁部分4个关键点,而鼻尖部分则均匀采集5个,共9个关键点。 脸部轮廓均匀采样了17个关键点。 如果把额头部分也加上去,就可以得到更多,比如81个关键点。
2.3 96/98点标注
公开的数据集比较少超过68个关键点,其中比较有名的是Wider Facial Landmark in the Wild(WFLW),它提供了98个关键点。 WFLW 包含了 10000 张脸,其中 7500 用于训练,2500 张用于测试。除了关键点之外,还有遮挡、姿态、妆容、光照、模糊和表情等信息的标注。
2.4 106与186点标注
106个关键点标注是商汤科技提出的在业内被广泛采用的方案,包括Face++等企业开放的API多采用这个标注方式,具体信息如下:
外轮廓,33个均匀采样点,比Dlib更加密集。 嘴巴20个关键点,与Dlib标注的相同。 鼻子15个关键点,与Dlib相比增加了两侧鼻梁部位。 眼睛20个关键点,每只眼睛轮廓点共8个,眼球中心点2个。 眉毛18个关键点,区分了上眉毛边界。 后续又在106个关键点的基础上提出了更加稠密的186个关键点,如今各个开发团队使用的点数可能会有差异,比如百度使用过72和150个点的方案。 除了以上这些常用的方案,还有很多的数据集也有自己的标注标准,比如BioID Face Dataset包含20个关键点,BUHMAP-DB包含52个关键点,MUCT包含76个关键点,PUT大部分图像包含30个关键点,其中正面人脸包括了194个点。
3. 数据集下载
数据集 | 介绍 | 链接 |
300W | 共600张图片(300室内,300室外),68关键点 | |
XM2VTS | 2360张正面图,68关键点 | |
LFPW | 1432张图片,29关键点 | |
HELEN | 2000张训练集,330张测试集 | |
IBUG | 135张图片 | https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/ |
XM2VTS | 2360张正面图,68关键点 | |
AFLW | 20000张训练,4386张测试 | |
FRGC V2 | 50000张训练,4003张测试 | |
ICME 人脸106关键点检测比赛官方数据集 | 106个点 | https://facial-landmarks-localization-challenge.github.io/#index https://sites.google.com/view/hailin-shi |
CelebA(2015) | 5个点,10177个人,共202599幅人脸图像 | |
WFLW(ECCV2018) | 98个点,7500训练集,2500测试集 | |
MTFL/MAFL(2014) | 68个点,MTFL数据集包含了12995 张脸,5个关键点标注;(MAFL) 数据集则包含了20000张脸,5个关键点标注与40个面部属性 | |
SCUT-FBP(2017) | 86个点,2000亚洲女性,2000亚洲男性,750高加索男性,750高加索女性 |
4. 人脸关键点难点
人脸关键点是人脸相关问题的基础,作为基础模块,人脸关键点检测对速度很敏感,否则将会影响系统整体的效率,所以对人脸关键点检测的要求是,又准又快。
人脸关键点目前存在的问题(不能又准又快)的原因如下:
- 局部变化:表情、局部特殊光照、部分遮挡,导致一部分关键点偏离了正常的位置,或者不可见了;
- 全局变化:人脸姿态、成像质量;
- 数据不均衡:在人脸数据里面,数据不均衡体现在,大部分是正脸数据,侧脸很少,所以对侧脸、大角度的人脸不太准;
- 模型效率:在 CNN 的解决方案中,模型效率主要由 backbone 网络决定。
在实际使用中,人脸关键点的问题主要有两个:
- 对“点是否遮挡”判断是否准确;
- 对大角度人脸(±60 度以内)点位置预测的准确性和稳定性。