FaceBoxes: A CPU Real-time Face Detector with High Accuracy笔记

1. Introduction

略。

2. Related work

略。

3. FaceBoxes

本节介绍了能使FaceBoxes\mathrm{FaceBoxes}FaceBoxes在CPU\mathrm{CPU}CPU设备上准确而高效地运行的三点贡献:快速分解卷积层(RDCL\mathrm{RDCL}RDCL),多尺度卷积层(MSCL\mathrm{MSCL}MSCL)及锚框稠化策略。最后,我们介绍了相关的训练方法。

3.1. Rapidly Digested Convolutional Layers

大多数基于CNN\mathrm{CNN}CNN的人脸检测方法都会受到时间开销的限制,尤其是在CPU\mathrm{CPU}CPU设备上。更准确地说,当输入、内核和输出大小较大时,CPU\mathrm{CPU}CPU卷积运算非常耗时。我们提出的RDCL\mathrm{RDCL}RDCL通过采用适当的内核大小并减少输出通道数的方式快速收缩输入空间大小,这使得FaceBoxes\mathrm{FaceBoxes}FaceBoxes能在CPU\mathrm{CPU}CPU设备上达到实时的速度:

收缩输入空间大小:为了快速收缩输入空间大小,我们在RDCL\mathrm{RDCL}RDCL的卷积层和池化层中采用了大步长。如下图所示,Conv1\mathrm{Conv1}Conv1、Pool1\mathrm{Pool1}Pool1、Conv2\mathrm{Conv2}Conv2和Pool2\mathrm{Pool2}Pool2的步长分别为444、222、222和222。RDCL\mathrm{RDCL}RDCL的总步长为323232,这意味着输入空间可以快速地收缩323232倍。

选择适当的内核大小:在一个网络中,前几层的内核大小应该较小,这样可以降低网络推理延迟,但从减轻由空间大小减小造成的信息损失的角度来看,内核大小应该较大。如下图所示,为了保证网络的高效与有效性,我们将Conv1\mathrm{Conv1}Conv1、Conv2\mathrm{Conv2}Conv2及所有池化层的内核大小分别设置为7×77\times 77×7,5×55\times 55×5及3×33\times 33×3。

减少输出通道数:我们利用C.ReLU\mathrm{C.ReLU}C.ReLU激活函数(如下图(a)(a)(a)所示)来减少输出通道数。有研究表明,在CNN\mathrm{CNN}CNN的较低层中滤波器成对(即相位相反的滤波器)出现。C.ReLU\mathrm{C.ReLU}C.ReLU函数将原始输出与取反输出相串联,并使用ReLU\mathrm{ReLU}ReLU函数对串联张量进行激活,最终输出通道数会增加一倍。C.ReLU\mathrm{C.ReLU}C.ReLU函数可以显著提高速度,同时其导致的精确度下降可以忽略不计。

C.ReLU\mathrm{C.ReLU}C.ReLU:是文献《UnderstandingUnderstandingUnderstanding andandand ImprovingImprovingImproving ConvolutionalConvolutionalConvolutional NeuralNeuralNeural NetworksNetworksNetworks viaviavia ConcatenatedConcatenatedConcatenated RectifiedRectifiedRectified LinearLinearLinear UnitsUnitsUnits》提出的激活函数。作者在研究CNN\mathrm{CNN}CNN模型时发现,使用ReLU\mathrm{ReLU}ReLU作为激活函数时,模型最初几层学习到的滤波器存在负相似性,这说明这些滤波器存在冗余。作者在AlexNet\mathrm{AlexNet}AlexNet模型上进行实验,模型前555层卷积层的滤波器余弦相似度统计如下图所示,其中蓝色表示模型滤波器相似度直方图统计,红色表示随机滤波器相似度统计。一开始,模型滤波器相似度中心位于负轴,随着层数的加深,中心逐渐向零靠拢。作者猜想由于ReLU\mathrm{ReLU}ReLU函数会消除负值,所以模型前几层会通过学习负相似的滤波器来抵消这种影响。如果显示地利用上述先验知识,设计一种允许正负值同时通过的激活函数,那么就可以降低滤波器冗余。

3.2. Multiple Scale Convolutional Layers

