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

news/2024/4/26 16:38:40/文章来源:https://blog.csdn.net/hymn1993/article/details/129147127
原始题目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,自由度包括 块数 did_idi (即网络深度)和块宽度 wiw_iwi (即通道数)。

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

(4) head ,具有 mmm 块的 hih_ihi 通道,用于预测人脸分数和回归人脸框。

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

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

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

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

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

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

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

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

  • SCRFD1SCRFD_1SCRFD1: 只搜索 backbone 的计算分布,同时将 neck 和 head 的设置固定为默认配置。
  • SCRFD2SCRFD_2SCRFD2: 搜索整个人脸检测器(即 backbone, neck and head )的计算分布,backbone 内部的计算分布遵循优化的 SCRFD1SCRFD_1SCRFD1

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

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

由于 backbone 执行了大量的计算,因此我们首先关注 backbone 的架构,它对确定网络的计算成本和准确性至关重要。对于 SCRFD1-2.5GF,我们将 neck 的输出通道固定为 32,并使用两个具有 96 个输出通道的堆叠的 3 × 3 卷积。由于在 SCRFD1SCRFD_1SCRFD1 算法的整个搜索过程中 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 的最佳计算分布。在这一步中,我们只保留随机生成的网络配置,其 骨干网设置遵循 SCRFD1SCRFD_1SCRFD1 的计算分布,如 图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论文解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_72076.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32开发(13)----获取唯一设备标识符UID

获取唯一设备标识符UID前言一、什么事UID二、实验过程1.CubeMx配置2.代码实现3.实验结果总结前言 这一章节介绍如何获取STM32芯片中的唯一的ID号的两种方法。 一、什么事UID 在许多项目中&#xff0c;识别设备是必要的。从简单的设备描述到更复杂的设备&#xff0c;如 USB 串…

uboot / linux添加/去除 版本号LOCALVERSION

背景 偶然的机会&#xff0c;在insmod驱动模块的时候&#xff0c;遇到报错&#xff1a; 查找原因&#xff0c;说是当前系统内核版本和模块编译使用版本不同&#xff01; 使用如下命令查看当前系统内核版本&#xff1a; uname -r 使用modinfo命令&#xff08;嵌入式设备没有此…

2022年中国前10电商GMV总结

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 1&#xff0c;阿里8万亿;2&#xff0c;京东3万亿;3&#xff0c;拼多多3万亿;4&#xff0c;小程序私域电商3万亿;5&#xff0c;抖音电商1.4万亿。6&#xff0c;抖音本地生活服务电商600亿。7&#xf…

广东望京卡牌科技有限公司,2023年团建活动圆满举行

玉兔初临&#xff0c;春天相随&#xff0c;抖擞精神&#xff0c;好运连连。春天是一个万物复苏的季节&#xff0c;来自广东的望京卡牌科技有限公司&#xff0c;也迎来了新年第一次团建活动。在“乘风破浪、追逐梦想”的口号声中&#xff0c;2023望京卡牌目标启动会团结活动正式…

Fortinet推出新一代自研安全芯片,跨所有网络边缘加速网络与安全融合

专注网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;近日宣布推出新一代自研安全芯片 FortiSP5&#xff0c;作为 Fortinet ASIC 技术的最新突破&#xff0c;有力推动了分布式网络边缘安全的重大飞跃。FortiSP5 源自 F…

快鲸scrm发布快递行业私域运营解决方案

现如今&#xff0c;快递行业竞争格局日益激烈&#xff0c;前有“四通一达”等传统快递企业&#xff0c;后有自带互联网基因、绑定电商流量新贵快递企业&#xff0c;如菜鸟、京东等。在这一背景下&#xff0c;很多快递企业开启了增长破局之旅&#xff0c;他们纷纷搭建起私域运营…

0/1 nodes are available: 1 node(s) didn‘t match Pod‘s node affinity.

主要是需要确认你的yaml文件中是否有nodeSelector的配置&#xff0c;一般是因为k8s集群中没有相应的node节点匹配导致 这个错误消息表明您正在尝试在不符合Pod的节点亲和性规则的节点上运行Pod。这通常是由于节点选择器或节点亲和性规则设置不正确引起的。 以下是一些可能导致…

前端零基础入门-002-集成开发环境

本篇目标 了解市面上常用的前端集成开发环境&#xff08;ide&#xff09;掌握 HBuiberX 的使用&#xff1a;下载安装&#xff0c;新建项目、网页、运行网页。 内容摘要 本篇介绍了市面上流行的几款前端集成开发环境&#xff08;ide&#xff09;&#xff0c;并介绍了 Hbuilde…

