面盒:一种高精度的中央处理器实时人脸检测器

  • 论文简介
    • 标题
    • 期刊情况
  • 论文内容
    • 摘要
    • 介绍
    • 相关工作
      • 基于手工的方法
      • 基于CNN的方法
    • FaceBoxes
      • 快速消化卷积层
      • 多尺度卷积层
      • 锚致密化策略
      • 训练
        • 数据集
        • 数据增强
        • 匹配策略
        • 损失函数
        • 硬负挖掘
        • 其他实施细节
    • 实验
      • 运行效率
      • 模型分析
      • 基准评估
    • 总结

论文简介

标题

  • 英文:《FaceNet: A Unified Embedding for Face Recognition and Clustering》
  • 翻译:《面盒:一种高精度的中央处理器实时人脸检测器》

期刊情况

  • 期刊:《Conference on Computer Vision and Pattern Recognition》

论文内容

摘要

虽然人脸检测已经取得了巨大的进步,但仍然存在的一个挑战是在中央处理器上实现实时速度并保持高性能,因为有效的人脸检测模型在计算上往往是禁止的。为了应对这一挑战,我们提出了一种新的人脸检测器,称为面盒,具有卓越的性能,在速度和准确性。具体来说,我们的方法有一个轻量级但强大的网络结构,由快速消化卷积层(RDCL)和多尺度卷积层(MSCL)组成RDCL旨在使FaceBoxes能够在CPU上实现实时速度。MSCL的目标是丰富感受野,将锚分散在不同的层面上,以处理不同尺度的表面。此外,我们提出了一种新的锚加密策略,使不同类型的锚在图像上具有相同的密度,从而显著提高了小人脸的召回率。因此,所提出的检测器在单个中央处理器内核上以20帧/秒的速度运行,在VGA分辨率图像上使用GPU以125帧/秒的速度运行。此外,面盒的速度与面的数量无关。我们对这种方法进行了综合评估,并在几个人脸检测基准数据集上展示了最先进的检测性能,包括AFW、PASCAL人脸和FDDB。


