APP下载

基于级联神经网络的人脸检测

2018-11-17李帅杰陈虎兰时勇

现代计算机 2018年29期
关键词:级联人脸神经网络

李帅杰,陈虎,兰时勇

(四川大学视觉合成图形图像技术国防重点学科实验室,成都 610064)

0 引言

人脸检测属于目标检测的范畴,目标检测是计算机视觉中最重要的研究方向之一。人脸检测作为特定的目标检测在许多的常见应用中都能见到,例如拍照美颜、安防监控、视频会议等;同时人脸检测技术也是许多基于人脸应用的技术前提,在人脸对齐、人脸识别、人脸跟踪、面部表情分析等技术中进行人脸检测都是必要条件。

由于人脸检测在诸多技术中的地位和重要性,人脸检测已经逐渐发展成为一个相对独立的研究方向,其研究方向和方法也呈现出多样性。从人脸检测算法的发展历史来看,人脸检测算法经历了由传统方法即非深度学习阶段到深度学习阶段的发展过程。

在非深度学习阶段中,一般通过人工设计的手工特征作为人脸特征,通过得到的人脸特征对图像中某些位置判断是否包含人脸。Viola和Jones提出了Haar-Like特征的快速计算方法和级联AdaBoost分类器实现接近实时的人脸检测方法[1];之后人们又设计出了一系列更加复杂的人工特征和不同的级联结构检测器[2-7];还有基于组件的检测算法可变的组件模型人脸检测器等。这些传统的人脸检测算法在速度上具有一定优势,但是检测效果在一定程度上制约了其使用范围。

近年来,随着深度学习的发展,人们提出了越来越多的基于深度学习的人脸检测算法。OverFeat[8]检测算法基于AlexNet[9]网络结构,利用全卷积神经网络[10]和偏移池化同时对目标进行分类定位和检测;DDFD[11]也是基于AlexNet[9]网络,可以实现多角度和遮挡情境下的人脸检测;FacenessNet[12]对人脸不同的人脸器官(头发、眼睛、鼻子、嘴巴、胡子等)分别用不同的神经网络进行训练最终得到检测结果,算法对人脸遮挡具有很强的鲁棒性;CMS-RCNN[13]在VGG-16[14]模型的基础上增加了高层网络采用区域建议网络[15]网络并且结合人体信息,在遮挡、低分辨率和强光照下的人脸检测效果较好;S3FD[16]与SSD[17]着重处理不同尺度下的人脸检测。基于深度学习的人脸检测算法将人脸检测的精度推向新的高度,不过随着网络的加深计算量越来越大检测速度受到一定限制。

我们知道利用卷积神经网络强大的特征提取功能可以对图像内容进行分类和预测,把每个卷积神经网络看作一个分类器,然后把多个神经网络级联起来组成具有强大的分类能力的分类器作为人脸检测的分类器,但是考虑到利用复杂的卷积神经网络在进行多尺度扫描整幅图像计算耗费时间过长,本文训练了12×12,18×18,24×24三个不同小尺度输入的简单神经网络对图像进行分类和预测,并将三级简单的神经级联起来组成最终的检测网络。级联网络中每一级网络中的检测范围和检测精度逐级提高,下一级网络对上一级网络的输出进行进一步的检测筛选,三级神经网络分别进行由粗精度到细精度的人脸检测,最后实现精确检测人脸及其位置判断。

1 基于级联神经网络的人脸检测

1.1 级联神经网络

近年来,基于深度学习的卷积神经网络因为其在计算机视觉、自然语言处理等领域的突出表现受到越来越多的研究人员的追捧,但是随着深度神经网络在不同研究领域的表现越来越好,其层数也越来越深,速度也随着计算量的增加而变慢。在实际应用中人脸检测的速度的会严重影响用户体验,在火车站进口闸机、安检通道等人流量大的场合中实时性显得尤其重要。大部分实时的人脸检测算法都基于级联结构和简单的特征框架[22],为了平衡检测精度与检测速度,我们放弃了层数较深的网络,而是使用浅层的网络提取输入图像的特征并检测其是否含有人脸,然后将三级浅层的网络级联起来以获取更高的精度。与Cascade CNN[18]级联网络的每一级都包含一个分类网络和一个校准网络两个网络不同,本文提出的级联网络每一级网络同时检测图像是否存在人脸并对人脸位置进行预测。我们的级联网络与MTCNN[24]相比网络结构更加简单,计算量更少,能够加快检测速度。

