FAN 翻译

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的基础上进行监督训练的。此外,还引入了随机裁剪等数据增强技术,以产生更多的裁剪(遮挡)训练样本。

综上所述,我们的论文有三个贡献:

FAN 翻译
  • 我们提出了一个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)

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分配策略

FAN 翻译

我们首先开始讨论我们的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}2 1 /3,以确保每一个ground-truth boxes都有IoU≥0.6的anchor。具体来说,锚点被分配给最高IoU大于0.5的ground-truth box,如果最高IoU小于0.4,则分配给背景。未分配的anchor在训练中被忽略。

; 3.2.2 注意力功能

FAN 翻译

图6. 训练的层级注意机制概述。与传统的注意力图不同,我们的注意力图首先进行指数运算,然后与特征图点乘。此外,注意力监督信息与分配给当前层中的anchor的ground-truth人脸相关联。

FAN 翻译
FAN 翻译

图 4. 注意力监督信息与当前层的anchor匹配的ground-truth相关联。不同的层根据人脸大小有不同的ground-truth。子图指的是:(a)具有ground-truth的原始图像(b)P7的注意力监督信息,它关心大人脸,(c)P6层的注意力监督信息,它小于P7。 (d)-(f) 分配给 P5 到 P3 的 ground-truth,分别关注较小的脸。

为了解决遮挡问题,我们在上述网络结构的基础上提出了一种新的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 ∑​N k c ​1 ​i ∈A k ​∑​L c ​(p i ​,p i ∗​)+λ1 ​k ∑​N k r ​1 ​i ∈A k ​∑​I (p i ∗​=1 )L r ​(t i ​,t i ∗​)+,λ2 ​k ∑​L a ​(m k ​,m k ∗​)​(1 )
其中k k k是特征金字塔等级( k ∈ [ 3 , 7 ] ) (k ∈ [3,7])(k ∈[3 ,7 ])的索引,A k A_k A k ​表示在金字塔层级P k P_k P k ​中定义的anchor的集合。如果anchor是正的,则ground-truth标签p i ∗ p^_i p i ∗​是1,否则是0。p i p_i p i ​是我们的模型预测的分类结果。t i t_i t i ​是表示预测边界框的4个参数化坐标的向量,t i ∗ t^_i t i ∗​是与正anchor相关联的ground-truth box的坐标。

分类损失L c ( p i , p i ∗ ) L_c(p_i,p^_i)L c ​(p i ​,p i ∗​)是在[17]中针对两个类(面部和背景)引入的 focal loss。N k c N^c_k N k c ​是参与分类损失计算的P k P_k P k ​中的anchor的数量。回归损失L r ( t i , t i ∗ ) L_r(t_i,t^_i)L r ​(t i ​,t i ∗​)是在[7]中定义的smooth L1 loss。I ( P I ∗ = 1 ) I(P^I = 1)I (P I ∗​=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)N k r ​=∑i ∈A k ​​I (p i ∗​=1 )。注意力损失L a ( m k , m k ∗ ) L_a(m_k,m^_k)L a ​(m k ​,m k ∗​)是 pixel-wise sigmoid cross entropy。m k m_k m k ​是每个级别生成的注意力图,m k ∗ m^_k m k ∗​是第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 =?l o g ((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

Original: https://blog.csdn.net/qq_41708275/article/details/124197959
Author: Bulbbbb
Title: FAN 翻译

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/687972/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球