介绍

  • 人脸检测是计算机视觉和模式识别的基本问题之一。它在许多后续的人脸相关应用中发挥着重要作用,如人脸对齐,人脸识别和人脸跟踪。随着过去几十年的巨大进步,特别是卷积神经网络的突破,人脸检测已经成功地应用于我们日常生活的各种场景中。

  • 然而,在不受控制的人脸检测问题上仍然存在一些严峻的挑战,尤其是对CPU设备而言。挑战主要来自于对人脸检测器的两个要求:

    • 1)复杂背景下人脸的视觉变化大,要求人脸检测器能够准确解决复杂的人脸和非人脸分类问题
    • 2)可能的面部位置和面部尺寸的大搜索空间进一步强加了时间效率要求。这两个要求是相互冲突的,因为高精度的人脸检测器往往计算量很大。
      因此,在CPU设备上实现实时速度并保持高性能是实用人脸检测器仍然面临的问题之一
  • 为了满足这两个相互冲突的要求,人脸检测主要从两个方面进行了深入的研究。

    • 早期的方式是基于手工特征。继Viola-Jones人脸检测器的开创性工作之后,早期的工作大多集中在设计鲁棒的特征和训练有效的分类器上。除级联结构外,将可变形部件模型引入人脸检测任务,取得了显著的效果。然而,这些方法高度依赖于非鲁棒的手工特征,并且分别优化每个组件,使得人脸检测流水线次优。简而言之,它们在CPU上是高效的,但是在面对大的视觉变化时不够精确
    • 另一种方法是基于卷积神经网络(CNN),近年来取得了显著的成功,从图像分类到目标检测。最近,CNN已经被成功地引入到人脸检测任务中,作为传统人脸检测框架中的特征提取器。此外,一些人脸检测器从普通的物体检测方法中继承了有效的技术,例如快速人脸检测。这些基于CNN的人脸检测方法对面部外观的巨大变化具有鲁棒性,并表现出最先进的性能但是它们太耗时,无法实现实时速度,尤其是在CPU设备上
  • 这两种方式各有优势。前者速度快,后者精度高。为了在速度和精度上表现良好,一个自然的的想法是结合这两种方法的优势。因此,提出了基于级联CNN的方法,将CNN学习的特征放入级联框架中,以提高性能并保持效率。然而,基于级联CNN的方法存在三个问题:

    • 它们的速度与图像上的人脸数量负相关。速度会随着人脸数量的增加而急剧下降;
    • 基于级联的检测器分别优化每个组件,使得训练过程极其复杂,并且最终的模型是次优的;
    • 对于VGA分辨率的图像,它们在CPU上的运行效率约为14 FPS,不足以达到实时速度
  • 在本文中,我们受Farter R-CNN中的RPN和SSD中的多尺度机制的启发,开发了一种在CPU上具有实时速度的最先进的人脸检测器。具体来说,我们提出了一种新的人脸检测器,称为FaceBoxes,它只包含一个完全卷积的神经网络,可以端到端地训练。所提出的方法具有轻量级但强大的网络结构(如图1所示),该网络结构由快速消化卷积层(RDCL)和多尺度卷积层(MSCL)组成。RDCL旨在使FaceBoxes在CPU上实现实时速度,MSCL旨在丰富感受野,并将锚分散在不同的层上,以处理各种规模的面部。此外,我们提出了一种新的锚点加密策略,使不同类型的锚点在输入图像上具有相同的密度,从而显著提高了小人脸的召回率。因此,对于VGA分辨率的图像,我们的人脸检测器在单个CPU内核上以20帧/秒的速度运行,在GPU上以125帧/秒的速度运行。更重要的是,FaceBoxes的速度与图像上的人脸数量无关。我们综合评估了这种方法,并在几个人脸检测基准数据集上展示了最先进的检测性能,包括AFW、帕斯卡人脸和FDDB。

  • 为了清楚起见,这项工作的主要贡献可以概括为四个方面:

    1. 我们设计了快速消化卷积层(RDCL),使人脸检测在中央处理器上达到实时速度;
    2. 我们引入多尺度卷积层(MSCL),通过丰富感受野和分层离散化锚来处理不同尺度的人脸。
    3. 我们提出了一种新的锚加密策略来提高小人脸的召回率;
    4. 我们进一步提高了AFW、PASCAL face和FDDB数据集的性能。

相关工作

现代人脸检测方法大致可以分为两类。一个是基于手工特点,一个是建立在CNN上。本节简要回顾这两种方法。

基于手工的方法

  • 以前的人脸检测系统大多基于手工特征。自从开创性的Viola-Jones人脸检测器提出将Haar特征、Adaboost学习和级联推理结合起来用于人脸检测以来,许多后续工作被提出用于实时人脸检测,例如新的局部特征,新的boosting算法和新的级联结构。
  • 除了级联框架之外,基于结构模型的方法逐步实现更好的性能,变得越来越高效。一些研究将可变形部分模型引入到人脸检测任务中。这些工作使用有监督的部分、更多的姿态划分、更好的训练或更高效的推理来实现显著的检测性能。

基于CNN的方法

  • CNN首次用于人脸检测可以追溯到1994年。维兰特等人使用训练有素的CNN以滑动窗口的方式检测人脸。罗利等人介绍了一种用于直立正面人脸检测的视网膜连接神经网络,以及一种用于旋转不变人脸检测的方向估计的“路由器”网络。加西亚等人开发了一种神经网络来检测半正面人脸。Osadchy等人训练CNN同时进行人脸检测和姿态估计。这些早期的方法只能在简单数据集上获得相对较好的性能。
  • 近年来,基于CNN的人脸检测器取得了进展。CCF 在CNN人脸检测功能的基础上使用增强功能。Farfade等人对1k ImageNet分类任务上训练的CNN模型进行人脸和非人脸分类任务的微调。Faceness训练一系列用于面部属性识别的CNNs,以检测部分遮挡的面部。CascadeCNN开发了一种基于CNN的级联架构,具有强大的鉴别能力和高性能。秦等提出联合训练CascadeCNN实现端到端优化。MTCNN提出了一种基于多任务级联CNN的联合人脸检测和对齐框架。UnitBox 引入了一个新的交叉-联合损失函数。CMS-RCNN 在具有身体上下文信息的人脸检测中使用更快的RCNN。Convnet 在端到端多任务学习框架下,将CNN与3D人脸模型集成。STN提出了一种新的监督变换网络和用于人脸检测的感兴趣区域卷积

