Print

发布时间: 2019-02-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.180248
2019 | Volume 24 | Number 2




    图像分析和识别    




  <<上一篇 




  下一篇>> 





两层级联卷积神经网络的人脸检测
expand article info 张海涛, 李美霖, 董帅含
辽宁工程技术大学软件学院, 葫芦岛 125105

摘要

目的 传统人脸检测方法因人脸多姿态变化和人脸面部特征不完整等问题,导致检测效果不佳。为解决上述问题,提出一种两层级联卷积神经网络(TC_CNN)人脸检测方法。方法 首先,构建两层卷积神经网络模型,利用前端卷积神经网络模型对人脸图像进行特征粗略提取,再利用最大值池化方法对粗提取得到的人脸特征进行降维操作,输出多个疑似人脸窗口;其次,将前端粗提取得到的人脸窗口作为后端卷积神经网络模型的输入进行特征精细提取,并通过池化操作得到新的特征图;最后,通过全连接层判别输出最佳检测窗口,完成人脸检测全过程。结果 实验选取FDDB人脸检测数据集中包含人脸多姿态变化以及人脸面部特征信息不完整等情况的图像进行测试,TC_CNN方法人脸检测率达到96.39%,误检率低至3.78%,相比当前流行方法在保证算法效率的同时检测率均有提高。结论 两层级联卷积神经网络人脸检测方法能够在人脸多姿态变化和面部特征信息不完整等情况下实现精准检测,保证较高的检测率,有效降低误检率,方法具有较好的鲁棒性和泛化能力。

关键词

人脸检测; 卷积神经网络; 十折交叉验证; 两层级联卷积神经网络; 最大值池化

Two-layer cascaded convolutional neural network for face detection
expand article info Zhang Haitao, Li Meilin, Dong Shuaihan
College of Software, Liaoning Technical University, Huludao 125105, China
Supported by: Natural Science Foundation of Liaoning Provinec Province, China(20170540426)

Abstract

Objective As an important part of face recognition, face detection has attracted considerable attention in computer vision and has been widely investigated. Face detection determines the location and size of human faces in an image. Traditional face detection methods are limited by face multi-pose changes and incomplete facial features, which lead to their poor detection effect. Modern face detectors can easily detect near-frontal faces. Recent research in this area has focused on the uncontrolled face detection problem, where a number of factors, such as multi-pose changes and incomplete facial features, can lead to large visual variations in face appearance and can severely degrade the robustness of the face detector. A convolutional neural network can automatically select facial features, rapidly delete a large number of non-face background information, and can achieve good face detection results. However, a single convolutional neural network should possess three functions, namely, facial feature extraction, reduction of feature dimensions to decrease the computational complexity, and feature classification, which result in complex network structure, limited detection speed, and overfitting of the network. To solve these problems, this study presents a face detection method of two-layer cascaded convolutional neural network (TC_CNN). Method First, a two-layer convolutional neural network model is constructed. The first convolutional neural network model is used to extract the features of the face image, and a max pooling method is adopted to reduce the dimension of those features in which multiple suspected face windows are outputted. Second, the face windows are used as the inputs of the second convolutional neural network model for fine feature extraction, and a new feature map is obtained by pool operation. Finally, the best detection window is outputted through full connection layer discrimination. The face is successfully detected and the face window is returned when the result of discriminant classification is a face; otherwise, the non-face window is deleted. An optimal face detection window can be selected through non-maximum suppression, the size and position of the face in the input image are returned based on the location information of the optimal face detection window, and the entire process of face detection is completed. In the training of TC_CNN, we use 10 000 images with near-frontal faces, face multi-pose changes, and incomplete facial features from the labeled faces in the Wild dataset as positive training samples and 1 000 images as negative training samples. In the testing of the TC_CNN model, we utilize an authoritative dataset FDDB to evaluate, measure, and determine the validity of the model based on four indexes, namely, detection rate, false detection rate, missing detection rate, and detection time. The TC_CNN model is compared with excellent face detection algorithms, such as AdaBoost, fast LBP, NPD+AdaBoost, and SPP+CNN methods. Result Images with face multi-pose changes and incomplete face feature information in the FDDB face detection dataset are selected for the test. Results show that the face detection rate by TC_CNN method is up to 96.39%, false detection rate is as low as 3.78%, and detection time is 0.451 s. For the detection rate, the TC_CNN method is 7.63% higher than the traditional AdaBoost method based on cascade idea, 3.57% higher than the fast LBP method, 0.50% higher than the NPD+AdaBoost method, and 6.04% higher than the SPP+CNN method. For the false detection rate, the TC_CNN method is 2.44% lower than the AdaBoost method, 4.47% lower than the fast LBP method, 0.59% lower than the NPD+AdaBoost method, and 5.09% lower than the SPP+CNN method. For the detection time, the TC_CNN method's detection efficiency is remarkably higher than the SPP+CNN method and slightly higher than the AdaBoost, fast LBP, and NPD+AdaBoost methods. In comparison with the current methods, the detection rate is increased while ensuring the efficiency of the algorithm. To verify the robustness of the TC_CNN model under the conditions of face multi-pose changes and incomplete facial features, representative images of two special cases are selected from the FDDB dataset in conducting four groups of comparative experiments under the multi-pose changes of a single face image, multi-pose changes of a multi face image, incomplete facial features of a single face image, and incomplete facial features of a multi face image. Experimental results show that the TC_CNN model shows good effectiveness and robustness compared with the four excellent algorithms or four groups of contrastive experiments under different interference conditions. Conclusion The TC_CNN model for face detection can achieve accurate detection under face multi-pose changes and incomplete facial feature information. This model can obtain a high detection rate and effectively reduce false detection rate. The method has good robustness and generalization capability. The TC_CNN method overcomes the limitations of the excellent AdaBoost cascade concept on the face detection method (such as cascading two convolutional neural networks; effectively avoiding the complex network structure caused by the three functions of extraction, reduction, and classification of features simultaneously), which easily cause overfitting and other contradictions. However, the selection of the number and parameter of the cascaded convolutional neural network is difficult for the improvement of the model performance and detection effect. In future research, we will determine the number and parameter of cascaded convolution neural network to optimize the model and will attempt to detect the size and position of the face accurately.

