Face Attention Network: An Effective Face Detector for the Occluded Faces

论文:http://xxx.itp.ac.cn/abs/1711.07246

1 简介

本文针对的是遮挡人脸的检测,对于遮挡人脸的检测,最关键的问题是如何减少误检。比如,一个带了墨镜的人脸,只有下半部分区域可见,要对这样的人脸进行成功检测,就需要模型能够正确基于下半部分的人脸进行检测,但是人的手部的皮肤颜色和面部的皮肤颜色很接近,那么这样的模型就有可能把手部区域误检成人脸。如何在不增加误检的情况下成功的检测出遮挡的人脸仍然是一个有难度的问题。

作者提出的FAN,利用了特征金字塔进行多尺度的人脸检测,利用了针对各尺度anchor的attention强调人脸区域且减少误检。

2 FAN

Face Attention Network: An Effective Face Detector for the Occluded FacesFAN是单阶段检测器和anchor-level attention的结合。

2.1 骨干网络

CNN学习的是层次化的特征。浅层特征分辨率高,但语义信息弱,适合于小目标的检测/定位,但不适合于图像分类;深层特征分辨率小,但语义信息强,不适合于目标检测,但适合于图像分类。FPN给出了如何结合多尺度的特征实现不同尺度的目标的检测。RetinaNet在ResNet+FPN的基础上引入了focal loss,解决正负样本不均衡的问题,实现了高精度的一阶段目标检测算法。本文的骨干网络就是RetinaNet的骨干网络,最后引出分类和定位两个子分支。

分类子分支是在骨干网络输出的feature map的基础上应用两个3 * 3 的卷积层,第一个卷积层的channel数为256,第二个卷积层的channel数为KA,K表示要检测的类别数,对于这里的人脸检测,K=1,A表示每一个feature map点处对应的anchor的数量。实验中作者设置A=6,另外因为这里是对于单个类别的预测,所以分类子分支使用sigmoid**函数。回归子分支和分类子分支很像,除了输出为4A个channel。

2.2 Attention网络

作者在RetinaNet的anchor上增加了attention函数,有三个目的:

  1. 实现多尺度的人脸检测;
  2. 强调图像中的人脸区域,弱化图像中的背景区域;
  3. 生成更多的遮挡人脸用于训练。

2.2.1 Anchor标注策略

FAN中,对于五个检测层都设定了对应尺度的anchor。各anchor的长宽比设置为1和1.5两种,这是因为正面人脸的长宽比接近1,侧面人脸的长宽比接近1.5。作者统计了widerface数据集中的人脸尺寸,发现80%的人脸尺寸介于16到406个像素之间。作者认为太小的人脸对训练的提升不大,所以设置anchor的尺寸为16216^24062406^2之间。作者对每一层的anchor的尺寸增加系数为2132^{\frac{1}{3}},也就是说第一层的anchor的尺寸为162×20,162×213,162×22316^2 \times 2^0,16^2 \times 2^{\frac{1}{3}},16^2 \times 2^{\frac{2}{3}},这样每一层有三个尺寸,2个长宽比的anchor,因此一个特征点处对应于6个anchor。这样密集的anchor集能够保证每一个gt box都有一个对应的IOU大于0.6的anchor。

如果某个anchor与一个gt box的IOU最大且大于0.5,则让该anchor负责该人脸的预测;如果一个anchor和所有gt box的最大IOU都小于0.4,则设置其为背景anchor,不负责人脸预测。剩余的anchor不参与训练过程。

2.2.2 attention函数

Face Attention Network: An Effective Face Detector for the Occluded Faces如上图所示,作者在检测的基础上添加了一个attention分支来解决遮挡问题。attention分支类似于分割网络,标注值就是对ground-truth box填充的结果。但如下图所示,作者使用了层次化的attention maps,也就是说不同尺度的特征对应的attention信息是有尺寸区别的。尺度大的特征只有一个大尺寸人脸的attention map作为监督值,尺度小的特征则包含了更多的小尺寸人脸的attention map作为监督值。

Face Attention Network: An Effective Face Detector for the Occluded Faces另外一点不同时,作者将attention map经过一个指数函数后和feature map相乘,实验结果证明这样做取得了很好的效果。下图给出了学习完成的attention map,可以看出attention机制从图像中检测出了人脸。

Face Attention Network: An Effective Face Detector for the Occluded Faces

2.2.3 数据增广

