尺度不变人脸检测:Group Sampling作者

尺度不变人脸检测:Group Sampling


本笔记记录针对尺度不变性的人脸检测策略Group Sampling,西交大、MSRA作品;这篇论文文笔流畅、公式不多、图表清晰、实验对比有针对性,模型性能也很好,是一篇不错的美文;

现阶段wider face上的性能已经刷到快饱和了(hard set可能还能继续提升点,但已经是很极端的场景了,如果集成各种tricks弄成一个超级模型,性能是棒棒的,但个人觉得是有过拟合的风险),各类方案为了百尺竿头更进一步,取得sota,各种tricks无所不用其极,导致整套方案相对来说是比较臃肿的;有些论文做了很多很多的消融实验,集成了很多有效的tricks(无效的当然就不会写在论文里面啦~~~),性能是上去了,但看着心里总是有点犯嘀咕的,一来不好复现、技巧性太强,二来也会质疑其普适性;

Group Sampling和Soft-NMS、SNIP等方案比较类似,发现了现阶段人脸检测中存在的一个问题,提出解决这个问题的方案,最终性能也比较好,没有太多的工程技巧,看完论文后也会想,嗯,要不我也拿来用用,也容易实现,实验结果很好,说不定在我的任务上也能有帮助呢对吧;


名词定义:

1 Group Sampling:本文提出的人脸检测算法,严格意义上并不能称为一个算法,应该是模型训练阶段的数据组织策略,将作为训练样本的anchors按其尺度划分到各个groups,并确保各个group间的训练样本总数量大致相当,正负样本数量比例相似,最终就能减缓训练阶段正负样本比例不均衡的困扰,可参见fig 1、2;


Abstract

1 为了检测图像中不同尺度的人脸,现有策略一般是图像 / 特征金字塔,图像金字塔的弊端就是多尺度图像多次输入模型,检测速度比较慢;特征金字塔仅需输入一次图像(也有结合图像金字塔 + 特征金字塔的多尺度输入方案,不在本次讨论范围内),但通过多层次、多尺度的金字塔特征图,达到检测不同尺度人脸的目标,SSD、FPN等就是此类方案,利用多层特征图生成特征金字塔,不同分辨率的特征图检测不同尺度的人脸,大尺度人脸在高层特征图上检测,小尺度人脸在低层特征图上检测;

2 但本文通过实验发现(table 1):其实根本不需要通过多层次的特征金字塔上的多个分支做人脸检测,仅使用单层feature map上的特征,做人脸检测也能达到sota;那么,问题出在哪?单层feature map做人脸检测,性能如何提升?

3 文中发现,对于大尺度范围跨度的人脸,影响检测器的性能之处在于训练样本的不均衡问题,特别是不同人脸尺度上(对应到不同尺度anchor)的正负样本均衡问题,才是导致模型性能有无提升的关键(the balance of training samples, including both positive and negative ones, at different scales is the key);

4 本文进一步提出group sampling策略,将anchors按尺度划分到不同的groups里面,使得训练阶段每个group内正负样本的数量大致是相同的,核心思想可参照4.2小节;

5 文中仅使用FPN最后一层特征(the last layer of FPN as features,如fig 1,指的是P2的finest layer),未使用图像 / 特征金字塔的多分支检测,再结合group sampling,就能取得sota;实验 + 分析部分,也能充分证明group sampling本身是有效的,最终无需bells and whistles,就在FDDB、wider face、FDDB上取得了sota;


1. Introduction

人脸检测的场景中,小尺度、大尺度范围内变化的人脸是一个很大的挑战;Fast R-CNN / Faster R-CNN based人脸检测算法,都使用单尺度的feature map来检测各种尺度的人脸,但在小尺度人脸上性能一般,两个原因:

1 人脸尺度小,经过若干层conv + pooling操作后,人脸特征已淹没在feature map(如conv 4_3,下同)中,无法进一步做高质量的人脸判别;

