论文地址:https://arxiv.org/pdf/2105.04714.pdf
代码地址:https://github.com/deepinsight/insightface/tree/master/detection/scrfd
一、概述
创新点:
样本重分布(SR):基于基准数据集的统计数据,在最需要的步骤上分配更多训练样本。
计算重分布(CR): 基于精心定义的搜索方法,在模型的主干,颈部和头部之间重新分配计算,灵感来源于RegNet(关于网络设计范式)。
贡献:
- 探讨了VGA分辨率下人脸检测的效率,并提出了样本重分配的策略,其有助于浅层步骤获取更多的训练样本。
- 设计了一个简化的搜索空间,用于在人脸检测器的不同组件之间重新分配计算。
- 在困难样本集上的准确率比TinaFace 高出3.86%, 同时速度提升3倍。
二、方法
2.1 Sample Reallocation
样本重分布方法(SR)相当于为模型增加先验,基于基准数据集的统计数据——人脸尺寸占比,在最需要的步骤上分配更多的训练样本,即在微小人脸分支上增加更多的训练图片,提升训练的准确率。
上图左侧为WIDER FACE 数据集的人脸尺寸占比,可以看出WIDER FACE 数据集中有78.93%的人脸尺寸小于32 * 32,而提升人脸检测器准确率的关键点在于增强微小人脸的检测,因此为微小人脸增加更多的样本数据显得尤为而重要。
传统裁剪Patch的做法是,在数据增强步骤,在原始图像的短边集合[0.3, 1.0] 以随机大小从原始图像进行裁剪。
本文提出的SR则是扩大了此随机比例,将随机比例从[0.3, 1.0] 扩大到[0.3, 2.0] ,这样可以获得更多尺寸小于32的人脸,便于训练检测微小人脸的分支。如上图(b),红色的为实施了此方法之后的人脸大小的数量分布,蓝色的为传统做法的人脸分布,明显可以看出在实施了SR方法之后的,微小人脸的数量增多。
2.2 Computation Redistribution
计算重分布方法(CR)是在固定计算量的情况下,通过调整不同模块之间的计算资源达到提升准确率的目的。
搜索方法:
假设上图(a) 为模型结构图,其中body中包含4个stage,每个stage中又包含 di 个block, wi 为block的输出通道数。 di = 24, wi =512 ,且能被8整除。
如果只考虑这两个自由度的话,那么一个stage的可能的组合有:24 x 64种。那么4个stage的组合有: (24∗64)4 种,即 81∗236 种情况。
然后通过随机采样,在上述情况中选取了320种参数组合进行模型训练,并然后计算出训练结果的准确率,然后选取AP最高时的组合。
SCRFD1:
Backbone搜索:固定总模型计算量,如2.5Gflops,然后使用上述搜索方法在stem,C2,C3,C4,C5之间分配计算资源,目的是寻找最优mAP时的资源分配比例。
结论:大部分的计算资源集中在stem+C2+C3的时候可以取得最高的mAP,如下图所示。
SCRFD2:
总体搜索:固定总模型计算量,如2.5Gflops,然后使用搜索方法在Backbone,neck,head之间分配计算资源,同时去除不符合SCRFD1 的分配的组合,并在剩余的组合中查找mAP最高时的资源分配比例。
结论:大部分的计算资源主要集中在Backbone上,约80%的计算资源分配在Backbone上可以获取到最优mAP。
三、实验
上图SCRFD-0.5GF 在小微模型上明显优于retinaface 的表现,尤其是在困难样本上,其mAP超出RetinaFace.25 约45%。
在大模型方面,SCRFD-10GF 具有和TinaFace相近的性能,却具有更低的参数量和计算量,参数量仅为其10%, 计算量仅为其5%。
四、总结
论文作者先是通过采样重分布的方式为微小人脸分支分配更多的训练样本,然后又采用搜索空间的方式设计网络模型,来达到提升准确率的目的,提升更多的是困难样本集下的准确率,超过了当时人脸检测的”天花板“的准确率,且具有更少的参数量和计算量,并具有更低的延迟。