一种基于感受野增强的人脸检测方法

2023-01-11 01:48董春峰杨春金周万珍
河北工业科技 2022年6期
关键词:关键点人脸卷积

董春峰,杨春金,周万珍

(1.河北科技大学信息科学与工程学院,河北石家庄 050018;2.河北太行机械工业有限公司,河北石家庄 052160)

人脸检测是从图像中检测人脸是否存在,并定位图像中的人脸区域。经过几十年的发展与研究,人工智能的很多领域都需要应用人脸检测算法,如表情识别,人脸识别,智能安防等[1-4]。在现实环境中,人脸检测算法主要面临如下考验,不仅需要应对人脸遮挡、光照变化和人脸姿态多样性的问题,还应具备生产环境下实时处理的功能。因此,如何提升人脸检测算法的精度以及检测速度已成为当下研究的热点问题。

传统的人脸检测算法主要以特征提取为主,例如基于Haar-like特征的Viola-Jones级联检测器[5],基于方向梯度直方图(histogram of oriented gradient,HOG)特征的DPM(deformable parts model)算法[6],以及基于范例的VPE算法[7]。近年来,随着深度学习在图像方面的应用越来越广泛,基于卷积神经网络的人脸检测算法已经成为主要的研究方向,例如基于级联神经网络的CascadeCNN算法[8],基于滤波信道特征和卷积神经网络结合的CCF(convolutional channel features)算法[9],基于多任务级联卷积神经网络的MTCNN(multi-task convolutional neural network)算法[10]。目前,虽然结合深度神经网络VGGNet以及ResNet的一些人脸检测算法[11-13]能够实现比较高的精度,但是在检测速度上还是比较慢的。

上述算法中,MTCNN算法因可以兼顾检测速度以及精度而得到广泛应用[14-16]。但是,MTCNN算法在检测小人脸方面的鲁棒性还比较低。针对MTCNN算法存在的问题,本文提出一种基于感受野增强的多任务级联人脸检测算法,相比原始算法在FDDB数据集上有更高的检测精度,以及更快的检测速度。

1 相关理论研究

1.1 MTCNN算法

MTCNN算法是一个多任务级联卷积神经网络,能够完成人脸验证、人脸边界框回归、人脸关键点回归3个任务。MTCNN算法主要包含3个神经网络P-Net,R-Net和O-Net。P-Net网络是全卷积神经网络,可以输入任意大小的图片,主要用于人脸区域粗略过滤;R-Net网络用于人脸区域的精细过滤;O-Net网络用于人脸关键点选定和人脸区域的最终选定。

MTCNN算法的主要流程:首先将输入的图片生成图像金字塔,然后把图像金字塔中的图片送入P-Net网络,因其可以快速生成多个预测框,最后使用非极大抑制(non-maximum suppression,NMS)算法从预测框中选取候选框,将所有候选框的尺寸变为24×24后送入R-Net网络;从R-Net网络中得到人脸框,经NMS算法过滤后作为候选框,将候选框的尺寸变为48×48后送入O-Net网络;O-Net网络能够返回最终人脸框和人脸的关键点信息。

1.2 RFB-S模块

经过生物学家的研究表明,人脸视觉的感受野是一个与视网膜折射率相关的函数,RFB(receptive field block)模块正是借鉴该思想来模拟人眼的感受野,在结构上RFB借鉴了Inception网络多分支神经网络的思想,其次引入空洞卷积层。空洞卷积层的原理是在普通卷积核中填充0,可以实现在不增加计算量的情况下,扩大感受野。RFB模块中的多分支结构使用大小不同的卷积核来模拟不同大小的人眼感受野;后端空洞卷积用于模拟视网膜的折射率和人眼的感受野之间的联系。RFB模块如图1所示。感受野模块(receptive field blocks,RFB-S)是基于人类视觉感受野所设计的,可以增强模型对特征的可分辨性以及对小目标的鲁棒性[17]。RFB-S模块是在RFB模块的基础上将5×5卷积层替换为2个3×3卷积层,将3×3卷积层替换为1×3卷积层和3×1卷积层,目的是减少模型的参数量。RFB-S模块如图2所示。

图1 RFB模块Fig.1 RFB module

图2 RFB-S模块Fig.2 RFB-S module

2 改进的MTCNN算法

