前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从 ResNet 到 BLite :人脸检测中的模型轻量化实践 !

从 ResNet 到 BLite :人脸检测中的模型轻量化实践 !

作者头像
用户5536580
发布2024-07-05 15:27:17
120
发布2024-07-05 15:27:17
举报
文章被收录于专栏:未来先知未来先知

人脸检测通常尝试使用如ResNet-50/101/152和VGG16/19这样的大型预训练 Backbone 网络。一些近期的工作也提出了带有定制 Backbone 网络、新颖损失函数和高效训练策略的轻量级检测器。 本文的创新之处在于,在仅使用常见的损失函数和学习策略进行训练的情况下,设计了一个轻量级检测器。所提出的人脸检测器大致遵循已建立的RetinaFace架构。 本文的第一个贡献是设计了一个定制的轻量级 Backbone 网络(BLite),该网络拥有0.167M个参数和0.52 GFLOPs。 第二个贡献是使用了两个独立的多任务损失。所提出的轻量级人脸检测器(FDLite)拥有0.26M个参数和0.94 GFLOPs。该网络在WIDER FACE数据集上进行训练。 观察到FDLite在WIDER FACE验证数据集的简单、中等和困难子集中分别达到了92.3%,89.8%和82.2%的平均精度(AP)。

1 Introduction

人脸检测是计算机视觉应用(如人脸追踪、人脸识别、性别分类和情绪识别)的重要第一步。其主要目标是精确地定位图像中的人脸区域。特别是在密集人群(小脸)、以及恶劣条件下,如人脸姿态变化、低光照、遮挡和图像质量差(模糊)等情况下,挑战尤为明显。一个最优的人脸检测系统应该在保持低计算成本的同时,能够高精度地定位图像中的人脸。

传统的人脸检测技术依赖于手工制作特征以及滑动窗口技术。在这些技术中,Viola-Jones人脸检测器[1]被广泛应用。大多数最先进的人脸检测系统都是在广泛使用的WIDER FACE数据集[3]上进行基准测试的。这个数据集包括具有各种挑战性场景的图像,包括模糊、姿态变化、光照变化、小脸和遮挡。相应地,人脸图像也被标注为简单、中等和困难类别。值得注意的是,即使在WIDER FACE数据集的简单子集中,Viola-Jones检测器的平均精度也只有41.2%。这比基于深度网络的MTCNN 的性能要低得多,后者在简单子集上的平均精度为85.1%。

近期的人脸检测方法通过利用深度学习框架,在传统方法上提高了精确度。这些方法使用了不同的卷积神经网络(CNN)结构来提取视觉特征,并融入了注意力模块和改进的检测机制。这些进步在WIDER FACE等基准数据集上产生了显著改善的结果。这些系统的例子包括级联CNN[4],RCNN系列[8],单次人脸检测器[12, 10],以及RetinaFace[20]。这些人脸检测系统从基于深度学习的通用目标检测方法的最新进展中汲取灵感[7, 17]。然而,性能的提升导致了这些人脸检测器在计算需求(FLOPs)上的增加。这种高计算需求来自于使用传统的CNN Backbone 网络,如ResNet50/101/152[28],VGG16[23],和DenseNet121[29]。如此高的计算成本使得这些系统难以在实时应用中部署,尤其是在边缘设备上。因此,研究行人专注于开发轻量级的人脸检测系统。

现有工作通过采用轻量级特征提取 Backbone 网络,如MobileNetV1[20, 19]系列,ShuffleNetV2[32]系列等,提出了高效的人脸检测系统。此外,还有许多方法通过定制化设计 Backbone 网络[24, 18, 38]涌现出来。这些人脸检测系统在人群密集环境中比传统方法获得了显著更高的精确度,同时稍微落后于计算密集型的人脸检测器。

针对边缘设备上的实时应用,一个高效的人脸检测器需要在不牺牲精确度的同时保持低计算成本。因此,这项工作旨在减少网络中的浮点计算,而不显著降低人脸检测的精确度。所提出的人脸检测器FDLite受到RetinaFace架构[20]的启发。它包括一个定制的轻量级 Backbone 网络(BLite),特征金字塔网络(FPN),级联上下文预测模块(CCPM),以及检测Head(D)。特别是,这项工作贡献了轻量级的定制化 Backbone BLite和使用两个独立的多任务损失。所提出的人脸检测器FDLite在WIDER FACE验证数据集的简单、中等和困难子集中,与11种最先进的方法相比,提供了具有竞争力的(或更好的)性能。

