人脸检测算法总结:S3FD

时间:2024-03-25 17:57:08

人脸检测算法总结:S3FD——Single Shot Scale-invariant Face Detector


S3FD是中科院自动化所的一篇文章,当时一出现就刷新了wider face榜单,比上一篇提到的SSH略高一点。这个算法主要是解决小人脸的检测问题,思路和SSD类似(之前提到的SSH也和SSD类似),多个不同的featuremap预测不同的人脸,但是没有想FPN一样,将featuremap 连接。

Introduction

S3FD算法受启发于anchor-based检测算法,通过一些预定义的anchor来分类并且回归检测目标,这些预定义的不同尺度、长宽比的anchor在feature map上密集采样可以得到目标的所有可能分布区域。anchor可以向FasterRCNN一样定义于一个feature map,也可以和SSD定义在多个feature map上,anchor的spatial size(空间位置)和stride 决定了anchor的位置和采样间隔。anchor-based检测器在复杂场景下更加鲁棒,检测速度和目标大小无关,但唯一的弱点是:目标越小,检测器的性能会急速下降。

人脸检测算法总结:S3FD
如上图所示,anchor-based检测方法存在问题的原因

  • 1人脸太小导致的特征较少
  • 2人脸大小和anchor以及感受野的大小不匹配
  • 3默认的离散anchor尺度,真实人脸尺度gt确是连续的,anchor对真实人脸gt的匹配度不够,造成了小人脸和非尺度范围内的人脸匹配度不高。
  • 4小尺度anchor会在背景上引来过多的非人脸的干扰。

Biased framework

anchor-based检测器漏检小目标的原因如下:

  • 1预定义的anchor,即使是位于最低的特征层,其stride依然过大,小尺度人脸目标依赖于这些最底层的特征,经过下采样只有,目标特征信息损失过大
  • 2小尺度目标,感受野,anchor的尺度不匹配。
    为了解决上述问题,提出了scale-equitable-face detection framework。将anchor预定义于不同feature map,stride尺度从4-128pix。以确保不同尺度的人脸目标可以提取足够多的特征用于下一步检测。此外,依照有效感受野,在不同featuremap上为anchor定义尺度范围为16-512pix,并采用等比例采样方式确保不同feature map上anchor的采样密度一致anchor的尺度也匹配对应featuremap感受野尺度

anchor matching strategy

在anchor-based检测器中,anchor预定义是离散的(16,32,64,128,256,512),而自然场景下人脸的尺度是连续的,会造成某些离群尺度的人脸box匹配较少,甚至匹配不到合适的预定义anchor,造成了离群人脸的低召回率。
为了解决这个问题,提出了scale compensation anchor matching strategy,其实操作很简单,1.把anchor与gtbox的iou阈值调低,2.阈值调低之后,把所匹配的anchor按iou排序,选择topN。

Background from small anchors

将anchor调小并密集采样,这些小的anchor带来海量的background negative anchor,导致过多的误检。为了解决这个问题,文章提出了max-out background labels

S3FD

人脸检测算法总结:S3FD
结构及流程

  • 检测在多层独立进行,类似于SSD
  • 有Normalization layer,作者认为conv3-3、conv4-3、conv5-3的feature map**层尺度不同,做每个通道feature map的element-wise L2正则化,有利于更好的训练和收敛,注:之后还有个re-scale的操作,类似BN的alpha、gamma参数;
  • 输出是6维,4(坐标)+2(分类)
  • conv3-3输出维度为Ns+4,Ns = Nm + 1,1对应face的分类,Nm对应maxout bg label,以去除小目标的误检
  • fc6 和 fc7 是vgg16的全连接层,这里进行了改进,调整为卷积层,并且实现stride为2的降采样。

Scale equitable framework
将anchor定义于不同的feature map,stride 尺度从4-128pix,以确保不同尺度的人脸目标可以提取足够多的特征用于下一步检测。在确定anchor在feature map上映射的位置后,我们依照有效感受野的大小,采用等比例的采样方式,确保不同feature map上anchor的采样密度一致,anchor的尺度也匹配对应feature map上有效的感受野尺度。
Designing scales for anchors:为anchor预定义合适的尺度
人脸检测算法总结:S3FD

  • anchor的长宽比为1
  • stride是anchor的1/4
  • RF是根据卷积核算出来的
    人脸检测算法总结:S3FD
    理论感受野和有效感受野
    理论感受野:TRF,theoretical receptive field,表示理论上输入图像区域对feature map上某个点值的影响;对于feature map上某个点,TRF根据conv的win_size和stride计算出来,一般比较大,如fig 3(a)黑色矩形框;但最终只有以TRF中心的高斯区域内输入点贡献值比较大,且贡献值按二维高斯分布向外逐步降低;
    有效感受野:ERF,effective receptive field:只有一部分(如高斯分布区域)对feature map上某个点的值有较大的贡献;如fig 3(a)白色圆形区域;基于以上理论,anchor应该匹配ERF
    Equal-proportion interval principle:EPIP,等比例采样策略
    epip保证了不同feature map上不同尺度的anchor有相同的采样密度。进而在不同尺度的人脸gt可以近似匹配相同数目的anchor。