Key words

face detection; convolutional neural network; ten-fold cross validation; two-layer cascaded convolutional neural network; max pooling

0 引言

近年来,人脸检测[1]作为计算机视觉的热点问题之一,被广泛应用于视频监控、人机交互、机器视觉等领域。人脸检测是实现人脸识别技术的第1步[2],起初研究者利用人脸轮廓、五官等特征信息进行人脸检测,操作简单、检测速度快,但是需要一定的先验知识且人脸的动态变化导致特征稳定性不可控。因此,基于统计知识的人脸检测方法[3]应运而生,将人脸图像检测化为二分类问题,以获取人脸特征,进而实现人脸检测过程。

基于统计的人脸检测方法,首先构建足够大的由人脸和非人脸组成的样本空间,然后利用统计学习理论找到区分人脸与非人脸的特性,并对图像中每个位置进行判断[4],构造普适分类器,最终实现人脸检测。该类方法相比传统的基于特征的人脸检测方法,优势在于能够运用机器学习算法对大量人脸样本进行训练,从而挖掘出人脸的内在联系,不依赖于先验知识,可有效避免因知识不准确或不完整造成的检测错误,从而取得良好的检测效果[5]。其中,优秀的算法主要包括人工神经网络(ANN)[6]、支持向量机(SVM)[7]和Adaboost[8]算法。基于人工神经网络的人脸检测方法通过训练和学习大量图像样本实现人脸检测[9],检测能力受样本的选取影响较大,且实时检测效果不佳;基于支持向量机的人脸检测方法通过间隔最大化的学习策略对样本进行分类实现人脸检测,需要巨大的负样本图像数量[10],导致计算量过大;基于Adaboost算法的人脸检测方法通过组合弱分类器形成强分类器实现实时人脸检测[11],但在保证检测率的同时,误检率也较高。因此,如何在样本空间尽可能小、学习时间尽可能短的情况下,得到普适分类器,进而实现人脸检测是基于统计方法的研究重点和难点。

为了突破基于统计的人脸检测方法中存在的难点问题,部分学者利用卷积神经网络(CNN)模型能够自动提取人脸特征和快速准确地剔除背景信息等特点,进行人脸检测,并取得了良好的效果。CNN具有局部感受野、权值共享和空间池化3个特点,使得对提取的特征具有对图像变化、尺度变化和扭曲的不变性[12]。虽然基于CNN的人脸检测方法取得了显著的效果,但单一的CNN模型进行人脸检测同样存在一定问题。由于单个CNN模型需同时具备特征的提取、降维和分类3项功能,因此网络结构的设计往往较为复杂,导致检测速度受限。另外,复杂的卷积神经网络可能存在过拟合问题,从而导致网络模型检测精度受到影响。2015年,Li等人[13]提出一种六层级联卷积神经网络模型用于人脸检测,该模型分为3个阶段,每个阶段包括一个用于检测的卷积神经网络和另一个用于边界校正的卷积神经网络。训练时,每个阶段的卷积神经网络都要单独进行,并且对训练样本的选择要求很高,导致训练过程复杂[14]