2 conv4_3上anchor对应的stride = 16,导致小尺度人脸gt bbox本身就很难匹配到足够多、尺度合适的anchors,这样匹配上的anchor不仅尺度与之不是最匹配,数量也较少,大部分anchors都归类于负样本了,训练过程中正负样本不均衡的问题将比较严重;----- S3FD、ZCC还是提出了等比例密度的anchor采样策略,能缓解此类问题;


那么,为了解决此类小尺度人脸,人脸大尺度范围内变化的问题,一些解决方案如下:

1 如HR、SNIP,使用图像金字塔完成训练、预测;

2 如IO-Net、HyperNet,联合高低层特征图完成训练、预测;

3 如U-Net,使用top-down、skip connection结构,融合高低层特征图,最终仅使用高分辨率的单张特征图预测(a single high-level feature map with fine resolution);

4 如SSD、FPN,高低层特征图都用上,多个分支、全家桶似地检测不同尺度的人脸 / 目标;

以上四种方案都很牛逼,各有千秋,方案4效果最深入人心,对小尺度人脸检测效果最好,用的比例也最高;


此前大家经验主义地认为,SSD、FPN-style等检测器性能如此之好的原因,是因为使用了多层次、多尺度的特征表达,对比在单层次、单尺度上的特征图,有更多的尺度不变性,也带来了更多的鲁棒性;但本文发现,最起码在人脸检测中,事实的真相并不是这样子的(有点扎心了~~),文中发现在特征金字塔上做目标检测,将会为每层特征图上生成不同尺度、数量各异的anchors(各个尺度的anchors还对应到不同的stride,而非RPN中不同尺度的anchor使用相同的stride),这才是特征金字塔上目标检测性能优于单尺度特征图上结果的原因,而非特征金字塔本身的特征表达能力强,在FPN的实验中,也没有重视这个问题;在本文实验中,发现如果在单尺度特征图上也使用和FPN一样,相同数量的anchors,也能取得差不多的性能;---- 起码fig 1 + table 1中的结果能支持这个结论;

基于以上发现,文中做了海量实验,最终定位到当前anchor-based人脸检测器中存在的一个大问题:不同尺度目标上对应的anchor数量是不均衡的,且各个尺度anchor间正负样本的比例更不均衡;文中使用了Faster R-CNN中的RPN、FPN作为baseline,各个算法流程对比如fig 1:并进一步计算了训练阶段,各个anchor尺度下正负样本所占比例(横坐标为anchor尺度),如fig 2(a)、(b);

fig 1中,64/16,64表示anchor尺度,16表示anchor所在特征图上对应的stride;

对RPN而言,单层特征图上提取特征并生成不同尺度的anchor,所有尺度的anchor对应相同的stride,小尺度anchor将很难匹配到合适尺度的目标(对比大尺度目标和大尺度anchor,小尺度anchor采样密度过低,过于稀疏,可参照S3FD、ZCC的解释),那么对于小尺度gt bbox而言,其匹配的anchor正样本就非常少,负样本数量繁多,最终性能也不会很好;

FPN使用低层高分辨率特征图检测小尺度目标,小尺度anchor专职操作于该feature map,如fig 1(b),P2上anchor的stride也不会与P3、P4、P5一刀切地保持一致,这样对比RPN,小尺度anchor的采样密度更高,负样本的绝对数量增加了很多(gives rise to several more times negative training samples for small objects than large objects),但anchor正样本的绝对数量也同步增加了,最终在coco、wider face上,FPN-based检测器性能优于RPN-based检测器,特别是在小尺度目标上性能更好;---- 也即,作者认为性能提升的关键,不在于特征金字塔的多层次多分支预测,而在于训练阶段正负样本的比例更均衡,以及带来的更多正样本;

再就是如fig 1(d)、fig 2(d),仅使用FPN的最后一层feature map操作(网络结构图显示的是finest layer,一个概念),分析正负样本的比例情况,可以发现与fig 2(a) RPN分布类似,仅在绝对数量上所有差异,此时小尺度anchor的采样密度高了,匹配的anchor数量也不错,但有一个问题:各个尺度anchor下对应的正负样本比例却不均衡了,大尺度anchor上正负样本比例明显更高,此类不均衡问题就冒出来了;那么FPN-finest最终在小尺度目标上的性能也很一般,原因也归结于:insufficient positive samples for small anchors;

再对比fig 2(d)、fig 2(e),多了group sampling策略(原理很简单:在训练阶段的每次迭代中,随机采样正负样本,保持各个尺度anchor间大致相同的正负样本比例和数量:randomly sample the same number of positive samples as well as the same number of negative samples at each scale during each iteration of the training process),参与训练的各个anchor尺度上,正负样本数量明显更加均衡了,那么FPN-finest-sampling还是很牛逼的,单层特征图上检测人脸,最终在wider face上性能优于FPN;

此外,文中进一步发现,Faster R-CNN的2nd-stage Fast R-CNN中同样面对着数据不均衡的问题(数据集中各个尺度上目标数量的分布是不均衡的),group sampling也可以应用于此,在对不同尺度的proposals经过RoI pooling提取特征和,再按尺度划分做一次均衡的采样(evenly sampling the features after RoI Pooling for different scales),还可以进一步提升检测性能;


本文贡献有三:

1 文中发现anchor不同尺度间的正负样本比例分布不均衡,而非特征金字塔上各个尺度feature map的特征表达能力,影响到多分支的检测性能,这点与之前对FPN的认知有点不一致;

2 文中发现anchor-based检测器的性能瓶颈在于:不同anchor尺度上正负样本比例分布不均衡;

3 本文提出group sampling,实现简单,确保了不同anchor尺度上正负样本的比例分布比较均衡,最终对检测性能有了较大的提升;


2. Related Work

Single scale feature for multi-scale detection

经典的如Fast R-CNN、Faster R-CNN,通过RoI pooling操作提取scale-invariant features,在单层、单尺度的feature map上检测多尺度目标,在性能 / 速度上达到了很好的平衡,但在小尺度目标上性能一般,文中认为原因出在对小尺度目标而言,缺乏足够数量的正样本参与训练(insufficient positive training samples),但group sampling可以消除此类弊端,并取得不错的性能提升;

Top-down architecture with lateral connections

top-down + lateral connection很经典,在U-Net、SharpMask、Stacked Hourglass Network中都性能棒棒哒,该结构的优势在于,将低层高分辨率细节信息丰富、高层低分辨率语义信息丰富的特征图,融合进一个single high-resolution feature map (优势互补),在本文的实验中也发现,top-down + lateral connection对人脸检测的帮助很大;

Multi-scale feature for multi-scale detection

SSD、MS-CNN、FPN,特征金字塔、多特征图分支、在各个尺度特征图上检测不同尺度的目标,FPN也使用了top-down + lateral connection来增强特征表达能力,类似SSH、S3FD中也有采用,但文中发现这些算法性能提升的关键之处在于,anchor的采样分布对小尺度目标更有利(得到了更均衡的正负样本数量),而非多层次化的特征表达能力;

Data imbalance

数据类别间不均衡的问题在机器学习数据挖掘深度学习等方向上已经存在了很多年,也取得了很多研究成果;经典做法就是对训练数据的重采样策略,对数据量较多的类过采样、数据量较少的类重采样;或者使用cost-sensitive learning,对数据量少的训练样本对应的loss,给予更高权重的loss;在目标检测任务中,训练样本尺度不均衡的问题,也可以认为是类别不均衡的一种,经典的方案如OHEM、focal loss等能解决部分问题;再如S3FD中发现了,对小尺度目标而言,缺乏足够数量的训练正样本与之匹配,因此也使用了更小的IoU阈值以提升小目标所对应的正样本数量;

本文发现,尺度分布不均衡问题在正负训练样本中都存在,group sampling恰好为此而生,专门解决该问题,并取得了不错的性能;


3. Motivation: Scale Imbalance Distribution

本节进一步分析两个影响检测性能的因素:特征金字塔上的多尺度特征表达、不同尺度anchor间的正负样本均衡;

文中使用ResNet-50主干网 + top down + skip connections,如fig 3:

各个block conv对应的输出特征表示为C2、C3、C4、C5,先通过1 x 1 conv归一化feature map通道数,与上一层up-sampled操作后的特征层做element-wise addition,输出P2、P3、P4、P5等feature map(P5操作方式有点不同,不再赘述),Pi / Ci有相同的尺度,各个anchor尺度为:{16,32,64,128},长宽比:1,最后结合fig 1、fig 2,对比如下:

1 RPN:仅使用C4做人脸检测,所有尺度anchor都在C4上分布并提特征,对应stride = 16;

2 FPN:经典的算法,{P2、P3、P4、P5}上做人脸检测,anchor尺度 = {16,32,64,128},对应stride = {4,8,16,32};

3 FPN-finest-stride:与FPN类似,但所有尺度anchor都只作用于P2上,anchor尺度 = {16,32,64,128},对应stride = {4,8,16,32};---- This is implemented by sub-sampling P2 for larger strides,还多了这么一句话,费解;进一步上采样P2?

4. FPN-finest:所有尺度anchor都只作用于P2上,各个anchor的stride = 4;

5. FPN-finest-sampling:与FPN-finest一致,但新增了group sampling,使得训练阶段不同尺度anchor上的正负样本比例保持一致;


5个方案在wider face上使用相同的训练、测试策略,并在val set上测试,得到的结论如下:

Using multiple layer features is little helpful

FPN、FPN-finest-stride(fig 2(b)、(c))差异在于:在单层feature map还是多层feature map分支上完成目标检测,结果如table 1,FPN在easy / medium / hard上AP性能分别为90.9%、91.3%、87.6%,FPN-finest-stride分别为:90.4%、91.0%、87.1%,差异不大,说明两个问题:

1 多尺度feature map上的人脸检测对性能提升有限;

2 单尺度feature map上做人脸检测也是可以的,性能是足够的;


Scale imbalance distribution matters

进一步对比FPN-finest-stride、FPN-finest,从fig 1中可看到二者区别:二者为不同尺度anchor设置的stride不一样,后者保持stride = 4不变;从实验结果table 1中有以下发现:

1 FPN-finest在easy / medium上性能很好,因为对比FPN-finest-stride,前者可以获取更多的大尺度anchor参与训练;

2 尽管各个金字塔层上都是stride = 4(anchor尺度为16 pixel的也是如此),但FPN-finest在hard上性能一般;

从fig 2中可知不同检测算法中,各个尺度anchor中正负样本数所对应的比例,对应的结果如table 1,结论如下:

1 FPN、FPN-finest-stride性能相当,从fig 2(b)、(c)中可知,二者不同尺度anchor上正负样本数量比例也类似,说明之前的一个假设是有道理的,即:在总体anchor数量相当,不同尺度anchor下正负样本数量比例类似时,二者性能差异不大;

2 从fig 2(c)、(d)中可知,FPN-finest-stride、FPN-finest的不同尺度anchor间正负样本的分布比例是不均衡的,但二者分布情况也存在很大的差异,FPN-finest-stride在小尺度anchor上有更多数量的负样本,因此hard上性能也更好点、FPN-finest在大尺度anchor上有更多数量的正样本,因此easy上性能更好点;

结论:检测模型的性能,应该是有受到anchor内正负样本数量不均衡的影响,这从fig 2(a)中RPN在大尺度anchor上,对比FPN-finest-stride有更多的正样本数量,最终在easy上性能优于其2%,也可以得到证明;

受以上分析的启发,本文提出group sampling方案来处理各个尺度anchor间正负样本分布不均衡的问题,从fig 2(e)中也可知,对比其他4个方案,FPN-finest-sampling在训练阶段得到的anchor间正负样本比例明显更加均衡,table 1中得到的效果也是最好的;


4. Group Sampling Method

anchor based人脸检测器训练阶段的要点:将gt bbox、anchors按照IoU比例,对anchors划分正负样本标签,本小节先介绍本文使用的anchor匹配策略,再介绍group sampling方案;


4.1. Anchor Matching Strategy

当前经典的gt bbox、anchor的两步匹配方案:

1st-pass:每一个anchor与所有gt bbox计算一遍IoU,若IoU大于阈值λ1,则该anchor被划为正样本,小于阈值λ2,则被划分为负样本;--- 这种操作对某些小尺度gt bbox不利,因为可能某个小尺度gt bbox并不能匹配到合适的anchor;---- 可结合某些代码学习下,简单点说就是,若anchor_i与gt bbox_big IoU_1 > λ1,且anchor_i与gt bbox_small IoU_2 > λ1,但IoU_1 > IoU_2,此时会优先匹配anchor_i与gt bbox_big IoU_1,二者相互配对,此时若gt bbox_small与其他任意anchor_j的IoU < λ1,此时就相当于没有与gt bbox_small匹配的正样本anchor了;再通俗点,anchor_i是女神,gt bbox_big IoU_1是高帅富,gt bbox_small IoU_2是高帅富三缺二,此时高帅富与女神配对是天经地义,高帅富三缺二就只能对女神望而兴叹了,其他任意anchor_j就是某个默默陪伴高帅富三缺二的妹纸,奈何人家不降低择偶标准,也只能落花有意流水无情,gt bbox_small就只能这样孤注身,所有anchor都不配对了;---- 当然了,现实情况并不是这样,高帅富三缺二。。。嗯,理论上只要不缺钱,拿下女神并不是难题~~~ 跑偏了,收;

2nd-pass:进一步为1st-pass中未与anchor匹配的gt bbox(也即gt bbox_small)寻找匹配的anchor,下面会进一步介绍;

先做些定义:

{pi}_i = 1~n:anchor的定义,i:anchor的indx,n:所有尺度anchor的总数量;

{gj}_j = 1~m:gt bbox的定义,j:gt bbox的dinx,m:所有gt bbox的总数量;

匹配阶段,先生成匹配矩阵M ∈ R^(n×m),表征gt bbox与anchor的匹配关系,且M(i, j) = IoU(pi, gj);在1st-pass中,每个anchor pi与所有gt bbox匹配一波,以寻找最大IoU,表示为:C(i) = max(1≤j≤m) M(i, j),此时,pi对应的标签L(i)为:

λ1=0.6、λ2=0.4:预定义阈值,1:正样本anchor,0:负样本anchor,-1:未被gt bbox匹配的anchor,训练阶段弃用;

刚才提到了,在1st-pass阶段,一些小尺度gt bbox可能不会匹配到任何anchor,2nd-pass就要避免此类悲剧的发生(也是本着对标注的gt bbox高效利用的原则,不然岂不是白白做标定了?make full use of all gt boxes to increase the number of positive training samples),那么对任意未被匹配的gt bbox gj,若anchor pi同时满足以下三个条件,也可以认为是匹配成功(三个条件,缺一不可):

1 该anchor pi此前未与其他gt bbox匹配;---- 烦请女神专一点,严禁脚踏两只船,高帅富三缺二卑微的尊严神圣不可侵犯;

2 IoU(pi, gj) ≥ λ2;---- 高帅富三缺二,你要是找不到女神就放低标准撒,还真准备单身一辈子啊;

3 j = argmax(1≤u≤m) IoU(pi, gu);---- 妹纸也可以权利反转,找一个最适合的gt bbox gj匹配;


4.2. Group Sampling

anchor与gt bbox匹配后,作为训练样本的anchor间,存在以下两种不平衡情况:

1 anchor内正负样本数量不均衡:负样本数量远超正样本数量,目标检测任务中很常见,毕竟大部分区域都是背景;

2 各个尺度anchor间,正负样本数量也不均衡:现有的gt bbox与anchor匹配策略,导致小尺度gt bbox要匹配合适的anchor,比大尺度gt bbox势必要付出更多的艰辛与妥协;---- 心酸,屌丝就只配跪舔白富美,不配拥有完美的爱情;


问题1在之前已经被发现,并广泛且深入地研究了,如OHEM,训练阶段控制正负样本比例为1:3(按score排序),但问题2被研究得偏少;

那么为了解决以上2个问题,group sampling(scale aware sampling strategy)应运而生,操作如下:

1 将所有参与训练的anchors按其尺度,划分为若干个groups;---- divide all the training samples into several groups according to the

anchor scale, i.e., all anchors in each group have the same scale;

2 对每个group内的训练样本做随机采样,确保数量相同,且每个sampled group内正负样本比例1:3,若正样本欠缺,那就提升负样本的采样数量,使得所有group间训练样本的数量保持一致;---- 这种情况下,anchor间正负样本比例不会完全一致了,会有些许可接受的波动;


公式表示为,Ps、Ns:尺度 s 下,随机采样的正、负anchor样本:

Ps ⊆ {pi|L(i) = 1, S(i) = s}

Ns ⊆ {pi|L(i) = 0, S(i) = s} ---- 比较好理解;

group sampling先确保|Ps| + |Ns| = N(常数:N),再在每个anchor尺度 s 上,确保3|Ps| = |Ns|,此时对每个尺度 s 而言,都能保证足够数量、且均衡比例的正负样本参与模型训练;----- 整篇论文核心思想就这一部分,还是比较容易理解的;


Grouped Fast R-CNN

Fast R-CNN的2nd-stage中,得到RoIs后,通过RoI pooling提取特征,再进一步做cls + reg,文中发现,各个RoIs尺度内,正负样本分布也是不均衡的(the scale distribution of the training samples for Fast RCNN is also unbalanced),也可以使用group sampling操作使得每个group内总训练样本数保持一致,且正负样本比例1:3,实验部分也证明Grouped Fast R-CNN是有效果的;---- anchor确实是有不同的尺度和分布,但要看代码层面是怎么操作的;


Relation to OHEM and Focal Loss

OHEM:bp操作中筛选top-k难分样本参与模型参数更新;--- keep the top K samples with highest training loss for back propagation;

Focal Loss:给予每个训练样本一个动态调整的权重;--- give each sample a specific weight;

整体上就是,对难分样本给予更高的权重,更多的关注度,对每个训练样本分别采用hard / soft manner(比较容易理解,OHEM是一刀切,focal loss按score动态地降低权重),也即implicitly / dynamic地处理数据不平衡问题,但group sampling属于explicitly地处理数据不均衡的方案;


5. Training Process

介绍训练数据集、损失函数、实现细节等;

Training dataset

wider face训练+测试,FDDB测试,不再赘述;

Loss function

分类还是经典的softmax loss,回归采用了新的loss,替代Smooth L1 loss:IoU based loss,IoU least square loss:

(pi, gj):匹配的anchor pi、gt bbox gj对;

对比smooth-L1 loss,新的损失函数直接优化的IoU ratio本身,这也是与我们按照IoU计算mAP的评估标准保持一致的(可参照IoU-Net),文中提到UnitBox中IoU loss function = - ln(IoU),但当IoU = 1时,UnitBox中IoU损失函数得到的梯度不为零(non-zero gradient,画个ln(x)函数图就明白了),但IoU least square loss不会,得到zero gradient,起码网络收敛也会更稳定;

Optimization details

基于pytorch,使用torchvision的ResNet-50作为主干网的预训练模型,在wider face train set上训练,lr、epoch、wd、syn SGD等参数参照论文;

数据增强:scale jitter + random horizontal flip,尺度扰动区间[1,8],从中随机选择数字n,图像将会按0.25 x n的比例做resize,再从resized后的图像中,randomly crop出一个子区域,确保其长宽不超过1200 pixels,最后加入到训练数据集中;

预测:基于图像金字塔的多尺度测试,所有检测结果合并后再做NMS,测试图像长边尺度不超过3000 pixels;


6. Experiments

分析影响人脸检测性能的因素,消融实验证明group sampling的性能,并基于FPN finest-layer在FDDB、wider face上取得了sota;


6.1. Factors Affecting Detection Accuracy

对fig1、2中介绍的五个检测器,做深入分析,五个检测器主要有2点差异:

1 anchor放置于feature map的不同层上;