这项工作的主要贡献如下:

  • 提出了一个具有167万参数和0.52 GFLOPs的定制化 Backbone 网络BLite。
  • 在检测Head中使用两个独立的多任务损失。
  • 设计了一个轻量级的人脸检测网络FDLite,具有260万参数和0.94 GFLOPs。它在WIDER FACE验证数据集的简单、中等和困难子集上分别实现了92.3%、89.8%和82.2%的平均精度(AP)得分。

2 Related Work

几种现有基于深度网络的人脸检测器因性能高而著称,但它们的计算成本也较高(表1)。研究行人还提出了几种轻量级的人脸检测器,其准确度超过了经典方法。本文专注于轻量级人脸检测器的设计。因此,下面仅简要回顾轻量级人脸检测器。

基于级联CNN的人脸检测器[4, 5, 6]由于计算要求低而被认为是轻量级的。在这个框架中,候选窗口最初在输入图像中生成。一系列网络对这些候选窗口进行分类,判断为人脸或非人脸,并在排除不相关窗口的同时执行边界框回归。人脸预测通过这个网络级联逐步得到完善。MTCNN[6]是这些方法中最受欢迎的。

单阶段目标检测框架(如SSD[9]和RetinaNet[17])的发展导致了带有特定架构修改的单阶段人脸检测器[8, 10, 20]的提出。然而,这些人脸检测器使用了计算密集型的 Backbone 网络。因此,已经设计出几种轻量级人脸检测系统,采用定制化的 Backbone 网络,如LFFD[24]和FaceBoxes[18](如表1所示)。在FaceBoxes中,融入快速消化卷积层(RDCL)使得人脸检测能在CPU上实现实时性,而多尺度卷积层(MSCL)的整合则通过丰富感受野来处理各种尺度的人脸。此外,还引入了一种新的 Anchor 点稠密化策略,以增强小脸的召回率。同时,LFFD[24]引入了一种新的定制 Backbone 网络,并提出了感受野(RF)的 Anchor-Free 策略,旨在克服之前基于 Anchor 点[9, 12]方法的局限性。当时,这些网络[18, 24]在轻量级人脸检测器类别中达到了最佳的准确度(在WIDER FACE验证数据集的难集上超过70%的AP),且GFLOPs不到10(如表1所示)。

图1:在WIDER FACE验证数据集的_Hard_子集上,现有顶级模型的人脸检测性能(平均精度)。平均精度分别与(a)浮点运算(GFLOPs)和(b)模型参数(百万M)的关系。注意作者提出的人脸检测器——使用0.24M参数和0.94 GFLOPs达到了的AP。

分类网络如MobileNetV1和V2[30]的出现值得注意。这些网络使用了深度可分离卷积和倒置瓶颈块等技术。这一发展导致了如MobileNetV1x0.25[30]这样的更轻版本的 Backbone 网络的出现。在引入轻量级 Backbone 网络之后,RetinaFace[20]和Progressiveface[19]集成了MobileNetV1的更轻版本(MobileNetV1x0.25)。这些网络[20, 19]在轻量级人脸检测领域达到了顶尖的准确度,在WIDER FACE验证数据集的难集上大约有88%的AP,且计算量不到1.5 GFLOPs。基于YOLOv5架构[32](YOLOv5n0.5)的人脸检测器引入了一种新型人脸检测模型,它采用了ShuffleNetV2网络[33]的更轻版本(ShuffleNetV2X0.5)。这个网络只使用了0.56 GFLOPs,但在WIDER FACE验证数据集的难集上实现了大约73%的AP(如表1所示)。最近,人脸检测器EResFD[38]在WIDER FACE[3]验证子集的难集上以最低的计算成本保持了良好的准确度(80.43% AP),尽管在容易和中等子集上的准确度有所下降(如表1所示)(不到90% AP)。减少人脸检测器的努力持续进行,但轻量级版本对于边缘设备仍然至关重要,旨在降低GFLOPs同时保持各种大小人脸的准确度。

3 Proposed Work

提出的人脸检测器FDLite受到RetinaFace[20]设计的启发。因此,FDLite具有以下关键组成部分:(a)一个定制的主干网络(BLite)(第3.1小节)用于提取图像特征,(b)特征金字塔网络(FPN)[31],(c)级联上下文预测模块(CCPM)[38],以及(d)检测Head(D)。

定制的 Backbone 网络BLite(第3.1小节)用于从输入图像 (大小为 )提取空间特征。BLite使用ImageNet1K数据集[11]进行预训练。特征金字塔网络FPN接收来自BLite中间卷积层的空间特征图,以提供增强的特征图 ()的不同空间分辨率。FPN通过增强边缘和角点同时突出人脸轮廓的结构特征来丰富语义信息[31]。FPN的三个特征图输出(,)通过相应的级联上下文预测模块 ()进行处理。第一个模块 接收 作为输入。 的输出作为 的输入。CCPM增强了检测更小面部特征的能力。随后,从 和 获得的精细特征图被整合到相应的检测Head 中。每个检测Head包含以下三个子网络:(a)人脸分类任务,(b)人脸边界框定位,以及(c)五个面部标记检测。

BLite: The Customized Backbone

图2:展示了FDLite人脸检测器的网络架构的关键组成部分。这里, 其中 。

这项工作的一项主要贡献是提出了定制的 Backbone 网络BLite(如图fig:Backbone所示)。输入图像 (大小为 )首先由初始特征提取层()处理,生成初始特征张量 。层由一系列的一个卷积单元和两个瓶颈单元组成。这里,指的是应用个卷积核,步长为,填充为,组卷积参数为(注意,表示没有组卷积),后面跟着批量归一化和LeakyRelU激活。由两个级联的单元组成 - 后面跟着。这里,是输入特征图的通道维度,是输出特征图的通道维度。注意,只有第二个单元使用了步长为的组卷积,。

初始特征张量通过三个层和进一步细化。特征张量由层处理以产生。块和特征细化单元()在每个层中以级联方式连接。的设计受到inception模块[26]的启发,并在输入和输出之间具有残差连接[28]。具有通道输入特征张量的被指定为。它不改变输入特征张量的空间分辨率和通道维度。网络还使用最大池化单元来降低特征张量的空间分辨率。一个最大池化单元,步长为,填充为,表示为。

模块使用多尺度的卷积核处理输入特征图,这使得网络能够在不同的分辨率下识别模式。通过深度拼接(见图3)融合生成的特征。最初,特征图经过带有LeakyReLU激活的卷积。这称为。随后,的输出作为两个卷积层的输入,分别是和。这些层的输出随后沿通道维度进行拼接。这个拼接的特征图通过卷积层进行细化。最后,通过将初始特征图添加到细化后的特征图,建立了一个残差连接,从而解决了梯度消失问题。

表示一个卷积操作,使用个的卷积核,步长为,填充为,以及分组卷积参数(其中表示没有分组卷积)。

所提出的主干网络BLite,包括和三层(,,)(见图3),如下所述:

初始特征提取器() - 它有一个级联的单元,一个单元以及两个单元(和)。的输出()作为输入提供给。

第1层() - 它有一个级联的CBL单元(),两个单元(),一个单元()以及另一个单元()。的输出()作为输入提供给和FPN。

第2层() - 它有一个级联的CBL单元(),两个单元(),一个单元()以及另一个单元()。的输出()作为输入提供给和FPN。

第3层() - 它包含一个最大池化层()和三个单元(、 和 )。第3层的输出()被馈送到FPN。

从BLite的第层获得的特征图被馈送到FPN以获得增强特征。它通过CCPM模块(和)进一步细化,其输出被馈送到检测Head。

Detector Head

第个检测Head由以下三个子网络组成。首先,一个用于分类的子网络(),通过交叉熵损失训练以区分人脸和非人脸。其次,一个负责确定人脸边界框坐标的子网络,这称为边界框回归头(),并使用SmoothL1损失[20]进行训练。第三,一个专门用于检测到的人脸的五个人脸标志坐标定位的子网络,这称为标志回归头(),并使用SmoothL1损失进行训练。每个任务特定的子网络(、和)在所有检测层()上的合并输出在 Reshape 和垂直拼接操作之后生成单个张量()。这些张量(、和)随后用于训练网络,对应于特定任务的损失函数(如图4所示)。

多任务损失

在先前的基于 Anchor 点的检测器[12, 20, 19]的基础上,目标是通过同时分类和回归 Anchor 点框以及标志点回归来优化检测目标。这包括最小化每个 Anchor 点j的多任务损失:

、和分别表示人脸分类损失(与检测Head相关)、边界框回归损失(与检测Head相关)和标志回归损失(与检测Head相关)。

分类损失函数比较 Anchor 点j的实际标签和预测概率。如果 Anchor 点是人脸的正例,则设置为,否则设置为。二进制交叉熵用于计算分类损失。

第个正 Anchor 框的面部边界框回归损失表示为 [20]。变量 和 分别代表 GT 边界框和预测边界框的{中心横坐标,中心纵坐标,宽度,高度}。本研究使用了[20]中提出的边界框回归损失。

地标回归损失 与 [20] 类似,包含了五个地标点。这里, 和 分别是 GT 和预测的面部地标点的坐标。面部地标回归采用基于 Anchor 点中心的目标准备方法,这与边界框中心回归相似。本研究使用了[20]中提出的地标回归损失。

FDLite面部检测器采用滑动 Anchor 点技术[7]进行多任务学习,其中一系列预定义的边界框(称为 Anchor 框)以不同的尺度系统地遍历图像。这些 Anchor 框作为参考模板,以覆盖不同大小和宽高比的面部。采用滑动 Anchor 点技术可以提高面部检测的召回率。

所提出的检测器FDLite采用了两个独立的多任务损失(,)来促进在端到端框架中的多级[20]人脸分类和人脸定位。的输出特征图被输入到,得到的张量用于计算多任务损失。类似地,的输出特征图也被输入到,得到的张量用于计算多任务损失。这两个损失的组合产生了更精确的人脸预测。在这里,第一个多任务损失使用常规的 Anchor 点选择技术[12, 9]预测边界框。第二个多任务损失细化这些分类和回归预测。然而,在本研究中,两个多任务损失函数在训练期间独立采用常规的 Anchor 点选择技术。尽管使用了相同的检测Head(),但输入到检测Head的部分是不同的:对于多任务损失,它源自;而对于多任务损失,它来自。所提出的框架利用多任务学习进行整个网络的优化,将几个任务集成到一个统一模型中。因此,最终,对于给定的训练 Anchor 点(在第4节中详细说明),联合多任务损失和被最小化。

4 Experimental Setup

Baseline 模型 FDLite的性能与种最先进的模型进行了比较。这些模型包括RetinaFace-Lite [20],Progressiveface [19],SCRFD-10DF [25],MTCNN [6],Faceboxes-3.2x [18],LFFDv1 [24],LFFDv2 [27],YOLOv5s [32],YOLOv5n [32],YOLOv5n0.5 [32]和EResFD [38]。表2展示了比较性能分析结果。

数据集 - FDLite使用了两个标准数据集进行测试 - WIDER FACE [3]和FDDB [2]。FDLite使用WIDER FACE数据集进行训练和验证,而FDDB仅用于测试。采用多尺度测试策略在WIDER FACE [10]上评估结果,而原始图像用于在FDDB上的评估。WIDER FACE数据集包含32,203张图像,带有393,703个标记人脸边框。这些图像是从61个不同的场景类别中随机抽取的,呈现了诸如姿态、尺度、遮挡、表情和光照变化等不同挑战。该数据集被划分为训练、验证和测试子集,分别包含12,883、3,226和16,094张图像。此外,在训练过程中使用了五个面部标志点[20]。相比之下,FDDB数据集包含2,845张图像,带有5,171个标记人脸边框,捕捉了姿态和遮挡的变化。

** Anchor 点设置 -** 在每个检测层(),在输入图像的每个位置采用三种不同大小的 Anchor 点。 Anchor 点大小相对于原始图像大小确定为,和。这里,表示每个检测层的下采样因子。这些 Anchor 点保持的宽高比,覆盖输入图像中从到像素的区域。在训练阶段,根据 Anchor 点与真实边框的交并比(IoU)度量对 Anchor 点进行分类。在多任务损失的情况下,超过IoU阈值的 Anchor 点被标记为人脸 Anchor 点,而低于的则被分类为非人脸 Anchor 点,其他 Anchor 点在训练过程中被忽略。相反,对于多任务损失,超过阈值(此处设为)的 Anchor 点被指定为人脸 Anchor 点,其余的则被标记为背景或负样本。值得注意的是,大多数 Anchor 点(超过99%)被分类为负样本。为了在训练期间减轻正负样本之间的巨大不平衡,两个多任务损失都采用了在线硬示例挖掘(OHEM)[34]。这涉及根据负 Anchor 点的损失进行排序,并选择排名最高的负 Anchor 点。这种选择过程确保在两个多任务损失中保持负样本和正样本之间的比例至少为[20]。

训练细节 - 所提出的人脸检测器使用SGD优化器进行训练,初始学习率为,动量因子为,权重衰减为。训练在130个周期内进行,学习率在100和120周期时降低10倍。训练过程使用了NVIDIA Tesla V100 GPUs,批量大小为8。

测试细节 - FDLite在WIDER FACE数据集上的性能是按照标准评估程序[9, 12]计算的。在WIDER FACE上的测试中,作者遵循[36, 68]的标准做法,并采用翻转以及多尺度(图像短边为[500, 800, 1100, 1400, 1700])策略。通过检测Head中的分类子网络获取所有 Anchor 点的人脸置信度分数。随后,选择置信度超过阈值的 Anchor 点进行人脸检测过程。最后,应用非极大值抑制(NMS)算法,使用Jaccard交叠为[20]。该算法通过为每张图像选择前个高置信度检测结果[22],生成最终结果。