FaceBoxes

本节介绍了我们的三个贡献,使面盒在中央处理器设备上准确有效:快速消化卷积层(RDCL),多尺度卷积层(MSCL)和锚致密化策略。最后,我们介绍相关的训练方法。

快速消化卷积层

大多数基于CNN的人脸检测方法通常受到时间成本的限制,尤其是在CPU设备上。更准确地说,当输入、内核和输出的大小较大时,对CPU的卷积运算极其耗时。我们的RDCL旨在通过适当的内核大小快速缩小输入空间大小,同时减少输出通道的数量,使面盒在CPU设备上达到实时速度,如下所示:
* 缩小输入的空间大小:为了快速缩小输入的空间大小,我们的RDCL为其卷积和汇集层设置了一系列大的步长。如图1所示,Conv1、Pool1、Conv2和Pool2的步幅大小分别为4、2、2和2。RDCL的总步长为32,这意味着输入空间大小快速减少了32倍;
* 选择合适的内核大小:一个网络中前几层的内核大小应该小,以加快速度,同时也应该足够大,以减轻空间大小减小带来的信息损失。如图1所示,为了保持效率和效果,我们分别为Conv1、Conv2和所有池层选择7×7、5×5和3×3的核心大小。
* 减少输出通道的数量:我们利用C.ReLU激活功能(如图2(a)所示)来减少输出通道的数量。C.ReLU的动机来自CNN的观察,即下层的过滤器形成对(即,具有相反相位的过滤器)。根据这一观察,C.ReLU可以通过在应用ReLU之前简单地连接否定输出来使输出通道的数量加倍。使用C.ReLU可以显著提高速度,而精度下降可以忽略不计

多尺度卷积层

所提出的方法是基于RPN的,该RPN是在多类别目标检测的场景中作为类别不可知的提议者而开发的。对于单一类别检测任务(例如,人脸检测),RPN自然是唯一相关类别的检测器。然而,作为一个独立的人脸检测器,RPN无法获得竞争性能。我们认为,这种不令人满意的表现来自两个方面。首先,区域定位网络中的锚只与最后一个卷积层相关联,该层的特征和分辨率太弱,无法处理各种大小的人脸。其次,锚相关层负责检测相应尺度范围内的人脸,但它只有一个单一的感受野,无法匹配不同尺度的人脸。为了解决上述两个问题,我们的MSCL是沿着以下两个维度设计的:
* 沿网络深度维度的多尺度设计:如图1所示,我们设计的MSCL由几层组成。这些图层的大小逐渐减小,并形成多比例要素地图。我们的默认锚点与多比例要素地图相关联(即接收3、接收3 2和接收4 2)。这些层作为沿着网络深度维度的多尺度设计,以不同的分辨率将锚离散在多个层上,以自然地处理各种大小的面。

* 沿网络宽度方向的多尺度设计:为了学习不同比例人脸的视觉模式,锚相关层的输出特征应该对应于不同大小的感受野,这可以通过初始模块轻松实现。初始模块由多个具有不同内核的卷积分支组成。这些分支,作为沿网络宽度维度的多尺度设计,能够丰富感受野。如图1所示,MSCL的前三层基于初始模块。图2(b)说明了我们的初始实现,这是一个捕获不同比例人脸的经济高效的模块。