2 anchor在feature map上的stride不同;stride越小,feature map层数越低,一般配置的anchor数量也越少;feature map尺度也是与原图尺度,按stride关系对应的,对FPN-finest-stride,特征图P2上对应的anchor尺度 = {16, 32, 64, 128},等价于原图上stride = {4, 8, 16, 32};

评估标准:在easy / medium / hard set上计算AP,但并不能反映检测器在各个特定目标尺度范围内的性能(原因是模型测试一般使用到了图像金字塔,我们无法确定一个128 x 128 pixel的人脸,是被预定义的128 pixel anchor检测到的,还是被图像金字塔中缩小版图像的16 pixel anchor检测到的),为了评估每个sub-detector的性能,分别对应@16,@32,@64,@128,结果如table 1:

结论如下:

Imbalanced training data at scales leads to worse (better) accuracy for the minority (majority)

anchor训练样本各个尺度间,正负样本数量均衡很重要,正样本数量越多,性能会更好点;FPN-finest、FPN-finest-stride唯一的差异在于anchor尺度(fig 2(c)、(d)),这样每个anchor尺度上对应的anchor数量不一致,正负样本比例也不一致,scale = 16下,stride一致,anchor数量一致,但table 1中@16对应的性能却不一致(65.6% 、72.2%),原因如fig 2,FPN-finest中@16下正样本数量对比其他尺度比较不足,性能自然比较弱;但在FPN-finest-stride中,@16下正负样本数量都比其他尺度多,性能自然好点;


Similar anchor distribution, similar performance

各个anchor尺度下,正负样本分布比例类似,性能也会类似;FPN、FPN-finest-stride性能接近,二者唯一差异体现在用单层、还是多层feature map做目标检测,从结果上来看,多层feature map上的检测并不能带了性能上的提升,那么另一个问题:是不是各个anchor尺度间,相似的anchor正负样本比例分布,导致了相似的性能?再对比RPN、FPN-finest,二者有一处比较类似:anchor大尺度下,正样本数量比较多,那么对比FPN,在@16下性能都比较弱,但@128下性能都比较强,也同样能说明相似的anchor正负样本数量分布,会有相似的性能;---- 这个例子的解释,我觉得有点牵强;


Data balance achieves better result

各个anchor尺度下,,正负样本分布均衡会带来更好的性能;fig 2中(a) ~ (d)四个算法都存在各个尺度anchor间正负样本分布不均衡的问题,FPN-finest-sampling对比FPN-finest有更均匀的正负样本分布,从table 4中也可以发现性能是更好的;


6.2. Ablation Experiments

The effect of feature map

table 2比较了使用不同feature map做人脸检测 + 是否使用group sampling下的性能,结论如下:

1 top down + lateral connection操作对模型性能有提升,从P3 / P4性能优于C3 / C4可知;

2 若使用高分辨率的低层feature map做人脸检测,会生成更多小尺度的训练样本,这有助于小尺度人脸的检测;

3 group sampling对所有feature map上做人脸检测的性能都有提升;本文最终在P2上输出检测结果;


The effect of the number of training samples N

在每个anchor尺度下,随机选择N个训练样本参与模型训练,如fig 4,结论如下:

1 N越大,模型性能越好;

2 N大于2048后,模型性能保持平稳,不再提升;

3 FPN、FPN-finest有点例外,随着N数量增大,性能下降了,原因也很简单,此时正负样本数量更不均衡了;


The effect of the proposed loss

检测器使用FPN-finest-sampling,对比两个经典loss + 本文提出的least square IoU loss,本文提出的loss更牛逼,同时也是因为直接优化的IoU,与评估标准mAP计算依照IoU方式保持一致,后两者性能明显优于Smooth L1 loss;


Comparison with OHEM and Focal Loss

本小节对比OHEM、Focal loss、group sampling三种方案,都用于处理训练数据不平衡;

OHEM:在所有训练样本中,动态选择B个highest loss样本参与模型参数更新,实验中设置B = 1024;

Focal Loss:与原论文保持一致,α = 0.25、γ = 2;

可以发现三者对模型性能提升都有帮助,特别是对小尺度人脸性能提升明显,但group sampling对模型在所有尺度上的性能提升是非常具有持续性和一致性的,最终All上性能也最好的;


