【论文阅读】SCRFD: Sample and Computation 重分配的高效人脸检测

原始题目Sample and Computation Redistribution for Efficient Face Detection
中文名称采样和计算 重分配的 高效人脸检测
发表时间2021年5月10日
平台ICLR-2022
来源Imperial College, InsightFace
文章链接https://arxiv.org/pdf/2105.04714.pdf
开源代码官方实现:https://github.com/deepinsight/insightface

摘要

尽管在 非受控(uncontrolled)人脸检测 方面已经取得了巨大的进展,但低计算成本和高精度的 高效人脸检测仍然是一个公开的挑战。本文指出 训练数据采样和计算分布策略(training data sampling and computation distribution strategies)是高效准确的人脸检测的关键。在这些观察的激励下,本文提出了两种简单但有效的方法:

(1) 样本再分配(Sample Redistribution (SR)),根据 benchmark 数据集的统计数据,为最需要的阶段 augments training samples;

(2) 计算重分配(Computation Redistribution (CR)),根据精心定义的搜索方法,在模型的 backbone, neck and head 之间重新分配计算。

WIDER FACE 数据集 上进行的大量实验表明,在广泛的计算系统中,所提出的 SCRFD家族 具有最先进的效率-精度权衡。特别是,SCRFD-34GF 比最好的竞争对手 TinaFace 的性能提高了 3.86% (AP at hard set),同时在具有 VGA 分辨率图像的 GPUs 上快了3倍以上。

6. 结论

本文提出一种 sample and computation redistribution 范式,用于高效的人脸检测。结果表明,与当前最先进的方法相比,所提出的 SCRFD 在各种计算模式下的精度和效率权衡有了显著提高。

1. 引言

4. 方法

基于上述对 TinaFace 的分析,以及后续细致的实验,我们在人脸检测设计上提出了以下效率改进:

(1) 以 VGA 分辨率(640) 为界限的测试尺度,

(2) 在 stride 4 的特征图上没有放置 anchor 。

特别地,我们在 stride 8 的特征图上放置了 {16,32} 的 anchors ,在 stride 16 上放置了 {64,128} 的 anchors,在 stride 32 上放置了 {256, 512} 的 anchors。由于我们的测试的 尺度 较小,大多数人脸将在 stride 8 上进行预测。

本文首先研究了 positive training samples 在不同特征图尺度上的再分布(第4.1节)。在给定预定义的计算预算的情况下,探索不同尺度的特征图以及不同组件(即 backbone, neck and head )的计算重分配(第4.2节)。

4.1. Sample Reallocation 样本重分配

stride 8 的特征图在我们的设置中是最重要的。这在 图3 中很明显,我们在 WIDER FACE validation dataset 上绘制了累积的人脸尺度分布。当测试尺度固定为 640 像素时,78.93% 的人脸小于 32 × 32。

drawing

图3。在 WIDER FACE validation dataset (Easy ⊂ Medium ⊂ Hard) 上的累积人脸尺度分布。当长边固定为 640像素 时,大多数 easy faces 大于32×32,大多数 medium faces 大于16 × 16。对于 hard faces ,78.93%的人脸小于32 × 32, 51.85%的人脸小于16×16, 13.36% 的人脸小于8×8。

在 training data augmentation, 从原始图像的短边 集合[0.3,1.0] 中随机大小的方形块被裁剪。为了为 stride 8 生成更多的 positive samples ,我们将随机大小范围从 [0.3,1.0] 扩大到 [0.3,2.0] 。当裁剪框超过原始图像时,平均RGB值 填充缺失的像素。 如图4(a)所示,使用所提出的大裁剪策略后,在 32 的尺度以下有更多的 faces 。此外,即使会有更多非常小的 faces (例如< 4 × 4), 在大裁剪策略下,这些 ground-truth faces 在训练过程中会因 anchor 匹配不成功而被忽略。如图4(b)所示,在 16 的尺度上,一个 epoch 内的 positive anchors 显著增加,从 72.3K 增加到 118.3K,在 32的尺度 上显著增加,从95.9K 增加到 115.1K。通过将更多的 training samples 重新分布到小尺度上,可以更充分地训练 检测 tiny faces 的分支。

就是使用了 大裁剪策略 。

4.2. Computation Redistribution 计算重分配