微软Docker学习记录(第二单元)

文章目录什么是容器&#xff1f;什么是软件容器化&#xff1f;什么是 Docker&#xff1f;Docker 体系结构Docker 引擎Docker 客户端Docker 服务器Docker 对象原文链接&#xff1a; https://learn.microsoft.com/zh-cn/training/modules/intro-to-docker-containers以下原文部分…

Softing dataFEED OPC Suite Extended新版本支持从XML文件中读取生产数据

Softing dataFEED OPC Suite Extended V5.25的新功能——“文件读取&#xff08;File Read&#xff09;”&#xff0c;支持访问XML文件中可用的过程数据。 &#xff08;文件读取功能支持获取由XML文件提供的过程数据&#xff09;dataFEED OPC Suite Extended是用于OPC通信和云连…

技术干货!如何玩转Salesforce测试类 (Test Class)?

测试类主要用于评估其他代码片段&#xff0c;确保一切正常且可靠地运行。这可以作为一种早期预警系统&#xff0c;提醒开发人员出现了错误或问题。 不同类型的程序化测试 测试类可以分为多种不同的类型&#xff0c;这改变了我们编写测试的方式及其预期结果。对于Apex测试类&…

R语言实现可理解的随机森林模型(Random Forest)——iml包

Random Forest 解释模型1. 介绍2. 理解随机森林运行机理2.1导入需要的包2.2 构建随机森林模型2.3 RF特征重要性&#xff1a;2.4 特征对预测结果的影响2.5 交互作用2.6 替代模型&#xff08;Decision tree surrogate model&#xff09;2.71. 介绍 机器学习模型通常可以很好地进…

儿童袖套上架美国亚马逊CPC认证

袖套&#xff0c;也称套袖。是戴在袖管外的套子&#xff0c;旨在保护衣服的袖管。通常戴时松垂于另外一只衣袖外面的袖子。美国CPC认证简介&#xff1a;CPC认证是Children’s Product Certificate的英文简称&#xff0c;CPC证书就类似于国内的质检报告&#xff0c;在通过相关检…

内网渗透(四十五)之横向移动篇-WinRM远程执行命令横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

PrivateLoader PPI服务发现RisePro恶意软件窃取分发信息

称为PrivateLoader的按安装付费&#xff08;PPI&#xff09;软件下载器服务正用于恶意软件RisePro的信息窃取。Flashpoint 于 2022 年 12月13日发现了新的窃取者&#xff0c;此前发现了在名为Russian Market的非法网络犯罪市场上使用该恶意软件泄露的“几组日志”。RisePro是一…

IDEA高效插件和设置

安装好Intellij idea之后&#xff0c;进行如下的初始化操作&#xff0c;工作效率提升十倍。 一. 安装插件 1. Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句&#xff0c;这也太智能了&#xff0c;还显示了每条语句使用频率。 原因是它学习了我的项目代码&…

墨菲安全参与信息通信软件供应链安全社区成员大会并获自主研发创新成果奖

2023年2月16日&#xff0c;首届ICT软件供应链安全治理论坛暨信息通信软件供应链安全社区第二届成员大会在北京成功举办&#xff0c;多位业界顶级专家与工业和信息化部网络安全管理局相关领导出席&#xff0c;为现场观众分享了关于软件供应链可持续性与安全治理行业的前瞻与思考…

Apache Shiro与Spring Security对比

Apache Shiro VS Spring Security 1.Spring Security 官方文档&#xff1a;https://spring.io/projects/spring-security#overview介绍&#xff1a; Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spr…

CAS底层原理及ABA问题

一、案例CAS是Java中Unsafe类里面的一个方法&#xff0c;它的全称是叫CompareAndSwap比较并交换的一个意思&#xff0c;它的主要功能是能够去保证在多线程的环境下对于共享变量修改的一个原子性。例如&#xff0c;比如说像这样一个场景&#xff0c;有一个成员变量state&#xf…

【分享】订阅卖家云集简云连接器同步销售出库数据至卖家云系统

方案场景 在企业进行数字化转型过程中&#xff0c;数据割裂是企业面临的最大困难&#xff0c;钉钉作为现企业流行的常用办公系统&#xff0c;与第三方ERP系统之间存在着数据割裂的现象&#xff0c;例如&#xff0c;钉钉与卖家云系统&#xff0c;企业员工原来的办公方式是在钉钉…