本文提出的方法基于RPN\mathrm{RPN}RPN改进,RPN\mathrm{RPN}RPN是一种在多类别目标检测场景中发展起来的与类别无关的候选器。对于单类别检测任务(如人脸检测),RPN\mathrm{RPN}RPN则可以看作一种与类别相关的检测器。然而,作为一种独立的人脸检测算法,RPN\mathrm{RPN}RPN并不具有竞争力。我们认为这主要由两个方面造成。首先,RPN\mathrm{RPN}RPN锚框特征来自于最后一个卷积层,其特异性和分辨率不足以处理各种不同尺度的人脸。其次,锚框所关联的卷积层感受野单一,无法匹配不同尺度的人脸。为了解决上述两个问题,我们提出的MSCL\mathrm{MSCL}MSCL从以下两个维度进行设计:

网络深度维度的多尺度设计. 如3.13.13.1节图111所示,我们设计的MSCL\mathrm{MSCL}MSCL由多个层结构组成。这些层的尺寸逐渐减小,并且其中一部分层输出会组合形成多尺度特征图。与SSD\mathrm{SSD}SSD相似,我们的默认锚框与不同尺度的特征图(即Inception3\mathrm{Inception3}Inception3、Conv3_2\mathrm{Conv3\_2}Conv3_2及Conv4_2\mathrm{Conv4\_2}Conv4_2)相关联。这些层是一种沿着网络深度维度的多尺度设计,将锚框离散到不同分辨率的多个层上,可以处理不同大小的人脸。

网络宽度维度的多尺度设计. 为了学习不同尺度的人脸视觉模式,锚框相关层的输出应该对应不同大小的感受野,这可以通过Inception\mathrm{Inception}Inception模块轻松实现。Inception\mathrm{Inception}Inception模块由不同核的多个卷积分支组成。这些分支是一种沿着网络宽度维度的多尺度设计,能够丰富感受野。如3.13.13.1节图111所示,MSCL\mathrm{MSCL}MSCL的前三层基于Inception\mathrm{Inception}Inception模块设计。我们的Inception\mathrm{Inception}Inception模块实现如3.13.13.1节图2(b)2(b)2(b)所示,这是一种性价比很高的模块,可以捕捉不同尺度的人脸。

3.3. Anchor densification strategy

如3.13.13.1节图111所示,我们对于默认锚框采用1:11:11:1的纵横比(即正方形锚框),这是因为人脸框接近于正方形。对于Inception3\mathrm{Inception3}Inception3层而言,其锚框尺度为323232、646464及128128128像素,对于Conv3_2\mathrm{Conv3\_2}Conv3_2及Conv4_2\mathrm{Conv4\_2}Conv4_2层而言,其锚框分别为256256256及512512512像素。

在原始输入图像上,其锚框间隔等于锚框相关联层的总体步长。举个例子,Conv3_2\mathrm{Conv3\_2}Conv3_2的总体步长为646464像素,其锚框尺寸为256×256256\times256256×256,这意味着在输入图像上,每646464像素就会有一个256×256256\times256256×256的锚框。我们用下式定义锚框密度:
Adensity=Ascale/AintervalA_{density}=A_{scale}/A_{interval} Adensity​=Ascale​/Ainterval​
其中,AscaleA_{scale}Ascale​表示锚框尺寸,AintervalA_{interval}Ainterval​表示锚框间隔。我们的默认锚框间隔分别为323232,323232,323232,646464及128128128。根据上式,其对应的锚框密度为111,222,444,444及444,很显然,对于不同尺度的锚框存在密度不平衡的问题。与大锚框(即128×128128\times128128×128、256×256256\times256256×256及512×512512\times512512×512)相比,小锚框(即32×3232\times3232×32及64×6464\times6464×64)过于稀疏,这会导致小尺度人脸的召回率的降低。

为了消除这种不平衡,我们提出了一种锚框稠化策略。具体来说,为了稠化某一种类型的锚框,我们会在感受野中心均匀的平铺Anumber=n2A_{number}=n^2Anumber​=n2个而非111个锚框,如下图所示。在本文中,我们将32×3232\times3232×32的锚框稠化了444倍,64×6464\times6464×64的锚框稠化了222倍,这保证了不同尺度的锚框在输入图像上都具有相同的密度(即444),因此不同尺度的人脸可以匹配几乎相同数量的锚框。

3.4. Training

本节我们将介绍训练数据集、数据增强、匹配策略、损失函数、难负例挖掘及其他实现细节。