直接利用 分类网络的 backbone 进行特定尺度的人脸检测可能是次优的。因此,我们采用 网络结构搜索[27] 来重新分配 backbone, neck and head 的计算,以适应各种不同的 flop 计划。将所提出的搜索方法应用于 RetinaNet[18],以ResNet[12]为 backbone ,Path Aggregation Feature Pyramid Network (PAFPN)[21]为 neck ,堆叠的 3 × 3 卷积层为 head 。虽然总体结构很简单,但搜索空间中可能的网络总数是难以处理的。在第一步中,探讨了在固定 neck and head 组件时,backbone 部分(即 stem、C2、C3、C4 和 C5 )内计算的重新分配。基于发现的 backbone 上的优化计算分布,进一步探索了计算在 e backbone, neck and head 的重新分配。通过这两种方式的优化,实现了人脸检测的最终优化网络设计。

看起来这里所谓的计算重新分配就是,通过 NAS 搜出来一个网络架构。

Computation search space reduction

本文的目标是通过 重新分配计算,设计更好的网络来进行高效的人脸检测。给定固定的计算成本,以及 图3 所示的人脸尺度分布,我们从模型的总体中探索计算分布和性能之间的关系。

RegNet[27]之后,本文探索了人脸检测器的架构,假设固定的标准网络块(即: basic residual or bottleneck blocks,bottleneck ratio固定为4)。在本例中,人脸检测器的架构包括:

(1) backbone stem ,三个具有 w0 输出通道的 3*3 卷积层 [13],

(2) backbone body ,四个以逐渐 降低的分辨率 运行的阶段,每个阶段由一系列identical 块组成。对于每个阶段 i,自由度包括 块数 d i d_i di (即网络深度)和块宽度 w i w_i wi (即通道数)。

(3) neck, a multi-scale feature aggregation module by a top-down path and a bottom-up path with n i n_i ni channels [21],

(4) head ,具有 m m m 块的 h i h_i hi 通道,用于预测人脸分数和回归人脸框。

由于 stem 的通道数与 C2 中第一个 residual block 的 block width 相等,因此 stem 的自由度可以合并到 w i w_i wi 中。此外,我们采用了一种共享的 head 设计,用于 三尺度的 feature maps ,并固定 heads 中所有 3×3 卷积层的通道数。因此,在我们的 neck 和 head 设计中,我们将自由度减少到三个:

(1) neck 的输出通道数 n,

(2) head 的输出通道数 h,

(3) 3 × 3 卷积层的数量 m。

我们对 n ≤ 256 , h ≤ 256 n≤256, h≤256 n256,h256 m ≤ 6 m≤6 m6 进行均匀采样( n 和 h 都能被 8 整除)。

backbone 搜索空间有 8 个自由度,有 4 个阶段,每个阶段 i 有 2 个参数: 块的数量 d i d_i di 和块的宽度 w i w_i wi。遵循 RegNet[27],对 d i ≤ 24 d_i≤24 di24 w i ≤ 512 w_i≤512 wi512 ( w i w_i wi 可被 8 整除) 进行 均匀采样。由于最先进的 backbones 具有越来越大的宽度[27],还将搜索空间缩小到 w i + 1 ≥ w i w_{i+1}≥w_i wi+1wi 的原则。

通过上面的简化,我们的搜索空间变得更加直接。在搜索空间中重复随机采样,直到在目标复杂度范围内获得 320 个模型,并在 WIDER FACE 训练集上训练每个模型 80 个 epoch。然后,在验证集上测试每个模型的 AP。基于这 320 对 模型统计量 ( x i , A P i ) (x_i, AP_i) (xi,APi),其中 x i x_i xi 是特定部件 和 A P i AP_i APi 是相应的性能,我们遵循[27]来计算 经验引导(empirical bootstrap) [8],以估计最佳模型可能落在的范围。

最后,为了进一步降低搜索空间的复杂度,我们将网络结构搜索分为以下两个步骤:

  • S C R F D 1 SCRFD_1 SCRFD1: 只搜索 backbone 的计算分布,同时将 neck 和 head 的设置固定为默认配置。
  • S C R F D 2 SCRFD_2 SCRFD2: 搜索整个人脸检测器(即 backbone, neck and head )的计算分布,backbone 内部的计算分布遵循优化的 S C R F D 1 SCRFD_1 SCRFD1