wider face数据集中只有16%的人脸存在较大的遮挡,这个数据量不足以进行较大CNN的训练。因此作者通过随机裁剪策略进行数据增广。具体来说,按照图像短边的[0.3,1]的比例从图像中随机裁剪正方形子块。如果某个ground-truth box被裁剪了,但它的中心点位于裁剪的图像子块内,那么保留这个ground-truth box,且设置标注信息为该ground-truth box和正方形图像子块的交集部分以模拟被遮挡的人脸。另外还使用了图像随机翻转和颜色变换这两种数据增广手段。

2.3 损失函数

Face Attention Network: An Effective Face Detector for the Occluded Faces
k表示特征金字塔的层级,k[3,7]k\in[3,7];AkA_k表示金字塔层PkP_k设置的anchor;pi,pip_i,p_i^*分别表示预测的各anchor包含人脸的置信度与其实际label;ti,tit_i,t_i^*表示各anchor学习的和标注的坐标值。

损失包含各anchor的分类损失 + 正例anchor的坐标的smooth L1损失 + 逐像素点的sigmoid交叉熵损失作为attention学习的损失(完全按照语义分割的思路来实现)。

实验中,作者设置各子损失的系数为λ1=λ2=1\lambda_1 = \lambda_2 = 1

3 实验

Face Attention Network: An Effective Face Detector for the Occluded FacesFace Attention Network: An Effective Face Detector for the Occluded Faces
Face Attention Network: An Effective Face Detector for the Occluded Faces

作者主要关注对遮挡人脸的检测效果,对应于widerface数据集中的hard子集。

4 总结

多尺度特征 + 多尺度anchor + 基于语义分割的多尺度attention,提升了对于遮挡人脸的检测效果。

以下摘抄自作者的解读:https://zhuanlan.zhihu.com/p/56619497

我们可以从另一个角度考虑遮挡问题。一个物体在清晰可见、无遮挡之时,其特征图对应区域的响应值较高;如果物体有(部分)遮挡,理想情况应是只有遮挡区域响应值下降,其余部分不受影响;但实际情况却是整个物体所在区域的响应值都会降低,进而导致模型 Recall 下降。

解决这个问题大概有两种思路:1)尽可能保持住未遮挡区域的响应值,2)把无遮挡区域降低的响应值弥补回来;前者较难,后者则相对容易。一个简单的做法是让检测器学习一个 Spatial-wise Attention,它应在无遮挡区域有更高的响应,然后借助它以某种方式增强原始的特征图。(要让人脸区域的特征有更强的响应,所以要用指数函数对attention map进行处理)

那么,如何设计这个 Spatial-wise Attention。最简单考虑,它应当是一个 Segmentation Mask 或者 Saliency Map。基于 RetinaNet,FAN 选择增加一个 Segmentation 分支,对于学到的 Score Map,做一个 exp 把取值范围从 [0, 1] 放缩到[1, e],然后乘以原有的特征图。为简单起见,Segmentation 分支只是叠加 2 个 Conv3x3,Loss 采用 Sigmoid Cross Entropy。

这里将面对的一个问题是,Segmentation 分支的 ground truth 是什么,毕竟不存在精细的 Pixel-level 标注。由于人脸图像近似椭圆,一个先验信息是边界框区域内几乎被人脸填满,背景区域很小;常见的遮挡也不会改变「人脸占据边界框绝大部分区域」这一先验。基于这一先验可以直接输出一个以边界框矩形区域为正样本、其余区域为负样本的 Mask,并将其视为一个「有 Noise 的 Segmentation Label」作为实际网络的 ground truth。我们也尝试根据该矩形截取一个椭圆作为 Mask,但实验结果表明基本没有区别。(人脸占据了标注框的绝大部分区域,所以用矩形框作为分割框的标注信息

这样的 ground truth 真能达到效果吗?通过可视化已学到的 Attention Map,发现它确实可以规避开部分遮挡区域,比如一个人拿着话筒讲话,Attention Map 会高亮人脸区域,绕开话筒区域。我们相信,如果采用更复杂的手段去清洗 Segmentation Label,实际效果将有更多提高。

FAN 在 WIDER Face 上曾经保持了半年的 state-of-the-arts。由于仅仅验证方法的可行性,FAN 没有叠加任何 trick,只在原始的 RetinaNet 上调整锚点框,增加我们的 Spatial Attention,因此 FAN 还有很大的上升空间。