6.3. Grouped Fast R-CNN

table 5使用FPN-finest-sampling为baseline,可以发现使用Fast R-CNN后性能有所提升,group sampling进一步提升模型性能,并在wider face hard上取得sota,充分说明二者可以完美结合;


7. Comparison with State-of-the-Art

与其他sota在FDDB、wider face上比较一下;

wider face:

使用group sampling策略训练的模型性能如fig 5,在hard set上领先还是蛮多的;

FDDB:

采用S3FD源码中提供的工具,将group sampling模型输出的矩形bbox转换为椭圆形bbox,最终在dis-continuous score上的性能如fig 6,ROC曲线面积最大,是sota;


8. Conclusion

1 本文仔细分析了影响人脸检测性能的因素,发现人脸检测任务中,根本不需要利用多层次的特征金字塔上的多分支检测,仅使用单层feature map做人脸检测也能达到sota,并定位到对于大尺度跨度范围内的人脸,影响检测器的性能之处在于训练样本的不均衡问题,特别是不同人脸尺度上的正负样本均衡问题,才是导致模型性能有无提升的关键;

2 本文提出group sampling策略,将anchors按尺度划分为不同的groups里面,使得训练阶段每个group内正负样本的数量、比例大致是相同的,核心思想可参照4.2小节;

3 文中仅使用FPN最后一层特征(last layer of FPN as features,如fig 1,指的是P2的finest layer),未使用图像 / 特征金字塔,再结合group sampling,就能取得sota,实验 + 分析部分,也能充分证明group sampling能带来性能的提升,最终无需bells and whistles,就在FDDB、wider face上取得了sota;

4 进一步地,将来会继续探索group sampling在通用目标检测器上的有效性;


论文参考

http://openaccess.thecvf.com/content_CVPR_2019/papers/Ming_Group_Sampling_for_Scale_Invariant_Face_Detection_CVPR_2019_paper.pdf

代码:

暂未公布(until 2019-09-10);

我爱计算机视觉
我爱计算机视觉

关注计算机视觉与机器学习技术的最前沿,“有价值有深度”,分享开源技术与最新论文解读,传播计算机视觉与机器学习技术的业内最佳实践。

理论SSD目标检测计算机视觉人脸识别
2
相关数据
来也科技机构

「来也」是国内领先的人工智能交互平台,由常春藤盟校(Ivy League)归国博士和MBA团队发起,核心技术涵盖自然语言处理(NLP)、多轮对话控制和个性化推荐系统等。公司已获得数十项专利和国家高新技术企业认证。 来也的愿景是通过AI赋能,让每个人拥有助理。C 端产品小来是智能化的在线助理,通过业内创新的AI+Hi模式,提供日程、打车、咖啡、差旅和个性化查询等三十余项技能(覆盖400w用户和数十万服务者),让用户用自然语言发起需求并得到高效的满足。B端品牌吾来输出知识型的交互机器人和智能客户沟通系统,帮助各领域企业客户打造行业助理。目前已经在母婴,商旅,金融和汽车等行业的标杆企业实现商业化落地。

https://www.laiye.com/
重采样技术

重采样是指根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

数据挖掘技术

数据挖掘(英语:data mining)是一个跨学科的计算机科学分支 它是用人工智能、机器学习、统计学和数据库的交叉方法在相對較大型的数据集中发现模式的计算过程。 数据挖掘过程的总体目标是从一个数据集中提取信息,并将其转换成可理解的结构,以进一步使用。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

上采样技术

在数字信号处理中,上采样、扩展和内插是与多速率数字信号处理系统中的重采样过程相关的术语。 上采样可以与扩展同义,也可以描述整个扩展和过滤(插值)过程。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

人脸检测技术

人脸检测(face detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、树木和身体等其他任何东西。有时候,人脸检测也负责找到面部的细微特征,如眼睛、鼻子、嘴巴等的精细位置。

图生成技术

根据给定信息信息生成图表。

推荐文章
暂无评论
暂无评论~