LFFD: A Light and Fast Face Detector for Edge Devices

Abstract

  • 人脸检测技术作为一项基础性的应用技术,一直部署在存储空间有限、计算能力低的边缘设备上。介绍了一种用于边缘检测的光快速人脸检测仪。该方法是自由锚的,属于一阶段分类。具体来说,我们重新思考了在人脸检测背景下,接收场(rf)和有效接收场(erf)的重要性。本质上,某一层神经元的RFs在输入图像中有规律地分布,这些RFs是自然的“锚”。该方法结合了rf锚和合适的rf步长,能够检测出覆盖率为100%的大范围连续人脸尺度。深入了解ERF与面部尺度之间的关系,激发了一个有效的单阶段检测骨干。主干网具有八个检测分支和公共层,计算效率高。在流行的基准上进行了全面而广泛的实验:WIDER FACE和FDDB数据集上进行了测试。针对面向应用的场景,提出了一种新的评估方案。在新方案下,该方法具有较高的精度(WIDER FACE 验证集/测试集-简单:0.910/0.896,中等:0.881/0.865,困难:0.780/0.770,FDDB-不连续:0.973,连续:0.724)。引入多个硬件平台来评估运行效率。该方法能获得快速的推理速度。

Introduction

  • 人脸检测是计算机视觉中一个由来已久的问题。在实践中,它是一些与人脸相关的应用的先决条件,例如人脸对齐[14]和人脸识别[31]。除此之外,人脸检测器通常部署在边缘设备上,如移动电话、IP摄像头和物联网(IoT)传感器。这些设备内存有限,计算能力低。在这种情况下,对人脸检测的精度和速度提出了更高的要求。
  • 目前最先进的面部探测器已经通过利用预先训练过的重骨干,如vgg16[27]、resnet50/152[7]和densenet121[10],在定罪基准宽脸[33]上实现了相当高的精确度。可以看出,这些方法的精度与实际应用中难以察觉的边缘间隙相似。通过使用更复杂和更重的骨干来进一步提高准确性是困难和不现实的。在我们看来,更好地平衡准确度和延迟对于将人脸检测应用到更适用的领域是至关重要的。
  • 人脸检测是近十年来发展迅速的一般目标检测分支。Viola Jones人脸检测仪的早期工作[29]提出了一个经典的检测框架——具有手工制作功能的级联分类器。其著名的追随者之一是聚合频道特性(ACF)[4,32],它可以有效地利用频道特性。虽然上述方法可以获得较快的运行速度,但是它们依赖于手工制作的特征,并且没有进行端到端的训练,导致检测精度不高。
  • 近年来,基于卷积神经网络(cnn)的人脸检测技术[36、39、16、3、28、13、30、34、9、38、40、20、37]取得了很大的进展,部分原因在于较宽的人脸基准的成功。这些方法大致可分为两类:两阶段法和一阶段法。两阶段方法[13,30]包括方案选择和定位回归,主要来源于r-cnn系列[6,5,26]。然而,单阶段方法[9,38,20,37,28,3,16,36]一致地结合了分类和边界盒(bbox)回归,总是同时实现基于锚和多尺度的检测。锚定设计与匹配策略是大多数单阶段方法的重要组成部分。为了提高计算精度,这些方法提出了基于重骨干的复杂模块。尽管上述方法可以达到最新的结果,但它们可能无法适当地平衡准确性和延迟。
  • 在本文中,我们提出了一种用于边缘设备的轻型快速人脸检测器(LFFD),它在准确度和运行效率上都有相当大的平衡。该方法受到了单级多尺度目标检测方法ssd[17]的启发,对其他人脸检测方法也有一定的启发[16,28,38]。ssd的一个特点是预先定义的锚箱是为每个检测分支手动设计的。这些长方体总是有不同的大小和纵横比,以覆盖具有不同比例和形状的对象。因此,锚定在大多数单阶段检测方法中起着重要的作用。对于一些人脸检测器[38,40,28,16],复杂的锚定策略是贡献的关键部分。然而,基于锚的方法可能面临三个挑战:
  1. 锚定匹配不能完全覆盖所有的面。虽然这可以得到缓解,但仍然是一个问题;
  2. 通过阈值iou(并集上的交集)来确定锚与基本事实bboxes的匹配。门槛是根据经验设定的,很难对其影响进行可靠的调查;
  3. 不同尺度下的锚定数目取决于经验,这可能导致样本不平衡和计算冗余。
  • 在我们看来,特征图中神经元是固有的和自然的“锚”。RF可以轻松应对上述挑战。首先,在一定的rf尺度范围内可以预测人脸的连续尺度,而不是锚定方法中的离散尺度。其次,匹配策略是明确的,即当且仅当RF的中心落在groundtruth bbox中时,RF才与groundtruth bbox匹配。第三,RFS的数目是自然固定的,它们在输入图像中有规律地分布。此外,我们通过了解ERF的特性,对人脸尺度和RF尺度进行了定性分析,得到了一个具有8个检测分支的有效主干。主干网仅由公共层(conv3×3、conv1×1、relu和剩余连接)组成,比vgg16[27]、resnet50[7]和densenet121[10]轻得多。因此,最终的模型只有2.1M的参数(相对于VGG16-138.3M和Resnet 50-25.5M),并且达到了卓越的精度和运行速度,这使得它适合于边缘设备。
  • 总之,本文的主要贡献包括:
  1. 研究了rf、erf与人脸检测的关系。相关的理解推动了网络设计。
  2. 我们引入RF来克服以前基于锚的策略的缺点,从而得到一种自由锚的方法。
  3. 我们提出了一种新的具有公共层的骨干网,用于精确快速的人脸检测。
  4. 在多个硬件平台上对基准宽面和FDDB进行了广泛而全面的实验,以证明所提出的方法对于边缘设备的优越性。