训练数据集. 我们的模型在WIDERFACE\mathrm{WIDER}\ \mathrm{FACE}WIDER FACE的128801288012880张图片的训练集上进行训练。

数据增强. 每张训练图片都通过以下数据增强策略进行顺序处理。

  • 颜色变换:我们对原始图像应用了一些与文献《SomeSomeSome improvementsimprovementsimprovements ononon deepdeepdeep convolutionalconvolutionalconvolutional neuralneuralneural networknetworknetwork basedbasedbased imageimageimage classificationclassificationclassification》相似的像素变换。

  • 随机裁剪:我们会从原始图像中随机裁剪五个正方形补丁:其中一个正方形补丁按最大尺寸进行裁剪,其余正方形补丁按原始图像短边尺寸的[0.3,1][0.3,1][0.3,1]进行裁剪。之后,我们随机挑选一个补丁进行后续操作。

  • 尺寸变换:随机裁剪之后,我们将挑选的正方形补丁调整至1024×10241024\times10241024×1024。

  • 水平翻转:调整后的图像按概率0.50.50.5进行水平翻转。

  • 人脸框过滤:如果人脸框中心位于上述处理过的图像中,我们会保留其重叠部分,如果保留的人脸框宽度或高度小于202020个像素,我们会将其过滤掉。

匹配策略. 在训练期间,我们需要决定哪些锚框与人脸框相关。首先我们会将人脸框按最佳**jaccard\mathrm{jaccard}jaccard重叠**匹配到相应的锚框上,其次我们也会把锚框与任意人脸框jaccard重叠超过某一阈值(如0.350.350.35)的框相匹配。

颜色变换:

jaccard\mathrm{jaccard}jaccard重叠

损失函数. 我们的损失函数与FsterR−CNN\mathrm{Fster\ R-CNN}Fster R−CNN中RPN\mathrm{RPN}RPN的损失函数相同。对于分类部分我们使用222分类softmax\mathrm{softmax}softmax损失,对于回归部分我们使用smoothL1\mathrm{smooth\ L1}smooth L1损失。

难负例挖掘. 锚框匹配完成后,我们发现绝大部分锚框都为负例,这导致正负例严重不平衡。为了更快且更稳定地训练模型,我们会将锚框按损失值排序并选取最高的几个进行训练,同时我们在选取过程中也会保证正负例比率最多不超过1:31:31:3。

其他实现细节. 所有的模型参数都采用了xavier\mathrm{xavier}xavier方法随机初始化。模型使用SGD\mathrm{SGD}SGD方法进行优化,动量系数为0.90.90.9,权重衰减系数为0.00050.00050.0005,批大小为323232。模型训练最大迭代次数为120k120k120k,在前80k80k80k迭代中使用10−310^{-3}10−3大小的学习速率,在后续两个20k20k20k迭代中分别使用10−410^{-4}10−4及10−510^{-5}10−5大小的学习速率。整体训练使用Caffe\mathrm{Caffe}Caffe库实现。

4. Experiments

在本节中,我们首先介绍了FaceBoxes\mathrm{FaceBoxes}FaceBoxes的运行效率,然后对模型进行了详细的分析,最后在常用的人脸检测基准上对其进行了评估。

4.1. Runtime efficiency

基于CNN\mathrm{CNN}CNN的算法一直被诟病其运行效率不高。尽管现有的CNN\mathrm{CNN}CNN人脸检测器可以通过高端GPUs\mathrm{GPUs}GPUs进行加速,但在大多数实际的应用尤其是基于CPU\mathrm{CPU}CPU的应用中,其运行速度还不够快。如下所述,FaceBoxes\mathrm{FaceBoxes}FaceBoxes具有满足实际需求的足够效率。

在推断过程中,FaceBoxes\mathrm{FaceBoxes}FaceBoxes会输出大量的边界框(例如,对于VGA\mathrm{VGA}VGA分辨率的图像会输出852585258525个边界框)。首先模型会根据0.050.050.05的置信阈值过滤掉大多数边界框并保留前400400400个边界框,然后根据0.30.30.3的jaccard\mathrm{jaccard}jaccard重叠阈值应用NMS\mathrm{NMS}NMS并保留前200200200个边界框。我们使用TitanX(Pascal)\mathrm{Titan\ X(Pascal)}Titan X(Pascal)显卡及cuDNNv5.1\mathrm{cuDNN\ v5.1}cuDNN v5.1加速库在IntelXeonE5−2660v3@2.60GHz\mathrm{Intel\ Xeon\ E5-2660v3@2.60GHz}Intel Xeon E5−2660v3@2.60GHz中央处理器上进行速度测量。如下表所示,与近来基于CNN\mathrm{CNN}CNN的算法相比,FaceBoxes\mathrm{FaceBoxes}FaceBoxes可以在CPU\mathrm{CPU}CPU上以20FPS20\ \mathrm{FPS}20 FPS的速度运行,并且拥有最高水准的准确率。此外,模型也可以在单GPU\mathrm{GPU}GPU上以125FPS125\ \mathrm{FPS}125 FPS的速度运行,并且只有4.1MB4.1\mathrm{MB}4.1MB大小。

