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

使用多任务级联卷积网络连接人脸检测和对齐

摘要-因为可能有着多种姿势、照明和遮挡(various poses, illuminations and occlusions),在非限制环境下的人脸检测和对齐是很有挑战性的。目前的研究显示了深度学习方法能够在这两个任务上获得优异的性能。在该论文中,我们提出了一个深度级联多任务框架,用来探索两者间的内在关联,用以提高他们的性能。尤其是我们的框架采用了一个有着精细设计的深度卷积网络的三阶段的级联架构,用于以粗糙到精细的方式来预测人脸和标记位置。除此之外,在学习过程中我们还提出了一种不需要人工采样收集,能够自动改善性能的新的在线挖掘困难样本的策略。我们的方法在挑战赛中面向人脸检测的FDDB和WIDER FACE基准测试和面部对齐的AFLW基准测试中的最先进的技术获得了更优秀的准确度,同时保持实时性能。

Index Terms—Face detection, face alignment, cascaded con- volutional neural network

I. INTRODUCTION

人脸检测和对齐是很多人脸应用的基本,如人脸识别和面部表情分析。但是人脸上大的视觉变化,如遮挡、大的姿势变化和极端的光线,都可能在现实应用中对这些任务施加更多的挑战性。Viola and Jones [2]提出了使用Haar-Like特征和AdaBoost去训练级联分类器的级联人脸检测器,在实时效率中获得了好的性能。可是,一些工作指出[1,3,4]该检测器即使有着更高级的特征和分类器,在带着更大的人脸视觉变化的现实应用性能会显著下降。除了级联结构,[5,6,7]介绍了DPM(deformable part models)。可是他们需要更大的计算开销,其在训练阶段通常需要昂贵的注释。目前,卷积神经网络(CNNs)在一系列计算机视觉任务中获得了显著的进展,比如图像分类[9]和人脸识别[10]。受这些在计算机视觉任务中CNNs好的性能的激励,一些基于CNNs的人脸检测方法在近几年中也被提了出来。Yang et al. [11]为面部属性识别训练深度卷积神经网络,用于在人脸区域获得高回应,从而进一步生成人脸候选窗口。可是,因为CNN结构的复杂性,在实现时该方法花费了太多时间。Li et al. [19]为人脸检测使用级联CNNs,但是他需要先从人脸检测中获得边界框标度,这将导致额外的计算开销,并且忽视了面部特征点定位和边框回归之间的内在关联。

人脸对齐也吸引了很多的关注。基于回归的方法[12,13,16]和模版拟合(template fitting)方法[14,15,7]是两种流行的种类。最近Zhang et al. [22]提出了在深度卷积神经网络上使用面部属性识别作为一个辅助任务去加强人脸对齐性能

可是,大多数可用的人脸检测和人脸对齐方法都忽略了这两个任务之间的内在关联。虽然存在几个工作企图共同解决这个问题,但是这些工作仍有一些限制。比如Chen et al. [18]使用像素值异常的特征去共同进行带有随机森林(random forest,就是一种利用多个分类树对数据进行判别与分类的方法)的对齐和检测。Zhang et al. [20]使用多任务CNN去改善多视图人脸检测的准确性,但是检测的精确度受到由一个弱人脸检测器生成的初始检测窗口的限制。

另一方面来说,在训练过程中,在训练中的挖掘困难样本对加强检测器的能力是至关重要的。可是传统的困难样本挖掘都以线下方法进行,这将显著增加人工操作。为了人脸检测和对齐去设计线上困难样本挖掘方法是令人敬佩的,能够自动被现在的训练过程采用

在该论文中,我们提出了一个新的框架,通过多任务学习,使用统一级联的CNNs来合并这两个任务(即人脸检测和对齐)。该提出的CNNs包括两个阶段:

  • 第一阶段:通过一个浅CNN来快速生成候选窗口
  • 第二阶段 :通过一个更复杂的CNN来细化该窗口去拒绝大量无人脸的窗口
  • 第三阶段 : 使用一个更强的CNN去精炼结果和输出的人脸特征点位置

多谢该多任务学习框架,算法的性能有了显著的提升。该论文的主要贡献总结如下:

  • 提出了一个新的基于用于共同进行人脸检测和对齐框架的级联CNNs,为实时性能设计轻权重CNN结构
  • 提出一个用于实现线上困难样本挖掘的高效方法,用以改进性能
  • 扩展实现被实施在挑战基准上,去显示提出方法相较于最新技术在人脸检测和人脸对齐任务上显著的性能改进

