一、现状
人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。但实际应用中人脸的不同尺寸,姿态,遮挡,光照,复杂表情等对人脸关键点检测具有较大的挑战性。近些年来,深度学习方法由于其自动学习及持续学习能力,已被成功应用到了图像识别与分析、语音识别和自然语言处理等很多领域,且在这些方面都带来了很显著的改善。本文主要对2D人脸关键点深度学习方法进行汇总。
二、方法
人脸关键点检测是在人脸检测的基础上,根据输入的人脸图像,自动定位出面部关键特征点,如眼睛、鼻尖、嘴角点、眉毛以及人脸各部件轮廓点等,输入为人脸外观图像,输出为人脸的特征点集合,见下图:
人脸关键点检测方法大致分为三种,分别是基于ASM(Active Shape Model)和AAM (Active Appearnce Model)的传统方法;基于级联形状回归的方法;基于深度学习的方法。若是按照参数化与否来分,可分为参数化方法和非参数化方法,ASM、AAM和CLM就属于参数化方法,而级联回归和深度学习方法属于非参数化方法。基于参数化形状模型的方法可依据其外观模型的不同,可进一步分为,基于局部的方法和基于全局的方法;对于非参数化进一步可分为基于样例的方法、基于图模型的方法、基于级联回归的方法和基于深度学习的方法。目前,应用最广泛,效果精度最高的是基于深度学习的方法,因此本文主要针对深度学习在人脸关键点检测上的应用进行研究。
在人脸关键点定位的发展史上,具有里程碑式的有如下五种方法:
- 1995年,Cootes的ASM(Active Shape Model);
- 1998年Cootes的AAM(Active Appearance Model)算法;
- 2006年Ristinacce的CLM(Constrained Local Model)算法;
- 2010年Rollar的cascaded Regression 算法;
- 2013年港中文大学的汤晓欧和Sun Yi等开创深度学习人脸关键点检测的先河,首次将 CNN应用到人脸关键点定位上。
定量评价方面,目前主要的衡量标准是算法所获取的关键点位置与真实关键点位置之间的偏差。在评价偏差时,由于不同人脸图像的实际大小难免会有所差异,为便于在同样的尺度下比较算法性能,需要采用一定的数据归一化策略. 目前主流的方法是基于两眼间的距离进行人脸大小的标准化,也有采用边界框对角线作为归一化因子来评价偏差。
3.1 传统方法
- ASM
ASM(Active Shape Model)是由Cootes于1995年提出的经典的人脸关键点检测算法,主动形状模型即通过形状模型对目标物体进行抽象,ASM是一种基于点分布模型(Point Distribution Model, PDM)的算法。在PDM中,外形相似的物体,例如人脸、人手、心脏、肺部等的几何形状可以通过若干关键点(landmarks)的坐标依次串联形成一个形状向量来表示。ASM 算法需要通过人工标定的方法先标定训练集,经过训练获得形状模型,再通过关键点的匹配实现特定物体的匹配。
ASM 主要分为两步:第一步:训练。首先,构建形状模型:搜集n个训练样本(n=400);手动标记脸部关键点;将训练集中关键点的坐标串成特征向量;对形状进行归一化和对齐(对齐采用 Procrustes 方法);对对齐后的形状特征做PCA处理。接着,为每个关键点构建局部特征。目的是在每次迭代搜索过程中每个关键点可以寻找新的位置。局部特征一般用梯度特征,以防光照变化。有的方法沿着边缘的法线方向提取,有的方法在关键点附近的矩形区域提取。第二步:搜索。首先:计算眼睛(或者眼睛和嘴巴)的位置,做简单的尺度和旋转变化,对齐人脸;接着,在对齐后的各个点附近搜索,匹配每个局部关键点(常采用马氏距离),得到初步形状;再用平均人脸(形状模型)修正匹配结果;迭代直到收敛。
ASM算法的优点在于模型简单直接,架构清晰明确,易于理解和应用,而且对轮廓形状有着较强的约束,但是其近似于穷举搜索的关键点定位方式在一定程度上限制了其运算效率。
- AAM
1998年,Cootes对ASM进行改进,不仅采用形状约束,而且又加入整个脸部区域的纹理特征,提出了AAM 算法。AAM于ASM一样,主要分为两个阶段,模型建立阶段和模型匹配阶段。其中模型建立阶段包括对训练样本分别建立形状模型 (Shape Model) 和纹理模型 (Texture Model),然后将两个模型进行结合,形成 AAM 模型。
- CPR
CPR(Cascaded Pose Regression):2010年Dollar 提出CPR(Cascaded Pose Regression, 级联姿势回归),CPR通过一系列回归器将一个指定的初始预测值逐步细化,每一个回归器都依靠前一个回归器的输出来执行简单的图像操作,整个系统可自动的从训练样本中学习。
人脸关键点检测的目的是估计向量,其中K表示关键点的个数,由于每个关键点有横纵两个坐标,所以S的长度为2K。CPR 检测流程如图所示,一共有T个阶段,在每个阶段中首先进行特征提取,得到ft,这里使用的是 shape-indexed features,也可以使用诸如HOG、SIFT等人工设计的特征,或者其他可学习特征(learning based features),然后通过训练得到的回归器R来估计增量ΔS( update vector),把ΔS加到前一个阶段的S上得到新的S,这样通过不断的迭代即可以得到最终的S(shape)。
3.2 深度学习方法
- DCNN
2013年,Sun等人首次将CNN应用到人脸关键点检测,提出一种级联的CNN(拥有三个层级)——DCNN(Deep Convolutional Network),此种方法属于级联回归方法。作者通过精心设计拥有三个层级的级联卷积神经网络,不仅改善初始不当导致陷入局部最优的问题,而且借助于CNN强大的特征提取能力,获得更为精准的关键点检测。
如图所示,DCNN由三个Level构成。Level-1由3个CNN组成;Level-2由10个CNN 组成(每个关键点采用两个 CNN);Level-3同样由10个CNN 组成。
Level-1分3个CNN,分别是F1(Face 1)、EN1(Eye,Nose)、NM1(Nose,Mouth);F1输入尺寸为39*39,输出5个关键点的坐标;EN1输入尺寸为39*31,输出是3个关键点的坐标;NM11输入尺寸为39*31,输出是3个关键点。Level-1的输出是由三个CNN输出取平均得到。
Level-2,由10个CNN构成,输入尺寸均为15*15,每两个组成一对,一对CNN对一个关键点进行预测,预测结果同样是采取平均。
Level-3与Level-2一样,由10个CNN构成,输入尺寸均为15*15,每两个组成一对。Level-2和Level-3是对Level-1得到的粗定位进行微调,得到精细的关键点定位。
Level-1之所以比Level-2和Level-3的输入要大,是因为作者认为,由于人脸检测器的原因,边界框的相对位置可能会在大范围内变化,再加上面部姿态的变化,最终导致输入图像的多样性,因此在Level-1应该需要有足够大的输入尺寸。Level-1与Level-2和 Level-3还有一点不同之处在于,Level-1 采用的是局部权值共享(Lcally Sharing Weights),作者认为传统的全局权值共享是考虑到,某一特征可能在图像中任何位置出现,所以采用全局权值共享。然而,对于类似人脸这样具有固定空间结构的图像而言,全局权值共享就不奏效了。因为眼睛就是在上面,鼻子就是在中间,嘴巴就是在下面的。所以作者采用局部权值共享,作者通过实验证明了局部权值共享给网络带来性能提升。
DCNN采用级联回归的思想,从粗到精的逐步得到精确的关键点位置,不仅设计了三级级联的卷积神经网络,还引入局部权值共享机制,从而提升网络的定位性能。最终在数据集 BioID和LFPW上均获得当时最优结果。速度方面,采用3.3GHz的CPU,每0.12秒检测一张图片的5个关键点。
- Face++版DCNN
2013 年,Face++在DCNN模型上进行改进,提出从粗到精的人脸关键点检测算法,实现了68个人脸关键点的高精度定位。该算法将人脸关键点分为内部关键点和轮廓关键点,内部关键点包含眉毛、眼睛、鼻子、嘴巴共计 51 个关键点,轮廓关键点包含17个关键点。
针对内部关键点和外部关键点,该算法并行的采用两个级联的CNN进行关键点检测,网络结构如图所示。
针对内部51个关键点,采用四个层级的级联网络进行检测。其中,Level-1主要作用是获得面部器官的边界框;Level-2 的输出是51个关键点预测位置,这里起到一个粗定位作用,目的是为了给Level-3进行初始化;Level-3会依据不同器官进行从粗到精的定位;Level-4的输入是将Level-3的输出进行一定的旋转,最终将51个关键点的位置进行输出。针对外部17个关键点,仅采用两个层级的级联网络进行检测。Level-1与内部关键点检测的作用一样,主要是获得轮廓的bounding box;Level-2直接预测17个关键点,没有从粗到精定位的过程,因为轮廓关键点的区域较大,若加上 Level-3和Level-4,会比较耗时间。最终面部68个关键点由两个级联CNN的输出进行叠加得到。
算法主要创新点由以下三点:(1)把人脸的关键点定位问题,划分为内部关键点和轮廓关键点分开预测,有效的避免了loss不均衡问题;(2)在内部关键点检测部分,并未像DCNN 那样每个关键点采用两个CNN 进行预测,而是每个器官采用一个CNN进行预测,从而减少计算量;(3)相比 DCNN,没有直接采用人脸检测器返回的结果作为输入,而是增加一个边界框检测层(Level-1),可以大大提高关键点粗定位网络的精度。
Face++版DCNN首次利用卷积神经网络进行68个人脸关键点检测,针对以往人脸关键点检测受人脸检测器影响的问题,作者设计Level-1卷积神经网络进一步提取人脸边界框,为人脸关键点检测获得更为准确的人脸位置信息,最终在当年300-W挑战赛上获得领先成绩。
- TCDCN
2014 年,Zhang等人将MTL(Multi-Task Learning)应用到人脸关键点检测中,提出 TCDCN(Tasks-Constrained Deep Convolutional Network)。作者认为,在进行人脸关键点检测任务时,结合一些辅助信息可以帮助更好的定位关键点,这些信息如,性别、是否带眼镜、是否微笑和脸部的姿势等等。作者将人脸关键点检测(5个关键点)与性别、是否带眼镜、是否微笑及脸部的姿势这四个子任务结合起来构成一个多任务学习模型,模型框架如图所示。
网络输出为 40*40 的灰度图,经过CNN最终得到2*2*64的特征图,再通过一层含100 个神经元的全连接层输出最终提取得到的共享特征。该特征为所有任务共同享用,对于关键点检测问题,就采用线性回归模型;对于分类问题,就采用逻辑回归。
在多任务学习中,往往不同任务的学习难易程度不同,若采用相同的损失权重,会导致学习任务难以收敛。针对人脸关键点检测任务,文章结合了四个子任务,分别是:性别、是否带眼镜、是否微笑和脸部的姿势,目标函数为:
针对多任务学习的另外一个问题——各任务收敛速度不同,本文提出一种新的提前停止(Early Stopping)方法。当某个子任务达到最好表现以后,这个子任务就对主任务已经没有帮助,就可以停止这个任务。文章给出自动停止子任务的计算公式,如下:
第一项表示训练误差的趋势,第二项表示泛化误差与训练误差之比,当两项之积大于阈值,则该任务停止。
TCDCN 采用多任务学习方法对人脸关键点进行检测,针对多任务学习在人脸关键点检测任务中的两个主要问题——不同任务学习难易程度不同以及不同任务收敛速度不同,分别提出了新目标函数和提前停止策略加以改进,最终在AFLW和AFW数据集上获得领先的结果。同时对比于级联CNN方法,在 Intel Core i5 cpu 上,级联 CNN 需要 0.12s,而 TCDCN仅需要17ms,速度提升七倍有余。
代码链接: https://github.com/zhzhanp/TCDCN-face-alignment
- MTCNN
2016 年,Zhang 等人提出一种多任务级联卷积神经网络(MTCNN, Multi-task Cascaded Convolutional Networks)用以同时处理人脸检测和人脸关键点定位问题。作者认为人脸检测和人脸关键点检测两个任务之间往往存在着潜在的联系,然而大多数方法都未将两个任务有效的结合起来,本文为了充分利用两任务之间潜在的联系,提出一种多任务级联的人脸检测框架,将人脸检测和人脸关键点检测同时进行。
MTCNN包含三个级联的多任务卷积神经网络,分别是Proposal Network(P-Net)、Refine Network (R-Net)、Output Network (O-Net),每个多任务卷积神经网络均有三个学习任务,分别是人脸分类、边框回归和关键点定位。网络结构如图所示:
MTCNN实现人脸检测和关键点定位分为三个阶段。首先由P-Net获得了人脸区域的候选窗口和边界框的回归向量,并用该边界框做回归,对候选窗口进行校准,然后通过非极大值抑制(NMS)来合并高度重叠的候选框。然后将P-Net得出的候选框作为输入,输入到R-Net,R-Net同样通过边界框回归和NMS来去掉那些false-positive 区域,得到更为准确的候选框;最后,利用O-Net输出5个关键点的位置。
为了提升网络性能,需要挑选出困难样本(Hard Sample),传统方法是通过研究训练好的模型进行挑选,而本文提出一种能在训练过程中进行挑选困难的在线挑选方法。方法为,在mini-batch中,对每个样本的损失进行排序,挑选前70%较大的损失对应的样本作为困难样本,同时在反向传播时,忽略那30%的样本,因为那30%样本对更新作用不大。
实验结果表明,MTCNN在人脸检测数据集FDDB和WIDER FACE以及人脸关键点定位数据集LFPW均获得当时最佳成绩。在运行时间方面,采用2.60GHz的CPU可以达到16fps,采用Nvidia Titan Black可达99fps。
代码实现:
Matlab:https://github.com/kpzhang93/MTCNN_face_detection_alignment
Caffe:https://github.com/dlunion/mtcnn
Python:https://github.com/DuinoDu/mtcnn
- GMM
2016年,Wu等人研究了CNN在人脸关键点定位任务中到底学习到的是什么样的特征,在采用 GMM(Gaussian Mixture Model, 混合高斯模型)对不同层的特征进行聚类分析,发现网络进行的是层次的,由粗到精的特征定位,越深层提取到的特征越能反应出人脸关键点的位置。针对这一发现,提出了 TCNN(Tweaked Convolutional Neural Networks),其网络结构如图所示:
上图为Vanilla CNN,针对FC5得到的特征进行K个类别聚类,将训练图像按照所分类别进行划分,用以训练所对应的FC6K。测试时,图片首先经过Vanilla CNN提取特征,即 FC5的输出。将FC5输出的特征与K个聚类中心进行比较,将FC5输出的特征划分至相应的类别中,然后选择与之相应的FC6进行连接,最终得到输出。
作者对Vanilla CNN中间各层特征进行聚类分析,并统计出关键点在各层之间的变化程度,发现越深层提取到的特征越紧密,因此越深层提取到的特征越能反应出人脸关键点的位置。作者在采用K=64时,对所划分簇的样本进行平均后绘图如下:
从图上可发现,每一个簇的样本反应了头部的某种姿态,甚至出现了表情和性别的差异。因此可推知,人脸关键点的位置常常和人脸的属性相关联。因此为了得到更准确的关键点定位,作者使用具有相似特征的图片训练对应的回归器,最终在人脸关键点检测数据集AFLW,AFW和300W上均获得当时最佳效果。
- FAN
2017年ICCV的一篇文章,文章基于HourGlass(HG)来构建网络框架FAN,并且将HG原有的模块bottleneck block替换为一种新的、分层并行多尺度结构。FAN的结构如下:
FAN在300-W-LP数据集(yaw角度范围在-90°和90°之间)上预训练,并利用ibug数据集矫正(标准统一便于测试)。通过实验结果,模型对于目前的数据已经达到比较好的效果。但是,heatmap的最亮点(即点的位置)为整数,这与点的真实值(浮点型)存在一定的误差,如何解决这个问题是当务之急。
Pytorch Code: https://github.com/1adrianb/face-alignment
Torch7 Code: https://github.com/1adrianb/2D-and-3D-face-alignment
- DAN
2017年,Kowalski等人提出一种新的级联深度神经网络——DAN(Deep Alignment Network),以往级联神经网络输入的是图像的某一部分,与以往不同,DAN 各阶段网络的输入均为整张图片。当网络均采用整张图片作为输入时,DAN 可以有效的克服头部姿态以及初始化带来的问题,从而得到更好的检测效果。之所以 DAN 能将整张图片作为输入,是因为其加入了关键点热图(Landmark Heatmaps),关键点热图的使用是本文的主要创新点。DAN 基本框架如图所示:
DAN包含多个阶段,每一个阶段含三个输入和一个输出,输入分别是被矫正过的图片、关键点热图和由全连接层生成的特征图,输出是面部形状(Face Shape)。其中,CONNECTION LAYER 的作用是将本阶段得输出进行一系列变换,生成下一阶段所需要的三个输入,具体操作如下图所示:
从第一阶段开始讲起,第一阶段的输入仅有原始图片和S0。面部关键点的初始化即为 S0,S0是由所有关键点取平均得到,第一阶段输出 S1。对于第二阶段,首先,S1经第一阶段的CONNECTION LAYERS进行转换,分别得到转换后图片T2(I)、S1所对应的热图 H2 和第一阶段fc1层输出,这三个正是第二阶段的输入。如此周而复始,直到最后一个阶段输出SN。文中给出在数据集IBUG上,经过第一阶段后的T2(I)、T2(S1)和特征图,如图所示:
总而言之,DAN 是一个级联思想的关键点检测方法,通过引入关键点热图作为补充,DAN可以从整张图片进行提取特征,从而获得更为精确的定位。
代码实现:
Theano:https://github.com/MarekKowalski/DeepAlignmentNetwork
TensorFlow:https://github.com/kpzhang93/MTCNN_face_detection_alignment
三、近期论文
- Robust Facial Landmark Detection via a Fully-Convolutional Local-Global Context Network(CVPR 2018)
文章提出了新的全局的语义框架融入到整个网络中。网络设计的关键是核卷积,核卷积的关键在于此处的卷积核没有参数学习,是固定的一个核。此核能够模糊local网络的输出,实则是平滑输出,然后用global网络进行refine;后处理上用了一个2D-PCA based网络模型来过滤外点。网络结构如下:
网络包括4个部分:1.全卷积层组成的局部语义部分;2.普通的全卷积层,后面接着一个线性的1x1的卷积来补偿BN;3.卷积核,设计这个卷积核的目的有两个,一是将像素级的loss和预测值与ground trut的距离联系起来,二是后面的全局语义层可以利用空洞卷积而不是dense卷积;3.空洞卷积层组成全局语义部分;4.训练的loss。
缺点是人脸关键点之间并不具有可区别性,也就是不知道哪里是眼睛,哪里是嘴巴,哪里是轮廓,与分层(或者说是级联)的神经网络具有本质性的差异。虽然说设计思路或者概念具有本质性的差异,但是并不妨碍这种方法具有很高的精度。
- Direct Shape Regression Networks for End-to-End Face Alignment(CVPR 2018)
DSRN使用双卷积层(doubly convolutional layer)进行卷积,然后将得到的特征图经过该论文提出的傅里叶池化层,损失函数使用normalized mean error。DSRN对于图像和形状之间的高度非线性关系有效;通过结合低阶学习的线性层,DSRN有效地处理标记间的相关性以提高性能;DSRN利用非线性特征提取和神经网络预测的内核结构的优势,并提供了第一个针对人脸对齐的端到端的学习架构。对比TCDCN精度有所提高,但是并没有给出时间效率。特点是简单易懂,实现成本客观。
- Look at Boundary: A Boundary-Aware Face Alignment Algorithm(CVPR 2018)
直接对关键点进行预测会存在过拟合问题,特别是对一些具有具有扭曲表情,夸张表情,遮挡表情的人脸关键点检测使用现有的算法是非常不准确的。为了更好地解决这个问题,这篇文章提出了使用boundary边界的检测方法融合人脸关键点检测方法,使得人脸关键点检测更加精准(特殊情况下),在论文实验部分给出的精确度进步并不是很大。
对于网络模型是把人脸关键点转换成为连接的人脸边界,然后网络同时训练关键点和人脸边界(注意是有顺序的),然后把人脸边界获得Heatmaps信息往下传递给人脸关键点检测作为FMF层融合参考信息,最终使得人脸关键点被控制在人脸边界heatmap上,从原理上可以看出对于关键点漂移的情况会减少,更好地拟合人脸关键点。缺点是比较复杂,关键点的准确性受边界准确性的影响。
- Disentangling 3D Pose in A Dendritic CNNfor Unconstrained 2D Face Alignment(CVPR 2018)
提出一个Pose Conditioned Dendritic Convolution Neu-ral Network(PCD-CNN)网络。这个网络从原理来看效果不会太好,会存在漂移问题,因为根据heatmap会存在较粗的定位,但是最后(b)阶段引入了Proposed dendritic structure进行弥补,可是这种弥补方式是根据数学公式进行结构特征点计算的方式,能否真正地减少误差读者抱着一定的疑惑,如果是基于检索的方式或者搜图的方式可能会效果更好。
- Style Aggregated Network for Facial Landmark Detection(CVPR 2018)
这篇文章主要聚焦在对于不同style的图像中,人脸关键点的检测效果是不一样的,为了更好地统一检测效果或者说为了更好地更精确的提高检测效果,因此可以对样本进行一个风格聚合网络Style Aggregated Network,通过该网络模型可以产生各种不同风格的图片,然后利用这些图片融合信息一起送入CNN网络中进行检测。如下图所示,根据上面的描述,这里使用到了两个网络模型,一个是GAN网络模型,一个是CNN网络模型。
上面的style-aggregated face generation module就是使用GAN模型,具体下面的图会给出更加详细的解析。下面的facial landmark predicction module就是使用CNN网络模型。最后输出heatmap热图的位置点,通过高斯分布获得最佳预测位置。
文章使用的风格主要有3个,一个是素描图,一个是强光图,另外一个是灰度图,合成一个[12, width, hegih]的矩阵作为网络模型的输入,增加了模型的鲁棒性。
- Improving Landmark Localization with Semi-Supervised Learning(CVPR 2018)
文章主要有两点贡献:一是等效变换landmarks和相应的图像达到扩展数据的目的(无监督技术);二是将网络landmark输出送入属性分支,即属性分支的反向传播影响landmark学习,从而达到辅助landmark的目的。
- Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks(CVPR 2018)
文章主要有两点新颖的地方:一是对基于CNN的人脸关键点检测方法中用到的各类损失函数做了系统分析,比较了L1、L2以及smooth L1损失函数,发现L1和smooth L1比L2性能更优;二是提出了一个新的损失函数Wing loss,旨在提高深度网络训练过程中应对小范围和中等范围内的误差的能力。
作者设计出了一个新的损失函数wing loss,其定义如下:
w是一个非负数,它将非线性部分限制在(-w,w)区间内,∈用于约束曲线的弯曲程度。C就是一个常量,用于连接损失函数的线性和非线性部分。∈
不能设置得太小,不然会让训练非常的不稳定,对于很小的误差(very small errors)会引起梯度爆炸。
作者通过实验证明,wing loss的结果要优于其他loss。缺点是需要大量的实验,不断调整w和∈值,来寻得一个最好的训练结果。
附:升级版awing,文章链接:https://arxiv.org/abs/1904.07399
四、数据集
传统人脸关键点检测数据库为室内环境下采集的数据库,比如Multi-pie、Feret、Frgc、AR、BioID等人脸数据库。而现阶段人脸关键点检测数据库通常为复杂环境下采集的数据库。LFPW人脸数据库有 1132 幅训练人脸图像和300幅测试人脸图像,大部分为正面人脸图像,每个人脸标定29个关键点。AFLW人脸数据库包含25993幅从Flickr采集的人脸图像,每个人脸标定21个关键点。COFW人脸数据库包含 LFPW 人脸数据库训练集中的845幅人脸图像以及其他500幅遮挡人脸图像,而测试集为507幅严重遮挡(同时包含姿态和表情的变化)的人脸图像,每个人脸标定29个关键点。MVFW人脸数据库为多视角人脸数据集,包括2050 幅训练人脸图像和450幅测试人脸图像,每个人脸标定68个关键点。OCFW人脸数据库包含 2951幅训练人脸图像(均为未遮挡人脸)和1246幅测试人脸图像(均为遮挡人脸),每个人脸标定68个关键。
五、思考与讨论
深度学习技术的出现,有效促进了不同尺度和不同任务信息之间的融合,使得信息的结合方式由平面开始向立体方法发展,对于人脸关键点提取模型的发展,具有突出的实际意义。
尽管深度学习方法在人脸关键点检测任务上已经获得了长足的发展,算法性能不断提升,与实际应用的要求也越来越接近。然而,该任务的研究还远未结束,目前还有一些关键性难题亟待解决。在此总结三点:
(1)输入样本多样性问题:多变的人脸姿态和遮挡。姿态和遮挡是人脸关键点检测所面临的经典难题,近年来也出现了很多处理这两方面问题的思路和方法,但目前在实际应用中,尤其在实时低图像质量条件下,对于这两类难题的处理还难以令人满意。尤其当姿态发生快速和剧烈改变,以及遮挡比例较大时,现有方法的精度距离实际应用的要求还有较大差距,需要进一步研究和提升。
(2)大场景小样本问题:在图像中非常多的小人脸。小人脸检测是人脸关键点检测所面临的经典难题,近年来出现了很多论文去解决小人脸检测,但是对于小人脸的关键点检测的思路和方法并不常见。主要受制于一个很严重的问题就是图像的质量不够高,小图像中的单张人脸图像质量低,一个像素包含的内容非常少,图片模糊。因此对于这类型的人脸关键点检测依然是个非常困难的话题;另外一个主要原因是受制于前一个步骤——小场景的人脸检测准确率低的问题,既然人脸检测的准确率低,那么在基于人脸检测下的人脸关键点检测问题会更加凸显和严重。
(3)方法众多但是百变不离其宗:深度学习的方法百花齐放,但是在众多的方法当中没有一个非常outstanding的论文能够统一所有的方法,或则凸显出来。因为在深度学习当中,其主要思路是利用神经网络的非线性映射关系在标注的数据和输入的数据之间找到一个最优映射路径,通过这个映射关系去逼近我们的目标,但是这种方法的缺点是肯定会存在过拟合的问题。究其原因是人脸相似度很高(即使说是千人千脸,但是对比起其他动物的脸,其他物体和人脸对比其人脸与人脸之间的相识度依然非常高),在高相似度中间找到不同人脸之间的细微差别是非常困难的,因此出现了很多方法去解决这个问题,但是各论文分别去解决各自所在细分领域或者细分问题上,并没有一个很好的框架或者算法去解决这问题。