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。给定一张图片输入,我们最初将其缩放到不同尺度来形成一个图像金字塔,作为以下三个级联网络部分的输入:
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]作为非线性激活函数(输出层除外)
C. Training
我们用了三个任务训练CNN检测器:人脸/非人脸分类,Bounding Box回归,以及人脸关键点定位。
- Face classification: 训练目标是一个二分类问题,每个样本$x_i$我们使用交叉熵loss:
其中pi是网络输出的样本,xi是一张脸的概率。yi-det-{0,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$
- Facial landmark localization: 类似候选框回归任务,人脸关键点定位也化为回归问题,我们最小化欧几里得loss:
共5个关键点,包括左右眼,鼻子和左右嘴角。
- Multi-source training: 因为每个CNN有多个任务,因此训练过程会有多种训练图片,比如人脸,非人脸和部分人脸。有些loss函数(公式1-3)不会用到。例如对于背景样本,我们只会计算$L_i^{det}$,另两个loss设为0。这可以通过样本类型指示器实现。整体学习目标可表示为:
其