Related Work

  • 早期的人脸检测器利用手工制作的特征和层叠分类器来检测滑动窗口形式的人脸。Viola Jones人脸检测仪[29]使用Adaboost和类似于Haar的功能来区别地训练人脸分类。随后,利用更有效的手工制作功能[21,41,32]和更强大的分类[1,22]成为主流。这些方法不是端到端训练,分别对待特征学习和分类训练。虽然获得了较快的运行速度,但仍不能获得满意的精度。
  • 目前基于cnn的人脸检测技术主要有两级[6,5,26]和一级[17,23,24,25]通用目标检测。[13]和[30]都基于更快的r-cnn[26],将原来更快的r-cnn应用于人脸检测。Zhang等人[35]提出了一种内部级联结构的用于粗到细人脸检测的级联CNN。目前,单级人脸检测技术占主导地位。mtcnn[34]以滑动窗口的方式执行人脸检测,并依赖于图像金字塔。HR[9]在某种程度上是MTCNN的高级版本,也需要图像金字塔。图像金字塔具有速度慢、存储成本高等缺点。S3FD[38]在设计检测分支时考虑了射频,提出了一种提高命中率的锚匹配策略。在[40]中,Zhu等人通过提出一种鲁棒的锚生成和匹配策略来检测小人脸。研究结果表明,锚定相关策略对人脸检测至关重要。在S3FD[38]之后,金字塔盒[28]使用低级特征金字塔层(lfpn)增强主干,以实现更好的多尺度检测。SSH[20]构造了三个与上下文模块协作的检测模块,用于尺度不变的人脸检测。dsfd[16]具有特征增强模块、早期层监控和改进的锚匹配策略以更好地初始化的特点。S3FD、Pyramidbox、ssh和dsfd使用vgg16作为骨干,导致模型大,计算效率低。Facebox[37]旨在通过快速减小输入图像的大小,使面部检测器实时运行。具体来说,它在四层(两个卷积层和两个池层)之后达到32的大跨距。虽然facebox的运行速度很快,但它放弃了对小人脸的检测,导致在宽域上的精度相对较低。与传统的人脸检测方法不同,该方法对小人脸检测的处理非常细致,同时实现了快速的运行速度和大范围的覆盖。可以观察到,最新技术方法使用的网络往往变得更复杂和更重。在我们看来,以牺牲运行速度为代价来获得微小的精度改进是不适合实际应用的。