Approach CPU-model mAP(%) FPS
ACF i7-3770@3.40 85.2 20
CasCNN E5-2620@2.00 85.7 14
FaceCraft N/A 90.8 10
STN i7-4770@3.50 91.5 10
MTCNN N/A@2.60 94.4 16
Ours E5-2660v3@2.60 96.0 20

4.2. Model analysis

我们在FDDB\mathrm{FDDB}FDDB数据集上进行消融实验分析模型。相较于AFW\mathrm{AFW}AFW与PASCAL\mathrm{PASCAL}PASCAL人脸数据集,FDDB\mathrm{FDDB}FDDB数据集更具有挑战性,因此在FDDB\mathrm{FDDB}FDDB数据集上分析模型是有说服力的。对于所有的实验,除了对组件进行指定的更改外,我们都使用了相同的设置。

消融设置. 为了更好地理解FaceBoxes\mathrm{FaceBoxes}FaceBoxes,我们依次剔除模型组件以实验各组件对最终性能的影响。1)首先,我们剔除了锚框稠化策略。2)然后,我们将MSCL\mathrm{MSCL}MSCL替换为三个卷积层,每层核大小为3×33\times33×3且其输出通道数与MSCL\mathrm{MSCL}MSCL前三个Inception\mathrm{Inception}Inception模块相同。同时,我们也仅将锚框与最后一层卷积层相关联。3)最后,我们将RDCL\mathrm{RDCL}RDCL中的ReLU\mathrm{ReLU}ReLU替换为C.ReLU\mathrm{C.ReLU}C.ReLU。消融实验结果如下表所示,相关实验结论也如下描述:

Contribution FaceBoxes
RDCL x
MSCL x x
Strategy x x x
Accuracy(mAP) 96.0 94.9 93.9 94.0
Speed(ms) 50.98 48.27 48.23 67.48

锚框稠化策略至关重要. 锚框稠化策略通过增加小锚框的密度(如32×3232\times3232×32及64×6464\times6464×64)来提高模型对小尺度人脸的召回率。从上表的结果中可以看出,剔除锚框稠化策略后,模型在FDDB\mathrm{FDDB}FDDB数据集上的mAP\mathrm{mAP}mAP由96.0%96.0\%96.0%下降至94.9%94.9\%94.9%。mAP\mathrm{mAP}mAP性能的骤降(即1.1%1.1\%1.1%)证明了锚框稠化策略的有效性。

MSCL\mathrm{MSCL}MSCL更优. 上表第二、三列的比较表明MSCL\mathrm{MSCL}MSCL可以将模型mAP\mathrm{mAP}mAP有效地提高1.0%1.0\%1.0%,这归功于MSCL\mathrm{MSCL}MSCL中多种感受野及多尺度锚框的机制。

RDCL\mathrm{RDCL}RDCL是一种能保持模型精度的高效组件. RDCL\mathrm{RDCL}RDCL的设计使得FaceBoxes\mathrm{FaceBoxes}FaceBoxes能在CPU\mathrm{CPU}CPU上实现实时速度。如上表所示,RDCL\mathrm{RDCL}RDCL所导致的精度下降可以忽略不计,但对于模型运行速度有显著的提高。具体来说,在FDDB\mathrm{FDDB}FDDB数据集上,模型mAP\mathrm{mAP}mAP降低了0.1%0.1\%0.1%,但换取了大约19.3ms19.3\mathrm{ms}19.3ms的速度提升。

4.3. Evaluation on benchmark

我们在常见的人脸检测基准数据集上评估了FaceBoxes\mathrm{FaceBoxes}FaceBoxes,包括AFW\mathrm{AFW}AFW,PASCAL\mathrm{PASCAL}PASCAL人脸及FDDB\mathrm{FDDB}FDDB数据集。

