[论文翻译]MTCNN:基于多任务级联卷积网络的联合人脸检测与对齐


下载PDF:https://arxiv.org/pdf/1604.02878.pdf

下载代码:https://github.com/kpzhang93/MTCNN_face_detection_alignment

MTCNN: Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li, Yu Qiao

IEEE 2016

初译:机翻 校对:布丁

> 译者语:MTCNN 是工程应用上实用性极强的算法。第一次将人脸检测和人脸特征点计算放在了同一个任务中进行。

论文中英文对照合集 : https://aiqianji.com/blog/articles

摘要 Abstract

由于各种姿势,照明条件和遮挡情况,在无约束环境下的人脸检测与人脸对齐仍十分具有挑战性。

最近的研究表明,深度学习方法可以在这两项任务上取得令人瞩目的表现。在本文中,我们提出了一个深度级联的多任务网络,利用检测和对齐之间的内在联系来提高他们的性能。

特别需要注意的是,我们的网络通过一个精心设计的三级级联深度卷积网络,由粗略到精细的方式预测面部位置和面部关键点坐标。此外,在算法学习过程中,我们还提出了一个新的在线困难样本挖掘策略,它可用于进一步自动提升算法能力,而不用手动进行样本选择。

我们的方法在以 FDDB 与 WIDER FACE 为基准的人脸检测与以 AFLW 为基准的人脸对齐表现上超过了目前的最先进技术,并且同时保持了实时检测的性能。

I. 介绍 Introduction

人脸检测和对齐是很多人脸应用的基础,如人脸识别和表情分析。然而脸部视觉变化过大,如遮挡,姿势和极端光照都为实际应用提出了挑战。

Viola 和 Jones 提出的级联人脸检测器[2]使用了 Haar-Like 特征和 AdaBoost,在实时检测上达到了很好的效果。然而,许多工作表明[1,3,4],即使使用更先进的特征和分类器,这种分类器在现实应用中的效果可能会显著降低。除了 cascade 结构,[5,6,7]引入了可变部分模型(DPM-Deformable part models ),虽然达到了卓越的性能表现,但是它们却需要耗费昂贵的计算资源,并且通常在训练阶段需要极大的标注。近来,卷积神经网络(CNNs)在各种计算机视觉任务中达到了显著的进展,例如图像分类[9]和人脸识别[10]。

受到深度学习方法在计算机视觉任务中取得的重大成功的启发,最近几年提出一些利用深度卷积网络来进行人脸检测的方法。Yang et al.[11]在人脸属性的识别方面,训练了能生成更多候选框的深度卷积网络的思想受到了高度的关注。然而,由于其复杂的卷积结构,这种方法在实践中十分耗时。Li et al.[19]使用级联 CNN 网络应用于人脸检测,但是它需要耗费额外的计算资源用于 Bound box 的校准,并且忽略了人脸关键点位置的相关性和 bounding box 回归。

人脸对齐同时也引起了广泛的研究兴趣。这个领域的研究大致可以分为两类,基于回归的方法[12,13,16]和模板匹配 template fitting 的方法[14,15,7]。近期,Zhang et al.[22]提出了将面部特征识别作为辅助任务,使用深度卷积神经网络来达到增强人脸对齐性能的方法。

人脸对齐可以分为两类,基于回归的方法[12,13,16]和模板匹配 template fitting 方法[14,15,7]。近期 Zhang 等人[22]提出了人脸属性识别作为额外的任务,以加强人脸对齐性能。

但之前所有人脸检测和对齐方法都忽略了它们之间的相关性。有的研究尝试了同时解决它们,但仍有具有局限性。例如,Chen et al.[18]基于不同像素值的随机森林同时进行对齐和检测,但性能受限于手工特征。Zhang et al[20]使用多任务 CNN 以提高多视图人脸检测的准确率,但是检测的召回率受限于弱人脸检测器产生的初始检测窗口。

另一方面,在训练过程中挖掘困难样本对于检测器的性能至关重要。 然而,传统的困难样本挖掘方式通常以离线的方式进行,极大增加了手工操作。设计一种能自动适应当前训练状态的在线困难样本挖掘方式对于人脸检测是十分迫切的。

本论文提出了一个新的框架,用多任务训练的统一级联 CNN 集成了这两个任务。该 CNN 包含 3 个阶段。第一阶段通过浅 CNN 快速产生候选窗口。接着通过一个更复杂的 CNN,来拒绝大量非面部窗口以达到细化候选窗口的目的。最终使用一个更强力的 CNN 来再次细化结果并输出 5 个人脸关键点的位置。

由于这个学习框架,使得算法的性能能得到显著的提高。框架的代码已经在项目页面 1 发布。这篇论文的主要贡献概括如下:

(1)我们提出了一个基于整合了人脸检测与对齐的级联 CNN 网络,并仔细的设计了它的轻量级网络结构来达到实时检测的表现。

(2)我们提出了一个有效的进行在线困难样本挖掘的方法以提高性能。

(3)在具有挑战性的数据集测试中我们进行了广泛的实验,结果表明,我们所提出的方法在人脸检测和对齐任务上同时超过了目前的最先进方法的性能。

II. 方法 Approach

A. Overall Framework 总体框架

我们方法流程见图 1。给定一张图片输入,我们最初将其缩放到不同尺度来形成一个图像金字塔,作为以下三个级联网络部分的输入:

图 1

Stage 1:我们提出了一个叫 Proposal Network(P-Net)的全卷积网络来获得人脸的候选窗口

以及他们的Bounding Box回归向量。之后通过估计的Bounding Box回归向量来校准候选


    窗口。之后,我们采用了非极大值抑制NMS来合并高度重合的候选框。

Stage 2:所有候选输入到另一个 CNN,叫 Refine Network(R-Net),它进一步拒绝了

大量错误的候选框,之后通过候选框的Bounding Box回归进行校准,之后执行NMS。

Stage 3:类似阶段 2,但本阶段我们希望输出更多人脸信息。网络会输出 5 个人类关键点。

B. CNN Architecture

在[19]中设计了多个 CNN 来进行人脸检测。但是,我们注意到它的表现可能会收到以下限制:

(1)在卷积层中的一些卷积核缺乏差异性,可能会限制它们的特征辨别能力。

(2)与多类物体检测和分类任务相比,人脸检测是一个具有挑战性的二分类任务,因此它每层可能需要更少数量的卷积核。

为此,我们减少了卷积核的数量,并将 5×5 的卷积核改为 3×3 卷积核来减少计算,同时增加了深度来得到更好的性能。通过这些改进,对比在[19]中的早先其他结构,我们在减少运行时间的同时达到更好的性能表现

(训练阶段的结构显示在表 1 中。对了公平比较,我们在每组中使用了同样的训练和验证数据。)我们的 CNN 结构如图 2 所示。我们在每个卷积层和全连接层后使用了 PReLU[30]作为非线性激活函数(输出层除外)

表 1

图 2

C. Training

我们用了三个任务训练 CNN 检测器:人脸/非人脸分类,Bounding Box 回归,以及人脸关键点定位。

  1. Face classification: 训练目标是一个二分类问题,每个样本$x_i$我们使用交叉熵 loss:

其中 pi 是网络输出的样本,xi 是一张脸的概率。yi-det-{0,1}为真实标注。

  1. Bounding box 回归: 对于每个候选框,我们预测它和最近的 ground truth 的偏移坐标(即 box 的 left,top,height,width)。 学习目标被指定为回归问题,我们对每个样本使用了欧几里得距离损失。

其中$\hat y_i^{box}$ 是来自网络的回归目标,$y_i^{box}$是 ground truth 坐标。共四个坐标,包括左上,宽和高,故$y _i ^{box} \in \mathbb R^4$

  1. Facial landmark localization: 类似候选框回归任务,人脸关键点定位也化为回归问题,我们最小化欧几里得 loss:

共 5 个关键点,包括左右眼,鼻子和左右嘴角。

  1. Multi-source training: 因为每个 CNN 有多个任务,因此训练过程会有多种训练图片,比如人脸,非人脸和部分人脸。有些 loss 函数(公式 1-3)不会用到。例如对于背景样本,我们只会计算$L_i^{det}$,另两个 loss 设为 0。这可以通过样本类型指示器实现。整体学习目标可表示为:

其中 N 是训练样本数量,αj 标识任务重要性。在 P-Net 和 R-Net 中,$\alpha _{det} = 1 , \alpha _{box} = 0.5 , \alpha _{landmark} = 0.5$,而在 O-Net 中为$\alpha _{det} = 1 , \alpha _{box} = 0.5 , \alpha _{landmark} = 1$。$\beta_i ^j \in { 0 ,1}$是样本类型指示器。使用了 SGD 训练这些 CNN。

  1. Online Hard sample mining 在线困难样本挖掘: 与传统困难样本挖掘在原始分类器训练完成后使用不同,我们在人脸/非人脸分类过程中进行在线困难样本挖掘,使其自适应训练过程。

特别要注意的是,在每个 mini-batch,我们对来自所有样本的前向传播计算 loss 排序,选择前 70% 作为困难样本用于反向传播。之后在反向传播中我们只计算这些困难样本的梯度更新。这意味着我们抛弃了在训练期间不太有助于增强分类器性能的简单样本。实验表明,这个策略无需手动选择样本即可获得更好的性能表现。其有效性在第 III 节中证明。