Light and Fast Face Detector

  • 本文首先简要介绍了RF及其特性。RF是输入图像的一个有限区域,它影响相应神经元的激活。RF决定神经元在原始输入中能看到的范围。直观地说,如果目标被某个RF包住,则可以很好地检测到目标,且概率很高。一般来说,浅层神经元的RFS较小,深层神经元的RFS较大。RF的一个重要特性是,每个输入像素对神经元的激活贡献不同[18]。具体来说,射频中心周围的像素影响更大。当像素远离中心时,影响逐渐减小。这种现象被称为有效感受野。ERFS固有地存在于神经网络中,呈现高斯分布。因此,使目标物体处于RF中心也很重要。提议的LFFD受益于上述观察结果。
  • 人脸检测是一般目标检测的一个著名分支,具有一定的特点。首先,大脸蛋由于其不可移动的部分,如眼睛、鼻子和嘴巴,几乎是僵硬的。虽然有面部表情变化、头发遮挡等不受约束的情况,但大脸还是可以分辨的。其次,小脸蛋和大脸蛋必须区别对待。微小的脸总是有无法识别的外观(一个例子如图1所示)。人类甚至很难通过只看到一张小脸的面部区域来做出面部/非面部的决定,基于CNN的分类也一样[9]。随着更多的上下文信息,包括脖子和肩膀,微小的脸变得更容易识别。
  • 基于以上理解,不同尺寸的人脸需要不同的RF策略:
  1. 对于小/小面,ERFS必须覆盖这些面以及足够的上下文信息;
  2. 对于中等人脸,ERFS只需要包含很少上下文信息的人脸;
  3. 对于大的脸,只有保留在RFS中就足够了。
  • 单级探测器的主要特点是预先确定BBOX锚。为了检测不同的对象,锚具有多种纵横比和大小。这些锚总是多余的。在人脸检测方面,使用1:1长宽比锚定是合理的,因为人脸是近似正方形的,这在[38,37]中也提到过。如果核的宽度和高度相等,rfs的形状也是正方形的。该方法将rfs视为天然的“锚”。对于同一层的神经元,它们的rf在输入图像中有规律地平铺。一旦网络建成,rfs的数量和大小就固有地决定了。
  • 对于匹配策略,本文提出的方法使用了一种简洁明了的方法,即当且仅当rf的中心落在groundtruth bbox中时,rf才被匹配到groundtruth bbox,而不是阈值iou。在典型的基于锚的方法上S3FD[38]中,zhang等人还分析了ERFS的影响,特别是针对微小面设计了锚增强。为了提高锚杆的命中率,S3FD引入了锚杆不平衡问题(小面锚杆过多),必须通过附加手段加以解决。然而,该方法通过控制RF步幅,理论上可以达到100%的人脸覆盖率。此外,RF与我们的匹配策略可以自然地处理连续的脸尺度。例如,100像素的RFS能够预测20像素到40像素之间的面。这样就大大缓解了锚杆失稳问题,对各标度的工作面进行了同等的处理。
  • 基于上述讨论,我们没有创建任何锚,并且所提出的方法没有真正地将锚与groundtruth bboxes匹配。因此,提出的方法是无锚的。
  • 根据以上分析,我们可以设计一个专门的人脸检测主干。有两个因素决定了丢失分支的位置RFS的大小和跨距。RFS的大小保证了学习到的人脸特征是健壮和可识别的,而步幅保证了100%的覆盖率。图2示出了所提议的网络的总体架构。该方法可以检测大于10像素的人脸(人脸大小由长边表示),因为宽的人脸基准数据集需要检测大于10像素的人脸。可以看出,提出的主干线是一个阶段,由四部分组成。关于损失分支的具体信息见表2。
  • 小部分有10个卷积层。前两层分别以第4步和第2步向下采样输入。因此,本部分中的其它卷积层的RFS的步长为4。一个关键的原则是:在保持100%的面部覆盖率的同时,尽可能快地减少输入。这一部分有两个损失分支。损失分支1源于c8,其rf大小为55(对于连续面标度10-15)。类似地,对于连续面标度15-20,损耗支路2来自rf尺寸为71的c10。显然,我们可以确保至少两个rfs的中心可以落在最小的面上,从而实现100%的覆盖率。有一种特殊情况,一个中心可能同时落在两个以上的面上,在这种情况下,相应的rf被直接忽略。正如我们在第二节讨论过的。3.1,微小的人脸需要更多的上下文信息,而erfs比rfs小。为此,我们使用比平均面部比例大得多的rfs。分支1和分支2的rfs和平均面部比例分别为4.4和4.0。在表2中,这类比率从4.4逐渐降低到1.3,因为较大的面需要较少的上下文信息。在骨干网中,所有卷积层的核大小均为3×3。然而,分支卷积层的核大小是1×1,这并不改变rfs的大小。在每个分支中,有两个分支,一个用于面分类,另一个用于BBox回归。
  • 小部分负责20-40和40-70两个连续的面标。本部分中的第一卷积层c11将特征映射下采样2×。对于随后的部分,它们的第一卷积层完成相同的功能。在很小的一部分中,与小部分8相比,rf的增加速度变为16。因此,需要较少的卷积层来达到目标射频大小。中间部分类似于小部分,只有一个分支。
  • 在主干的末端,大部分有七个卷积层。由于特征映射较小,这些层容易在不增加过多计算增益的情况下扩大检测范围。这部分有三个分支。由于大的人脸更容易被发现,rfs和平均人脸尺度的比率相对较小。
  • 该方法可以在一次推理中检测出10到560像素的大范围人脸。整个主干网仅由conv 3×3、conv 1×1、relu和剩余连接组成。主要原因是conv 3×3和conv 1×1由于应用最为广泛,因此被cudnn、ncnn、mace和paddle mobile等推理库高度优化。由于推理速度慢,我们不采用bn[11]作为组件,尽管它已经成为许多网络的标准配置。我们比较了原始骨干网和BN骨干网的速度:原始骨干网可以达到7.6毫秒,BN骨干网只有8.9毫秒,因此速度慢了17%(分辨率:640×480,硬件:Titan X(Pascal))。我们不再使用bn,而是训练更多的迭代以获得更好的收敛性。如图2所示,在每个部分中,剩余的连接被并排放置以便于训练深骨干。前两部分中所有卷积层的滤波器数目是64。我们不增加滤波器,因为前两部分具有相对较大的特征图,计算成本较高。但是,最后两部分中的过滤器数量可以增加到128个,而不需要太多的额外计算。
  • 该方法在宽人脸基准的训练集[33]上进行训练,包括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损失。回归基本事实定义为:
  • 对于每个分支,负射频锚定通常多于正射频锚定。为了稳定和更好的训练,只有一个分数负rf锚用于反向传播:我们对所有负锚的损失值进行排序,只选择最重要的锚进行学习。正锚与负锚之比不超过1:10。从经验上看,硬负开采可以带来更快、更稳定的收敛。我们用xavier方法初始化所有参数,从头开始训练网络。输入值分别为127.5和127.5。最佳化方法是动量为0.9,重量衰减为零,批量大小为32的sgd。零权值衰减的原因是该网络的参数个数远小于vgg16。因此,没有必要惩罚。初始学习率为0.1。我们训练1500000次迭代,并通过在600000、1000000、1200000和1400000次迭代中乘以0.1来降低学习率。两台英伟达GTX1080TI,训练时间约5天。

Conclusion

  • 本文介绍了一种光照快速的人脸检测方法,该方法能很好地平衡准确度和延时。通过对人脸检测背景下的rf进行深入反思,提出了一种无锚方法来克服基于锚方法的缺陷。该方法将rfs视为自然的“锚”,可以覆盖连续的人脸尺度,命中率接近100%。在研究了erfs与人脸尺度的本质关系后,我们精心设计了一个简单而有效的网络,该网络有八个检测分支。所提出的网络由具有较少滤波器的公共构建块组成,因此推理速度快。为了充分分析该方法,进行了全面而广泛的实验。实验结果表明,该方法具有模型尺寸小、计算效率高等优点,是边缘器件的理想选择。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值