AFW\mathrm{AFW}AFW数据集. 该数据集包含205205205张图片,473473473个人脸。我们将FaceBoxes\mathrm{FaceBoxes}FaceBoxes模型与其他前沿模型及商业人脸检测模型(如Face.com\mathrm{Face.com}Face.com,Face++\mathrm{Face++}Face++及Picasa\mathrm{Picasa}Picasa)进行对比评估。结果如下图所示,FaceBoxes\mathrm{FaceBoxes}FaceBoxes模型相较于其他模型有很明显的优势。

PASCAL\mathrm{PASCAL}PASCAL人脸数据集. 该数据集收集至PASCAL\mathrm{PASCAL}PASCAL人体部位测试集,包含851851851张图片,133513351335个大尺度及不同姿态的人脸。其PR\mathrm{PR}PR曲线如下图所示。FaceBoxes\mathrm{FaceBoxes}FaceBoxes模型明显优于所有的其他模型及商业人脸检测模型(如SkyBiometry\mathrm{SkyBiometry}SkyBiometry,Face++\mathrm{Face++}Face++及Picasa\mathrm{Picasa}Picasa)。

FDDB\mathrm{FDDB}FDDB数据集. 该数据集包含284528452845张来自Yahoo\mathrm{Yahoo}Yahoo网站的新闻图片,517151715171个人脸。FDDB\mathrm{FDDB}FDDB数据集采用椭圆边界框对人脸进行标注,而FaceBoxes\mathrm{FaceBoxes}FaceBoxes的输出为矩形边界框。这种不一致对于模型连续性评分有很大的影响。为了更公平的评估模型连续性评分,我们训练了一个椭圆回归器用以将模型预测的矩形边界框转换为椭圆边界框。FaceBoxes\mathrm{FaceBoxes}FaceBoxes与其他模型的对比评估如下图所示。FaceBoxes\mathrm{FaceBoxes}FaceBoxes是目前为止性能最好模型,并且其不连续与连续ROC\mathrm{ROC}ROC曲线相较于其他模型有很明显的优势。这些结果表明FaceBoxes\mathrm{FaceBoxes}FaceBoxes能够鲁棒地检测出无约束的人脸。

5. Conclusion

略。

《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. linux下gzip
  2. 关于OAuth 协议中刷新令牌存活时间的讨论
  3. SharePoint Search之(七)Search result- 结果源
  4. Nat Biotechnol | 杨弋团队报道RNA光遗传学工具,可时空精确操纵活细胞RNA代谢与功能...
  5. atom常用的插件整理
  6. php urledcode_php慎用urldecode函数
  7. 机器学习5——决策树
  8. 计算机关机时出现蓝屏,关机蓝屏,教您电脑关机蓝屏怎么解决
  9. 常见程序(discuz,ecshop,shopex,dedecms等)重置破解管理密码
  10. aria2+AriaNg 打造自己的离线下载/云播平台
  11. 拓嘉启远:定制类的商品如何处理退款
  12. PDF的页面方向倒了,怎么调整并保存
  13. 杨云华师大计算机,2017-2018学年第二学期教师辅导-华东师范大学计算中心网站.DOC...
  14. qt 打印 刻度尺 曲线 复杂图像
  15. Torch知识点总结【持续更新中......】
  16. 凡事不可过....久视伤血,久卧伤气,久坐伤肉,久立伤骨,久行伤筯(摘于好友QQ)
  17. oracle查看主备库延迟时间,【分享】Oracle 主备库容灾维护常用的九个SQL
  18. Refer to Hibernate 3.6 Migration Guide
  19. 【渝粤题库】陕西师范大学111119 统计学作业
  20. 详解“硬核”虚拟化技术SR-IOV原理

热门文章

  1. 个人面经整理深信服测开
  2. 人工智能界专家:现在我们的机器智商还不及老鼠
  3. 网易2011笔试题详解
  4. mysql 语法 日期转换成字符串_mysql日期转换成字符串的方法
  5. 区块如何防篡改_区块链为什么能防篡改?
  6. 【备忘录】浏览器不能上网但是微信能收到消息的一个解决办法
  7. (十进制快速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
  8. 12C安装oracle,Oracle 12C安装
  9. mdf数据库文件打开
  10. 关闭/开启“此电脑”左边的导航栏win10