人脸检测与人脸对齐——MTCNN模型介绍及其实现

发布时间:2019-04-19 浏览次数:862

                                                                                              作者:俞泽西、周宇璇


1MTCNN模型介绍

MTCNN是由Kaipeng Zhang等人在2016年提出的处理人脸检测(facial detection)和人脸对齐(facial alignment)的模型。其全称是multi-task convolutional neural network,顾名思义,就是同时处理多个任务的卷积神经网络。具体地说,它可以同时处理脸部识别(facial classification)、边框回归(bounding boxregression )和标识点定位(landmark localization)。其中前两者属于人脸检测,最后一项属于人脸对齐。

人脸检测要做的事情是要在图像中找到人脸,并用边框(bounding box)将人脸框起来,而人脸对齐是要将脸部的几处特征如:眼睛、鼻子和左右嘴角标记出来。这两个任务都面临这一系列挑战,比如人的姿势差异、表情差异、光影差异等等。


1从左到右(每两列)在姿势,遮挡,表情和照明方面的变化,描述了人脸对齐的巨大挑战。

 

和其他模型相比,MTCNN有两大优势。首先,其他模型通常会将检测(detection)和对齐(alignment)割裂开来,忽视二者内在的联系,而MTCNN是一个全新的基于CNN的模型,可以同时处理这两个任务。

其次,在目标检测(object detection)领域,通常会有一步叫做难预测准的样本的挖掘(hardsample mining)。在介绍难预测样本(hard sample)前,首先需要介绍物体检测的大致流程:模型训练通常分为两步,第一步是在图像中随机生成一些候选框,将框住目标的叫为正样本,将没有覆盖到目标物的叫为负样本,训练的时候用这两种框作为训练集。然后在图像上滑动生成一系列框,用训练好的模型判断其是否含有目标物,叫误判为负(false negative)的样本框为很难预测准的样本,一般是位于物体边缘的框图,一部分覆盖一部分没有覆盖。第二步就是将这些难预测准的样本加入训练集中,加入了这些额外信息之后,模型可以更好地应对这种比较复杂的情形。

其他模型的hard sample mining步骤一般是离线的,并且会需要一些人工参与,而MTCNNhard sample mining是在线的,也就是可以在首次训练时就实时地处理这些难预测准的样本,不需要像上文介绍的物体检测分步去做。

2案例展示

2.1MTCNN的模型结构

在进行实战之前,我们首先介绍MTCNN的模型结构。

MTCNN模型主要分为三个阶段,如下图所示:


2级联框架流水线包括三阶段多任务深度卷积网络。首先,通过快速网络(P-Net)生成候选窗口。 之后,我们通过细化网络(R-Net)在下一阶段完善这些候选窗。在第三阶段,输出网络(O-Net)产生最终的边界框和面部标志位置。

 

首先,我们将图片缩放到不同大小,从而构成一个图像金字塔,用于之后三个阶段的输入。之后模型分成三个阶段,Stage1用一个深度较浅(4层)的卷积神经网络P-Net (proposal net) 去生成一系列的比较有可能是人脸的候选框;Stage2用另一个记为R-Net(refine net)来去除大量Stage1输出的不合适的框框;Stage3O-Netoutputnet)根据Stage2的输出来导出最终的框框和人脸的五个标记(landmark)

下面,我们将详细解释每一个阶段:

2.2.1P-Net


3 P-Net的架构

 

网络的结构如图3所示,这是一个全部由卷积层构成的网络,其中Conv表示卷积核大小,MP代表MaxPooling池化层的过滤器(filter)大小。可以看到它的最后一层十分复杂,这也就是所谓多任务(multi-task)一词的来源,输出层同时处理三个任务,两个映射(map)处理分类(classification)4个映射处理边框回归,10个映射处理标记点定位。这是该模型一个非常有创意的地方,这样网络可以抓住一些这些任务的内在联系,从下文的结果来看,这样确实能够提升模型的性能。

下面我们再来看这三个任务的损失函数(loss function)


分类任务用的就是典型的交叉熵损失函数(cross-entropy lossfunction):



后两个回归任务的话用的都是平方和误差函数,那么总的误差函数如下:


其中代表三个任务重要性,对于第一个P-Net来说,最主要的目的是分类,将人脸与环境区分开来,所以参数为:

是一个二进制变量,当样本位于背景区域时,因为没有人脸,所以边界框回归和标记定位都没有意义,此时