传统的MTCNN算法使用标准的卷积层,感受野会随着网络深度的增加而增加,有利于大尺度人脸的检测,但是不利于小尺寸人脸检测。为了解决这个问题,本文结合RFB-S模块和MTCNN网络模型提出一种改进的人脸检测算法,相比原始MTCNN算法网络模型主要有以下改进。

1)去除P-Net网络和R-Net网络的人脸关键点选取任务。通过理解MTCNN算法的流程,发现P-Net网络和R-Net网络的主要任务为人脸检测框的选定与初步过滤,删除人脸关键点回归任务,对网络精度影响很小。去除P-Net网络和R-Net网络的人脸关键点选取任务能够减少网络的训练时间。

2)为R-Net网络和O-Net网络增加RFB-S模块。RFB-S模块增强了神经网络的深层特征,保留了特征图的边缘部分,扩大了网络的感受野,从而能够获取更准确的候选框。由于初始算法中的P-Net网络比较简单,并且在实验过程中发现,如果在P-Net网络中增加感受野模块,虽然会略微提升P-Net网络的精度,但是运算时间也会相应的增加较多。所以,本文没有选择在P-Net网络中添加RFB-S模块。

3)为3个网络中添加BN层[18]。由于在RFB-S模块中存在BN层,为了保证一致性,在MTCNN网络中的卷积层与激活函数之间加入BN层。BN层能够使所有输入的数据归一化均值为0,方差为1 的正态分布的数据,能够加速网络收敛,提升训练速度。

4)使用GAP(全局平均池化)层代替R-Net网络和O-Net网络的全连接层。在MTCNN的各个网络中,全连接层的参数占比比较大,这就导致网络特征提取的压力很大一部分在全连接层,网络容易过拟合。

改进的MTCNN算法网络结构如图3所示。在P-Net网络中加入BN以及减少了关键点回归任务。在R-Net网络和O-Net网络中加入了RFB-S模块以及将全连接层替换为GAP层。

图3 改进MTCNN网络结构图Fig.3 Improved MTCNN network structure diagram

3 实 验

3.1 实验环境

本功能实验系统为Ubuntu20.04,CPU型号为i7-7900K,GPU型号为NVIDIA GeForce GTX2070 Super。编程语言为Python,深度学习框架为Pytorch。

3.2 数据集及数据预处理

使用WIDER FACE[19]数据集以及LFPW[20]数据集作为训练集,FDDB数据集作为测试集。WIDER FACE数据集的训练集包含12 880张图片,包含超过150 000个人脸标注框,主要用于训练3个网络的人脸验证以及人脸区域选取任务。LFPW数据集包括10 000张人脸图片,用于训练O-Net网络的人脸关键点回归任务。FDDB数据集拥有2 845张图像,包含超过5 000个人脸框,用于验证本文算法的有效性。

使用4种类型的人脸注释,与真实人脸框的IoU(候选框与真实人脸框交集和并集的比值)大于0.65为正样本;IoU在0.40~0.65为部分人脸样本;IoU小于0.30为负样本;包含左眼、右眼、鼻子、左嘴角和右嘴角特征的人脸关键点样本。

P-Net网络的训练样本尺寸为12×12。R-Net网络的训练样本尺寸为24×24,需要使用训练好的P-Net网络来获取。O-Net网络的训练样本尺寸为48×48,需要使用训练好的P-Net网络和R-Net网络获取。由于LFPW数据集以及WIDER FACE数据集中均包含非常小的低质量的人脸图像,所以在制作3个网络的训练样本时,舍弃了数据集中尺寸小于20×20的人脸图像,能够达到去除数据集中噪声的效果,增强模型的鲁棒性。

3.3 损失函数

本文算法在训练时主要有3个任务,分别为人脸验证、人脸边界框回归,以及人脸关键点回归。

在人脸验证中,采用交叉熵损失函数进行计算,损失函数如式(1)所示:

(1)

人脸边界框回归主要返回1个四维向量(x,y,ω,h),其中x,y表示人脸边框左上顶点的坐标,ω表示人脸边界框的宽度,h表示人脸边界框的高度。

对于每一个样本使用欧几里德损失作为人脸边界框任务的损失函数,如式(2)所示。

(2)

人脸关键点回归的目标为返回左眼、右眼、鼻子、左嘴角、右嘴角5个特征点,其中每一个特征点包含2个坐标。

对于每一个样本使用欧几里德损失函数,如式(3)所示。