因此,为尽可能简化算法模型和训练过程,同时考虑到实际环境中进行人脸检测时,通常需要验证人脸在多姿态变化下以及出现人脸面部特征不完整等干扰因素时人脸检测算法的性能是否达标等问题。结合上述文献卷积神经网络模型能够自动提取特征的特点,以及受Viola-Jones方法[15]级联“弱”分类器思想的启发,提出利用两层级联卷积神经网络进行人脸检测。该网络模型包括两层卷积神经网络结构,前端网络(FN)采用相对较为简单的网络模型,卷积核均使用3×3像素大小,实现对输入图片进行特征粗提取,快速剔除大量非人脸背景信息,得到多个疑似人脸候选窗口;后端网络(SN)采用相对前端网络结构较为复杂的网络模型,卷积核分别采用5×5像素和3×3像素大小,对前端输出的人脸候选窗口进行精准判别,通过非极大值抑制(NMS)筛选最佳检测窗口,输出检测结果,从而实现人脸检测全过程。

1 卷积神经网络

卷积神经网络是深度学习模型中的一种多层人工神经网络,包括输入层、卷积层(convolution layer)、池化层(pooling layer)、全连接层(FC)和输出层。由于本文是采用CNN模型做人脸检测,故以输入人脸图像为例,一个简化的卷积神经网络结构如图 1所示。CNN包含提取输入图像特征的特征提取神经网络和基于图像特征进行运算的分类神经网络,特征提取神经网络接收输入图像,经过卷积层(${C_1}$,…,${C_n}$)的卷积操作后得到特征映射图,通过池化(${P_1}$,…,${P_n}$)对卷积后的特征图进行降维,将降维后的特征值输入至分类神经网络中的全连接层,最后输出判别结果。在卷积神经网络中,卷积层和池化层是其核心部分,一个CNN模型可以由多个卷积层和池化层交替组成。

图 1 简化的卷积神经网络结构
Fig. 1 The simplified structure of convolutional neural network

在卷积层中,利用卷积核与特征图进行卷积操作,提取前一层若干不同的特征图中相同位置的局部特征,再将卷积后的局部加权和加偏置,将结果输入至一个非线性的激活函数中进行映射得到相应的特征映射值。卷积操作的实质是对人脸图像进行特征提取,其特点是局部连接和权值共享。其中,卷积核是一个可训练的权值矩阵,不同参数的卷积核可提取人脸的不同特征。对于一个大小为$m \times n$的特征图,用大小为$k \times k$的卷积核对其进行卷积操作,得到的输出特征图大小为$\left({m - k + 1} \right) \times \left({n - k + 1} \right)$。对于第$l$层的第$j$幅特征图,其卷积层的输出为

$ \mathit{\boldsymbol{y}}_j^l = f(\sum\limits_j {\mathit{\boldsymbol{x}}_j^l} *{\mathit{\boldsymbol{W}}_j} + \mathit{\boldsymbol{b}}_j^l) $ (1)

式中,$\mathit{\boldsymbol{y}}_j^l$表示第$l$层的第$j$幅特征图的输出,$\mathit{\boldsymbol{x}}_j^l$表示第$l$层的输入,${\boldsymbol{W}_j}$表示卷积核的权重值,*表示卷积核与第$l$层中的第$j$幅特征图的卷积,$f$为激活函数,$\mathit{\boldsymbol{b}}_j^l$为偏置。

基于线性修正单元(ReLU)函数学习速度较快,而且能够有效避免训练过程中可能会出现的饱和问题,因此本文采用ReLU函数作为激活函数,其计算公式[16]

$ f\left( x \right) = \max \left( {0,x} \right) $ (2)

ReLU函数本质上是一个分段函数,其函数图像如图 2所示,当$x≤0$时,$f(x)=0$;当$x>0$时,$f(x)=x$。ReLU函数把所有负值变为0,而正值保持不变,这种单侧抑制行为使得神经网络中的神经元具有稀疏激活性,可以有效缓解梯度消散问题。

图 2 ReLU函数图
Fig. 2 The graph of ReLU function

在实际检测中,卷积后的特征映射图数量是巨大的,将所有的特征都输入至分类器中,即全连接层,将导致非常大的计算量。因此,对卷积层进行池化操作,即对特征降维、去除冗余的特征是十分必要的。常用的池化方法包括最大值池化(max pooling)、均值池化(mean pooling)、随机池化(stachastic pooling)和金字塔池化(spatial pyramid pooling)等。本文采用最大值池化方式,即选取局部最大值作为特征值。将池化后的特征值输入全连接层中,减少了计算量。全连接层一般使用一个或一个以上的全连接人工神经网络,用于整合卷积和池化操作后具有类别区分性的局部信息,采用softmax逻辑回归进行分类,用于最后检测结果输出。

