论文题目:《HAMBox: Delving into Online High-quality Anchors Mining for Detecting Outer Faces》
论文地址:https://arxiv.org/abs/1912.09231.pdf
发表时间:2020 CVPR
key words
- out faces::异常人脸,由于人脸尺度过小或者人脸尺度与anchor尺度不匹配,造成训练时匹配不到足够多的Anchor(小于阈值K),影响了这些人脸的召回。
- Online High-quality Anchor Mining Strategy: 在线高质量锚框挖掘策略。
- high-quality anchor: 如果某个 Anchor 经过网络回归后的框与人脸框的 GT 的i IoU 大于0.5,则称其为高质量 Anchor。
- matched anchor: 在训练时,与目标人脸的 IoU≥0.35 的anchor。
- unmatched anchor: 在训练时,与目标人脸的 IoU<0.35 的anchor。
- PBB: represents ‘Predicted Bounding Boxes’,即Anchor 经过回归后的框。
- CPBB: Correctly Predicted Bounding Boxes,Anchor 经过回归后能与 GT 的 IoU≥0.5,则称其为CPBB,即 matched high-quality anchor 回归后的框。
Abstract
在较大位姿和尺度变化下的人脸检测器的定位,有效的anchor设计和匹配策略是关键。但是作者发现,在前向过程中(预测时),超过80%的正确的预测框(CPBB:IoU>=0.5)都是从未匹配的 anchor(IoU<0.35)中回归来的。这表明了未匹配的锚框具有出色的回归能力,但是现有的方法中并没有对他们进行学习。
作者提出了HAMBOX,一种在线高质量锚框挖掘策略。
1. Introduction
人脸检测的难点: 人脸的aspect ratio变化很小 ,但是scale尺度变化很大。
目前SOTA的算法是用FPN+dense anchor的方法,但是anchor的增加会使得推理 消耗大大增加,并且anchor的aspect也需要设计。 S 3 F D S^3FD S3FD在每一个stage使用的单一尺度和scale策略,但是选择合适的aspect ratio是个很大的挑战
- the average number of anchors matched to each face: Figure 1(a)表明可以通过增加 Anchor 的尺度来增加 GT 匹配的 Anchor 的数目(小目标匹配的 Anchor 数量少,大目标匹配的 Anchor 数量多)
- the proportion of all faces that can match the anchors: Figure 1(b) 则表明,单纯的增加 Anchor 的尺度到后期会导致匹配失败(一般是小目标无法匹配)的数量增加。
每个人脸所匹配的anchor和锚框匹配的准确比例不平衡。(尺度越大,每个人脸能匹配的anchor越多,但是准确度下降)
S 3 F D S^3FD S3FD通过降低匹配阈值来强行为 outer face 匹配足够数目的 Anchor;EMO 论文中则通过 Expected Maximum Overlap 策略来获得合适的 anchor stride and receptive field。然而,通过实验观察到,这些补偿方法其实引入了大量低质量的anchor,其实表现也不是很好,见 Figure 2(b)
对于(a)IoU累计密度曲线:横坐标是匹配阶段 high-quality anchor 与 GT 的 IoU,纵坐标是累计概率分布F(x)。可以看到匹配 IoU≤0.35 的 high-quality anchor 占所有 high-quality anchor 的 89%。也就是说,如果以 0.35 为匹配阈值,所有 Anchor 经过 regression 之后,high-quality-anchor 中只有 11% 的框是来源于匹配的Anchor,89% 的高质量 Anchor 竟然来源于未匹配的Anchor(这些 Anchor 实际上并没有参与回归训练)!
作者提出了两点理解:
- 大部分经过补偿的锚是低质量的。如(b),经过补偿后IoU才0.42左右。就是说补偿方法只能使检测异常的人脸匹配更多低质量的anchor而不是高质量的。并不能提高召回率。
- 许多不匹配的anchor在训练阶段有着很强的定位能力。如图(c),65%的高质量anchor是不匹配的anchor。图(d)中,以 0.35 为阈值的话,能匹配到 1个 Anchor 的 GT 数量是 2492,这些匹配的 Anchor 经过回归后能与 GT IoU≥0.5,即 matched high-quality anchor 的数量变成了 1968,也就是说有 524 个 GT 由于原始匹配的框质量较差,难以通过回归网络来提升 IoU,因此无法召回。最后经过NMS就还剩343个。被抛弃的1968-343=1625张人脸,是被unmatched anchor召回,被负样本的分数抑制了。这1625张人脸不可能是被matched anchor内部互相抑制掉的,因为如果被matched anchor抑制,则肯定会被 matched anchor召回。因此,nms消失的部分,只可能是被unmatched anchor作为负样本给抑制掉了。结果表明,不匹配锚点的CPBB抑制了匹配锚点的CPBB。不匹配的锚具有很强的回归能力。
所以作者提出了HAMBox方法。他们的想法是持续挖掘高质量的锚点,以帮助外表面补偿更多的锚点,并具有精确回归的能力。图2(b)和图3显示了我们的补偿锚的质量比标准锚匹配策略的补偿锚有一个显著的提高。在挖掘出高质量锚栓后,我们进一步提出回归感知focal loss的方法,以有效地对新补偿的高质量anchor进行加权。
总的来说HAMBox创新点:
- 一些不匹配的锚具有很强的回归能力,而当前的回归分支忽略了学习不匹配的锚。
- 提出了一种在线高质量锚点挖掘策略(HAMBox)来抽取高质量的锚点进行训练。借助HAMBox,我们可以在训练阶段为异常脸提供足够有效的锚点。
- 有了高质量的anchor,用回归感知focal loss帮助面部检测器灵活的训练。
- 提高了2.9%和2.3%的AP在WIDERFACE的验证集和测试上。
2. Related Work
最近,最先进的面部探测器在极端变化下的检测主要有以下三个方面:
- image pyramid
- feature pyramid
- context module
3. Online High-quality Anchor Mining
3.1 High-recall Anchor-based Face Detector
使用RetinaNet作为baseline。backbone用ResNet-50,使用conv2层输出作为feature map,因为数据集40%的人脸匹配在这层。在每个预测层只设置了一个scale和aspect ratio的锚框。优点是相对于能匹配98.46%人脸的多scale多ratio的设置,单锚框能匹配95%以上人脸,减少计算量,并且使得模型能够训练出有效得anchor regression。缺点就是能匹配人脸得anchor数量太少,鲁棒性不够。但是这个问题能够得到解决。
3.2 Online High-quality Anchor Compensation Strategy
接下来就是如何确定anchor和与它最近的GT和background的问题。
目前主流的方法是:首先,一张脸匹配与它IoU超过一定阈值的所有anchor,没有匹配到anchor的则选择与它IoU值最大的anchor(降低模型性能的杀手,见图(c))。
高质量补偿策略:
- 首先,还是一张脸匹配与它IoU超过一定阈值的所有anchor,但是没有匹配到anchor的人脸( F o u t e r F_{outer} Fouter)不会补偿给它任何anchor。
- 其次,在训练的正向传播结束时,每个锚点通过其相关的回归坐标计算回归的bbox( B r e g B_{reg} Breg)。
- 最后,对于每个outer face,我们计算它与 B r e g B_{reg} Breg的IoU值,然后对每张outer face补偿N个unmatched anchor。记所有的 I o U s e t IoU_{set} IoUset, 这些补偿的N个anchor通过下面方式选择:
a). IOU要大于阈值T(在线正anchor匹配阈值)
b). 对(a)中得到的anchor进行排序,选择IOU最大的top-K 个anchor做补偿。K是一个超参数,表示每个outer face能matched的最多anchor数目。使用M表示在步骤1中已经匹配的anchor数目。如果N > K-M,则选取top(K-M)个unmatched anchor来补偿。
Algorithm:
输入:B,X,T,K,D,L,R,A
B 是一组回归后的框,格式为(x0, y0, x1, y1)
X 是一组ground truth, 格式为(x0, y0, x1, y1)
T 是上述算法中在线anchor挖掘中定义的阈值
K 是每个outer face能匹配到的最多anchor数目
D 是一个字典,key是ground_truth, value是HAMBox第一步中,该gt能match到的anchor数,即matched_anchor的数目
L 是一个字典,key是anchor index, value是该anchor在HAMBox中最终分配的label
R 是一个字典,key是anchor index, value是该anchor经过普通anchor matching后的编码后的坐标
A 是一个字典,key是anchor index, value是该anchor的坐标,格式为(x0, y0, x1, y1)
输出:经过HAMBox后的R和L
// 伪代码见下
for x_i in x do # 对于每个人脸
if D(x_i) >= K then # 如果检测到的matched_anchor超过K
continue # 就进行对下一个人脸的处理
end if
compensatedNumber = K - D(x_i) # 不超过K,计算还剩需要几个补偿的anchor
onlineIoU = IoU(x_i, B),AnchorIdx # 计算人脸和回归后的bbox的IoU,并记下idex
sortedOnlineIoU = sorted(onlineIoU, key = IoU, reverse = True) # 从高到低排序
for IoU, AnchorIdx in sortedOnlineIoU do # 对于每一个bbox
if(L(AnchorIdx) = 1) then # 如果它label为1,即正样本,则处理下一个
continue
endif
if(IoU < T) then # 如果被分成为background,但是IoU小于在线挖掘阈值,丢弃,处理下一个
continue
endif
compensatedNumber -= 1 # 不满足上述,则把这个bbox作为一个补偿anchor
L(AnchorIdx) = 1 # label变为正样本,以免再次被用到
R(AnchorIdx) = encoded(A(AnchorIdx), x_i) # 对该bbox编码
if compensatedNumber = 0 then # 补偿框补偿完,处理下一个x
break
endif
endfor
endfor
return R, L
3.3 Regression-aware Focal Loss
提出了一种回归感focal loss的方法,以给予那些通过在线高质量锚点补偿策略得到的outer face高质量锚点更合理的权值 。
两点改进:
- 考虑到新型补偿锚的定位和分类之间的薄弱联系,我们为补偿锚添加了基于IoU的动态权值。
- 我们将同时满足以下三个条件的锚定义为忽略锚(训练时不优化):
- 属于高质量anchor的,即经过回归后GT的IoU≥0.5。
- 在anchor匹配的第一步骤时,label被分配为0 。
- 最后也没有被补偿成正样本的 anchor(step2 也还是没能转正)
最后的LOSS为:
此外,在位置损失的基础上增加了对新型补偿锚的监督,具体公式如下: