LFFD: A Light and Fast Face Detector for Edge Devices

LFFD: A Light and Fast Face Detector for Edge Devices。

Latency on NVIDIA GTX TITAN Xp (MXNet+CUDA 9.0+CUDNN7.1)

Resolution640×4801280×7201920×10803840×2160
LFFD7.60ms(131.40 FPS)16.37ms(61.07 FPS)31.27ms(31.98 FPS)87.79ms(11.39 FPS)
特点: 轻量化 速度快 模型小 准确率高

Abstract

LFFD是一种适用于边缘设备的、轻量化的、快速的人脸检测算法。该方法是没有anchor的,并且属于 one-stage检测算法。
某一层神经元的RFs(感受野)在输入图像中有规律地分布,这些RFs是自然的“anchors”。结合感受野的“anchors”和适当的感受野的步长。从理论上讲,该方法可以检测出大范围的连续人脸尺度,且具有100%的覆盖率。作者深入了解有效感受野(ERF)与面部尺度之间的关系,以此提出了一个有效的单阶段检测骨干。主干网具有八个检测分支和公共层,计算效率高。针对面向应用的场景,作者提出了一种新的评估方案。在新方案下,该方法具有较高的精度和快速的推理速度。

Introduction

人脸检测是人脸对齐和人脸识别的先决条件。边缘端的人脸检测对精度和速度提出了很高的要求。
更好的平衡准确性和延迟对于将人脸检测应用到更适用的领域是至关重要的。
现有的人脸检测算法大致可分为两类:two-stage方法和one-stage方法。

two-stage方法包括方案选择和定位回归,典型代表是R-CNN系列。
one-stage方法将分类和边界盒(bbox)回归相结合,总是同时实现基于锚点和多尺度的检测。锚定设计与匹配策略是大多数单阶段方法的重要组成部分。为了提高计算精度,这些方法提出了基于重骨干的复杂模块。

  1. two-stage检测算法,将检测问题划分为两个阶段,首先产生候选区域(region proposals),然后对候选区域分类(一般还需要对位置精修)。他们识别错误率低,漏识别率也较低,但速度较慢,不能满足实时检测场景。
  2. one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度。

作者提出:一种用于边缘设备的轻型快速人脸检测器(LFFD),它在准确度和运行效率上都有相当大的平衡。该方法受到了单级多尺度目标检测方法SSD的启发。
SSD的一个特点:为每个检测分支手工设计anchors。这些anchors总是有不同的大小和长宽比,以覆盖不同比例和形状的对象。因此, anchors在大多数单级检测方法中都起着重要的作用。对于一些人脸检测器,复杂的锚定策略是关键部分。

但是anchors面临三个挑战:

  1. anchor匹配不能充分覆盖所有的人脸尺度。
  2. 通过阈值化IOU (Intersection over Union)来判断anchors与groundtruth bbox的匹配。这个阈值可以通过不同应用场景而改变大小,很难固定统一。
  3. 设置anchors数量取决于经验,这可能会导致样本不平衡和计算冗余。

作者认为:在特征图中,神经元的RF(感受野)是 一种 固有的、自然的anchors。
首先,比起那些用离散尺度的anchors来预测的方法,连续尺度的人脸总会被一定大小的RF(感受野)预测。
其次,匹配策略是明确的,即当且仅当一个RF(感受野)的中心落在groundtruth bbox时,这个感受野才与groundtruth bbox匹配。
第三,RFs的数量是自然固定的,它们在输入图像中是有规律分布的。

主干网仅由普通层(conv3×3、conv1×1、ReLU和d residual connection)组成。

本文的主要贡献包括:
• 研究感受野(RF)、有效感受野(ERF)与人脸检测的关系。
• 我们引入RF来克服之前基于anchors的策略的缺点,从而产生一个无anchors的方法。
• 我们提出了一种新的框架,用于准确快速的人脸检测。
• 在多个硬件平台上进行了广泛而全面的实验,以broad FACE和FDDB为基准,充分证明了本文方法在边缘设备上的优越性

感受野RF及其特性 RF是输入图像的一个有限区域,它影响相应神经元的激活。RF决定神经元在原始输入中能看到的范围。直观地说,如果目标被某个RF包住,则可以很好地检测到目标,且概率很高。一般来说,浅层神经元的RFS较小,深层神经元的RFS较大。RF的一个重要特性是,每个输入像素对神经元的激活贡献不同。具体来说,位于RF中心周围的像素具有较大的影响。这种现象被称为有效感受野(ERF)。ERFs存在于神经网络中,呈现高斯分布。因此,使目标物体处于RF中心很重要。提议的LFFD受益于上述观察结果。

人脸检测是一般目标检测的一个著名分支,具有一定的特点。首先,大脸的眼睛、鼻子和嘴巴不可移动,因此大脸的形状是僵硬的。虽然有面部表情变化、头发遮挡等不受约束的情况,但大脸还是可以分辨的。其次,小脸和大脸必须区别对待。微小的脸总是有无法识别的外观。人类甚至很难只凭借一张小脸的面部区域来做出面部/非面部的判断,基于CNN的分类器也一样。随着更多的上下文信息,包括脖子和肩膀,微小的脸变得更容易识别。
在这里插入图片描述
基于以上理解,不同尺寸的人脸需要不同的RF策略:

  • 对于微小/较小的人脸,ERFs必须覆盖人脸以及足够的上下文信息;
  • 对于中等人脸,ERFs只需要包含较少的上下文信息的人脸;
  • 对于大的脸,只有保持在RFs中就足够了。

单级探测器的主要特点是预先确定的bbox anchors(锚点)。为了检测不同的对象,锚点具有多种纵横比和大小。这些锚点总是冗余的定义的。在人脸检测方面,因为人脸是近似正方形的,使用1:1长宽比锚定是合理的。如果卷积核的宽度和高度相等,rfs的形状也是正方形的。该方法将rfs视为天然的“锚点”。对于同一层的神经元,它们的rfs在输入图像中有规律地平铺。一旦网络建成,rfs的数量和大小就自然决定了。

对于匹配策略,本文提出的方法使用了一种简洁明了的方法,即当且仅当rf的中心落在groundtruth bbox中时,rf才被匹配到groundtruth bbox,而不是阈值iou。该匹配策略可以自然地处理连续的脸尺度。例如,100像素的RFS能够预测20像素到40像素之间的人脸。这样极大的缓解了锚点不平衡的问题,并且对各个尺度的人脸一视同仁。

网络体系结构

人脸检测主干,有两个因素决定了损失分支的位置,RFS的大小和步长。RFS的大小保证了人脸特征的鲁棒性和可分辨性,而步长保证了人脸特征100%的覆盖率。网络的总体架构如下。该方法可以检测大于10像素的人脸(人脸大小由长边表示)。可以看出,主干线是由四部分组成的单阶段。关于损失分支的具体信息见表2。

在这里插入图片描述

在这里插入图片描述

tiny part 有10个卷积层。前两层分别以步长4和步长2向下采样输入。因此,在这部分中的其它卷积层的RFS的步长为4。一个重要的原则是:在保持100%的面部覆盖率的同时,尽可能快地对输入进行下采样。这部分有两个损失分支。损失分支1源于c8,其rf大小为55,对于连续人脸尺度10-15。类似地,对于连续人脸尺度15-20,损失分支2来自c10,rf尺寸为71。显然,我们可以确保至少两个rfs的中心落在最小的人脸上,从而实现100%的覆盖率。有一种特殊情况,一个中心可能同时落在两个以上的人脸上,在这种情况下,相应的rf被直接忽略。微小的人脸需要更多的上下文信息,而erfs比rfs小。为此,我们使用比平均人脸尺度大得多的rfs。分支1和分支2的rfs和平均人脸尺度的比值分别为4.4和4.0。在表2中,这一比值从4.4逐渐降低到1.3,因为较大的人脸需要较少的上下文信息。在骨干网中,所有卷积层的核大小均为3×3。然而,分支中卷积层的核大小是1×1,这并不改变rfs的大小。在每个分支中,有两个子分支,一个用于人脸分类,另一个用于BBox回归。
small part负责20-40和40-70两个连续的人脸尺度。本部分中的第一卷积层c11将特征映射下采样2×。对于后面的部分,它们的第一卷积层完成相同的功能。在small part中,比起tiny part,rf的增加速度从8变为16。因此,它需要较少的卷积层来达到目标感受野的大小。medium part部分类似于small part,只有一个分支。
在主干的末端,large part有七个卷积层。由于特征图较小,这些层很容易扩大检测范围,而不需要太多的计算。这部分有三个分支。由于大的人脸更容易检测,rfs和平均人脸尺度的比率相对较小。