卷积神经网络现已广泛应用于计算机视觉领域,如图像分类、物体检测、姿态估计、图像分割和人脸识别等。与传统算法相比,CNN能够自动提取人脸特征,利用卷积层权值共享特点,使可训练的参数大大降低,具有良好的泛化能力;池化层能够对特征进行降维,在减少计算量的同时对输入空间具有平移不变性。而且,CNN的层数是可调整的,深层模型能够处理更复杂的分类问题,有利于提高检测性能。综上,用CNN做人脸检测是具有优势且值得研究和实现的。但是,仅利用单个CNN模型,同时解决实际人脸检测中可能会出现的各种复杂条件,且需要具备特征提取、降维和分类三大功能,容易导致CNN网络结构设计过于复杂,影响检测速度,甚至出现过拟合问题。

2 两层级联卷积神经网络

实际场景中的人脸图片,不仅包含人脸,还有复杂的背景信息,并且受人脸多姿态变化以及人脸面部特征不完整等外在因素影响较大。在用单个CNN模型实现人脸检测时,保证检测精度的前提是建立在复杂的网络结构设计之上的,带来的时耗影响难以克服。由此,在进行人脸检测的过程中,为了兼顾检测精度和检测效率,本文提出一种两层级联卷积神经网络模型,主要思路可以分为以下两个方面:

1) 设计一种两层级联卷积神经网络。前端网络结构设计相对简单,主要对人脸特征进行粗提取,快速剔除大量非人脸窗口,提高模型检测速度;而后端网络结构设计相对复杂,对疑似人脸窗口进行精确检测,通过非极大值抑制筛选最佳检测窗口,返回人脸大小和位置。

2) 运用十折交叉检验方法进行TC_CNN模型训练。选取具有代表性的训练样本(其中负样本1 000张,正样本10 000张),结合多次迭代和十折交叉验证方式训练,简化模型结构进而实现人脸检测过程。

2.1 TC_CNN模型结构

TC_CNN模型包含两个卷积神经网络,即前端网络和后端网络。传统的卷积神经网络结构中包含多个隐层,浅层网络往往用来提取简单特征,而深层网络提取较为复杂的特征。基于该思想,在整个TC_CNN模型设计中,前端网络和后端网络的分工明确,设计意图明显。其中前端网络结构设计较为简单,主要负责在保证人脸高召回率的前提下,快速剔除大量非人脸窗口,以提高检测速度;后端网络结构设计相对前端网络较为复杂,在处理前端网络的输出时,力求准确检测出输入图片所包含全部人脸的大小和位置,以保证整个TC_CNN模型的检测精度。以输入人脸图片为例,两层级联卷积神经网络模型的结构如图 3所示。

图 3 TC_CNN模型的结构
Fig. 3 The structure of the TC_CNN model

前端网络结构如图 4所示,共有7层,其中包括1个输入层(F_Input),3个卷积层(依次为F_Conv1,F_Conv2,F_Conv3),1个池化层(F_Pool),1个全连接层(F_Fc)和1个输出层(F_Output)。输入层是以归一化为12×12像素大小的人脸图片作为输入,3个卷积层均采用3×3像素大小的卷积核进行卷积操作,池化层采用2×2像素大小的采样窗口,以最大值池化方式进行降维操作,经过卷积、池化等一系列操作后,将结果输入至全连接层,然后根据分类结果,以边框回归(bounding box regression)[17]方式生成疑似人脸窗口并输出,实现特征粗提取,在保证较高召回率的前提下,提高检测速度。

图 4 前端网络简化结构图
Fig. 4 The simplified image of the first network

后端网络结构相对于前端网络较复杂,相比于前端网络,后端卷积神经网络中不同卷积层的卷积核大小不同,且其中一个卷积核的大小大于前端网络卷积核大小,其简化结构图如图 5所示。在后端网络中,包含1个输入层(S_Input),2个卷积层(依次为S_Conv1,S_Conv2),2个池化层(依次为S_Pool1,S_Pool2),1个全连接层(S_Fc)和1个输出层(S_Output)。将前端网络的输出,即多个疑似人脸窗口,归一化为24×24像素大小后,输入至后端网络中。相比于前端网络中3个卷积层均采用3×3像素大小的卷积核,后端网络为实现特征精准提取,因此第1个卷积层采用5×5像素大小的卷积核,第2个卷积层采用3×3像素大小的卷积核。后端网络使用两层池化,分别加在两个卷积层后面,第1个池化层使用3×3像素大小的采样窗口,第2个池化层使用2×2像素大小的采样窗口,均采取最大值池化方法。经过卷积池化操作后,将结果输入至全连接层,利用边框回归和非极大值抑制判别输出最佳检测窗口,实现人脸检测过程。后端网络的相对复杂设计提高了TC_CNN模型的检测精度。

图 5 后端网络简化结构图
Fig. 5 The simplified image of the second network

2.2 TC_CNN模型训练