III. 实验 Experiments

本节我们评估了困难样本挖掘的有效性,然后将我们的人脸检测与对齐算法在 FDDB[25],与 WIDER FACE[24]与人脸面部标注数据集 AFLW[8]上与当前最先进技术进行了比较。 FDDB 数据集包含了在 2845 张图片下的 5171 张人脸标注,WIDER FACE 数据集由 32,203 张图片中的 393,703 个 Bounding Box 组成(其中 50% 用于测试,40% 用于验证,剩余用于验证)。 AFLW 数据集包括了 24,386 张人脸关键点标注,我们使用了与[22]相同的测试子集,最后我们评估了我们检测的计算效率。

A. Training Data

因为我们同时进行人脸检测和对齐,在训练过程中我们使用四个不同类别的数据标注:

(i) Negative 负样本:与任何 Ground Truth 的 IoU 都低于 0.3 的区域;

(2) Positive 正样本: 与一个 Ground Truth 的 IoU 大于 0.65 的真实面孔;

(3) Part faces 部分样本: 与一个 Ground Truth 在 0.4 与

0.65 之间的脸;

(4)关键点脸: 带有 5 个关键点位置的面孔。

正负样本用于分类任务,正样本和部分脸用于候选框回归,关键点脸用于关键点定位。总体训练数据组成为 3:1:1:2(Negative/ positive/ part face/ landmark face)。每个网络训练集如下:

1)P-Net:


    我们从WIDER FACE[24]中随机裁剪了几个窗口来收集正、负、部分脸样本。之后,我们


    从CelabA[23]中截取面部作为关键点样本。


2)R-Net:


    我们使用框架第一部分检测来自WIDER FACE[24]的人脸来收集pos,neg,part样本,同


    时检测来自CelebA[23]的关键点样本。


3)O-Net:


    与R-Net的数据收集类似,但是我们这次使用框架的前两个部分来检测脸部和收集数据。

B.在线困难样本挖掘的有效性 The effectiveness of online hard sample mining:

为了评估所提出的在线困难样本挖掘策略的贡献,我们训练了两个 P-Net(一个使用/一个不使用这个策略),并且比较了他们在 FDDB 上的表现。 图 3(a)显示了这两个网络在 FDDB 上的不同表现结果。显然,使用在线困难样本挖掘策略

有助于提高性能。这可以在 FDDB 上带来大约 1.5% 的总体性能提升。

图 3

C. 联合人脸检测和对齐的有效性 The effectiveness of joint detection and alignment

为了评估联合人脸检测与对齐的贡献,我们在 FDDB 上(用同样的 P-Net 和 R-Net)评估两个 O-Net(是否联合训练关键点回归)的性能。我们也比较了两个 O-Net 的候选框回归性能(图 3.b)。结果显示了联合两个任务有助于提高人脸分类和边框回归任务的性能。

D. 人脸检测的评估 Evaluation on face detection:

为了评估我们的人脸检测方法的性能,我们在 FDDB 上与前沿方法[1, 5, 6, 11, 18, 19, 26, 27, 28, 29]进行了比较,在 WIDER FACE 上和前沿方法[1,24,11]进行了比较。图 4(a)-(d)显示了我们的方法在两个基准测试中都取得了更优秀的表现。

图 4

E. 人脸对齐的评估 Evaluation on face alignment

在这一部分中,我们与以下人脸对齐方法比较了性能:RCPR[12], TSPM[7], Luxand face SDK[17], ESR[13], CDM[15], SDM[21], TCDCN[22]。平均误差通过预估关键点与真实坐标距离计算,并用眼间距离 interocular 归一化。图 5 显示我们的方法领先于所有最先进的方法。也显示了我们的方法在嘴角定位不那么优秀,这可能是由于我们训练集的表情变化小,这对嘴角位置影响很大。

图 5

F. 运行时间的评估 Runtime efficiency

由于级联结构,我们的方法在人脸检测和对齐任务上达到非常快的速度。在 2.6GHz 的 CPU 上,速度为 16fps,在 GPU(Nvidia Titan Black)上为 99fps。值得注意的是,我们的实现是基于未优化的 MATLAB 代码。

IV. 结论 Conclusion

在本文中,我们提出了一种基于多任务级联的 CNN 架构,用于结合人脸检测和人脸对齐。

实验结果表明,我们的方法在几个具有挑战性基准的测试中超越了目前最先进方法 SOTA(包括用于人脸检测的 FDDB 和 WIDER FACE,以及人脸对齐的 AFLW),可以实现图像实时检测。

性能改进的主要贡献来自精心设计的级联 CNN 架构,在线困难样本挖掘和联合了人脸检测与对齐。

将来,我们将利用人脸检测和其他人脸分析任务之间的内在关联,进一步提高性能。