该方法可以在一次推理中检测出10~560像素范围的人脸。整个主干网仅由conv 3×3、conv 1×1、relu和残差模块连接组成。主要原因是conv 3×3和conv 1×1由于应用最为广泛,因此被cudnn、ncnn、mace和paddle mobile等推理库高度优化。由于推理速度慢,我们不采用bn作为组件,尽管它已经成为许多网络的标准配置。我们比较了原始骨干网和BN骨干网的速度:原始骨干网可以达到7.6毫秒,BN骨干网只有8.9毫秒,因此速度慢了17%(分辨率:640×480,硬件:Titan X(Pascal))。我们取代了bn,而是训练更多的迭代以获得更好的收敛性。如图2所示,在每个部分中,剩余的连接被并排放置以便训练深骨干。前两部分中所有卷积层的滤波器数目是64。我们不增加滤波器,因为前两部分具有相对较大的特征图,计算成本较高。但是,最后两部分中的过滤器数量可以增加到128个,而不需要太多的额外计算。

Training Details

数据集和数据扩充:
WIDER FACE数据集:12880幅有效人脸数超过150000的图像。小于10像素的面将直接丢弃。数据增强是提高系统鲁棒性的重要手段。具体策略如下:

  1. 颜色失真,如随机光噪声、随机对比度、随机亮度等。
  2. 对每个尺度进行随机抽样。在该网络中,有8个损失分支,每个分支负责一定的连续尺度。因此,我们必须保证:1)每个分支的人脸数大致相同;2)每个人脸可以被每个分支以相同的概率进行采样。为此,我们首先随机选择一个图像,然后随机选择图像中的一个人脸。然后,选择一个连续的人脸尺度,并在尺度内随机调整人脸的大小,及整个图像和其他人脸框。最后,我们在所选人脸的中心裁剪出640×640的子图像,用黑色像素填充外部空间。
  3. 随机水平翻转。我们以0.5的概率翻转裁剪后的图像。

损失函数
在每个损失分支中,有两个分支用于人脸分类和BBOX回归。对于人脸分类,我们使用具有交叉熵损失的softmax对两类进行分类。匹配的rf锚点为阳性,其他锚点为阴性,忽略具有多个匹配人脸的rf锚点。此外,每一个连续尺度都设置了灰度。
在这里插入图片描述
例如,分支3用于人脸尺度20-40,对应的灰度的尺度为[18,20]和[40,44]。处于灰度尺度的人脸会被相应的分支忽略。
对于bbox回归,我们直接采用l2损失。回归 groundtruth定义为:在这里插入图片描述
在这里插入图片描述
L2损失只会被正的RF锚点激活。在最终损失函数中,两个损失具有相同的权重。

困难的负样本挖掘: 对于每个分支,阴性的RF锚点通常多于阳性的。为了稳定和更好的训练,只有一小部分的负RF锚点用于反向传播:我们对所有负锚点的损失值进行排序,只选择最重要的锚进行学习。正锚点与负锚点之比不超过1:10。从经验上看,困难的负样本挖掘可以带来更快、更稳定的收敛。

训练参数:
我们用xavier方法初始化所有参数,从头开始训练网络。输入值首先减去127.5,然后除以127.5。优化方法为SDG,动量为0.9,重量衰减为零,批量大小为32。零权值衰减的原因是该网络的参数个数远小于vgg16。因此,没有必要惩罚。初始学习率为0.1。我们训练1500000次迭代,并通过在600000、1000000、1200000和1400000次迭代中乘以0.1来降低学习率。

训练结果
val set of WIDER FACE

MethodEasy SetMedium SetHard Set
LFFD0.9100.8810.780

test set of WIDER FACE

MethodEasy SetMedium SetHard Set
LFFD0.8960.8650.770

使用修改

configuration_10_320_18L_6scales: 模型大小 1.44M
configuration_10_320_20L_5scales: 模型大小 5.80M
configuration_10_480_23L_7scales: 模型大小 7.42M
configuration_10_640_25L_8scales: 模型大小 8.74M

准确率: 待更新

https://blog.csdn.net/weixin_43013761/article/details/102683981
https://www.cnblogs.com/aoru45/p/11456620.html
https://blog.csdn.net/LYKymy/article/details/100880221
https://github.com/YonghaoHe/LFFD-A-Light-and-Fast-Face-Detector-for-Edge-Devices

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值