两层级联卷积神经网络的参数设置将直接影响模型的检测精度和检测速度,如果前端网络模型设计过于复杂,将导致召回率较低,同时也会影响人脸检测速度;如果后端网络模型设计过于简单,则会导致检测精度下降。因此,在TC_CNN模型中,网络参数的设置十分重要。为得到较优参数,在训练网络模型时,本文采用多次迭代和十折交叉验证方法对TC_CNN模型进行训练,在保证检测率和检测速度的同时,有效避免出现过拟合问题。

在训练过程中,使用LFW(labeled faces in the wild)和Imagenet数据集对TC_CNN模型进行训练。LFW数据集包含13 000多张不同表情、光照环境和遮挡程度的5 000余人的人脸图片,其中1 680人有2张或2张以上的人脸图片。为避免训练时间过长,本文手动从LFW数据集中选取具有代表性的10 000张人脸图像作为训练正样本,其中包括正面人脸图像、多姿态人脸变化图像、人脸面部特征不完整图片。Imagenet数据集是目前世界上最大的图像数据库,多达1 400多万张图片,包含各种物体场景图片,适合用于构造训练负样本,本文从其中选取1 000张包含动物、植物、交通工具等各类物体的图片作为训练负样本数据集。LFW数据集中选取的部分训练正样本图片如图 6所示,Imagenet数据集中的部分负样本图片如图 7所示。为避免TC_CNN模型出现过拟合问题,提高模型的可靠性和稳定性,本文采用交叉验证(cross validation)方法中的十折交叉验证(ten-fold cross validation)方式对模型进行训练。采用十折交叉验证首先将训练正样本、负样本数据集分别均分为10份,依次用其中的9份来训练TC_CNN模型,将余下的1份作为测试数据集去测试模型,最后把9次训练和1次测试的结果的均值作为对TC_CNN模型有效性的估计,交叉验证重复10次,确保每个子样本验证一次,从而提高两层级联卷积神经网络的检测精度。同时,采用多次迭代方法对TC_CNN模型参数做反复调整,当迭代次数达到1 000次时,模型收敛,因此训练时针对网络模型迭代次数在1次、100次、500次、1 000次的情况下对比实验误差和训练时间,并与TC_CNN模型中的后端卷积神经网络S_CNN进行比较。不同迭代次数下的误差和训练时间对比见表 1,随着迭代次数的增加、参数的调整,误差逐渐降低。

图 6 LFW数据集部分训练正样本图片
Fig. 6 Some positive sample images of LFW dataset
图 7 Imagenet数据集部分训练负样本图片
Fig. 7 Some negative sample images of Imagenet dataset

表 1 TC_CNN与S_CNN在不同迭代次数下误差和时间对比
Table 1 The comparison of error and time between TC_CNN and S_CNN at different epochs

下载CSV
模型 1次 100次 500次 1 000次
误差/% 时间/s 误差/% 时间/min 误差/% 时间/min 误差/% 时间/min
TC_CNN 23.62 42 2.21 76 0.31 378 0.09 723
S_CNN 27.34 51 2.42 84 0.47 409 0.21 811

由于TC_CNN模型采用两个CNN结构级联,网络层数较多,随着卷积神经网络层数的增加,可能会导致梯度消散问题。因此,在训练TC_CNN模型时,使用交叉熵(cross entropy)函数作为损失函数,用来衡量预测结构和真实结构的相似程度,具体衡量公式为

$ {D_j} = {k_j}\ln({p_j}) + (1 - {k_j})\ln(1 - {p_j}) $ (3)

式中,${p_j}$表示对于第$j$幅输入图像${\boldsymbol{I}_j}$,TC_CNN检测其为人脸的概率,${k_j}$∈{0, 1},当${k_j}$=1时,${\boldsymbol{I}_j}$为人脸;当${k_j}$=0时,${\boldsymbol{I}_j}$为非人脸。

2.3 人脸检测过程

通过训练好的TC_CNN模型实现人脸检测的流程如图 8所示,具体检测过程如下:

图 8 TC_CNN模型实现人脸检测流程图
Fig. 8 The flow chart of the TC_CNN model for face detection

1) 将待检测的图片(既可能是包含人脸的图片,也可能是无人脸图片)均归一化为12×12像素大小,输入到前端卷积神经网络FN中。

2) FN通过卷积操作对输入图像进行特征粗提取,利用最大值池化对提取到的特征进行降维,然后输入至全连接层判别分类,如果判别为疑似人脸,则输出人脸窗口;否则,快速剔除大量非人脸窗口。

3) 将FN的输出,即疑似人脸候选窗口(归一化为24×24像素大小)作为后端卷积神经网络SN的输入,SN中的卷积层对其进行特征精细提取,采用最大值池化方法降维,然后输入至全连接层做最终判别分类,如果判别分类结果为人脸,则成功检测到人脸并返回人脸窗口;否则,剔除非人脸窗口。

4) 经过SN得到的人脸窗口通过NMS筛选,得到最佳人脸检测窗口,根据检测窗口位置信息,返回人脸的大小和位置,完成人脸检测。