同时要注意的是MTCNN用的是小批量(mini-batch)的随机梯度下降法(Stochastic gradientdescent, SGD)来训练网络,只取一个批次(batch)中损失最大的前70%的样本作来进行反向传播(back propagation)更新参数,这也就是所谓的在线 hard sample mining,即在训练的同时完成了hard samplemining。这样的做的优点一方面显然是降低了计算量,省去了传统的离线再次挑选难预测准样本的麻烦,另一方面,也提升了性能。

最后,会再用一步非最大值抑制(NMS)来去除一些高度重合的候选框。

2.1.2R-Net


4 R-Net的架构

 

R-NetP-Net类似,加入了一层全连接层,其三个任务的值和P-Net一致,主要目的是进一步删除并调整Stage1输出的框框,并还会再加一步NMS

2.1.3O-Net


5 O-Net的架构

 

可以看到O-Net相比前两张网络更深,功能和R-Net类似,但是因为它要确定最终标记的位置,所以其三个任务的分别为10.51,和前面类似,最后还会用一步NMS

2.2输入数据

MTCNN首先根据IoU(Intersection-over-Union)大小将输入分为4类:

NegativesIoU<0.3

Positives: IoU>0.5

Part faces: 0.4<IoU<0.65

Landmark faces: 标注了5landmark的输入

因为Negative faces Part faces的界定有些模糊,所以设置了一个IoU gap0.3-0.4。训练时对于脸部分类(face classification)使用NegativesPositives,对于边框回归使用positivespart faces,对于标记点定位使用landmark faces。四者的数量比例大致为3112

实验中P-NetWIDER-FACE[1]获取前三种输入,从CelebA[2]获取landmark facesR-Net使用P-Net分别从两个数据库中探测出这4类输入;O-Net与前者类似,只不过用连两个Net探测这4类数据。

2.3实例检测

我们首先看看在单张人像上MTCNN的表现,


7 MTCNN在单个人像上的表现

 

由图7可知,MTCNN完美地完成了人脸检测和对齐的任务,不过这张图难度比较低,只有一张正面的清晰人脸。接下来,让我们增加人脸数量:

 


8 MTCNN在多个正面人像上的表现

 

上图中一共有135张人脸,MTCNN的性能表现还是非常不错,仅仅多识别了两张非人脸。那么我们再加大一些难度,上图只是人脸数目的增加,但是光线角度依然很好,每张人脸都没有被遮挡。再看下一张图:


9MTCNN在复杂的多个人像上的表现

这幅图集本文开头提到的困难于一身:姿势、表情、光线、遮挡等等都有。从结果来看,后排的观众因为实在太远,MTCNN即使无法甄别也很正常,但是近距离的人脸还是有几处不太令人满意,看来MTCNN还有一定的提升空间。

3性能结果

3.1纵向性能测试

3.1.1在线难预测准的样本挖掘&检测与对齐的同时处理


6a)有和没有在线硬采样挖掘的P-Net的检测性能。(b“JA”表示O-Net中的联合脸部对齐学习,而“No JA”表示不联合它。 “BBR中没有JA”表示使用JA”O-Net进行边界框回归。

 

为了显示在线难预测准的样本挖掘的效果,我们训练了根据使用此技巧与否两张不同的P-Net,在FDDB(Face detection dataset and benchmark)数据集上显示出1.5%的性能提升。

为了显示多任务的效果,我们训练了两张不同的O-Net,一张是同时处理检测和对齐,一张是分别处理这两个任务。

3.2横向性能比较

3.2.1脸部检测性能比较


10a)对FDDB进行评估。(b-d)对WIDER FACE的三个子集进行评估。该方法后面的数字表示平均准确度。

 

对于检测的性能表现,我们测试了MTCNN与其他一些当时一流的检测模型,可以看到MTCNN压倒性的优势。

3.2.2脸部对齐的性能比较


11 AFLW评估人脸对齐

 

可以看到MTCNN在对齐方面也很出色,每一处标记预测的误差都很低。

 

注释:

[1]WIDER FACE数据集由393,703个标记有32203边界框的人脸图像组成,其中50%用于测试(根据图像难度划分为三个子集),40%用于训练,其余用于验证。

[2]CalebA人脸数据集是香港中文大学的开放数据,包含10,177个名人身份的202,599张人脸图片,并且都做好了特征标记,这对人脸相关的训练是非常好用的数据集。

 

以上就是MTCNN模型的简介了,这个模型的特色是可以同时处理人脸检测与人脸对齐,并且应用了一种实时的hard sample mining方法,性能非常不错。笔者知识能力有限,对本模型的认识也必然有些不足,如果有不准确或者错误的地方欢迎大家指正。