这里,我们以约束于 2.5 Gflops 的 SCRFD (SCRFD-2.5GF) 为例来说明我们的两步搜索策略。

Computation redistribution on backbone. 在 backbone 上 计算重新分配

由于 backbone 执行了大量的计算,因此我们首先关注 backbone 的架构,它对确定网络的计算成本和准确性至关重要。对于 SCRFD1-2.5GF,我们将 neck 的输出通道固定为 32,并使用两个具有 96 个输出通道的堆叠的 3 × 3 卷积。由于在 S C R F D 1 SCRFD_1 SCRFD1 算法的整个搜索过程中 neck 和 head 的配置是不变的,因此可以很容易地找到 backbone 的最佳计算分布。如 图5 所示,我们显示了 320 个模型APs(在 WIDER FACE hard 验证集上)的分布 与 backbone 的每个组件(即 stem、C2、C3、C4和C5 )的计算比率的对比。

image
图5。在 2.5 Gflops 约束下固定 neck and head 的 backbone (stem, C2, C3, C4和C5)上的 计算重分配。对于 backbone 中的每个组件,通过 empirical bootstrap 估计估计最佳模型可能下降的计算比率范围。

在应用 empirical bootstrap [8]后,出现了一个明显的趋势,表明 backbone 计算被重新分配到浅层阶段(即 C2和C3 )。在图6中,我们展示了 backbone 的浅层(即 stem, C2, and C3 )和深层(即 C4 和C5)之间的计算比率。从这些搜索结果中可以看出,大约 80% 的计算被重新分配到浅层阶段。

drawing
图6。在2.5 Gflops的约束下,backbone 的浅层和深层阶段之间的计算重分配。

Computation redistribution on backbone, neck and head.

当我们在 2.5 Gflops 的特定计算约束下找到 backbone 内部的优化计算分布后,我们搜索在 backbone, neck and head 的最佳计算分布。在这一步中,我们只保留随机生成的网络配置,其 骨干网设置遵循 S C R F D 1 SCRFD_1 SCRFD1 的计算分布,如 图5 所示。

现在还有另外三个自由度(即 neck 的输出通道数 n,head 的输出通道数 h,head 的 3 个卷积层数 m)。我们在搜索空间中重复随机抽样,直到我们在目标复杂度范围内获得 320 个合格模型(即 2.5 Gflops )。从 图9 可以看出,大部分的计算分配在 backbone,head 紧随其后,neck 的计算比例最低。图9(d)描述了 2.5 Gflops 约束下的模型架构对比。baseline(ResNet-2.5GF)的网络配置在 表2 中介绍。

通过采用提出的两步计算重分配方法,我们发现大量的 capacity 被分配到浅阶段,导致 AP 在 WIDER FACE hard 验证集上从 74.47% 提高到 77.87%。

Higher compute regimes and mobile regime. 更高的计算状态和移动状态。

除了 2.5 Gflops的复杂度限制外,我们还使用相同的两步计算重分配方法来探索更高计算 状态(regimes)例如 10 Gflops 和 34 Gflops )和 低计算状态(例如0.5 Gflops)的网络结构优化。图7 和 图8 显示了不同计算约束下的计算重分配和优化后的网络结构。

我们最终的体系架构与 baseline 网络有着几乎相同的 flops。从这些重分配结果中,我们可以得出以下结论:

(1) 更多的计算分配在 backbone 上,neck and head 的计算被压缩
(2) 由于在 WIDER FACE 上的特定 scale 分布,2.5 Gflops、10 Gflops 和 34 Gflops 的浅阶段分配了更多的 capacity
(3) 对于高计算状态(例如 34 Gflops),所探索的结构利用了 bottleneck residual block ,我们观察到在浅阶段有显著的深度缩放,而不是宽度缩放。缩放宽度受制于过拟合,因为参数增加较大 [1]。相比之下,缩放深度,特别是在早期的层中,与缩放宽度相比,引入的参数更少
(4) 对于移动端(0.5 Gflops),将深层阶段的有限容量(例如 C5 )分配给深层阶段捕获的判别特征,可以有利于 top-down neck pathway 对浅层 small face 的检测。