3 实验结果与分析

TC_CNN算法在MATLAB R2016a实验环境下完成,实验中使用的微型计算机配置为64位Windows10旗舰版操作系统,Intel Core i5 4核处理器,单核主频2.3 GHz,内存为8 GB,使用FDDB数据集作为测试集对TC_CNN模型进行测试。FDDB数据集包含2 845张已标注人脸的图片,共有5 171张人脸图片,是测试人脸检测算法有效性的权威数据集,对TC_CNN算法测试结果具有普遍性和说服力。

3.1 对比算法实验结果分析

为验证基于TC_CNN模型的人脸检测问题的有效性,本文分别从人脸检测率${P_{\rm{r}}}$、误检率${P_{\rm{f}}}$、漏检率(1-${P_{\rm{r}}}$)和检测时间$t$[18]等多角度对TC_CNN模型与当前人脸检测较优算法进行对比实验。将TC_CNN算法与文献[19]中同样采用级联思想的Adaboost算法、较为优秀的文献[20]中的Fast LBP方法、文献[21]对Adaboost算法加以改进的NPD+Adaboost方法,以及文献[22]空间金字塔池化+级联卷积神经网络(SPP+CNN)等算法性能做对比,5种算法对比实验结果如表 2。从表 2可以看出,在检测率上,本文方法为96.39%,比传统的基于级联思想的Adaboost方法高7.63%,比Fast LBP方法高3.57%,比NPD+Adaboost方法高0.50%,比SPP+CNN方法高6.04%;在误检率上,本文方法低至3.78%,比Adaboost方法低2.44%,比Fast LBP方法低4.47%,比NPD+Adaboost方法低0.59%,比SPP+CNN方法低5.09%;在检测速度上,TC_CNN模型检测效率明显高于SPP+CNN模型,略高于Adaboost方法、Fast LBP方法和NPD+Adaboost方法。综上所述,本文提出的TC_CNN模型在人脸检测上具有良好的检测效果,无论在检测率、误检率和检测速度上均有提高,体现了本文算法的优势。

表 2 TC_CNN与其他算法的性能对比
Table 2 The performance comparison of TC_CNN and other algorithms

下载CSV
检测方法 检测率/% 误检率/% 漏检率/% 检测时间/s
Adaboost 88.76 6.22 11.24 0.674
Fast LBP 92.82 8.25 7.18 0.609
NPD+Adaboost 95.89 4.37 4.11 0.721
SPP+CNN 90.35 8.87 9.65 0.980
TC_CNN 96.39 3.78 3.61 0.451
注:加粗字体表示最优结果。

3.2 实验效果图分析

在FDDB数据集中,人工选取一些具有人脸多姿态、人脸面部特征信息不完整的图片,进一步验证TC_CNN模型对于实际场景中人脸多姿态变化和人脸面部特征不完整条件下也同样有效,具有较好的泛化能力。在3.1节的对比算法中,SPP+CNN方法是在文献[13]提出的六层级联卷积神经网络模型基础上加以改进,取消原有模型的3层边界校正网络,简化模型,提高检测速度;同时分别在3个用于检测的卷积神经网络的全连接层前加入空间金字塔池化结构,保留了原图像全部特征信息,相比于无金字塔池化模型提高了检测精度,检测效果较好。因此,在本节实验中,选择SPP+CNN方法与本文TC_CNN方法做对比实验。在该对比实验中,为了便于直观地观察实验效果,采用边框回归方式生成人脸候选窗口,若分类结果为人脸,则根据所得候选窗口的位置信息,在原图中标定输入数据所对应的区域作为人脸检测结果。

针对实际场景中人脸多姿态问题,首先选取多姿态单人脸图片,人脸姿态包括正面、轻度左右旋转、重度左右旋转、抬头、低头等角度变化。分别用TC_CNN模型和SPP+CNN模型检测这些多姿态单人脸图片,结果如图 9所示。图 9(a)为基于TC_CNN方法的多姿态单人脸图片检测效果,图 9(b)为基于SPP+CNN方法的多姿态单人脸图片检测效果。然后选取多姿态多人脸图片,即一张图片中包含两张或两张以上的人脸,且姿态角度变化不同,同样分别采用TC_CNN模型和SPP+CNN模型进行检测,检测结果如图 10所示。图 10(a)为基于TC_CNN方法的多姿态多人脸图片检测结果,图 10(b)为基于SPP+CNN方法的多姿态多人脸图片检测结果。通过图 9图 10对比发现,对于多姿态单人脸图片,两种方法均能成功检测出人脸,尽管SPP+CNN方法检测框略大于TC_CNN方法的检测框,检测效果差别不是很明显;但对于多姿态多人脸图片,检测效果存在一定差异,本文方法较为成功地检测出图片中存在的人脸,且检测框能够较准确地定位出人脸位置和大小,而SPP+CNN方法的检测结果略有偏差,图 10(b)的第6、7张图片存在漏检现象(已在图中用椭圆框进行标注)。由此可见,针对实际场景中人脸多姿态问题,无论是单人脸图片还是多人脸图片,本文方法检测效果均优于SPP+CNN方法,验证了TC_CNN方法具有良好的鲁棒性。