5 Results and Discussion

这一部分对提出的人脸检测器FDLite进行了全面评估。通过将FDLite的性能与使用WIDER FACE和FDDB基准数据集的最先进模型进行比较,来评估FDLite的有效性。此外,还进行了消融分析,以研究不同模型组件的影响。

WIDER FACE数据集上的结果 - 将提出的人脸检测器的性能与种 Baseline 算法(第4节)进行了比较。从表2中呈现的结果中可以得出以下观察。

  • FDLite在WIDER FACE验证数据集的Easy、Medium和Hard子集上分别达到了92.3%、89.9%和82.1%的平均精度(AP)得分。
  • 在WIDER FACE验证数据集的Hard子集上,FDLite在性能上优于所有 Baseline 人脸检测框架(除了ProgressiveFace [19]),同时保持了更低的浮点运算(GFLOPs)和网络大小(百万参数)。
  • 与所有 Baseline 人脸检测器相比,FDLite的浮点运算(以GFLOPs计)较少,除了EResFD和YOLOv5n0.5。然而,在mAP(表2)方面,FDLite超过了EResFD和YOLOv5n0.5。
  • FDLite的参数数量比所有 Baseline 人脸检测器都少,除了EResFD。尽管如此,在mAP(表2)方面,FDLite明显超过了EResFD和YOLOv5n0.5。

FDLite人脸检测器仅用0.94G FLOPs和0.24M参数,就在WIDER FACE验证数据集的easy、medium和hard子集上取得了与最先进模型相竞争(或更好)的性能(平均精度为92.3%、89.9%和82.2%)。

FDDB数据集上的结果 - FDLite在FDDB数据集上进行评估,无需额外训练,以展示其在不同领域的有效性。在1000个假阳性条件下,FDLite达到了97.86%的TPR,其性能与现有方法相当。

消融研究 - 进行以下消融分析实验,以研究不同模型组件的影响。

  • 预训练 Backbone 网络的影响 - 采用BLite预训练 Backbone 网络(在ImageNet1K数据集上训练)与FDLite人脸检测器结合,使得所有四个版本的性能都有所提升(参考表3)。在WIDER FACE验证集的easy、medium和hard子集上,分别观察到大约1%、1%和2%的性能提升。
  • CCPM模块的影响 - 消融实验表明,用CCPM替代SSH [10] 可在WIDER FACE验证集的easy和medium子集上带来轻微的准确度提升。此外,在hard子集上准确度提高了0.5%。在使用单任务或多任务损失配置时,这一趋势持续存在。
  • 双多任务损失的影响 - 本消融实验检查了采用两种多任务损失对FDLite性能的影响。将它们与SSH模块结合使用,导致性能略有提升。在WIDER FACE验证集的easy、medium和hard子集上,分别观察到大约0.5%、1%、2%的改进。然而,当这两种多任务损失与CCPM模块结合使用时,改进更为显著。特别是仅在WIDER FACE验证集的hard子集上,观察到大约2%的性能提升,而其他子集的性能保持不变。

定性性能分析 - 图5展示了在涉及遮挡、模糊和小脸等具有挑战性场景的图像中的人脸检测结果。这些人脸检测结果突显了提出的人脸检测器FDLite在克服常见人脸检测挑战方面的有效性。

6 Conclusion

这项工作提出了一种轻量级人脸检测器FDLite(240万参数和0.94 GFLOPs),具有一种新颖的定制 Backbone 网络BLite(167万参数和0.52 GFLOPs)。它在人脸检测Head中应用了两个独立的多任务损失。该 Proposal 在两个标准数据集(WIDER FACE和FDDB)上进行了验证,并与11种最先进的方法进行了基准测试。该 Proposal 在参数数量和网络浮点运算大大减少的情况下,取得了具有竞争力的准确性。

这项工作通过设计定制 Backbone 网络来减少网络参数和计算量,同时使用标准的损失函数和训练策略。因此,可以通过探索新的损失函数和学习策略来提高性能,而无需增加网络复杂性。

参考

[1].FDLite: A Single Stage Lightweight Face Detector Network.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未来先知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Introduction
  • 2 Related Work
  • 3 Proposed Work
  • BLite: The Customized Backbone
  • Detector Head
    • 多任务损失
    • 4 Experimental Setup
    • 5 Results and Discussion
    • 6 Conclusion
    • 参考
    相关产品与服务
    人脸识别
    腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档