级联网络的每一级检测过程中都会过滤掉一部分错误样本,尤其是要对整个输入图像检测的第一级网络,它的检测能力直接决定了整个级联网络的检测速度[18]。如果在第一级网络检测时能够筛除大部分非人脸,就能够降低后面网络检测耗时。我们级联网络结构的复杂度逐级递增,在上一级网络过滤掉一部分非人脸图像后,把难以分辨的部分交由下一层网络检测以获得更精准的结果。

1.2 级联神经网络的人脸检测

本文基于级联神经网络的算法流程如图1所示,绿色矩形框代表每一级网络检测结果。输入图像首先经过缩放得到多尺度的输入,将其送入级联网络分别经过三级网络,第一级网络排除大部分非人脸,接下来的两级网络对上一级网络的结果进一步检测,经过三级网络最后得到人脸位置。

图1 算法检测流程

第一级网络为一个浅层的全卷积网络如图2所示,它能够接受任意尺寸的图像并对其进行检测,待检测图像在送入第一级网络之前需要由不同的缩放因子对图像进行缩放得到多尺度图像金字塔,实现不同尺度的人脸检测。对于一个宽和高分别为W、H的输入图像,检测步长为n个像素,则第一级网络的输出包括大小为的人脸与非人脸的分类检测结果和大小为×4预测的人脸位置。分类检测结果图上的每一点代表输入图像中12×12大小的检测窗分类结果,根据阈值再筛选出置信度较高的检测结果对应的人脸框进行非极大值抑制(Non Maximum Suppression,NMS)操作,合并相近的人脸框。最后对不同尺度下的人脸框做NMS得到人脸框作为第一级网络的输出。

第二级网络为了保证检测速度同样使用了一个浅层网络,实现对输入图像是否包含人脸的分类并对人脸位置预测,但是不同于第一级网络的全卷积网络,使用了两层全连接网络对人脸检测结果分类和人脸位置预测,其结构如图3所示。第二级网络的输入为第一级网络的检测结果,对第一级网络结果进一步检测筛选减少检测窗口数量,过滤更多的非人脸。第一级网络检测到的人脸图像缩放到大小为18×18,输入到第二级网络中,对输入图像分类是否包含人脸,并调整人脸框的位置。与第一级网络类似在检测之后对检测结果进行NMS操作,合并重合人脸框使人脸定位更加准确。

图3 第二级网络结构

第三级网络是级联网络中最复杂的一个网络,网络结构与第二级网络相似,但是层数加深保证检测结果的精度。第三级网络对第二级网络的输入结果进行最终筛选并调整人脸位置,在输出最后整个级联网络结果之前同样需要对检测结果合并重合的人脸框。第三级网络结构如图4所示。

图4 第三级网络结构

2 实验过程

对级联网络中的三级子网络分别进行训练,针对每个网络输入不同分别生成12×12,18×18和24×24大小的灰度图样本。在训练和测试过程中我们使用Wider Face[20]和FDDB[21]数据集。Wider Face数据集是一个人脸检测基准数据集,其中的图像是从公开的Wider数据集中选择的,Wider Face数据集中共包含32203张图像和393703张人脸标签,其中50%用于测试,40%用于训练,10%用于验证。FDDB数据集包含2845张图像共5171张标注人脸,用于对比其他算法与本文算法检测结果。

2.1 网络训练

我们使用Wider Face中训练部分数据生成训练级联网络的训练样本,参与训练的样本分为正样本、负样本、部分人脸样本共三类。各类样本的类别是通过生成的图像块与真实人脸的重叠度(Intersection Over Union,IOU)确定的。如果图像块与真实人脸的IOU比例大于0.65,则该图像块为正样本;如果图像块与真实人脸的IOU小于0.3,则为负样本;部分样本图像块与真实人脸的IOU在0.4-0.65之间。

从训练数据库中按照正样本:部分样本:负样本=1∶1∶3的比例生成训练需要的各类样本。如果第一级网络能够过尽量多的非人脸,那么后面两级网络的运算量就会降低,整个网络的检测速度就会加快。因此训练好第一级网络是整个级联网络提速的关键。我们为第一级网络训练生成了约20万张大小为12×12的灰度图像作为正样本。第二级网络和第三级网络所需要的训练图像是通过前面已经训练的网络检测得到,如图5所示。第二级和第三级网络训练生成的正样本数据大约为14万张,同时生成对应的部分样本和负样本,训练样本过程按照比例将数据送入别进行训练。

图5 生成每级网络的训练数据

2.2 损失函数