II. APPROACH

在该部分,我们将描述该合并人脸检测和对齐的方法

A. Overall Framework 整体框架

我们方法的整体通道将显示在图1中:

根据该图所示,我们首先重设图像到不同的大小去构建一个图像金字塔,作为下面三阶段级联网络的输入:

  • 阶段1 : 我们开发了一个全卷积网络,称为Proposal Network(推荐网络,P-Net),以与[29]相似的方式去获得候选窗口和他们的边框回归向量。然后使用估计的边框回归向量去调整(calibrate)候选。在这之后,使用非极大值抑制(NMS)方法去合并高度重叠的候选框
  • 阶段2 : 所有候选将会被输入另一个CNN,叫做Refined Network(细化网络,R-Net)进一步拒绝大量的错误候选,使用边界框再次进行调整,再使用NMS合并候选集
  • 阶段3 : 与第二阶段相似,但是在这个阶段中我们的目标是描绘出人脸的更多细节。特别是网络最后将输出5个面部特征点(两个眼睛、鼻尖和两个嘴角)的位置

B. CNN Architectures

在[19]中多个CNNs被设计用来人脸检测。可是我们注意到其性能可能会被下面的几个方面限制:

  • 一些缺乏权重多样性的过滤器将限制他们生成可区分的描述
  • 对比其他多类目标检测和分类任务,人脸检测是一个挑战二进制分类任务,所以它可能需要更少的过滤器,但是要更具区分度

为了该目标,我们减少了过滤器的数量,并将5*5的过滤器更改为3*3来减少计算,同时增加深度去获得更好的性能。带着这些改进,与[19]中之前的结构相对比,我们能够使用更少的运行时间,获得更优的性能,结果可见表1:

为了更公平的对比,我们使用对两个方法使用了相同的数据。

CNN的结构显示在图2:

C. Training

我们使用三个任务去训练我们的CNN检测器:人脸/非人脸分类、边界框回归和面部特征点定位

1)首先是人脸分类任务:

其学习目标函数被制定为二分类问题。对于每个样本xi,使用交叉熵损失函数:

pi表示网络显示生成的一个样本中是否有人脸的概率。ydeti值为{0,1}两个,表示样本的真实值,有人脸则为1,无人脸则为0

2)是边界框回归任务:

对于每个候选窗口,我们预测其与最近的真实框之间的偏置值(即边界框左上角的点和高、宽的值)。学习目标函数制定为一个回归问题,对每个样本xi使用欧式距离损失函数:

boxi表示从网络中得到的回归目标值,yboxi表示真实框的坐标值。有4个坐标,包括左上角点和高、框,为4个值

3)面部特征点定位任务:

与边界框回归任务相似,面部特征点检测被制定为一个回归任务,最小化欧式距离损失值:

landmarki是从网络中获得的面部特征点坐标,ylandmarki是真实的坐标。这里有5个面部特征点,包括左右眼、左右嘴角和鼻子,为10个值

4)多任务训练

即然我们在每个CNNs中使用了多任务,那么在学习过程中训练图像就有了不同的类型,如带人脸的、不带人脸的和部分对齐人脸。在这种情况下,一些损失函数(如上面的(1)-(3))就不会使用。比如对于仅有背景区域的样本,我们仅计算人脸分类的损失函数Ldeti,其他两个损失函数设置为0。这能够直接使用样本分类显示器来实现。因此,最终的整个学习目标函数被制定为:

N即训练样本的数量,αj表示任务的重要性。在P-Net和R-Net网络中,设置αdet=1,αbox=0.5,αlandmark=0.5;在O-Net网络中,需要更精确的面部特征点位置,设置为αdet=1,αbox=0.5,αlandmark=1。βji属于{0,1}是样本类型检测器,即0表示无人脸,1表示有人脸。在这个情况下,自然使用随机梯度下降去训练CNNs

5)线上困难样本挖掘:

与在原始的分类器被训练后实施传统的困难样本挖掘不同,我们在人脸分类任务中使用的线上困难样本挖掘能够使用在训练过程中

