目录
- 摘要
- 一、介绍
- 二、相关工作
- 三、单镜头尺度不变人脸检测器
- 3.1. Scale-equitable框架
- 3.2. 尺度补偿锚匹配策略
- 3.3. 最大输出背景标签
- 3.4 训练
- 4.实验
- 4.1. 模型分析
- 4.2. 基准评价
- 4.3 推理时间
- 5 结论
摘要
- 本文提出了一种实时人脸检测器,称为单镜头尺度不变人脸检测器(S3FD),该检测器利用单个深度神经网络在各种尺度的人脸上都具有优越的性能,尤其是在小人脸上。具体来说,我们试图解决一个常见的问题,即基于锚的检测器随着对象变小而急剧恶化。我们在以下三个方面做出了贡献:1)提出了一个尺度公平的人脸检测框架,以很好地处理不同尺度的人脸。我们在广泛的层上平铺锚点,以确保所有比例的人脸都有足够的特征进行检测。此外,我们还基于有效接受野和提出的等比例区间原则设计锚定尺度;2)采用尺度补偿锚匹配策略提高小人脸的召回率;3)通过max-out背景标签降低小人脸的误报率。因此,我们的方法在所有常见的人脸检测基准测试(包括AFW、PASCAL人脸、FDDB和WIDER face数据集)上实现了最先进的检测性能,并且可以在Nvidia Titan X (PASCAL)上以36 FPS的速度运行vga分辨率图像。
一、介绍
- 人脸检测是许多后续人脸相关应用的关键步骤,如人脸对齐[50,61]、人脸识别[32,40,62]、人脸验证[44,46]和人脸跟踪[17]等。在过去的几十年里,它得到了很好的发展。继Viola-Jones人脸检测器的开创性工作之后[48],早期的大部分工作都集中在设计鲁棒特征和训练有效分类器上。但是这些方法依赖于非鲁棒的手工特征,并且单独优化每个组件,使得人脸检测管道不是最优的。
- 近年来,卷积神经网络(CNN)取得了令人瞩目的成功,从图像分类[10,42,45]到目标检测[8,23,26,37,38],这也启发了人脸检测。一方面,许多作品[21,31,54,55,58]将CNN作为传统人脸检测框架中的特征提取器。另一方面,人脸检测被视为通用目标检测的一个特例,许多方法[3,15,43,49,59]都继承了通用目标检测方法[38]的有效技术。遵循后一种路线,我们改进了基于锚点的通用目标检测框架,并提出了一种最先进的人脸检测器。
- 基于锚点的目标检测方法[26,38]是通过对一系列预设锚点进行分类和回归来检测目标的,这些锚点是通过在图像上有规律地平铺一组不同尺度和宽高比的方框而产生的。这些锚点与一个[38]或几个[26]卷积层相关联,其空间大小和步幅大小分别决定了锚点的位置和间隔。将锚相关层进行卷积以对相应的锚进行分类和对齐。与其他方法相比,基于锚点的检测方法在复杂场景下具有更强的鲁棒性,且检测速度不受目标数量的影响。然而,如[12]所示,随着目标变小,基于锚点的探测器的性能急剧下降。为了提出一种基于尺度不变锚点的人脸检测器,我们综合分析了上述问题背后的原因如下:
1、有偏差的框架。基于锚点的检测框架容易忽略中小人脸。首先,最低锚关联层的步长太大(例如[26]为8像素,[38]为16像素),因此中小面在这些层上被高度挤压,可供检测的特征很少,如图1(a)。其次,小脸、锚定尺度和感受野是相互不匹配的:锚定尺度与感受野不匹配,两者都太大而无法适应小脸,见图1(b)。为了解决上述问题,我们提出了一个尺度公平的人脸检测框架。我们将锚点平铺在跨度从4到128像素不等的大范围层上,这保证了不同尺度的人脸有足够的特征进行检测。此外,我们根据有效感受场[29]和新的等比例间隔原则,设计了不同层次16 ~ 512像素的锚点,保证了不同层次的锚点与对应的有效感受场相匹配,保证了不同尺度的锚点均匀分布在图像上。
图1
图1所示。基于锚点的方法存在问题的原因。(a)特征少:小人脸在检测层特征少。(b)不匹配:锚标尺度与接受野不匹配,两者都太大,无法适应小脸。©锚点匹配策略:图中展示了当前锚点匹配方法在不同人脸尺度下匹配的锚点数量。这反映了小而外的人脸与太少的锚相匹配。(d)小锚的背景:两张图的分辨率相同。左边的一个贴小锚来检测小脸,右边的一个贴大锚来检测大脸。小锚会在背景上带来大量的负面锚。
2、锚匹配策略。在基于锚点的检测框架中,锚点尺度是离散的(即我们的方法中的16、32、64、128、256、512),而人脸尺度是连续的。因此,那些尺度分布远离锚点尺度的人脸无法匹配足够的锚点,如图1©中的微小和外脸,导致其召回率较低。为了提高这些被忽略的人脸的召回率,我们提出了一种分两阶段的尺度补偿锚匹配策略。第一阶段沿用现有的锚点匹配方法,但调整了更合理的阈值。第二阶段通过尺度补偿确保每个尺度的面匹配足够的锚点。
3、背景来自小锚。为了很好地检测小人脸,必须在图像上密集地平铺大量的小锚点。如图1(d)所示,这些小锚导致背景上的负面锚数量急剧增加,产生了许多假阳性面孔。例如,在我们的尺度均衡框架中,超过75%的负面锚点来自最低的conv33层,该层用于检测小面孔。在本文中,为了降低小人脸的误报率,我们在最低检测层提出了一种最大化背景标签。 - 为了清晰起见,本文的主要贡献可以概括为:
•提出了一个尺度公平的人脸检测框架,该框架具有广泛的锚相关层和一系列合理的锚尺度,可以很好地处理不同尺度的人脸。
•提出一种尺度补偿锚匹配策略,提高小人脸的召回率。
•引入max-out背景标签,降低小人脸的高误报率。
•以实时速度在AFW, PASCAL face, FDDB和WIDER face上实现最先进的结果。
二、相关工作
- 在过去的几十年中,人脸检测引起了广泛的研究关注。Viola-Jones[48]的里程碑式工作使用Haar特征和AdaBoost训练了一系列人脸/非人脸分类器,达到了良好的准确率和实时效率。在那之后,大量的工作集中在使用更复杂的手工特征[25,28,53,60]和更强大的分类器[2,33]来提高性能。除串级结构外,[30,51,63]还将可变形零件模型(DPM)引入人脸检测任务中,取得了显著的效果。然而,这些方法高度依赖于手工特征的鲁棒性,并单独优化每个组件,使得人脸检测管道不是最优的。
- 近年来,基于cnn的人脸检测器取得了进展。CascadeCNN[21]开发了一种基于cnn的级联架构,具有强大的判别能力和高性能。Qin等[34]提出联合训练CascadeCNN实现端到端优化。Faceness[55]训练一系列cnn用于人脸属性识别,以检测部分遮挡的人脸。MTCNN[58]提出使用多个多任务cnn联合解决人脸检测和对齐问题。UnitBox[57]引入了一个新的相交-过并损失函数。
- 此外,人脸检测继承了一般目标检测任务的一些成果。Jiang等[15]将Faster R-CNN应用于人脸检测,取得了令人满意的效果。CMS-RCNN[59]使用Faster R-CNN进行身体上下文信息的人脸检测。Convnet[24]将CNN与3D人脸模型集成在一个端到端多任务学习框架中。Wan等人[49]将Faster R-CNN与硬负挖掘相结合,显著提升了人脸检测性能。STN[3]提出了一种新的监督变压器网络,并将ROI卷积与RPN结合用于人脸检测。Sun等人[43]提出了几种有效的策略来提高更快的RCNN解决人脸检测任务。本文中,受Faster RCNN[38]中的RPN和SSD[26]中的多尺度机制的启发,我们开发了一种具有实时速度的最先进的人脸检测器。
三、单镜头尺度不变人脸检测器
本节介绍我们的单镜头尺度不变人脸检测器,包括尺度公平框架(第3.1节)、尺度补偿锚匹配策略(第3.2节)、最大背景标签(第3.3节)和相关的训练方法(第3.4节)。
3.1. Scale-equitable框架
-
我们的尺度均衡框架是基于基于锚点的检测框架,如RPN[38]和SSD[26]。尽管取得了巨大的成就,但该框架的主要缺点是随着人脸变小,性能会急剧下降[12]。为了提高对面尺度的鲁棒性,我们开发了一个具有广泛锚相关层的网络架构,其步幅大小从4像素逐渐增加到128像素。因此,我们的架构确保不同尺度的人脸在相应的锚定相关层具有足够的特征进行检测。在确定锚点位置后,我们根据有效接受场和等比例间隔原则设计了16 ~ 512像素的锚点尺度。前者保证每个尺度的锚点与相应的有效感受野匹配良好,后者使不同尺度的锚点在图像上具有相同的密度。
-
构建架构。我们的架构(见图2)基于VGG16[42]网络(在任何分类层之前被截断),并带有一些辅助结构:
– 基础卷积层:我们保留从conv11到pool5的VGG16层,并删除所有其他层。
– 额外的卷积层:我们通过对VGG16的fc6和fc7的参数进行子采样[4],将其转换为卷积层,然后在其后面添加额外的卷积层。这些层的大小逐渐减小,形成多尺度特征图。
– 检测卷积层:我们选择conv33, conv43, conv53, convfc7, conv62和conv72作为检测层,它们与不同尺度的锚相关联,以预测检测。
– 归一化层:与其他检测层相比,conv3.3、conv4.3和conv5.3具有不同的特征尺度。因此,我们使用L2归一化[27]将它们的范数分别调整为10,8和5,然后在反向传播过程中学习尺度。
– 预测卷积层:每个检测层后面是一个p×3×3×q卷积层,其中p和q为输入和输出的通道号,3×3为内核大小。对于每个锚点,我们预测相对于其坐标和Ns分数的4个偏移量,其中对于conv33检测层,Ns = Nm + 1 (Nm为maxout背景标签),对于其他检测层,Ns = 2。
– 多任务损失层:我们使用softmax损失进行分类,使用平滑L1损失进行回归。
图2
-
设计锚的标尺。六个检测层中的每一个都与特定的尺度锚点(即表1中的第三列)相关联,以检测相应的尺度面。我们的锚是1:1的宽高比(即方形锚),因为人脸的边界框近似为方形。
表1
如表1第二列和第四列所示,每个检测层的步长和接受野是固定的,这是我们设计锚定尺度时的两个基点: -
有效接受野:如[29]指出,CNN中的一个单元有两种类型的接受野。一个是理论接受场,它表示理论上可以影响该单元值的输入区域。然而,并不是理论接受域中的每个像素对最终输出都有相同的贡献。一般来说,中心像素的影响要远大于外部像素,如图3(a)所示。换句话说,只有一小部分区域对输出值有有效影响,这是另一种类型的接受野,称为有效接受野。根据该理论,锚点应明显小于理论感受野,以匹配有效感受野(具体示例见图3(b))。
图3
图3。(a)有效接受场:整个黑箱为理论接受场(TRF),具有高斯分布的白点云为有效接受场(ERF)。ERF只占TRF的一小部分。数据来自[29]。(b)一个具体的例子:在我们的框架中,conv33的TRF为48 × 48(黑色虚线框),ERF为(A)估计的蓝色虚线圈。它的锚点为16 × 16(红色实线框),比TRF小得多,但与ERF匹配。©等比例区间原则:设n为锚标,则n/4为该尺度锚标的区间。N /4也对应于与此锚关联的层的步长。最好以彩色观看。 -
等比例间隔原则:检测层的步幅大小决定了其锚点在输入图像上的间隔。例如,conv33的步长为4个像素,其锚点为16×16,表示输入图像上每4个像素有一个16×16的锚点。如表1第二列和第三列所示,我们的锚点的尺度是其间隔的4倍。我们称之为等比例间隔原理(如图3©所示),它保证了不同尺度的锚点在图像上具有相同的密度,使得不同尺度的脸可以近似匹配相同数量的锚点。
3.2. 尺度补偿锚匹配策略
- 在训练过程中,我们需要确定哪些锚点对应于人脸边界框。当前的锚匹配方法首先将每个人脸与具有最佳jaccard重叠[5]的锚匹配,然后将锚与具有高于阈值(通常为0.5)的jaccard交叠的任何人脸匹配。然而,锚尺度是离散的,而人脸尺度是连续的,这些尺度远离锚尺度分布的人脸无法匹配足够的锚,导致其召回率较低。如图1(c)所示,我们计算了不同人脸比例的匹配锚点的平均数量。有两个观察结果:1)匹配的锚的平均数量约为3个,这不足以召回高分面孔;2) 匹配锚的数量与锚的尺度高度相关。远离锚尺度的人脸往往被忽视,导致它们的召回率较低。为了解决这些问题,我们提出了一种分两个阶段的规模补偿锚匹配策略:
– 第一阶段:我们遵循当前的锚匹配方法,但将阈值从0.5降低到0.35,以增加匹配锚的平均数量。
– 第二阶段:在第一阶段之后,一些面仍然与足够的锚不匹配,例如图4(a)中用灰色虚线标记的微小人脸和外部面。我们对这些面中的每一个进行如下处理:首先挑选出与该面jaccard重叠大于0.1的锚,然后对其进行排序,以选择前N个作为该面的匹配锚。我们将N设置为第一阶段的平均数。
图4
图4。(a) 比较了当前的锚点匹配方法和我们的尺度补偿锚点匹配策略在不同人脸尺度下的匹配数量。(b) 最大输出背景标签的图示。
3.3. 最大输出背景标签
- 基于锚点的人脸检测方法可以看作是一个二元分类问题,它决定了锚点是人脸还是背景。在我们的方法中,这是一个极不平衡的二元分类问题:根据我们的统计结果,超过99.8%的预设锚属于负面锚(即背景),只有少数锚是正面锚(即面部)。这种极端的不平衡主要是由小脸的检测引起的。具体来说,我们必须在图像上密集地平铺大量的小锚点来检测小人脸,这会导致负面锚点的数量急剧增加。例如,如表2所示,640×640的图像共有34125个锚,而其中约75%来自与最小锚(16×16)相关的conv3检测层。这些最小的锚对假阳性面孔的贡献最大。因此,通过平铺小锚来提高小人脸的检出率,必然会导致小人脸的高假阳性率。
表2。关于640×640图像中的锚的详细信息。
- 为了解决这个问题,我们建议在最低层应用更复杂的分类策略来处理来自小锚点的复杂背景。我们对conv33检测层应用max-out背景标签。对于每个最小的锚点,我们预测背景标签的Nm分数,然后选择最高的作为其最终分数,如图4(b)所示。Max-out操作将一些局部最优解集成到我们的S3FD模型中,从而降低小人脸的误报率。
- 为了有效减少误检情况,我们针对每个最小的anchor进行了处理。具体来说,我们将背景划分为N_m个不同的类别。在统计每个位置上的类别概率时,我们能够得到N_m个背景类别的概率值。接着,我们选择其中概率最高的分数作为该位置的最终得分,并基于此得分来计算softmax loss。通过这种方法,我们期望能够进一步减少人脸检测的虚警率,提高检测的准确性。
- 在cov33层(小目标产生最多的层),输出通道数为(Ns+4),其中Ns>2,而其它所有检测层的输出通道数均为(2+4),表示二分类和4个bounding box坐标。N中包含了1个正样本的概率以及N,一1个负样本概率,我们从负样本概率中选出最大值与正样本概率一起完成之后的softmax.二分类。这种看似多余的操作实际上是通过提高分类难度来加强分类能力。
3.4 训练
- 在本小节中,我们介绍了训练数据集、数据增强、损失函数、硬负挖掘等实现细节。训练数据集和数据增强。我们的模型使用以下数据增强策略在WIDER FACE训练集的12,880张图像上进行训练:
– 颜色扭曲:应用一些类似于[11]的照片度量扭曲。
– 随机裁剪:我们应用缩放操作来生成更大的脸,因为在WIDER FACE训练集中有太多的小脸。具体来说,每张图像都是从原始图像中随机裁剪的5个正方形斑块中随机选择的,其中一个是最大的正方形斑块,其他4个正方形斑块的大小在原始图像短尺寸的[0.3,1]之间。如果面盒的中心在采样patch中,我们保留重叠的部分。•
– 水平翻转:在随机裁剪后,选定的正方形补丁将被调整为640 × 640,并以0.5的概率水平翻转。 - 损失函数。我们采用RPN[38]中定义的多任务损失来共同优化模型参数:
其中i是锚点的索引,Pi是”锚点i是人脸“的预测概率。如果锚点是正的,则真实标签p*i为1,否则为0。如[38]所定义,ti是表示预测边界框的4个参数化坐标的向量,t * i是与正锚相关联的接地真值框的向量。分类损失Lcls(pi, p * i)是两个类别(人脸与背景)上的softmax损失。回归损失Lreg(ti, t∗i)是在[8]中定义的平滑L1损失,p∗i Lreg表示回归损失仅对正锚点激活,否则禁用。这两项由Ncls和Nreg归一化,并由平衡参数λ加权。在我们的实现中,cls项通过正锚点和负锚点的数量进行规范化,regg项通过正锚点的数量进行规范化。由于正锚和负锚的数量不平衡,λ被用来平衡这两个损失项。 - Hard negative mining。经过锚匹配步骤后,大多数锚都是负的,这导致了正、负训练样例之间的显著不平衡。为了更快的优化和稳定的训练,我们不是使用全部或随机选择一些负样本,而是根据损失值对它们进行排序,并选择最上面的样本,使负与正的比值不超过3:1。对于Hard negative mining,我们设置上面的背景标签Nm = 3, λ = 4来平衡分类和回归的损失。
最近一直在看关于CNN的目标检测和跟踪的文章,在这中间会经常看到hard negative mining这个名词,把这个大概解释一下:
假设给你一堆包含一个或多个人物的图片,并且每一个人都给你一个bounding box做标记,如果要训练一个分类器去做分类的话,你的分类器需要既包含正训练样本(人)和负训练样本(背景)。
你通过观察bounding box去创建一个有用的正训练样本,那么怎么做才能创建一个有用的负训练样本呢?
一个很好的方式就是去在开始时随机创建一堆的bounding box候选框,并且不能与你的正样本有任何的重叠,把这些未与正样本重叠的新的bounding box作为你的负样本。
好了,这样你的正负样本都有了,可以训练可以用的分类器了,你用滑动窗口在你的训练图片上进行运行,但是你会发现你的分类器并不是很好用,分类的效果并不是很好,因为它会抛出一堆的错误的正样本(当检测到人时实际上却并不是实际的人),这就问题来了,你训练了一个用于分类的分类器,然而这个分类器却并不能达到你想要的效果,那么应该怎么办呢?
这个时候就要用的hard negative了,hard negative就是当你得到错误的检测patch时,会明确的从这个patch中创建一个负样本,并把这个负样本添加到你的训练集中去。当你重新训练你的分类器后,分类器会表现的更好,并且不会像之前那样产生多的错误的正样本。
简单解释就是“错题集”,容易出错或者比较难的题目。
这样的难负例样本加入到样本集进行训练,单纯比起简单的负例样本加到样本集训练效果好很多
- 其他实现细节。在参数初始化方面,基本卷积层的架构与VGG16相同,其参数从预训练的[39]VGG16初始化。conv fc6和conv fc7的参数通过VGG16的fc6和fc7的子采样参数进行初始化,其他附加层采用“xavier”方法随机初始化[9]。我们使用SGD微调结果模型,动量为0.9,权重衰减为0.0005,批大小为32。最大迭代次数为120k,我们对前80k次迭代使用10−3的学习率,然后用10−4和10−5继续训练20k次迭代。我们的方法在Caffe[14]中实现,代码将提供给研究社区。
4.实验
- 在本节中,我们首先分析了我们的尺度公平框架、尺度补偿锚匹配策略和最大化背景标签的有效性,然后在常见的人脸检测基准上对最终模型进行了评估,最后介绍了推理时间。
4.1. 模型分析
- 通过大量的实验,我们在wide FACE验证集上分析了我们的模型。WIDER FACE验证集分为易、中、硬三个子集,分别大致对应大、中、小人脸。因此,对我们的模型进行评价是合适的。
- 基线。为了评估我们的贡献,我们用我们的基线进行了比较实验。我们的S3FD受到RPN[38]和SSD[26]的启发,因此我们直接使用它们来训练两个人脸检测器作为基线,分别标记为RPNface和SSD-face。与[38]不同的是,RPN-face在VGG16的conv5.3层上拼接了6个尺度的方锚(16、32、64、128、256、512),使对比更加实质性。SSD-face继承了SSD的架构和锚定设置。其余部分与我们的S3FD设置相同。
- 消融实验。为了更好地了解S3FD,我们进行了烧蚀实验,以检查每个提议的组件如何影响最终性能。我们在三种不同的设置下评估了我们的方法的性能:(i) S3FD(F):它只使用规模公平的框架(即,构建的架构和设计的锚),并消除了另外两个组件;(ii) S3FD(F+S):它应用规模公平框架和规模补偿锚匹配策略;(iii) S3FD(F+S+M):它是我们的完整模型,由规模公平框架、规模补偿锚匹配策略和最大限度背景标签组成。
表3。我们的模型在wide FACE验证子集上的比较和实验结果。这些方法的精密度-召回率曲线见附录。 - 从表3的结果中,我们可以总结出一些有希望的结论如下:
– 规模公平的框架至关重要。与S3FD(F)相比,RPN-face和SSD-face唯一的区别是它们的框架。RPN-face具有与我们相同的锚点选择,但仅在VGG16的最后一个卷积层上的瓦片。不仅它的步长(16像素)对于小人脸来说太大了,而且不同尺度的锚点具有相同的接受野。SSD-face tiles锚定在几个卷积层上,而它的最小步长(8像素)和最小锚定对于小的face来说仍然稍微大一些。此外,它的锚点与有效接受野不匹配。表3中S3FD(F)的结果表明,我们的框架大大优于SSD-face和RPNface,特别是在主要由小人脸组成的硬子集上(上升了8.6%)。对比不同子集的结果,我们的S3FD(F)对不同尺度的人脸处理都很好,并且随着人脸变小而略有退化,说明了对人脸尺度的鲁棒性。 - 尺度补偿锚匹配策略效果较好。表3中第三和第四行的对比表明,我们的尺度补偿锚匹配策略有效地提高了性能,特别是对于小人脸。在简单、中等和困难子集上,mAP分别增加0.9%、0.4%、2.2%。提高的主要原因是对不同尺度的人脸召回率的提高,特别是对目前锚点匹配方法忽略的人脸召回率的提高。
目标检测之评价指标 - mAP
AP & mAP
AP:PR 曲线下面积(下面会说明) mAP:mean Average Precision, 即各类别 AP 的平均值
TP、FP、FN、TN
查准率、查全率
查准率(Precision): TP/(TP + FP)
查全率(Recall): TP/(TP + FN)
二者绘制的曲线称为 P-R 曲线
- Max-out背景标签很有前途。S3FD的最后一个贡献是max-out背景标签。它处理来自conv33检测层的大量小负锚点(即背景),该检测层设计用于检测小人脸。如表3所示,在简单、中等和硬子集上的改进分别为0.2%、0.4%、0.7%。结果表明,maxout背景标签的有效性与输入图像的难度成正相关。因为较硬的图像将产生更困难的小背景。
4.2. 基准评价
- 我们在所有常见的人脸检测基准上评估了我们的S3FD方法,包括野外标注人脸(Annotated Faces in the Wild, AFW)[63]、PASCAL face[52]、人脸检测数据集和基准(face detection Data Set and Benchmark, FDDB)[13]和wide face[56]。由于篇幅有限,对这些数据集的一些定性结果将在补充材料中展示。
- AFW数据集。它包含205个图像和473个标记的面。我们根据著名的作品[3,25,30,41,52,55,63]和商业人脸检测器(例如Face.com, face++和Picasa)来评估我们的模型。如图5所示,我们的S3FD在很大程度上优于所有其他的。
图5。AFW数据集的查准率-查全率曲线。 - PASCAL人脸数据集。它在851张图片中有1335张被标记的脸,这些脸有很大的外观和姿势变化。它是从PASCAL人员布局测试子集中收集的。图6显示了该数据集上的查全率曲线,我们的方法显著优于所有其他方法[3,16,30,52,55,63]和商用人脸检测器(例如,SkyBiometry, face++和Picasa)。
图6。PASCAL人脸数据集的查全率曲线。 - FDDB数据集。它包含了2845张图片中的5171张脸。评估时存在两个问题:1)FDDB采用边界椭圆,而我们的S3FD输出矩形边界框。这种不一致性对连续得分有很大的影响,因此我们训练了一个椭圆回归器来将我们预测的边界框转换为边界椭圆。2) FDDB存在大量未标记的人脸,这导致了许多高分假阳性人脸。因此,我们手动检查结果并添加238个未标记的面(稍后将发布注释,补充材料中显示了一些示例)。最后,我们对比最先进的方法[1、6、7、15、18、19、20、22、24、25、31、35、36、43、47、49、55、57、58]对FDDB人脸检测器进行了评估。结果如图7(a)和图7(b)所示。我们的S3FD达到了最先进的性能,并且在不连续和连续ROC曲线上表现优于所有其他产品。这些结果表明,我们的S3FD可以鲁棒地检测无约束的人脸。
ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线——ROC curve。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救办法就是把所有的预测结果反向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。虽然,用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。
- 更宽的FACE数据集。它有32,203个图像和标签393,703个在规模,姿势和遮挡方面具有高度可变性的面孔。数据库分为训练集(40%)、验证集(10%)和测试集(50%)。此外,根据检测难度将图像分为Easy、Medium和Hard三个级别子集。训练集和验证集的图像和注释在线提供,而测试集的注释不发布,结果发送到数据库服务器接收查准率-查全率曲线。我们的S3FD仅在训练集上进行训练,并针对最近的人脸检测方法在验证集和测试集上进行测试[31,53,55,56,58,59]。精确召回率曲线和mAP值如图8所示。我们的模型在三个子集上的表现优于其他模型,特别是在主要包含小面孔的硬子集上。所有水平面的平均精度最好,验证集为0.937 (Easy)、0.924 (Medium)、0.852 (Hard),测试集为0.928 (Easy)、0.913 (Medium)、0.840 (Hard)。这些结果不仅证明了所提方法的有效性,而且有力地证明了所提模型在检测小硬面方面的优越性。
4.3 推理时间
- 在推理过程中,我们的方法输出大量的盒子(例如,对于vga分辨率的图像,25,600个盒子)。为了加快推理时间,我们首先以0.05的置信阈值过滤掉大部分盒子,保留前400个盒子,然后在应用NMS之前,我们以jaccard重叠0.3执行NMS,保留前200个盒子。我们使用Titan X (Pascal)和cuDNN v5.1以及Intel Xeon E5-2683v3@2.00GHz来测量速度。对于使用单个GPU的批处理大小为1的VGAresolution图像,我们的人脸检测器可以以36 FPS的速度运行并实现实时速度。此外,大约80%的转发时间花在VGG16网络上,因此使用更快的基础网络可以进一步提高速度。
5 结论
- 本文提出了一种新的人脸检测方法,解决了基于锚点的人脸检测方法随着目标变小而性能急剧下降的问题。我们分析了这一问题背后的原因,并提出了一个具有广泛锚关联层和一系列合理锚尺度的尺度均衡框架,以更好地处理不同尺度的人脸。此外,我们提出了尺度补偿锚匹配策略来提高小人脸的召回率,并提出了最大化背景标签来降低小人脸的误报率。实验表明,我们的三个贡献使S3FD在所有常见的人脸检测基准上达到了最先进的性能,特别是对于小人脸。在未来的工作中,我们将进一步完善背景斑块的分类策略。我们认为,将背景类明确划分为若干子类别是值得进一步研究的。