s3vm与tritraining_S3FD论文解读

论文题目:S3FD: Single Shot Scale-invariant Face DetectorS$^3$FD: Single Shot Scale-invariant Face Detector​arxiv.orgsfzhang15/SFD​github.com9146124a38e3f9163c9b831796452ab3.png

作者团队,来自于中科院自动化所(CASIA),一作Shifeng Zhang(张士峰),看见没,这就是大佬。导师是Stan Z. Li(李子青老师),大牛、巨擘、泰山北斗、执牛耳者(没文化,词穷了,[捂脸])。

废话少说,干货盛好了端上来。

Abstract

人脸不好检测,尤其是小尺度人脸。特别是anchor-based的算法,在small face上简直是灾难级的表现。所以本文的工作主要是基于anchor-based算法,做了3点改进,在small face方面取得了显著进步。提出scale-equitable的检测框架来处理不同尺度的人脸。基于equal-proportion interval principle设计anchor尺度并将其应用在更多的层上,这个principle主要是根据effective receptive field原理设计的。

通过scale compensation anchor matching strategy来提高small face的recall。

通过max-out background label以减少small face的false positive。

虽然不是特别惊人的改进,但是最后在AFW、PASCAL face、FDDB和WIDER FACE 等数据集上都达到了SOTA,并且达到36fps的速度,好厉害。这说明工作做地很本质,解决了实质性问题,不需要太花哨的操作。

1. Introduction

先说了下VJ的工作(看来真的很经典),后人只能在此基础上设计更加robust features 和training effective classifiers(前人挖坑,后人填坑)。但是,由于VJ这套算法是组合式的,各个模块太分离了,所以整体的结果是次优的(很有道理)。

然后又说最近CNN很爆炸,各种SOTA,face detection继承自generic object detection。接着说起了anchor-based object detection methods,引入anchor带来好处的同时当然也带来了各种弊端。比如,anchor因为利用先验太多了,导致如果目标的scale变小,模型的性能将会急剧下降,主要分析了下面几条原因。如下图(a), The lowest anchor-associated layer使用的步长太大,比如SSD网络使用的是8个像素,Faster R-CNN使用的是16个像素,在这些经典的目标检测网络中,小尺度的人脸被严重缩放压缩,通过网络提取的特征信息大部分都被丢失,最后检测精度较低。 另外还有如下图(b)所示,anchor的尺度和感受野相互不匹配,而且都太大而不适宜检测small face。

如下图(c), 离散尺度的anchor预测连续尺度的人脸,导致tiny face和outer face均不能获得足够多的匹配。

如下图(d), 小的anchor在进行匹配时会面临更多的negative,不利于训练,检测。

问题分析得很清楚,本文的主要工作也是围绕上述几个问题来展开的。

2. Related work

VJ good,but sub-optimal。

CNN:Cascade CNN、MTCNN和UnitBox。

本文inspired by RPN and SSD。

3. Single shot scale-invariant face detector

大致框架如上图,貌似改进自SSD,主要工作包括以下四个部分。

3.1. Scale-equitable framework

Constructing architecture:网络结构的改进就不扯了,主要说一下最后head的输入。conv3_3对应head的confidence的输出是4维(其中前3个维度代表背景,最后一个是foreground),其余的head预测都为2维,指代b/g。

Designing scales for anchors:

Each of the six detection layers is associated with a specific scale anchor to detect corresponding scale faces(这是由感受野决定的),设计的准则如下。Effective receptive field:有效的感受野ERF,不是感受野内的每个pixel都是同样重要的,总的来说,中央的神经元起到的作用是比四周的大的,所以anchor应该是要比感受野小的来匹配有效感受野,上图(a)中,明显中间所占权重要大,所以不能参考TRF(Theoretical Receptive Field)。

所以anchor要小于TRF,接近于ERF。