锚致密化策略

  • 如图1所示,我们对默认锚点(即正方形锚点)采用1:1的纵横比,因为面框近似为正方形。第3层的锚定比例为32、64和128像素,第2层和第4层的锚定比例分别为256和512像素。
  • 图像上锚点的平铺间隔等于相应锚点关联层的步长。例如,Conv3_2的步幅大小为64个像素,其锚点为256 × 256,表明输入图像上每64个像素有一个256 × 256的锚点。我们定义锚的平铺密度(即密度)如下:

    这里,Ascale是锚点的比例,Ainterval是锚点的平铺间隔。我们的默认锚点的平铺间隔分别是32、32、32、64和128。等式(1)对应的密度分别为1、2、4、4、4,其中很明显不同尺度的锚点之间存在平铺密度不平衡问题。与大锚(即128×128、256×256和512×512)相比,小锚(即32 × 32和64 × 64)过于稀疏,导致小人脸召回率低。
  • 为了消除这种不平衡,我们提出了一种新的锚致密化策略。具体来说,为了使一种类型的锚致密n次,我们在一个感受野的中心周围均匀地平铺一个锚,而不是只在这个感受野的中心平铺一个锚来预测。一些例子如图4所示。在本文中,为了提高小锚的平铺密度,我们的策略是对32×32锚进行4次加密,对64×64锚进行2次加密,保证不同尺度的锚在图像上具有相同的密度(如:4),使得不同尺度的面可以匹配几乎相同数量的锚。

训练

  • 本小节介绍训练数据集、数据增强、匹配策略、损失函数、硬负挖掘等实现细节。

数据集

我们的模型是在12880幅WIDER FACE训练子集的图像上训练的。

数据增强

每个训练图像由以下数据增强策略顺序处理:
* 颜色失真:应用一些照片度量失真。
* 随机裁剪:我们从原始图像中随机裁剪五个正方形面片:一个是最大的正方形面片,其他面片的大小在原始图像的短尺寸的[0.3,1]之间。然后我们任意选择一个补丁进行后续操作。
* 缩放变换:随机裁剪后,选定的方形面片将被调整到1024 × 1024。
* 水平翻转:调整大小后的图像以0.5的概率水平翻转。
* 面框过滤器:如果面框的中心在上述处理过的图像中,我们保留面框的重叠部分,然后过滤掉这些高度或宽度小于20像素的面框

匹配策略

在训练过程中,我们需要确定哪些锚点对应于一个人脸边界框。我们首先将每个面匹配到具有最佳jaccard重叠的锚,然后将锚匹配到jaccard重叠高于阈值(即0.35)的任何面

损失函数

我们的损失函数和fast R-CNN里的RPN一样。我们采用两类软最大损失进行分类,采用平滑L1损失进行回归

硬负挖掘

在锚匹配步骤之后,大多数锚被发现是负的,这在正负示例之间引入了显著的不平衡。为了更快的优化和稳定的训练,我们根据损失值对它们进行排序,并选择最大的值,以便负面和正面之间的比率最多为3:1

其他实施细节

所有参数都是用“xavier”方法随机初始化的。我们使用动量为0.9、重量衰减为0.0005、批量为32的SGD对最终模型进行微调。最大迭代次数为120k,我们对前80k次迭代使用1e-3的学习率,然后分别用10e-4和1e-5继续训练20k次迭代。我们的方法在Caffe库中实现。


实验

在这一部分中,我们首先介绍了Faceboxes的运行效率,然后对我们的模型进行了烧蚀性分析,最后在常用的人脸检测基准上对其进行了评估

运行效率

  • 基于CNN的方法一直被指责运行时效率低下。虽然现有的CNN人脸检测器可以通过高端GPU加速,但在大多数实际应用中,尤其是基于CPU的应用中,速度不够快。如下所述,我们的面盒足够高效,可以满足实际需求。
  • 在推断过程中,我们的方法输出大量的盒子(例如,8,525个盒子用于VGA分辨率的图像)。我们首先用0.05的置信阈值过滤掉大多数盒子,并在应用NMS之前保留前400个盒子,然后用0.3的jaccard重叠执行NMS,并保留前200个盒子。我们使用Titan X(帕斯卡)和cuDNN v5.1以及英特尔至强E5-2660v3@2.60GHz来测量速度。如列表1与最近基于CNN的方法相比,我们的FaceBoxes可以在CPU上以20 FPS的速度运行,具有最先进的精度。此外,我们的方法可以使用单个GPU以125 FPS运行,并且只有4.1MB的大小。

