文章目录
前言
本课程来自深度之眼,部分截图来自课程视频。
文章标题:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
基于多任务级联卷积网络的人脸检测和对齐
作者:Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li
深圳智能研究院
发表时间:2016 ECCV, 2016 CVPR
研究背景、成果及贡献
研究背景
在无约束环境中,由于各种人脸姿势,光线不均和遮挡的情况,各种人脸检测和对齐的算法有很大的挑战,经常出现误检和漏检的情况。为了解决个问题,目前的研究方向是引入深度学习的方法。
研究意义
人脸检测和人脸对齐在众多的人脸应用中都是必不可少的一环,例如人脸识别(人脸支付),人脸表情识别等。
研究成果
这篇论文的主要研究成果有:
(1)提出了一种新的级联型CNNs框架,用于人脸检测和对齐,并设计了轻量级CNN架构以实现实时性;
(2)提出了一种有效的方法来进行在线困难样本挖掘(online hard sample dining strategy)
(3)与最先进的人脸检测和人脸对齐算法相比性能显著增强。
发展历史
趋势:让机器更快、更精准地发现人脸
未来技术研究趋势:基于深度学习的FC
基本思想:利用CNN作为基本单元构成多层网络,区分目标的标定人脸特征点,其核心问题为:人脸特征点的标定。
先对人脸部分生成各种候选框
然后对生成的候选框进行筛选,最后合并得到最后的结果
其损失函数为:
L
O
S
S
M
T
C
N
N
=
α
d
e
c
L
O
S
S
d
e
c
+
α
r
o
i
L
O
S
S
r
o
i
+
α
l
a
n
d
m
a
r
k
L
O
S
S
l
a
n
d
m
a
r
k
LOSS_{MTCNN}=\alpha_{dec}LOSS_{dec}+\alpha_{roi}LOSS_{roi}+\alpha_{landmark}LOSS_{landmark}
LOSSMTCNN=αdecLOSSdec+αroiLOSSroi+αlandmarkLOSSlandmark
L
O
S
S
d
e
c
LOSS_{dec}
LOSSdec:矩形框类分类
L
O
S
S
l
a
n
d
m
a
r
k
LOSS_{landmark}
LOSSlandmark:特征点位置回归
前期知识储备
摘要
在无约束环境中,由于各种姿势变化,光线不均和遮挡的情况,各种人脸检测和对齐的算法有很大的挑战。最近几年,深度学习方法在这两项任务上取得令人瞩目的成绩。本文中提出了一个深度级联的多任务框架,利用它们之间的内在联系来提高它们的性能。特别的是,我们的框架采用级联结构,具有三个精心设计的深度卷积网络,以粗略到精细的方式预测面部和特征点位置。此外,在学习过程中,我们提出了一种新的在线硬样本挖掘策略(online hard sample mining strategy),可以自动提高性能,无需手动选择样本。hard example mining(困难样本
挖掘)是机器学习在训练时常见的步骤。总的来说, mining(挖掘)方法大概可以分为两类。:一种是sVM(支持向量机)中用到margIn- based(基于边缘的方式),即训练时将 violate the current model’ s margIn即违反当前模型边缘的样本认为是hardexample,迭代直到收敛;另一种方法是在级联框架中的将 false positive不属于这个类别的样本认为是 hard example。
我们的方法在面部检测的具有挑战性的FDDB和 WIDER FACE基准以及面部对齐的AFLW基准测试中实现了超过最先进技术的卓越精度,同时保持实时性能。
Introduction
Viola和 Jones提出的级联人脸检测器利用Haar-Like特征和Ada boost训练级联分类器,实现了良好的实时性能。
然而,相当多的研究表明,即使使用更先进的特征和分类器,在现实世界中的精度也会显著降低,人脸的视觉变化更大。
除级联结构外,有些研究引入了可变形零件模型(DPM)进行人脸检测,并取得了显着的性能。
然而,它们的计算量十分巨大。最近,卷积神经网络(CNN)在各种计算机视觉任务中取得了显着进步,例如图像分类和人脸识别。
受CNN在计算机视觉任务中的良好性能的启发,近年来已经提出了一些基于CNN的面部检测方法。
文献11通过训练深度卷积神经网络进行面部属性识别,以获得面部区域的高响应,进一步产生面部候选窗口。
然而,由于其复杂的CNN结构,这种方法在实际运用中耗时巨大。
文献19使用级联CNN进行人脸检测,但它需要通过面部检测进行边界框校准,并且需要进行额外的运算,忽略了面部特征点定位和边框回归之间固有的相关性。
使用多任务CNN来提高多视图面部检测的准确性,但检测精度受到弱面部检测器产生的初始检测窗口的限制。
另一方面,在训练过程中,困难样本挖掘对于增强探测器的功率至关重要。然而,传统的困难样本挖掘通常通过
离线的方式,这增加了手动操作的工作量。
在本文中,我们提出了一个新的框架,多任务的深度学习网络使用统一的级联CNN来集成这两个任务。
这篇文章中提出的CNNs包括三个部分。
在第一部分P-Net,它通过浅层CNN网络快速生成候选窗口
然后在第二部分R-Net,它通过更复杂的CNN细化第一部分产生的候选窗口以拒绝大量不包含人脸的窗口。
最后一部分O-Net,它使用更强大的CNN网络来细化结果并输出人脸特征点位置。
这个多任务的深度学习网络,可以显着提高算法的性能。
这篇文章主要做了以下工作:
(1)提出了一种新的级联CNNs框架用于联合人脸检测和对齐,并设计了轻量级CNN架构以实现实时性。
(2)提出了一种有效的方法来进行在线困难样本挖掘
(3)与最先进的人脸检测和人脸对齐算法相比
几个概念
边框回归:https://blog.csdn.net/zijin0802034/article/details/77685438
面部对齐:
面部对齐也广受关注。基于回归的方法和模板拟合方法是两个目前流行的人脸对齐方法。
最近提出了一个使用面部属性识别作为辅助任务来使用深度卷积神经网络来增强面部对齐性能。
然而,大多数人脸检测和人脸对齐方法忽略了这两个之间的相关性。
虽然有几个研究试图解决它们但这些研究仍然存在局限性。例如:利用像素值差异的特征与随机森林联合进行对齐和检测。但是手动调参限制了它的性能。
随机森林:
随机森林是集成学习的产物,集成学习是为了解决单个模型或者某一组参数的模型所固有的缺陷,从而整合起更多的模型,取长补短,避免局限性。随机森林将许多颗决策树整合成森林,并合起来预测最终结果。
Approch
总体框架
第一步,给定一个图像,将其最初调整到不同的比例以构建图像金字塔,这是以下三阶段级联框架的输入:
在阶段1:我们充分利用卷积网络,搭建 Proposa| Network(P-Net),以与[29]类似的方式获得候选窗口及其边界框回归向量。
然后我们使用估计的边界框回归向量来校准候选者。
之后,我们采用非最大抑制(NMS)来合并高度重叠的候选者
P-Net网络图
在阶段2:所有候选窗口都被送到另一个CNN,称为Refine Network(R-Net),它将进一步剔除大量错误候选框,使用边界框回归执行校准,以及NMS将候选窗口合并。
在阶段三:这个阶段类似于第二阶段,但在这个阶段我们的目标是检测更详细的人脸面部。特别的是,网络将输出五个面部特征点的位置。
在以前的研究中中,已经设计了多个用于面部检测的CNN。
然而,我们注意到同类型研究中的性能可能受到以下事实的限制:
(1)一些滤波器缺乏权重的多样性,这可能限制它们产生有区别的检测。
(2)与其他多类异象检测和分类任务相比,人脸检测是一项挑战性的二元分类任务,因此需要较少的过滤器,但需要对它们进行更多的区分。
为此,我们减少滤波器的数量并将5×5滤波器更改为3×3滤波器以减少计算,同时增加网络深度以获得更好的性能通过这些改进,与先前架构相比我们可以用更少的运行时间获得更好的性能,结果如表1所示。
为了公平比较,我们对两种方法使用相同的数据。
训练
我们利用三项任务来训练我们的CNN检测器:面部/非面部分类,边界框回归和人脸面部特征点定位。
1)面部分类训练目标被制定为两类分类问题。
对于人脸分类问题,我们使用交叉熵损失函数:
pi:网络判定一个样本是人脸的概率
y
i
d
e
t
∈
{
0
,
1
}
y_i^{det}∈\{0,1\}
yidet∈{0,1}:是真实样本标签。
2)边界框回归:对于每个候选窗口,我们预测它与最近的地面实况之间的偏移(即,边界框的左上,高度和宽度)
训练目标被视为回归问题,我们对每个样本使用 Euclidean损失函数。
y
^
i
b
o
x
\widehat y_i^{box}
y
ibox:网络中得到的回归目标
y
i
b
o
x
y_i^{box}
yibox:真实坐标,包含左上角的横纵坐标、高度、宽度。共有四个维度
3)人脸特征点定位:类似于边界框回归任务,人脸特征点检测被视为回归问题,我们最小化 Euclidean损失函数。
y
^
i
l
a
n
d
m
a
r
k
\widehat y_i^{landmark}
y
ilandmark:网络得到的人脸特征点坐标
y
i
l
a
n
d
m
a
r
k
y_i^{landmark}
yilandmark:真实的人脸坐标,包含五个坐标,左眼,右眼,壁纸,左嘴角,右嘴角。共有10个维度
4)多源训练:由于我们在每个CNN中分配了不同的任务,因此在学习过程中存在不同类型的训练图像,例如面部,非面部和部分对齐的面部。在这种情况下,一些损失函数就不能使用(即等式1-3)。
例如,对于背景区域的样本,我们仅计算
L
i
d
e
t
L_i^{det}
Lidet,而另外两个损失函数设置为0。
这可以直接使用样本类型指示符来实现。
整体训练目标客源表述为:
5)在线困难样本挖掘:与原始分类器训练后进行传统困难样本挖掘不同,我们在人脸分类任务中进行在线困难样本挖掘,以适应训练过程。
特别的是,在每个小批量中,我们对来自所有样本的前向传播阶段计算的损失进行排序,并选择其中前70%作为硬样本然后我们只计算后向传播阶段中困难样本的梯度。
这意味着我们忽略了较少的简单样本有助于在训练时加强探测器。
实验表明,该策略无需手动选择样本即可获得更好的性能。
其有效性将在第三节实验部分中得到证明。
Experiment
在本节中,我们首先评估之前提出的困难样本挖掘方法的有效性。
然后我们将人脸检测器和人脸检测与人脸检测数据集(FDDB),WIDER FACE和Annotated Facial Landmarks in the Wild(AFLW)基准测试中的最新方法进行比较。
FDDB数据集有2845个图像,其中包含5171张人脸。
WIDER FACE数据集由3233个图像中的393703个标记的人脸边界框组成,其中50%用于根据图像难度进行测试的三个子集,剩余下的40%用于训练,其余的用于验证。
AFLW包含24386张面部的面部特征点,我们使用相同的测试子集。
最后,我们评估提出人脸检测的计算效率。
A.训练数据
由于我们联合进行人脸检测和对齐,这里我们在训练过程中使用四种不同的数据注释
(i)负样本:IoU<0.3;
(i)正样本:IoU>0.65;
(i)部分面孔:loU在0.4至0.65之间
(iv)人脸特征点:标有5个特征点位置的人脸0.3-0.4。
正样本和负样本的样本数据用于面部分类任务,正样本和部分人脸用于边界框回归,人脸特征点用于面部特征点定位。
每个网络的训练数据描述如下:
1)P-Net:我们从 WIDER FACE中随机裁剪几个边框以收集正样本,负样本和部分人脸。然后,我们将 CelebA的
人脸数据裁剪为具有标准的人脸。
2)R-Net:我们使用我们框架的第一阶段来检测来自WIDER FACE的人脸,以收集正样本,负样本和部分人脸,同
时从 CelebA检测到标准人脸。
3)O-Net:与R-Net相似,用于收集数据,但我们使用框架的前两个阶段来检测。
B.在线困难样本挖掘的有效性
为了评估我们提出的的在线困难样本挖掘策略的有效性,我们训练了两个O-Nets(有和没有在线困难样本挖掘)并比较它们的损失曲线为了更直接地进行比较,我们仅训练人脸分类任务的O-Nets。
包括网络初始化在内的所有训练参数在这两个O-Nets中是相同的。
为了更容易地比较它们,我们使用修复学习率。
图3(a)显示了两种不同训练方式的损失曲线。
绿色线条表明,困难样品挖掘有利于提高性能。
C.联合检测和对齐的有效性
为了评估联合检测和对齐的效率,我们评估两个不同的O-Nets(联合面部标志回归任务并且不联合它)在FDDB上的性能(使用相同的P-Net和R-Net进行公平比较)。
我们还比较了这两个O-Nets中边界框回归的性能。
图3(b)表明联合特征点定位任务训练对于人脸分类和边界框回归任务都是有益的。
D.人脸检测评估
为了评估我们的人脸检测方法的性能,我们将我们的方法与FDDB中最先进的方法、 WIDER FACE中
最先进的方法进行了比较图4中a-d表明,我们的方法在两个基准测试中都大大优于所有先前的方法。
我们还评估了我们对一些挑战照片的方法。
E面部对齐评估
在这一部分中,我们将我们的方法的面部对齐性能与以下方法进行比较:RCPR,TSPM,Luxand face SDK, ESR, CDM, SDM, ATCDCN。在测试阶段,我们的方法无法检测到13个图像。
因此,我们裁剪这13幅图像的中心区域,并将它们视为O-Net的输入。
平均误差通过估计的特征点与实际框之间的距离来测量,并相对于眼间距离进行归一化。
F.运行时效率
鉴于级联结构,我们的方法可以在人脸检测和对准中实现非常快的速度。
它在2.60 GHZ CPU上需要16fps,在GPU上需要99fps( Nvidia Titan black)。
我们的项目目前是基于未优化的 MATLAB代码实现的。