图 9 多姿态单人脸图片下的检测效果对比
Fig. 9 The comparison of detection results under multi-pose changes of the single face images
((a) TC_CNN method; (b) SPP+CNN method)
图 10 多姿态多人脸图片下的检测效果对比
Fig. 10 The comparison of detection results under multi-pose changes of the multi face images
((a) TC_CNN method; (b) SPP+CNN method)

图 9图 12的4组对比实验,可以看出,针对人脸多姿态变化以及人脸面部特征不完整等因素影响,TC_CNN模型依然能够比较准确地检测出人脸,且检测窗口和实际人脸大小、位置吻合度较高,最终获得较为理想的检测效果,证明基于TC_CNN模型的人脸检测方法是有效的,且具有良好的鲁棒性。

图 11 人脸特征不完整的单人脸图片检测效果对比
Fig. 11 The comparison of detection results under incomplete facial features of the single face images
((a) TC_CNN method; (b) SPP+CNN method)
图 12 人脸特征不完整的多人脸图片检测效果对比
Fig. 12 The comparison of detection results under incomplete facial features of the multi face images
((a) TC_CNN method; (b) SPP+CNN method)

4 结论

本文根据级联结构聚弱为强的思想,提出一种解决复杂条件下人脸检测的两层级联卷积神经网络结构模型。TC_CNN利用卷积神经网络自动提取特征、快速剔除背景信息等特点,结合CNN中浅层网络用于提取简单特征,深层网络提取复杂特征的特性,级联两个CNN结构,串联处理人脸检测问题。前端卷积神经网络设计简单,快速剔除大量背景信息,输出多个疑似人脸窗口,提高检测效率;后端卷积神经网络只需对前端网络处理过的疑似人脸窗口进一步提取人脸复杂特征,得到最佳检测窗口,保证整个TC_CNN模型的检测精度。同时,在训练过程中采取多次迭代和十折交叉验证方式,有效避免TC_CNN模型出现过拟合问题,提高了模型的可靠性和稳定性。将两个CNN级联,既保证了检测速度,又提高检测精度。在与其他算法对比中,本文方法在检测率和检测速度上均优于Adaboost方法、Fast LBP方法、NPD+Adaboost方法和SPP+CNN方法,具有良好的鲁棒性。在今后的研究中,将进一步优化TC_CNN模型反馈人脸位置信息的性能,力求更精准地检测出人脸的大小和位置。