模型分析

  • 我们在FDDB数据集上进行了广泛的消融实验来分析我们的模型。与AFW和PASCAL相比,FDDB要困难得多,所以分析我们关于FDDB的模型是有说服力的。对于所有的实验,我们使用相同的设置,除了组件的指定更改。
  • 消融设置:为了更好地理解FaceBoxes,我们一个接一个地消融每个组件,以检查每个建议的组件如何影响最终性能。1)首先,我们消融锚致密化策略。2)然后,我们用三个卷积层代替MSCL,这三个卷积层都具有3×3的核大小,并且其输出数与MSCL的前三个初始模块相同。同时,我们只将锚与最后一个卷积层相关联。3)最后,我们用RDCL中的ReLU代替C.ReLU。消融结果列于表2和一些有希望的结论可以总结如下:
  • 锚致密化策略至关重要:我们的锚密度策略是增加小锚(即32 × 32和64 × 64)的密度,以提高小人脸的召回率。从表2中列出的结果我们可以看到,在消融锚致密化策略后,FDDB上的mAP从96.0%降低到94.9%。急剧下降(即1.1%)表明了所提议的锚致密化策略的有效性。
  • MSCL更好:表2中第二列和第三列之间的比较表明,MSCL有效地增加了1.0%的mAP,由于不同的感受野和多尺度锚瓷砖机制。
  • RDCL是高效且保持准确性的:RDCL的设计使我们的面盒能够在CPU上实现实时速度。如表2中所述:RDCL导致精度下降可以忽略不计,但速度有显著提高。具体来说,FDDB的mAP减少了0.1%,作为回报,速度提高了约19.3毫秒。

基准评估

  • 我们在普通的人脸检测基准数据集上评估了人脸盒,包括野生人脸注释(AFW),PASCAL人脸,以及人脸检测数据集和基准(FDDB)。
  • AFW数据集: 它有205张图片,473张脸。我们根据著名的作品和商用人脸检测器(例如,Face.com、Face++和Picasa)来评估FaceBoxes。如图4所示,我们的FaceBoxes比其他所有产品都有很大的优势。图7(a)显示了AFW数据集的一些定性结果。


    PASCAL人脸数据集: 它是从PASCAL个人布局数据集的测试集中收集的,由1335张具有大的面部外观和来自851张图像的姿势变化的面部组成。图5显示了该数据集上的精度-召回率曲线。我们的方法明显优于所有其他方法和商用人脸检测器(如SkyBiometry,Face++和Picasa)。图7(b)显示了PASCAL人脸数据集的一些定性结果。

  • FDDB数据集:它有5171张脸,在2845张照片中,这些照片是从Yahoo网站的新闻文章中拍摄的。FDDB采用包围椭圆,而我们的面框输出矩形包围盒。这种不一致对连续得分影响很大。为了在连续分数评估下进行更公平的比较,我们训练一个椭圆回归器来将我们预测的包围盒转换为包围椭圆。我们对比其他方法评估我们在FDDB的人脸检测器。结果如图6(a)和图6(b)所示。我们的FaceBoxes实现了最先进的性能,并在不连续和连续的ROC曲线上以较大的优势优于所有其他产品。这些结果表明,我们的人脸盒可以鲁棒地检测不受约束的人脸。图7©显示了FDDB的一些定性结果。


总结

于用于人脸检测任务的有效模型往往在计算上是禁止的,所以对于中央处理器设备来说,实现实时速度并保持高性能是具有挑战性的。在这项工作中,我们提出了一个新的人脸检测器,具有优越的性能,在速度和准确性。该方法具有轻量级但强大的网络结构,由RDCL和MSCL组成。前者使FaceBoxes能够实现实时速度,后者旨在丰富感受野,并将锚分散在不同的层上,以处理各种规模的面。此外,提出了一种新的锚加密策略来提高小人脸的召回率。实验表明,我们的贡献导致FaceBoxes在普通人脸检测基准上的最先进的性能。该探测器速度非常快,在中央处理器上实现20帧/秒的VGA分辨率图像,在图形处理器上可以加速到125帧/秒。

