Face Attention Network: An Effective Face Detector for the Occluded Faces
论文:http://xxx.itp.ac.cn/pdf/1711.07246v2
代码:https://github.com/rainofmine/Face_Attention_Network
摘要
随着卷积神经网络的发展,人脸检测的性能已经有了很大的提高。然而,由于面具和太阳镜造成的遮挡问题,仍然是一个具有挑战性的问题。对这些遮挡情况的召回率的提高通常会带来高误报的风险。在本文中,我们提出了一种新的人脸检测器,称为人脸注意网络(FAN),它可以在不影响速度的情况下显著提高人脸检测问题的召回率。更具体地说,我们提出了一个新的锚级注意力,它将突出人脸区域的特征。结合我们的锚点分配策略和数据增强技术,我们在WiderFace和MAFA等公共人脸检测基准上获得了最先进的结果。
1. 引言
人脸检测是许多与人脸有关的应用的一个基本步骤,例如人脸标识[31, 40]和人脸识别[24, 27, 41]。从Viola-Jones[30]的开创性工作开始,人脸检测有了大量的进展,特别是随着卷积神经网络[9]的最新发展。然而,遮挡问题仍然是一个具有挑战性的问题,很少有人提出解决这个问题的工作。更重要的是,由口罩、太阳镜或其他面孔引起的遮挡现象在现实生活中广泛存在。
解决遮挡问题的困难在于潜在的假阳性问题的风险。考虑到检测被太阳镜遮挡的人脸的情况,只有人脸的下半部分是可用的。只根据下半部分识别人脸的模型,很容易在有相似肤色的手等位置被错误分类。如何成功地解决遮挡问题,同时防止假阳性问题,仍然是一个具有挑战性的研究课题。
在本文中,我们提出了一个基于one-shot检测pipeline的有效人脸检测器,称为Face Attention Network (FAN),它可以很好地解决遮挡和假阳性问题。更具体地说,按照与RetinaNet[17]类似的设置,我们利用特征金字塔网络,并从网络的不同层来解决不同尺度的人脸。我们的anchor设置是专门为人脸应用而设计的,并引入了anchor级注意力,为不同的特征层提供不同的注意力区域。注意力是在anchor-specific heatmaps的基础上进行监督训练的。此外,还引入了随机裁剪等数据增强技术,以产生更多的裁剪(遮挡)训练样本。
综上所述,我们的论文有三个贡献:
- 我们提出了一个anchor-level注意力,它可以很好地解决人脸检测任务中的遮挡问题。图1是我们在人群中检测结果的一个例子。
- 介绍了一种基于one-shot RetinaNet检测器的实用baseline设置方法,该方法在计算速度较快的情况下获得了与以往相当的性能。
- 我们的FAN集成了我们复现的one-shot RetinaNet和anchor-level注意力,在流行的人脸检测baseline上,包括WiderFace[34]和MAFA[6],特别是在像MAFA这样的遮挡情况下,明显优于state-of-art检测方法。
2. 相关工作
人脸检测作为计算机视觉的基本问题,已经得到了广泛的研究。在convolutional neural network(CNN)的复兴之前,许多机器学习算法被应用于人脸检测。Viola-Jones[30]的开创性工作是利用Adaboost与Haar-like特征来训练一个cascade model来检测人脸,并获得了实时性能。另外,deformable part models(DPM)[5]也被用于人脸检测,并有显著的性能。然而,这些方法的局限性在于它们使用的是weak features,如HOG[3]或Haar-like特征[29]。最近,基于深度学习的算法被用来改善feature representation和feature representation。根据是否遵循proposal和refine策略,这些方法可以分为:单阶段检测器,如YOLO[25]、SSD[19]、RetinaNet[17],以及双阶段检测器,如Faster R-CNN[26]。
单阶段方法。 CascadeCNN [14] 提出了一种级联结构从粗到细来检测人脸。 MTCNN [37] 开发了一种架构来共同解决检测和landmark对齐问题。后来,DenseBox [11] 利用统一的端到端全卷积网络直接检测置信度和边界框。 UnitBox [36] 提出了一种新的intersection-over-union(IoU)损失来直接优化 IoU 目标。 SAFD [8] 和 RSA unit [20] 专注于使用 CNN 或 RNN 来处理大范围尺度。 RetinaNet [17] 引入了一种新的focal loss 损失来缓解类不平衡问题。
两阶段方法。除此之外,人脸检测还继承了一般物体检测任务的一些成果。[13]使用Faster R-CNN框架来提高人脸检测性能。CMS-RCNN[39]通过添加身体上下文信息加强了Faster R-CNN架构。Convnet[15]将Faster R-CNN框架与3D人脸模型结合起来,以提高闭遮挡鲁棒性。此外,Spa-
tial Transformer Networks(STN)[12]和它的变体[1]、OHEM[28]、grid loss[23]也提出了几个有效的策略来提高人脸检测性能。
3. Face Attention Network (FAN)
虽然在第二节中讨论的人脸检测问题已经取得了显著的改进,但定位具有大部分遮挡的人脸仍然是一个挑战。同时,在许多与人脸相关的应用中,如安防监控中,人脸通常会被口罩、太阳镜或其他人脸遮挡,这也需要检测。[21]通过合并不同特征层的信息来解决这个问题。[38]改变了anchor的匹配策略,以提高召回率。受[4]的启发,我们试图利用一个完全卷积的特征层次结构,每个层的目标是通过分配不同的anchor来处理不同比例范围的人脸。我们的算法被称为 "Face Attention Network "(FAN),可以被认为是第3.1节中讨论的单阶段检测器和第3.2节中anchor-level注意力的整合。我们的网络结构的概述可以在图2中找到。
3.1. 基本框架
卷积神经网络在不同的特征层有不同的语义信息和空间分辨率。浅层通常具有较高的空间分辨率,有利于小物体的空间定位,但语义信息低,不利于视觉分类。另一方面,深层获得更多的语义信息,但空间分辨率会受到影响。最近的工作如特征金字塔网络(FPN)[16]提出了一个分而治之的原则。附带一个U型结构,以同时保持高空间分辨率和语义信息。不同尺度的对象在不同的特征层被分割和处理。
遵循这一设计原则,[17]中介绍的RetinaNet是一个单级检测器,在COCO一般物体检测上取得了state-of-art性能[18]。它采用FPN[16]和ResNet[9]作为骨干,生成具有丰富语义信息的特征金字塔的层次结构。基于这个骨干网,RetinaNet附有两个子网:一个用于分类,另一个用于回归。我们借用RetinaNet的主要网络结构,并将其用于人脸检测任务。
分类子网应用了四个3×3的卷积层,每个卷积层有256个filters,然后是一个3×3的卷积层,其中K表示类的数量,A表示每个位置的anchor的数量。对于人脸检测,K=1,因为我们使用了sigmoid激活,在大多数实验中我们使用A=6。这个子网中的所有卷积层在所有金字塔层中共享参数,就像原始的RetinaNet一样。回归子网与分类子网相同,只是它终止于具有线性激活的 4A个 卷积filters。图2为我们的算法提供了一个概述。注意,为了说明问题,我们只画了三个层次的金字塔。
3.2. 注意力网络
与原来的RetinaNet相比,我们设计了我们的ancho设置与我们的注意力功能。有三个设计原则。
- 在不同的特征层中处理不同比例的人脸,
- 突出人脸区域的特征减弱没有人脸的区域
- 生成更多被遮挡的人脸进行训练
3.2.1 anchor分配策略
我们首先开始讨论我们的anchor设置。在我们的FAN中,我们有五个检测层,每个检测层都与一个特定比例的anchor相关。此外,我们的anchor的长宽比被设置为1和1.5,因为大多数正面的脸是近似方形的,而侧面的脸可以被视为1:1.5的矩形。此外,我们根据ground-truth的人脸尺寸计算WiderFace训练集的统计数据。如图3所示,80%以上的人脸具有16至406像素的物体比例。小尺寸的人脸缺乏足够的分辨率,因此包含在训练数据中可能不是一个的好选择。因此,我们在金字塔各层上将anchor定在162到4062的区域。我们将anchor的比例设置为 2 1 / 3 2^{1/3} 21/3,以确保每一个ground-truth boxes都有IoU≥0.6的anchor。具体来说,锚点被分配给最高IoU大于0.5的ground-truth box,如果最高IoU小于0.4,则分配给背景。未分配的anchor在训练中被忽略。
3.2.2 注意力功能
为了解决遮挡问题,我们在上述网络结构的基础上提出了一种新的anchor-level 注意。具体来说,我们利用了一个分段的侧分支,如图6所示。注意力监督信息是通过填充地面真相框获得的。同时如图4所示,监督的热图与分配给当前层中的锚的ground-truth面孔相关。这些分层的注意力图可以减少它们之间的关联性。与传统的注意力图谱的使用不同,我们的注意力图谱首先被送入指数运算,然后与特征图进行点乘。它能够保留更多的背景信息,同时突出检测信息。考虑到脸部被遮挡的例子,大部分不可见的部分对检测来说是没有用的,可能是有害的。图5中可以看到一些注意力的结果。我们的注意力掩码可以增强面部区域的特征图,并减弱opposition。
3.2.3 数据增强
我们发现训练数据集中的遮挡人脸数量有限,不能满足CNN网络的训练。从注释来看,只有16%的人脸具有高度遮挡属性。因此,我们提出了一种随机裁剪策略,可以生成大量的遮挡人脸进行训练。更具体地说,基于训练集,我们从原始图像中随机裁剪正方形小块,其范围在原始图像的短边的[0.3,1]之间。此外,如果ground-truth box的中心在采样的小块中,我们保留地面实况框的重叠部分。除了来自随机裁剪数据集的增强,我们还采用来自随机翻转和颜色抖动的增强[38]。
3.3 损失函数
我们采用多任务损失函数来联合优化模型参数:
L
=
∑
k
1
N
k
c
∑
i
∈
A
k
L
c
(
p
i
,
p
i
∗
)
+
λ
1
∑
k
1
N
k
r
∑
i
∈
A
k
I
(
p
i
∗
=
1
)
L
r
(
t
i
,
t
i
∗
)
+
,
λ
2
∑
k
L
a
(
m
k
,
m
k
∗
)
(
1
)
\begin{aligned} L=& \sum_{k} \frac{1}{N_{k}^{c}} \sum_{i \in A_{k}} L_{c}\left(p_{i}, p_{i}^{*}\right)+\\ & \lambda_{1} \sum_{k} \frac{1}{N_{k}^{r}} \sum_{i \in A_{k}} I\left(p_{i}^{*}=1\right) L_{r}\left(t_{i}, t_{i}^{*}\right)+,\\ & \lambda_{2} \sum_{k} L_{a}\left(m_{k}, m_{k}^{*}\right) \end{aligned} (1)
L=k∑Nkc1i∈Ak∑Lc(pi,pi∗)+λ1k∑Nkr1i∈Ak∑I(pi∗=1)Lr(ti,ti∗)+,λ2k∑La(mk,mk∗)(1)
其中
k
k
k是特征金字塔等级
(
k
∈
[
3
,
7
]
)
(k ∈ [3,7])
(k∈[3,7])的索引,
A
k
A_k
Ak表示在金字塔层级
P
k
P_k
Pk中定义的anchor的集合。如果anchor是正的,则ground-truth标签
p
i
∗
p^*_i
pi∗是1,否则是0。
p
i
p_i
pi是我们的模型预测的分类结果。
t
i
t_i
ti是表示预测边界框的4个参数化坐标的向量,
t
i
∗
t^*_i
ti∗是与正anchor相关联的ground-truth box的坐标。
分类损失 L c ( p i , p i ∗ ) L_c(p_i,p^*_i) Lc(pi,pi∗)是在[17]中针对两个类(面部和背景)引入的 focal loss。 N k c N^c_k Nkc是参与分类损失计算的 P k P_k Pk中的anchor的数量。回归损失 L r ( t i , t i ∗ ) L_r(t_i,t^*_i) Lr(ti,ti∗)是在[7]中定义的smooth L1 loss。 I ( P I ∗ = 1 ) I(P^*_I = 1) I(PI∗=1)是指示函数,其限制回归损失仅关注分配为正的anchor,并且 N k r = ∑ i ∈ A k I ( p i ∗ = 1 ) N_{k}^{r}=\sum_{i \in A_{k}} I\left(p_{i}^{*}=1\right) Nkr=∑i∈AkI(pi∗=1)。注意力损失 L a ( m k , m k ∗ ) L_a(m_k,m^*_k) La(mk,mk∗)是 pixel-wise sigmoid cross entropy。 m k m_k mk是每个级别生成的注意力图, m k ∗ m^*_k mk∗是第3.2.2节中描述的ground-truth。 λ 1 λ1 λ1和 λ 2 λ2 λ2用于平衡这三个损失项,这里我们简单地设置 λ 1 = λ 2 = 1 λ1 = λ2 = 1 λ1=λ2=1。
4 实验
我们使用ResNet-50作为基础模型。所有的模型都由SGD在8个GPU上进行训练,每个minibatch共有32幅图像(每个GPU有4幅图像)。与[17]类似,连接到FPN的四个卷积层被初始为偏置b=0和高斯权重方差σ=0.01。对于分类子网的最后一个卷积层,我们在这里用偏置 b = ? l o g ( ( 1 − π ) / π ) b=? log((1-π)/π) b=?log((1−π)/π)和π=0.01来启动它们。同时,初始学习率被设定为3e-3。我们在每个epoch中采样10k个图像patches。没有数据增强的模型被训练了30个epochs。有了数据增强,模型被训练了130个epochs,其学习率在100个epoch和120个epoch时下降10。权重衰减为1e-5,动量为0.9。IoU≥0.5的anchor被分配到正类,而在所有ground-truth中IoU<0.4的anchor被分配到背景类。
4.1. 数据集
FAN的性能在多个人脸数据集上得到了评估:WiderFace和MAFA。
WiderFace数据集[34]。WiderFace数据集包含32,203张图片和393,703张注释过的人脸,在比例、姿势和遮挡方面具有高度的可变性。其中158,989张被选为训练集,39,496张为验证集,其余为测试集。根据检测的难度,验证集和测试集被分成 “简单”、"中等 "和 "困难 "三个子集。由于尺度、姿势和遮挡的可变性,WiderFace数据集是最具挑战性的脸部数据集之一。我们的FAN只在训练集上训练,并在验证集和测试集上评估。消融研究是在验证集上进行的。
MAFA数据集[6]。MAFA数据集包含30,811张图片,其中有35,806张被掩盖的人脸,这些图片是从互联网上收集的。它是一个蒙面人脸检测的基准,其中的人脸有各种各样的方向和遮挡。此外,该数据集根据每张脸至少有一个部分被遮挡的情况,分为遮挡脸子集和未遮挡脸子集。我们使用整个数据集和被遮挡的子集来评估我们的方法。
4.1.1 anchor设置和分配
我们在表1中比较了三种anchor设置。对于RetinaNet设置,我们遵循论文[17]中描述的设置。对于我们的FAN baseline,我们在金字塔级别上将anchor设置为162至4062的区域。此外,长宽比被设置为1和1.5。另外,受[38]的启发,我们选择了一个具有更多覆盖率的anchor分配规则。我们在每个位置使用8个anchor,横跨4个尺度(间隔仍然固定为21/3,所以区域从82到6452)和2个比率1,1.5。对于密集设置,它与我们的FAN设置相同,只是我们应用了从82到6452的更密集的尺度。根据表1中的结果,我们可以看到,anchor尺度对检测器的性能很重要,我们的设置明显优于[17]中的设置。与密集设置相比,我们可以看到anchor覆盖率不等于最终的检测性能,因为它可能会因为密集采样而引入大量的负boxes。
4.1.2 注意力机制
正如第3.2.2节中所讨论的,我们应用了anchor-level注意力机制来增强面部部分。我们在表2中对WiderFace val数据集进行了有注意和无注意的FAN基线比较。对于MAFA数据集,其结果可以在表3中找到。根据实验结果,我们可以发现,我们的注意力可以在WiderFace hard子集中提高1.1%,在MAFA masked子集中提高2%。
4.1.3 数据扩充
根据WiderFace数据集的统计,大约有26%的人脸存在遮挡现象。其中,约有16%是严重遮挡。由于我们的目标是解决被遮挡的人脸,有遮挡的训练样本数量可能并不充足。因此,我们采用了第3.2.3节中讨论的随机作物数据增强法。结果可以从表4中找到。性能的提高是显著的。除了对被遮挡的人脸有好处外,我们的随机作物扩增还可能提高小脸的性能,因为更多的小脸在扩增后会被放大。
4.1.4 WiderFace 数据集
我们将我们的FAN与SFD[38]、SSH[21]、HR[10]和ScaleFace[35]等state-of-art 检测器进行比较。我们的FAN在WiderFace训练集上进行了数据增强训练,并在验证集和测试集上进行了多尺度600、800、1000、1200、1400测试。图7和表5显示了精度-召回曲线和AP。我们的算法在所有的子集中都获得了最好的结果,即验证集为0.953(简单),0.942(中等)和0.888(困难),测试集为0.946(简单),0.936(中等)和0.885(困难)。考虑到hard子集包含了很多遮挡的人脸,与以往的研究结果相比,我们有更大的margin,这验证了我们的算法对遮挡的人脸的有效性。图8中可以看到我们的FAN结果的例子。
4.1.5 MAFA数据集
由于 MAFA 数据集 [6] 是专门为遮挡人脸检测而设计的,因此采用它来评估我们的算法。我们将我们的 FAN 与 LLE-CNNs [6] 和 AOFD [2] 进行比较。我们的 FAN 在带有数据增强的 WiderFace 训练集上进行训练,并在 MAFA 测试集上进行了测试,规模为 400、600、800、1000。基于平均精度的结果如表 6 所示。FAN 在 MAFA 测试集上的性能明显优于最先进的检测器使用标准测试(IoU 阈值 = 0.5),这显示了在被遮挡的面部上的有希望的性能。我们的 FAN 的示例结果可以在图 9 中找到。
4.2. 推理时间
尽管我们的 FAN 获得了出色的性能,但我们算法的速度并没有受到影响。如表 7 所示,我们的 FAN 检测器不仅可以获得state-of-art 结果,而且具有高效的计算速度。
计算成本在 NIVIDIA TITAN Xp 上进行了测试。最小尺寸 m 是指通过保持纵横比调整为 m 的图像的最短边。与表 5 中的baseline结果相比,在使用 short-side 1000 进行测试时,我们的 FAN 已经优于 [21]、[38] 和 [10] 等state-of-art 检测器。
5. 结论
在本文中,我们的目标是使用被遮挡的人脸检测人脸问题。我们提出了 FAN 检测器,它可以集成我们专门设计的单阶段基础网络和我们的anchor-level注意力算法。基于我们的anchor-level attention,我们可以突出面部区域的特征并成功减轻误报的风险。在 WiderFace 和 MAFA 等具有挑战性的benchmarks上的实验结果验证了我们提出的算法的有效性和效率。