参考文献

  • [1] Hao Z K, Liu Y, Qin H W, et al. Scale-aware face detection[C]//Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI: IEEE, 2017: 1063-6919.[DOI:10.1109/CVPR.2017.207]
  • [2] Campos N C S, Monteiro H A, Brito A V, et al. A framework for design and validation of face detection systems[C]//Proceedings of 2017 CHILEAN Conference on Electrical, Electronics Engineering, Information and Communication Technologies. Pucon, Chile: IEEE, 2017: 1-7.[DOI:10.1109/CHILECON.2017.8229685]
  • [3] Mukherjee S, Saha S, Lahiri S, et al. Convolutional Neural Network based face detection[C]//Proceedings of 20171st International Conference on Electronics, Materials Engineering and Nano-Technology. Kolkata, India: IEEE, 2017: 1-5.[DOI:10.1109/IEMENTECH.2017.8076987]
  • [4] Zhang S, Cai Y, Xie M. Face detection based on local region sparse coding[J]. Journal of Software, 2013, 24(11): 2747–2757. [张抒, 蔡勇, 解梅. 基于局部区域稀疏编码的人脸检测[J]. 软件学报, 2013, 24(11): 2747–2757. ] [DOI:10.3724/SP.J.1001.2013.04484]
  • [5] Song R. The research and implementation of human face detection and tracking based on complex background[D]. Hefei: Anhui University, 2014. [宋茹.基于复杂场景的人脸检测与人脸跟踪的研究与实现[D].合肥: 安徽大学, 2014.] http://cdmd.cnki.com.cn/Article/CDMD-10357-1014229556.htm
  • [6] Bhandiwad V, Tekwani B. Face recognition and detection using neural networks[C]//Proceedings of 2017 International Conference on Trends in Electronics and Informatics. Tirunelveli, India: IEEE, 2017: 879-882.[DOI:10.1109/ICOEI.2017.8300832]
  • [7] Mohan K, Chandrasekhar P, Jilani S A K. A combined HOG-LPQ with Fuz-SVM classifier for Object face Liveness Detection[C]//Proceedings of 2017 International Conference on I-SMAC. Palladam, India: IEEE, 2017: 531-537.[DOI:10.1109/I-SMAC.2017.8058406]
  • [8] Yu M, Yun L J, Chen Z Q, et al. Research on video face detection based on AdaBoost algorithm training classifier[C]//Proceedings of 2017 First International Conference on Electronics Instrumentation & Information Systems. Harbin, China: IEEE, 2017: 1-6.[DOI:10.1109/EIIS.2017.8298627]
  • [9] Liu M Y. Face detection system based on static images[D]. Chengdu: University of Electronic Science and Technology of China, 2014. [刘明跃.基于静态图像的人脸检测[D].成都: 电子科技大学, 2014.] http://cdmd.cnki.com.cn/Article/CDMD-10614-1015706075.htm
  • [10] Malisiewicz T, Gupta A, Efros A A. Ensemble of exemplar-SVMs for object detection and beyond[C]//Proceedings of 2011 IEEE International Conference on Computer Vision. Barcelona, Spain: IEEE, 2011: 89-96.[DOI:10.1109/ICCV.2011.6126229]
  • [11] Wang Y Q. An analysis of the Viola-Jones face detection algorithm[J]. Image Processing On Line, 2014, 4: 128–148. [DOI:10.5201/ipol.2014.104]
  • [12] Tao Q Q. Face detection based on convolutional neural network and improved support vector machine[D]. Hefei: Hefei University of Technology, 2016. [陶勤勤.基于卷积神经网络和改进支持向量机的人脸检测[D].合肥: 合肥工业大学, 2016.] http://www.wanfangdata.com.cn/details/detail.do?_type=degree&id=Y3028330
  • [13] Li H X, Lin Z, Shen X H, et al. A convolutional neural network cascade for face detection[C]//Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA: IEEE, 2015: 5325-5334.[DOI:10.1109/CVPR.2015.7299170]
  • [14] Qin H W, Yan J J, Li X, et al. Joint training of cascaded CNN for face detection[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA: IEEE, 2016: 3456-3465.[DOI:10.1109/CVPR.2016.376]
  • [15] Egorov A D, Divitskii D U, Dolgih A A, et al. Some cases of optimization face detection methodes on image (Using the Viola-Jones method as an example)[C]//Proceedings of 2018 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering. Moscow, Russia: IEEE, 2018: 1075-1078.[DOI:10.1109/EIConRus.2018.8317276]
  • [16] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]//Proceedings of the 25th International Conference on Neural Information Processing Systems. Lake Tahoe, Nevada: Curran Associates Inc., 2012: 1097-1105.
  • [17] Ye X Y, Chen X T, Chen H H, et al. Cascaded probability state-restricted Boltzmann machine for face detection[J]. Journal of Image and Graphics, 2016, 21(7): 875–885. [叶学义, 陈雪婷, 陈华华, 等. 级联型P-RBM神经网络的人脸检测[J]. 中国图象图形学报, 2016, 21(7): 875–885. ] [DOI:10.11834/jig.20160705]
  • [18] Tang Y T, Liang R, Liu C. Face detection system design based on the SOPC[J]. Electronic Design Engineering, 2014(21): 165–168. [汤欲涛, 梁锐, 刘畅. 基于SOPC的人脸检测系统的设计[J]. 电子设计工程, 2014(21): 165–168. ] [DOI:10.3969/j.issn.1674-6236.2014.21.055]
  • [19] Bilaniuk O, Fazl-Ersi E, Laganière R, et al. Fast LBP face detection on low-power SIMD architectures[C]//Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition Workshops. Columbus, OH: IEEE, 2014: 616-622.[DOI:10.1109/CVPRW.2014.96]
  • [20] Micheal A A, Geetha P. Multi-view face detection using Normalized Pixel Difference feature[C]//Proceedings of 2017 International Conference on Communication and Signal Processing. Chennai, India: IEEE, 2017: 988-992.[DOI:10.1109/ICCSP.2017.8286520]
  • [21] Zheng C H, Liu B, Zhou Y. Face detection algorithm based on scale-independent cascade convolution neural network[J]. Application Research of Computers, 2019, 36(3). [郑成浩, 刘兵, 周勇. 尺度无关的级联卷积神经网络人脸检测算法[J]. 计算机应用研究, 2019, 36(3). ]
  • [22] Lu H T, Zhang Q C. Applications of deep convolutional neural network in computer vision[J]. Journal of Data Acquisition and Processing, 2016, 31(1): 1–17. [卢宏涛, 张秦川. 深度卷积神经网络在计算机视觉中的应用研究综述[J]. 数据采集与处理, 2016, 31(1): 1–17. ] [DOI:10.16337/j.1004-9037.2016.01.001]