尤其是在每个mini-batch中,我们将从所有样本在前向传播过程中计算得到的损失排序,选择前70%作为困难样本。然后在后向传播中仅计算这些困难样本的梯度。这意味着我们忽略了在训练中对增强检测器没有帮助的简单样本。实验显示该策略得到了更好的性能,且不需人工样本收集。其效率被阐述在第3部分

III. EXPERIMENTS

在该部分,我们首先评估推荐困难样本挖掘算法策略的效率。然后将我们的人脸检测器和对齐与目前在Face Detection Data Set and Benchmark(FDDB)[25]、WIDER FACE [24]和Annotated Facial Landmarks in the Wild (AFLW) benchmark [8]中的最新方法进行比较。FDDB数据集包含在2845图像集中5171人脸的注释。WIDER FACE数据集包含在32203张图像中393703个标记人脸边框,其中50%用于测试,根据其图像的困难度分为三个子集;40%用于训练;剩下的用于验证。AFLW包含24386个人脸的面部特征点注释,且我们使用和[22]相同的测试子集。最后,我们评估我们的人脸检测器的计算效率

A. Training Data

因为我们共同实现了人脸检测和对齐,这里我们将在训练过程中使用4种不同类型的数据注释:

  • 负样本:与任何真实人脸的交并比(IoU)比例少与0.3的区域
  • 正样本 : 与任何真实人脸的交并比(IoU)比例大与0.65的区域
  • 部分人脸 : 与任何真实人脸的交并比(IoU)比例在0.4到0.65的区域
  • 特征值人脸 : 标记了5个特征点位置的人脸

负样本和正样本用于人脸分类任务;正样本和部分人脸用于边界框回归;特征值人脸用于面部特征点定位。对于每个网络的训练数据描述如下:

  • P-Net : 随机从WIDER FACE[24]数据中截取几个patches来收集正样本、负样本和部分人脸。然后从CelebA[23]中截取人脸作为特征点人脸
  • R-Net : 使用我们框架的第一阶段去从WIDER FACE[24]上收集正样本、负样本和部分人脸,同时从CelebA[23]检测特征点人脸
  • O-Net : 与R-Net收集数据的方法相似,但是使用我们框架的前两个阶段去检测人脸

B. The effectiveness of online hard sample mining

为了评估我们提出的线上困难样本挖掘策略的贡献,我们训练了两个O-Net(带有和不带有困难样本挖掘)并比较他们的损失曲线。为了使比较更加直接,我们仅为人脸分类任务训练O-Net网络。在这两个O-Net网络中所有包含在网络初始化中的训练参数都是相同的。为了更容易地去比较,我们使用了固定的学习率。图3(a)显示了这两种不同的训练方式的损失曲线:

十分清楚地看到困难样本挖掘对性能的改进是有益的

C. The effectiveness of joint detection and alignment

为了评估联合检测和对齐的贡献,我们在FDDB上评估两个不同O-Net网络(联合面部特征点回归任务和不联合)的性能(为了公平的比较添加了相同的P-Net和R-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)所示:

说明我们的方法在双基准(Precision和Recall)上始终优于所有的旧方法。我们还在相同的挑战图片(Examples are showed in http://kpzhang93.github.io/SPL/index.html)上评估了我们的方法

E. Evaluation on face alignment

在这部分,我们将我们的方法的人脸对齐性能跟下面的方法进行比较:RCPR [12], TSPM [7], Luxand face SDK [17], ESR [13], CDM [15], SDM [21], and TCDCN [22]。在测试过程中,我们的方法没能在13张图片中检测到人脸。所以我们截取了这13张图像的中间区域,然后将他们作为P-Net网络的输入。平均误差通过估计特征点和真实特征点之间的距离计算出来,并根据inter-ocular距离进行归一化。上面的图4(e)表明我们的方法优于所有最新方法

F. Runtime efficiency

根据级联结构,我们方法能够在联合人脸检测和对齐中获得非常快的速度。其在2.60GHz CPU花费16fps ,在GPU (Nvidia Titan Black)上花费 99fps。我们的实验基于一个未优化的MATLAB代码

IV. CONCLUSION

在该论文中,我们提出了一个基于实现了联合人脸检测和对齐框架的多任务级联CNNs。实验结果表明我们的方法在几个基准上始终优于最新的方法(包括用于人脸检测的FDDB和WIDER FACE基准,以及用于人脸对齐的AFLW基准),同时保持了实时性能。未来,我们将探索人脸检测和其他人脸分析任务的内在关联,更进一步优化性能

mtcnn论文学习的更多相关文章

  1. Faster RCNN论文学习

    Faster R-CNN在Fast R-CNN的基础上的改进就是不再使用选择性搜索方法来提取框,效率慢,而是使用RPN网络来取代选择性搜索方法,不仅提高了速度,精确度也更高了 Faster R-CNN ...

  2. 《Explaining and harnessing adversarial examples》 论文学习报告

    <Explaining and harnessing adversarial examples> 论文学习报告 组员:裴建新   赖妍菱    周子玉 2020-03-27 1 背景 Sz ...

  3. 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集

    A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...

  4. Apache Calcite 论文学习笔记

    特别声明:本文来源于掘金,"预留"发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6f ...

  5. 【论文解析】MTCNN论文要点翻译

    目录 0.论文连接 1.前言 2.论文Abstract翻译 3.论文的主要贡献 4.4 训练 5 模型性能分析 5.1 关于在线挖掘困难样本的性能 5.2 将人脸检测与对齐联合的性能 5.3 人脸检测 ...

  6. GoogleNet:inceptionV3论文学习

    Rethinking the Inception Architecture for Computer Vision 论文地址:https://arxiv.org/abs/1512.00567 Abst ...

  7. IEEE Trans 2008 Gradient Pursuits论文学习

    之前所学习的论文中求解稀疏解的时候一般采用的都是最小二乘方法进行计算,为了降低计算复杂度和减少内存,这篇论文梯度追踪,属于贪婪算法中一种.主要为三种:梯度(gradient).共轭梯度(conjuga ...

  8. Raft论文学习笔记

    先附上论文链接  https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf 最近在自学MIT的6.824分布式课程,找到两个比较好的githu ...

  9. 论文学习-系统评估卷积神经网络各项超参数设计的影响-Systematic evaluation of CNN advances on the ImageNet

    博客:blog.shinelee.me | 博客园 | CSDN 写在前面 论文状态:Published in CVIU Volume 161 Issue C, August 2017 论文地址:ht ...

随机推荐

  1. LG4762 Virus synthesis

    Virus synthesis 初始有一个空串,利用下面的操作构造给定串 S . 串开头或末尾加一个字符 串开头或末尾加一个该串的逆串 求最小化操作数, ∣S∣≤105 . 题解 显然应该多使用操作2 ...

  2. learning java Cloneable

    class Address{ String Detail; public Address(String detail){ this.Detail = detail; } } class User im ...

  3. leetcode解题报告(30):Detect Capital

    描述 Given a word, you need to judge whether the usage of capitals in it is right or not. We define th ...

  4. 复旦高等代数 I(15级)每周一题

    [问题2015A01]  证明: 第三类分块初等变换是若干个第三类初等变换的复合. 特别地, 第三类分块初等变换不改变行列式的值. [问题2015A02]  设 $n\,(n\geq 2)$ 阶方阵 ...

  5. +和join的区别

    + 每次进行相加都会开辟新的空间,回收旧的空间join 一次性开辟好空间,一次性添加进去,一次性回收

  6. CSS3字体大小rem属性用法

    PX为单位 在Web页面初期制作中,我们都是使用“px”来设置我们的文本,因为他比较精确和固定. 只要页面某元素设置了px字体大小,其子元素/子孙元素未设置字体大小或设置的字体大小css优先级没父元素 ...

  7. Linux下的crontab定时执行任务命令

    0x00 简介 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的 ...

  8. OpenFOAM制作动画

    原视频下载地址:https://yunpan.cn/cMpfh9cCjKnZI(提取码:823b)

  9. fluent当中的梯度宏和VOF梯度的获取【转载】

    1 FLUENT变量梯度宏 C_R_G C_P_G C_U_G C_V_G C_W_G C_T_G C_H_G C_YI_G C_R_RG C_P_RG C_U_RG C_V_RG C_W_RG C_ ...

  10. 数据结构Java版之广度优先图(十三)

    广度优先,则是用的队列,将每一层的节点先存入队列中去,后依次取出队列中的节点,显示与当前节点存在边,但是未被访问过的节点,也就是下一层与之相联系的节点,再将这些节点存入队列.经过层层迭代,就可以完全遍 ...