Equal-proportion interval principle:detection layer的stride大小决定了anchor在input image上的间隔。以conv3_3为例,stride是4(设置得密一些,保证不丢脸),anchor是16*16这就表明了在原图上每隔4个pixel有一个16*16的anchor。我们就把这个anchor的scale设计成了stride的4倍,这样就能保证,不同scale的anchor在原图上有同样的密度,如上图(c)所示。这样不同scale的脸能尽可能匹配到同等数目的anchor(保证丢脸程度一样)。最后,anchor设置结果如下表所示。

3.2. Scale compensation anchor matching strategy

这是针对的人脸检测,所以anchor的匹配策略也要改变,不能照搬。anchor的scale是离散的,但是人脸的scale是连续的。这边引入了两个阶段的匹配策略,把SSD原有的匹配阈值从0.5降到0.35,旨在增加更多成功地匹配。

这样肯定还是有一些face没有anchor匹配,我们就选择和这些face的iou>0.1的anchor,排序完之后选择topN个,作为match这些face的anchor。看一下第一阶段,每个face平均匹配到多少anchor,这边N就设置为整个平均数,最后N=3。

3.3. Max-out background label

这个主要是解决小人脸的high false positive rate,显然尺寸小的anchor占了绝大比例,这也是false positive的主要来源。我们可以发现,anchor主要集中在conv3_3,基本也是以1/4在下降(很合理)。

在S3FD中,anchor-based人脸检测方法,是一个二分类问题,来决定是否是face还是background。但是这个anchor的分类是一个unbalanced问题,只有极小的一部分是positive。比如说,一个640x640的image,总共有34125个anchor,有大约75%的来自于conv3_3,这也是与最小锚点相关的层(16x16)。这些小的anchor对于那些false positive的样本做出了极大的贡献。因此,通过平铺小的anchor来提升小面孔的检出率,必然会导致小面孔的false positive rate(把不是人脸的看成人脸)。为了解决这问题,在这个conv3_3的detection layer上应用了max-out background label,对于背景预测了个

equation?tex=N_m分数,选择最高的作为final score。其中

equation?tex=N_m = 3, 相当于尽量让small anchor被预测为background,以此来减少false positive rate。具体操作,如下图(b)所示。

3.4. Training

Training dataset and data augmentation:Color distort、Random crop和Horizontal flip

Loss function:

equation?tex=L%5Cleft%28%5Cleft%5C%7Bp_%7Bi%7D%5Cright%5C%7D%2C%5Cleft%5C%7Bt_%7Bi%7D%5Cright%5C%7D%5Cright%29%3D%5Cfrac%7B%5Clambda%7D%7BN_%7Bc+l+s%7D%7D+%5Csum_%7Bi%7D+L_%7Bc+l+s%7D%5Cleft%28p_%7Bi%7D%2C+p_%7Bi%7D%5E%7B%2A%7D%5Cright%29%2B%5Cfrac%7B1%7D%7BN_%7Br+e+g%7D%7D+%5Csum_%7Bi%7D+p_%7Bi%7D%5E%7B%2A%7D+L_%7Br+e+g%7D%5Cleft%28t_%7Bi%7D%2C+t_%7Bi%7D%5E%7B%2A%7D%5Cright%29

Hard negative mining:又是1:3,3真是一个神奇的数字,嘿嘿。

4. Experiments

Ablation study真厉害,hard明显提升,small face效果真好,hard一下子猛涨10个点也说明anchor的设置很关键啊

Evaluation on benchmarkAFW都被打爆了。。。PASCAL face也快顶不住了。。。WIDER FACE 还能抗一抗。。。

DEMO853个脸,谁来数一数???

思考文章并没有惊天动地的改变,但是在性能上却又亮眼的成绩。这说明算法的改进很本质,张士峰大佬的实验工作很扎实,值得我们学习。

Anchor和feature的匹配还能再挖一挖,像FASF一样?

好奇free-anchor在人脸上的表现,后面再看看相关论文,分享给大家,嘿嘿。

参考sponge:S3FD代码及论文解读​zhuanlan.zhihu.com15ec876b445883da657f17518a8ab77a.png尺度不变人脸检测器(S3FD-Single Shot Scale-invariant Face Detector)​cloud.tencent.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值