在级联神经网络中预测图像中是否含有人脸是一个二分类任务,对于分类任务我们使用交叉熵损失函数(Cross-Entropy Loss Function)。对于一张输入图像xi,{i=0,1,2…,N},经过网络输出计算分类损失函数表示为:,其中 pi代表图像xi经过网络预测图像中包含人脸的概率,,{i=0,1,2…,N}为图像xi的类别标签,∈{0,1},=0代表图中不包含人脸,=1代表图中包含人脸。对于网络预测的人脸位置,我们计算其与距离最近的真实人脸位置的偏移距离,这可以看作是回归问题。对每一幅输入图像xi其欧氏距离损失函数为:为人脸的标注位置,为网络预测的人脸位置。

级联神经网络的损失函数包括人脸分类和人脸位置预测两种损失函数,但是在不同层级的网络中网络任务的侧重不完全相同,在第一级网络主要负责快速预测图像中是否包含人脸,而对人脸位置的预测是次要任务,所以在训练中分类损失函数的权重要大于人脸位置预测损失函数的权重,而在第三级网络中人脸位置预测损失函数的权重将会增加。训练中每一级网络总的损失函数表示为:,其中α和β分别表示两种损失函数的权重。

2.3 在线困难样本挖掘

不同于传统的困难样本挖掘,我们在训练过程中进行在线的困难样本挖掘。在训练时对每一批训练样本前向传播后的损失进行排序,只选择其中分类和回归损失中最大的70%样本进行反向传播,忽略那些简单样本,减少了训练所需时间,并且能够提高整个网络效果。

3 实验结果

我们提出的级联网络训练和测试都基于Tensor-Flow深度学习框架。我们设置最小检测人脸尺寸为24,检测步长为4个像素,三级网络在检测过滤非人脸窗口的阈值分别设置为0.5,0.5和0.3,在Intel i3-7100平台下对VGA图像检测平均时长为48ms,在第一级网络中我们使用的缩放因子为0.79,网络检测平均耗时为35ms,对每一次缩放后检测结果进行NMS操作的IOU阈值为0.7,而对第一网络整体检测结果合并整理设置IOU阈值为0.5;的第二级网络平均耗时6ms,第三级网络平均耗时7ms,这两级进行NMS操作阈值都设置为 0.6。该算法与 V-J[1]、Joint Cascade[22]、SURF-multiview[23]、MTCNN[24]、ICC-CNN[25]等快速人脸检测算法检测速度对比如表1所示:

表1 几种人脸检测算法检测速度对比

由表1可以本文算法检测速度快于V-J[1]、Cascade CNN[18]、MTCNN[24]、ICC-CNN[25],但是比 Joint Cascade[22]和 SURF-multiview[23]检测速度慢。

上面我们比较了几种算法的检测速度,现在我们在FDDB数据集对算法检测精度进行比较。FDDB是具有标准化评估过程的大型数据集,数据集中的2845张图像中共有5171张标注人脸。FDDB中的使用椭圆标注人脸,我们首先将这些椭圆形标注转化为与检测算法相同标注的矩形标注。我们遵循所需的评估标准流程,使用作者提供的工具箱报告我们的检测性能。FDDB中提供了两种评估类型:离散评分和连续评分。在离散评分中它计算检测到标注人脸数与误检人脸数,只有检测人脸与真实标注人脸位置的重合度大于0.5时才认为检测到了标注人脸。在连续评分评估中,通过将重叠度比率视为检测边界框的匹配度量来评估人脸的位置。图6和图7分别代表每种算法的离散评分和连续评分。

图6 离散评分结果对比

图7 连续评分结果对比

从图6和图7的离散评分和连续评分并结合表1的检测速度对比来看,本文算法与Cascade CNN[18]、MTCNN[24]级联神经网络算法相比,在保证检测精度的情况下提高了检测速度。

4 结语

为了提高人脸检测的速度,本文将三级浅层的神经网络级联起来,实现快速的人脸检测。测试图像输入级联网络,第一级网络对不同尺度下的图像进行检测,排除了大量非人脸位置,并把难以分辨的结果交由下级网络进行检测,经过三级网络检测最终得到人脸位置。算法在FDDB数据集上算法达到了良好的检测效果,提高了检测速度,在CPU上对VGA图像的检测速度达到21fps。但是该算法检测人脸所需时间与图像大小,以及图像中人脸数量有关,第一级网络要对整幅输入图像进行扫描检测,因此图像越大,人脸越多检测时间越长,在针对多人脸图像的检测中需要进一步提高其检测速度。

猜你喜欢

级联人脸神经网络
铀浓缩厂级联系统核安全分析
基于递归模糊神经网络的风电平滑控制策略
有特点的人脸
一起学画人脸
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
三国漫——人脸解锁
基于Q-Learning算法和神经网络的飞艇控制
长得象人脸的十种动物
整体级联式增压空气冷却器的进气模块