说了这么半天,就是 SCRFD 的架构是通过 NAS 搜出来的。

5. 实验

参考:人脸检测:SCRFD论文解析

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 模型预测控制(MPC)是一种基于动态模型预测的先进控制方法。它将计算机算法应用于工程问题中,可以实现高起伏的控制系统性能。模型预测控制理论、计算和设计是建立在动态模型预测基础上的。这种方法通过使用预测模型来预测控制系统在未来的几个时间步骤内的状态,并在每个时间步骤上实时地对控制操作进行优化。 在模型预测控制中,控制器以当前的状态作为控制决策的基础,并且考虑了未来一定时间范围内的状态和控制操作的影响。这种方法可以应用于许多领域,如化学工程、机电一体化、机器人技术等。 在运用模型预测控制时,需要先建立一个动态模型,并将其纳入到控制器中。该模型可以通过多种数学方法进行构建,如ARX模型、ARMA模型、神经网络模型、基于物理方程的模型等。针对不同的问题,不同的数学模型可能需要使用不同的算法。 为了实现精确的控制,模型预测控制需要具有高效的计算,并且需要考虑控制器的实时性能。在设计控制器时,需要考虑相关的控制性能指标,如响应时间、稳态误差、鲁棒性等。 因此,模型预测控制理论、计算和设计是一个系统的工程问题。通过该方法,可以实现对多种复杂动态系统的高精度控制。 ### 回答2: 模型预测控制(Model Predictive Control,MPC)是一种先进的控制方法,广泛应用于工业自动化、过程控制、航空航天、机器人等领域。MPC其实质是根据预测模型的输出值进行控制,旨在使系统响应过程中的目标函数最优化。此过程中,控制器会不断地计算预测模型的输出,与实时测量值进行比较,并最终通过调节控制变量来达到最优化效果。 前人的相关研究表明,MPC的理论基础在于先建立动态模型,预测模型一般采用离散时间状态空间模型来描述控制对象的动态行为,同时考虑约束条件和相关性的影响。然后,通过对目标函数进行优化求解问题,以达到最优控制效果。这个优化问题在一般情况下是一个基于约束的非线性多目标优化问题,需要通过数值计算方法对问题进行求解。 而在MPC的设计中,涉及到的计算方法主要有动态编程、广义预测控制和在线递归法。动态编程方法在构建预测模型上,直接通过更改目标函数和约束条件来解决最优化问题。广义预测控制方法则是通过将控制问题转化为标准线性规划问题来进行计算,而在线递归法则是通过将预测模型线性化为关于当前状态的一阶差分方程,然后使用递归卡尔曼滤波算法进行求解。 总之,MPC是一种基于预测模型的高级控制方法,其理论基础在于建立动态模型,并通过数值计算方法来进行优化求解。控制器通过不断计算预测模型的输出,实时测量值进行比较,从而对控制变量进行调节,以达到最优控制效果。不仅如此,MPC的设计中还需要采用动态编程、广义预测控制和在线递归法等计算方法来解决优化问题。 ### 回答3: 模型预测控制(Model Predictive Control,MPC)是一种基于预测控制理论的高级控制方法,经常被应用于工业和自动化系统中。它基于使用动态模型的预测能力来计算最优的控制动作序列,以实现对动态系统的控制。MPC能够考虑不同变量之间的耦合效应,并且能够使用限制条件,如控制变量和状态变量的限制,以及控制输入的变化率限制等。 在MPC中,系统的动态模型是必不可少的,因为MPC使用模型对未来的系统状态和输出进行预测。通常,MPC需要设计一个优化问题来求解最优控制动作序列,以最小化代价函数,代价函数一般包括系统稳定性、转移过程中的能量和控制输入的变化率等。 MPC的计算过程非常要,因为它需要在有限时间内求解非线性优化问题。计算复杂度限制了MPC所能应用的实时性,在实际应用中,MPC的采样时间通常在几十毫秒到几秒之间。 MPC的设计需要考虑与应用场景的适应性,在实践中,MPC的应用非常广泛,包括化工、汽车、电力等许多领域。它能够控制线性和非线性系统,并且能够应对不同的外部和内部干扰。同时,MPC还可以应用于多目标优化问题中,以达到多个目标之间的平衡。因此,MPC的应用前景非常广阔。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理心炼丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值