Scale compensation anchor matching strategy

作者认为人脸的尺度是连续的,但预定义的anchor尺度是离散的,导致了小尺度人脸和离群人脸(gtbox不在anchor附近)没有anchor与它们匹配。图1c中发现,1每个人脸box的匹配的平均anchor数为3,2人脸gtbox与anchor尺度相距较远的话,很有可能无法被匹配。
为了解决这个问题,提出了SCAMS(Scale compensation anchor matching strategy),具体操作为
1:使用常规的fast rcnn的anchor与gt box的jaccard overlap匹配策略,但降低iou阈值至0.35,这样可以提升每个gt bbox匹配的anchor数目N;
2:将anchor与gt bbox的iou阈值降低至0.1,降序选取top N匹配的anchor作为与该gt bbox匹配的anchor;N为step1中的N;注:0.35~0.1 thres的降序排序;
人脸检测算法总结:S3FD
如图所示,经过scams之后,小尺度人脸的anchor数量提升,离群人脸目标所匹配的anchor数量也明显提升。进而提升小尺度人脸和离群人脸的召回率。

Maxout background label
为了检测出小尺度的人脸,之前的操作是设置小的anchor,并做了密集采样,并且将anchor与gtbox匹配的阈值降为0.35,这样做的坏处就是带来了大量的background FP。如下图所示,小尺度anchor的conv3-3带来了大量的anchor,同时贡献了大部分的false positive。
人脸检测算法总结:S3FD
为了解决这个问题,提出了新的分类策略来降低小尺度人脸anchor的bg fp。策略其实也很简单,针对anchor输出Nm个background标签得分,但是只选择最大score作为输出,然后再和fgscore组合成两个标签计算softmax。
只在conv3-3层应用这个分类策略,解决小anchor的false positive问题。MBL策略可以为S3FD的带来一些局部最优信息,进而降低小尺度人脸的false positive rate。

Training

在widerface上训练,进行了数据增强:color distortion, 随机裁剪, 尺度变换和水平翻转。

损失函数
损失函数和Frcnn一致,RPN的多任务优化。
人脸检测算法总结:S3FD
Lcls分类loss:softmaxloss
Lreg:smooth L1回归loss
λ平衡系数。
hard negative mining
anchor匹配之后,发现大部分未被匹配的都是负样本,导致正负样本不平衡,因此采用难例挖掘,将负样本的loss值降序排序,再筛选负样本以确保正负样本比例3:1。bglabel中的Nm为3,lossfunction中的λ为4.

对比试验
人脸检测算法总结:S3FD
baseline包含以下两个
RPN-face:RPN网络,6个尺度
SSD-face:SSD网络。anchor一致
S3FD(F):仅包含EPIP
S3FD(F+S):包含EPIP+SCAMS
S3FD(F+S+M):包含EPIP+SCAMS+MBL
对比:
rpn:anchor集中在最后一层,且stride为16,不利于检测小尺度的人脸,而且不同尺度的anchor共用相同的感受野
SSD:最小的stride为8,还是过大,且anchor与感受野的尺度不匹配。
S3FD(F):证明了密集采样的优势
S3FD(F+S):各种尺度人脸的高召回率,特别是离群人脸。
S3FD(F+S+M):解决了bgfp的问题。

结论

S3FD解决了anchor-based的检测器在小尺度人脸性能下降的问题。主要有三个创新点。
1.1 提出EPIP:采用类似SSD的方案,在多层feature maps上预定义多尺度的anchor,并根据合适的anchor尺度,以确保所有feature map上anchor采样密度保持一致;

1.1.1 scale-equitable framework with a wide range of anchor-associated layers:SSD的多层feature maps设置anchor并预测人脸目标的做法;

1.1.2 a series of reasonable anchor scales to handle different scales of faces:就是设置合适的anchor尺度和stride,确保不同层的anchor采样密度保持一致;

1.2 提出SCAMS提升小尺度人脸的召回率;

1.3 提出MBL降低conv3_3上检测小尺度人脸的false positive rate;

本文参考:https://zhuanlan.zhihu.com/p/36317597