(3)

在MTCNN算法中,每一个网络都包含多个训练任务,不同网络针对不同的训练任务的侧重点不同。所以需要将所有任务的损失函数组合起来,总体损失函数如式(4)所示。

(4)

在本文算法中,P-Net和R-Net没有人脸关键点检测任务,所以每一个任务的ωj设置为ωdet=1,ωbox=0.5,ωlandmark=0,O-Net网络中各个任务的权重分别为ωdet=1,ωbox=0.5,ωlandmark=1。

3.4 实验结果分析

改进MTCNN算法相比MTCNN算法,各个网络模型大小对比结果如表1所示。因为P-Net网络增加了BN层,所以模型大小略微增加。R-Net网络和O-Net网络的全连接层替换为GAP层,所以R-Net网络的模型大小减少了10%,O-Net网络的模型大小减少了20%。

表1 改进MTCNN与MTCNN模型大小比较Tab.1 Comparison of the size of improved MTCNN and MTCNN models

为了验证添加各个模块对算法性能的影响。针对改进MTCNN算法中的BN层以及RFB-S层+GPA进行了消融实验,消融实验在FDDB数据集上进行,实验结果如表2所示。从表中可以看出,BN层能够使得网络的检测时间大幅度降低,检测精度略微提高;RFB-S层能够提高网络检测的精度,但是同时检测时间也大幅度增加。本文方法通过两者相结合,相比原始MTCNN算法平均检测时间减少了6.97 ms,检测精度提高了2.3%。

表2 改进MTCNN算法在FDDB数据集上的消融实验Tab.2 Ablation experiment of improved MTCNN algorithm on FDDB dataset

为了评估改进MTCNN算法的性能,将本文方法与Cascadecnn[8],MTCNN[10],DP2MFD[21],FD-cnn[22],LDCF+[23]等人脸检测方法在FDDB数据集上做性能评估,选用ROC曲线作为评估指标。在人脸检测领域,ROC曲线的横轴为假阳性,即检测到的人脸错误框的数目,纵轴为真阳性率(true positive rate,TPR),即真实人脸被预测为正的比例。在FDDB数据集上,各个算法的ROC曲线如图4所示。当误检人脸框为2 000时,原始MTCNN的TPR为91.94%,本文算法的TPR为94.23%,提高了2.3%。图中各个ROC曲线长短不一是因为每个算法的置信度阈值不一样,阈值越高误检人脸框数目就越少。从图4中可以看出,与其他人脸检测算法相比,本文算法有着先进的检测性能。

图4 FDDB数据集上的ROC曲线Fig.4 ROC curves on FDDB database

本文算法在进行人脸检测任务时,设定每个网络的置信度阈值:P-Net=0.7,R-Net=0.8,O-Net=0.8,最小人脸尺寸为20×20。图5为本文算法在WIDER FACE数据集上的检测结果,实验结果表明该算法在现实环境中也具有很好的鲁棒性。

图5 WIDER FACE数据集上检测结果Fig.5 Detection results on the WIDER FACE dataset

4 结 语

为了改善MTCNN算法在小人脸检测方面鲁棒性比较低的问题,提出了一种基于感受野增强的MTCNN人脸检测算法,为MTCNN的R-Net网络和O-Net网络增加RBF-S感受野模块来提升对小人脸检测的鲁棒性,引入批量标准化加速网络收敛,使用GAP层替换网络的全连接层,减少了模型的参数量。本文算法在减少模型大小的基础上,提升了检测速度和检测精度,在FDDB数据集上的准确率优于大多数人脸检测方法,能够满足现实中人脸检测算法的需求,可以应用于嵌入式设备中,完成人脸检测任务,为表情识别、智能安防、人脸识别等提供技术支持。

本文算法虽然能很好地完成人脸检测任务,并且提升了对小人脸检测的鲁棒性,但是在人脸出现严重遮挡时,其检测效果不佳。今后将致力于提升算法对遮挡人脸的检测效果,以便能够完成更复杂的人脸检测任务。

猜你喜欢
关键点人脸卷积
论建筑工程管理关键点
肉兔育肥抓好七个关键点
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
一起学画人脸
建筑设计中的防火技术关键点
卷积神经网络的分析与设计
从滤波器理解卷积
三国漫——人脸解锁
基于傅里叶域卷积表示的目标跟踪算法