sr,sample redistribution) ,它增加了最需要阶段的训练样本;cr,Computation Redistribution) ,它在模型的骨干、颈部和头部之间重新分配计算。准确的来说,这里就是考虑直接利用分类网络的主干部分进行特定规模的人脸检测可能是次优的。所以本文提出:参考
regnet来进行网络搜索,在限定整体模型计算量的情况下,合理的分配每一个 block 的计算量,找到最佳的分配方案;同时,针对特定环节(Stride=8)提升正样本的采样数量来优化模型的训练过程,提升精度。这里有就是前面提到的计算重分配和样本重分配。
对于VGA分辨率(640 * 480),大部分wider face的人脸尺寸小于32 * 32,因此采用浅层来进行检测小目标,为了给这些浅层提供更多的训练样本,提出了 采用大裁剪策略的 样本重分布 的方法。
无
WIDER FACE由32,203个图像和393,703个人脸边界框组成,在比例、姿势、表情、遮挡和照明方面具有高度的可变性。
这里来看一下数据的整体分布情况。

图3. 在WIDER FACE验证数据集上的累积人脸比例分布(简单 ⊂ 中等 ⊂ 困难)。当长边固定为640像素时,大部分容易的人脸都大于32×32,大部分中等的人脸都大于16×16。对于困难集,78.93%的脸小于32×32,51.85%的脸小于16×16,13.36%的脸小于8×8。

使用大裁剪策略后,小面孔(< 32×32)的数量明显增加。


对于真实世界的人脸检测系统,为了避免频繁的虚警,需要高精度(例如>98%)。如图10(d)所示,当阈值分数提高到98%以上时,SCRFD-2.5GF获得与TinaFace(53.9%)相当的AP(53.7%),而计算成本仅为1.46%,推理时间仅为10.8%。
【这里比较了在确定precision的情况下的ap(也就是recall)的对比】
经过缜密的实验,我们对人脸检测的设计提出了以下效率改进,条件是:
(1)测试规模以VGA分辨率(640)为界限;
(2)在stride=4的特征图上没有锚点。
特别是,我们在stride=8的特征图上采用{16,32}的锚框,在stride=16采用{64,128}的锚框,在stride=32采用{256,512}的锚框。由于我们的测试规模较小,大部分人脸将在stride=8的Feature map被预测。因此,我们首先研究了阳性训练样本在不同尺度的特征图上的再分配情况(第4.1节)。然后,我们探讨了在给定的计算预算下 【限定总的计算复杂度】 ,不同尺度的特征图以及不同组件(如骨干、颈部和头部)的计算再分配(第4.2节)。
stride=8处的featuremap 最重要,所以:希望在这里生成更多的正样本【上面提到困难集上78.93%的脸小于32×32】显著提高正样本的数量(从72.3k->118.3k),在scale=32处(95.9k->115.1k),更多的训练样本重新分布到小尺度上,因而对于检测微小人脸可以训练的更充分【裁剪框超出图像的部分补充平均RGB值】这块就是网络结构搜索,来重新分配骨干网、颈部和头部的计算。
将搜索方法应用于RetinaNet[18],以ResNet[12]为骨干,以路径聚合特征金字塔网络(PAFPN)[21]为颈部,以堆叠的3×3卷积层为头部,总的搜索空间还是比较大的。
【这里省略如何设计搜索自由度(可变量)的讨论】
简化搜索空间。我们在搜索空间中重复随机抽样,直到我们得到320个目标复杂度的模型,并在WIDER FACE训练集上训练每个模型80个epochs。然后,我们在验证集上测试每个模型的AP。基于这320对模型的统计数据(xi , APi),其中xi是一个特定组件的计算比率,APi是相应的性能,我们按照[27]计算经验引导法[8]来估计最佳模型可能落在的范围。
最后,为了进一步降低搜索空间的复杂性,我们将网络结构搜索分为以下两个步骤。
SCRFD1:只搜索骨干的计算分布,同时将颈部和头部的设置固定为默认配置。
大约80%的计算被重新分配到浅层阶段【可以看下图,前面3个block的计算量占比】。
SCRFD2:搜索整个face检测器(即骨干、颈部和头部)的计算分布,骨干内的计算分布遵循优化的SCRFD1。

在更大的计算量和移动端的情况下:对于高计算制度(例如34 Gflops),探索的结构利用了bottleneck 残差块,深度扩展优于浅层阶段的宽度扩展。由于参数增加较多,扩展宽度会出现过度拟合的情况[1]。相比之下,扩展深度,特别是在早期层,与扩展宽度相比,引入的参数更少;对于移动系统(0.5Gflops),将深层阶段的有限容量(如C5)分配给深层阶段捕获的判别性特征,有利于浅层小脸检测。