S3FD

SSD也可用于目标检测,但是对于小物体检测存在局限性,愿意在于feature map提取的语义没有深层语义。他有6个采样层:conv4_3,conv7_2,conv8_2,conv9_2,conv10_2,conv11_2(1 * 1 * 1024+3 * 3 * channel-stride降采样)最后SSD300一共可以预测38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=873238×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8732
个边界框,这是一个相当庞大的数字,所以说SSD本质上是密集采样。但是如果有比较密集的物体,由于下采样比较多,所以密集的小物体仍然检测效果不好。

这里就要来介绍一下S3FD:S3FD:SingleShotScale-invariantFaceDetector
他可以检测出密集的小人脸
为什么密集的小人脸检测不出来
S3FD
(a) 小的人脸经过下采样之后,变得像素值非常小,语义信息非常少,很难进行检测
(b) anchor和感受野都不匹配,他们对于小人脸来说都太大了。具体的来说,就是每一层的感受野要大于anchor的大小,这样才能用anchor检到人脸。
© anchor匹配也会出现问题,因为人脸的大小有连续性,但是anchor的大小是固定的,如果是tiny face 或者face的大小介于几种anchor之间(outer face)则匹配的anchor会降低
(d) 当face非常小的时候,会有大量的负样本:左边有149个负样本,右边有5个负样本,所以第一个检测层占据了大量的负样本。

为了解决上述问题,提出以下解决方案:

  1. 具有多尺度的anchor以及多个检测层
  2. 提出了anchor尺度补偿策略,提高小人脸召回率
  3. 引入maxout 背景标签,较少负样本
  4. 在AFW,PASCAL face,FDDB和WIDER FACE进行实时检测

Scale-equitableframework

对于RPN网络或者SSD来说,当face变得更小的时候,性能会急剧下降,为了提高对于人脸尺度的鲁棒性,论文提出了一个更宽范围的anchor检测层,它的步长从4像素增加到128,他确保了不同尺度的人脸具有足够的特征来检测相应的anchor层,确定anchor之后,基于有效感受野和等比例区间原则,设计了16~512像素的anchor尺寸。前者为了保证每个尺度的anchor可以与对应的感受野匹配,后者使不同尺度的anchor在图像上具有相同的密度。
S3FD
anchor面积要小于感受野面积,这样才可以保证anchor对于小人脸的覆盖率。
S3FD
如上图所示,其中(a)中黑色的整个区域表示theoretical receptive field (TRF),而白色的区域表示effective receptive field (ERF),可以看出ERF只是TRF的其中一部分。
(b)为与(a)对应的一个真实的例子,其中黑色虚线为整个的TRF,蓝色的虚线为ERF,红色的实线为anchor,可以看出大小上TRF>ERF>anchor
(c)为相同比例间隔的采样策略,就是本人中的anchor的stride为anchor大小的1/4

网络结构

S3FD

  1. 使用VGG16模型,从conv1到pool5,移除其它层,通过对VGG16的fc6和fc7的参数进行subsampling,将它们转换为卷积层,然后在它们后面添加额外的卷积层。这些层的尺寸逐渐减小,形成多尺度特征图。我们选择了 conv3_3, conv4_3, conv5_3, conv_fc7, conv6_2 and conv7_2 作为检测层。
  2. 与其他检测层相比,conv3、conv4和conv5具有不同的特征尺度。因此,我们使用L2归一化将它们的范数分别缩放到10、8和5,然后在反向传播过程中学习尺度。
  3. 在预测层中会预测人脸与背景,将其进行二分类,但是在作为预测的最低层的layer(即feature map大小为160*160)下面可以看到预测出来的特征维度为Ns+4,不是2+4,后续加上了max outbackground label
  4. 使用softmax用于分类,smooth L1用于回归

Scalecompensationanchormatchingstrategy

如图一开始的©所示,平均匹配到的anchor数量约为3,太少;与anchor size差距较远的人脸匹配成功的数量尤其少(tiny face + outer face)。为了改善这种状况,主要采取了下列两个阶段:
(1)将原有的匹配阈值由0.5降到0.35,以此来增加更多的成功匹配。 (但该策略只能提高平均匹配数量,但不能改善tiny face和outer face。)
(2)选出所有IOU大于0.1得到anchor并进行排序,从中选TOP N。(N为平均成功匹配数量。) 该阶段一定程度上解决了tiny face和outer face。
S3FD
可以看到,匹配的anchor数量也提高了,tiny face和outer face也解决了一部分。

Max-out background label

基于anchor来检测人脸是一个二分类问题,但是这回出现大量的负样本,尤其是当anchor比较小的时候,有75%的负样本来自于conv_3。
S3FD
建议在最底层应用一种更复杂的分类策略来处理来自小anchor的复杂背景。这里背景太过复杂,将其分成一类太简单粗暴了,于是将背景细分为多个类别,人脸作为其中一类。这样复杂的背景可以被正确分类的概率就提升了。为了去除这些背景,对每个最小的anchors,将背景分为了m类,在计数每个位置类别时,得到m类个背景的概率,然后选择一个概率最大的分数作为最终分数用于计算Soft-Max Loss。S3FD
在conv3_3层(小目标产生最多的层),输出通道数为(Ns+4),其中 Ns>2,而其它所有检测层的输出通道数均为“2+4”,表示二分类和4个bounding box的坐标。Ns中包含了1个正样本的概率以及Ns−1个负样本概率,从负样本概率中选出最大值与正样本概率一起完成之后的Soft-Max二分类。 这种看似多余的操作实际上是通过提高分类难度来加强最后识别的能力。最后正负样本为1:3

Training

  1. 颜色失真随机裁剪
  2. 随机裁剪(裁出图片中部分人脸)
  3. 水平翻转

Loss function

S3FD

最后的测试结果,尤其是hard等级,有了很大提升。