论文阅读笔记——面盒:一种高精度的中央处理器实时人脸检测器相关推荐

  1. FaceBoxes: 高精度的CPU实时人脸检测器

    论文题目:<FaceBoxes: A CPU Real-time Face Detector with High Accuracy> 论文链接:https://arxiv.org/pdf/ ...

  2. 论文阅读笔记(五)——狐猴识别系统:一种便于狐猴个体识别的面部识别系统

    论文阅读笔记(五)--狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文简介 论文中文翻译:狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文名称:<LemurFaceID: a fac ...

  3. 论文阅读笔记:《一种改进的图卷积网络半监督节点分类》

    论文阅读笔记:<一种改进的图卷积网络半监督节点分类> 文章目录 论文阅读笔记:<一种改进的图卷积网络半监督节点分类> 摘要: 引言 非欧几里得数据 1 深度池化对偶图神经网络 ...

  4. 论文阅读笔记(一)——铁饼鱼的面部识别:使用数字模型的实验方法

    论文阅读笔记(一)--铁饼鱼的面部识别:使用数字模型的实验方法 论文简介 期刊情况 摘要 研究背景 正文 动物实验对象的制备 社交展示的描述 实验过程 实验1 实验2 道德声明 结果 商量 论文简介 ...

  5. 论文阅读笔记(三)——从老虎到熊猫:动物头部检测

    论文阅读笔记(三)--从老虎到熊猫:动物头部检测 论文简介 论文中文翻译:<从老虎到熊猫:动物头部检测> 论文名称:<From Tiger to Panda: Animal Head ...

  6. Finging tiny faces论文阅读笔记

    <Finding Tiny Faces>论文阅读笔记 基础知识 CNN(卷积神经网络) Resnet(深度残差学习网络) NMS(非极大值抑制) 论文翻译(粗翻) 摘要 介绍 Multi- ...

  7. 全卷积(FCN)论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation

    论文阅读笔记:Fully Convolutional Networks forSemantic Segmentation 这是CVPR 2015拿到best paper候选的论文. 论文下载地址:Fu ...

  8. DnCNN论文阅读笔记【MATLAB】

    DnCNN论文阅读笔记 论文信息: 论文代码:https://github.com/cszn/DnCNN Abstract 提出网络:DnCNNs 关键技术: Residual learning an ...

  9. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

  10. FCGF论文阅读笔记

    FCGF论文阅读笔记 0. Abstract 从三维点云或者扫描帧中提取出几何特征是许多任务例如配准,场景重建等的第一步.现有的领先的方法都是将low-level的特征作为输入,或者在有限的感受野上提 ...

最新文章

  1. 自定义控件:等比例显示控件RatioLayout
  2. 设计模式学习(六)结构型模式初步了解
  3. spring mvc @ModelAttribute 基本类型 自定义对象解析流程
  4. Linux CPU cache
  5. MySQL 高级 loop循环
  6. 跨界会对电商行业造成什么影响
  7. Segment,Path,Ring和Polyline对象
  8. 刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会
  9. u-boot中filesize环境变量
  10. python在城市规划中的运用_城市设计在城市规划管理中的运用
  11. c语言格式化知识点(sscanf)
  12. 如何提升你的javascript代码逼格之简写篇
  13. vue 监听div滚动事件
  14. 动手实验:使用 jstat 摸清线上系统的JVM运行状况
  15. 空中交通通信控制设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 安装anaconda时报错“failed to create menus”尝试各种解决方法
  17. 用程序实现:给一个不多于4位的正整数,求出它是几位数,逆序输出各位数字?
  18. 宏定义编程软件_什么是计算机编程? 定义软件开发。
  19. 返还delegation
  20. 计算机学院优秀主讲教师评选细则,湖北中医药大学优秀主讲教师评选办法

热门文章

  1. 六石管理学:遇到问题先记录分析,再找人帮忙
  2. OFFICE技术讲座:WP/SS文字渲染不开启的条件
  3. 传统武术家为什么看起来厉害?谈实战的重要性
  4. mvn 错误: @param 未找到
  5. JAVA反射性能约慢三个量级
  6. debian编译openjdk8
  7. 宇宙质量估算为10^53KG
  8. 坐飞机还是尽量早点出发(差点误机)
  9. 复位BIOS解决电脑启动死机
  10. 开通华为平板的调试功能