基于Mask R-CNN的人脸检测与分割方法

2020-06-18 03:42林凯瀚赵慧民吕巨建刘晓勇陈荣军
计算机工程 2020年6期
关键词:人脸卷积像素

林凯瀚,赵慧民,吕巨建,詹 瑾,刘晓勇,陈荣军

(广东技术师范大学 计算机科学学院,广州 510665)

0 概述

人脸检测是计算机视觉和信息安全领域的一个重要研究方向,也是目标检测技术的关键分支,具有重要的研究意义及应用价值。人脸检测一般包括人脸的识别和定位两个过程,通过利用图像处理以及机器学习等技术从图像或视频中检测定位出人脸,从而获取人脸信息。近年来,人脸检测在模式识别领域得到了广泛的研究与发展,现有的人脸检测研究主要包括基于传统机器学习的方法和基于深度学习的方法。

在传统机器学习方法中,主要是通过手工特征结合分类器实现检测过程。Viola-Jones[1]算法是最早实时有效人脸检测的算法,标志着人脸检测开始进入实用阶段。但是,该方法存在特征维度较大、对复杂的背景情况识别率较低等问题。为解决以上问题,研究人员提出了更为复杂的手工设计特征,如HOG[2]、SIFT[3]、SURF[4]、LBP[5]等。其中一个重要的进展是文献[6]提出的DPM (Deformable Part Model)[6],DPM在HOG和SVM的基础上进行性能扩展,充分利用两者的优势,在人脸识别、行人检测等任务上取得重要突破。然而传统的机器学习方法仍然存在两个主要缺陷,即基于滑动窗口的区域选择策略针对性较弱,设计较为复杂,手工设计特征对复杂情景检测稳定性较差。

自从AlexNet[7]在ImageNet中使用深度卷积神经网络,并且在图像分类的准确率上有了大幅提高以来,人们尝试将深度学习应用于人脸检测领域,取得了很好的应用效果。文献[8]利用深度卷积神经网络进行特征提取,对没有被Adaboost过滤过的人脸和非人脸的图像提取出更有价值的特征,取得了较好的实现效果。文献[9]提出一种基于深度卷积神经网络提取的归一化特征的形变部件模型。近年来,随着基于候选区域(region-based)的R-CNN系列目标检测算法的快速发展,R-CNN系列算法在人脸检测领域的应用研究逐渐兴起。文献[10]在WIDER数据集训练了Faster R-CNN模型,在FDDB和IJB-A数据集实现了人脸检测。文献[11]针对小尺度人脸检测精度不高的问题,在Faster R-CNN的基础上提出了DSFD算法。文献[12]通过特征拼接、困难样本挖掘、多尺度训练等策略改进了Faster R-CNN模型,提高了模型性能,取得较好的检测效果。基于深度学习的人脸检测方法主要采用卷积神经网络进行特征提取,在准确性和多目标检测方面具有良好的实现效果,并能够以较少的时间花费换取大幅的准确率提升,因此,基于深度学习的人脸检测算法已成为人脸检测的主流研究方向。

上述的研究工作都取得较好的人脸检测效果,但是缺乏对人脸图像分割的关注。如需在人脸图像上获取更精准的人脸信息,则现有的方法存在提取的人脸目标特征维度大、空间量化较为粗糙、具有背景噪声等问题,导致一些实用的图像处理技术(如多姿态人脸矫正[13]、人脸图像的超分辨率重构[14]、遮挡人脸姿态识别[15]等)在安防监控所抓拍的视频图像上难以应用。因此,需要一种适用于图像的人脸检测及分割方法。在检测分割方面,Mask R-CNN是文献[16]基于Faster R-CNN提出的一种改进算法,它增加了对实例分割的关注。除了分类和边界框回归之外,Mask R-CNN还为每个RoI添加并行分支以进行实例分割,并对上述3种损失进行联合训练,在目标检测数据集中取得了良好的效果。

在以上研究工作的基础上,本文提出了一种基于Mask R-CNN的人脸检测及分割方法,该方法在现有人脸检测仅实现人脸定位的基础上增加了分割分支,能够在人脸检测的同时实现像素级的人脸信息分割。同时,为了训练相应模型,本文从FDDB[17]和ChokePoint[18]数据集中随机选择了5 115张图像进行标注,构建了一个具有分割标注的新数据集。

1 相关工作

基于候选区域的CNN检测方法是目标检测领域的主流研究方向,例如R-CNN[20]、Fast R-CNN[21]、Faster R-CNN[22]以及Mask R-CNN[16]等,这些方法不仅检测精度高,且具有较快的检测速度。

R-CNN算法由Ross Girshick等人于2014年提出,该算法在VOC 2007数据集中取得了66%(mAP)的成绩,掀起了基于候选区域(region-based)CNN的研究热潮。首先由于R-CNN特征提取环节存在重复计算的问题,导致检测速度偏慢,因此Fast R-CNN基于R-CNN,在卷积层对待检测图像整图进行一次特征提取;其次引入RoI Pooling层进行特征尺度的统一化,生成固定长度的特征向量;然后用softmax(归一化指数函数)代替了SVM,并将分类和边框回归进行了合并,在提升准确率的同时,提高了检测速度。Faster R-CNN是在Fast R-CNN基础上提出的改进算法,该算法引入了区域建议网络(Region Proposal Network,RPN)模型,通过在特征图上划窗,使用不同尺寸、不同长宽比的9种锚点框映射到原图上,得到候选区域。该算法将候选框提取合并到深度网络中,大幅提升了检测的速度与精度。

为了能够在目标检测的同时,实现像素级的实例分割,满足计算机视觉任务中更为精准的检测定位需求,文献[16]提出了Mask R-CNN算法。该算法在Faster R-CNN的基础上,添加实例分割分支,通过RoIAlign获得更精准的像素信息,利用全卷积网络生成相应的二值掩码,实现了目标检测及实例分割技术的结合应用,在目标检测领域的COCO数据集和自动驾驶领域的Cityscapes数据集上的实验结果表明,该算法均取得了较好的效果。

2 人脸检测及分割方法

Mask R-CNN算法主要由两大分支组成,即检测分支和分割分支。检测分支实现了对图像中目标的定位及分类,分割分支则通过全卷积网络(Fully Convolutional Network,FCN)[23]生成二值掩码实现实例分割,达到像素级的区分效果。

本文模型的整体框架如图1所示,首先将待检测图像传入该模型,通过卷积神经网络对整张图像进行特征的提取,得到对应的特征图,利用区域建议网络(RPN)在特征图上迅速生成候选区域,再通过候选区域匹配(RoIAlign),得到固定尺寸的特征图输出,然后在分类分支做出目标框的定位及分类,在分割分支通过全卷积网络对人脸图像绘出相应的二值掩码实现实例分割,最后输出系统预测的图像。

图1 本文算法模型框架

2.1 RPN网络

区域建议网络(RPN)通过倍数和长宽比例不同的窗口或锚点(Anchors)在特征图上进行滑窗从而迅速生成候选区域。RPN算法示意图如图2所示,图中背景图像表示经卷积神经网络提取特征后的特征图,虚线表示窗口为基准窗口,假设基准窗口大小为16个像素点,其包含3个分别表示长宽比例为1∶1、1∶2、2∶1的窗口,则点划线及实线分别表示8像素和32像素点大小的窗口,同理,其各有3个长宽比例为1∶1、1∶2、2∶1的窗口。RPN利用上述3种倍数和3种比例的共9种尺度窗口的方法对特征图进行滑窗,当IoU≥0.5时,认为其为正例,并对其进行回归。

图2 RPN算法示意图

交并比 (Intersection over Union,IoU)计算公式如下:

(1)

其中,A、B分别为RPN网络生成的候选框及训练集中正确的目标框,SA∩B为A、B的相重叠处面积,SA∪B为A、B并集面积。

2.2 RoIAlign层

RoIAlign层实现对产生的候选区域(Region of Interest,RoI)进行池化,从而将不同尺度的特征图通过RoIAlign层池化为固定的尺度特征图的效果,RoIAlign算法流程如图3所示。在Faster R-CNN模型中候选区域池化(Region of Interest Pooling,RoI Pooling)存在两次取整操作,从而产生了量化误差,导致了图像的像素点定位精准度较低。

图3 RoIAlign算法流程

在面对小目标检测及实例分割的任务时,RoI Pooling达不到精准的特征点定位要求。针对上述问题,RoIAlign在生成的RoI特征图上取消量化过程,采用双线性插值算法,保留浮点型坐标,避免了量化误差,可以使原图像像素与特征图像素相匹配。双线性插值算法公式如下:

1)对x方向进行线性插值:

(2)

(3)

2)对y方向进行线性插值:

(4)

如图4所示,f(x,y)为待求解点P的像素值,f(Q11)、f(Q12)、f(Q21)、f(Q22)分别为已知四点Q11=(x1,y1)、Q12=(x1,y2)、Q21=(x2,y1)及Q22=(x2,y2)的像素值,f(R1)、f(R2)为x方向插值得到的像素值。

图4 双线性插值算法流程

2.3 全卷积网络

对于传统的CNN网络架构,为了得到固定维度的特征向量,其卷积层后大多连接若干全连接层,最后输出为针对输入的一个数值描述,因而普遍适用于图像的识别分类、目标的检测定位等任务。全卷积网络(FCN)与传统的CNN网络相似,网络同样包含了卷积层和池化层,不同之处在于全卷积网络对末端一个卷积层的特征图使用了反卷积进行上采样,使输出图像尺寸恢复到原图像尺寸,然后通过Softmax分类器进行逐像素预测,从而预测出每个像素点的所属类别。

2.4 损失函数定义

本文的Mask R-CNN模型完成了3个任务,即人脸框的检测定位、人脸与背景的分类、人脸与背景的分割。因此,损失函数的定义包括了定位损失、分类损失及分割损失三部分。因此,损失函数定义如下:

(5)

分类损失公式如下:

(6)

(7)

定位损失公式如下:

(8)

(9)

分割损失即二值掩码的损失,如果候选框检测出为某一类别,则使用该类别的交叉熵作为误差值进行计算,其他类别损失值不计入,从而避免了类间的竞争,其公式为:

(10)

3 实验与结果分析

3.1 实验环境及数据集构建

实验环境及数据集构建主要有以下3个方面:

1)实验环境配置

本文实验所使用的环境配置如下:操作系统为Ubuntu 16.04;CPU为Xeon E5-2690 v4 @ 2.20 GHz;GPU为NVIDIA GeForce GTX 1080Ti;深度学习框架为Tensorflow 1.9.0;编程语言为Python 3.6。

2)数据集

由于公开的人脸数据集中大多数只有目标框的定位信息,不具备分割标注信息,因此本文从FDDB[17]原始图像数据集和ChokePoint[18]数据集中随机选择了5 115张图片并对其进行分割标注作为新数据集。FDDB(Face Detection Data Set and Benchmark)数据集是马萨诸塞大学公开的人脸检测数据集,该数据集由原始图像数据集和相应的部分标签数据组成,标签数据包含了2 845张图像(其中包含了5 171张人脸)。ChokePoint数据集是由澳大利亚信息与通信技术研究中心(NICTA)公开的人脸数据集,该数据集通过在不同场景出入口处安装不同角度监控摄像头,从而采集到的人脸数据集,该数据集包括48个视频序列,共计约64 204张人脸图像。

3)参数设置

本文采用ResNet-101网络作为特征提取器,首先使用COCO预训练模型[24]进行参数的泛化,使模型具有一定特征提取能力,从而减少训练时间。然后利用已标注的数据集进行模型训练,参考文献[16]并通过实验调试,设置迭代次数为50,迭代步数为3 000,学习率为0.001,权值衰减率为0.000 1。

3.2 结果分析

3.2.1 实验效果与性能分析

在训练出的模型上利用现有的公开数据集进行测试实验,测试图像检测结果如图5所示。可以看出,相较于其他人脸检测算法,本文算法在完成人脸目标框定位的同时,通过彩色的二值掩码将人脸信息与背景分割开来,实现了对人脸图像检测定位和分割的效果。

为有效检测模型的性能,对比实验采用本文所构建数据集作为训练集,再进行模型性能的评测。实验在FDDB数据集上对比了本文算法与Faster R-CNN[10]、Pico[25]、Viola-Jones[26]、koestinger[27]等算法,性能曲线如图6所示。

图6 FDDB数据集检测性能曲线

从图6可以看出,本文算法误检个数明显减少,且准确率高于其他算法。

3.2.2 不同数据集的有效性分析

为了验证模型在不同数据集的有效性,本文在AFW[28]数据集上进行了模型性能测试实验,实验对比了文献[29]中部分算法,实验结果如图7所示。虽然受限于训练数据集数据规模相对较小,以及标注规则存在差异,但本文模型仍取得了94.08%AP值(平均精度)的成绩,优于大部分对比算法,对比表现最优的SquaresChnFtrs-5AP值仅低了1.16,证明了本文算法的有效性。

图7 AFW数据集检测性能曲线

此外,为进一步验证不同数据集的有效性,针对本文模型及在FDDB数据集性能表现较好的Faster R-CNN模型,本文分别在ChokePoin数据集、Caltech 10k Web Faces数据集[30]、WIDER[31]数据集进行了测试,实验分别从以上3个数据集随机抽取100张图像进行测试,通过计算其mAP(均值平均精度)值进行比较,结果如表1所示,其中加黑字体为最优成绩。

表1 不同数据集性能对比

通过不同数据集性能对比实验结果可以看出,本文方法比性能表现较好Faster R-CNN在Caltech 10k Web Faces数据集、ChokePoint数据集、WIDER数据集分别提高了7.82%、8.96%、7.11%,验证了本方法在不同数据集上的有效性。

3.2.3 检测时间分析

时间测试实验同样在ChokePoint数据集、Caltech 10k Web Faces数据集、WIDER数据集进行验证,从以上数据集分别随机抽取100张图像进行测试,比较其平均耗时,结果如表2所示,其中加黑字体为最少用时。

表2 不同数据集检测时间对比

与Faster R-CNN算法对比,由于本文算法的RoIAlign层计算复杂度较高以及模型添加了分割分支,因此在Caltech 10k Web Faces数据集、ChokePoint数据集、WIDER数据集实验中,检测时间分别多了0.027 s、0.046 s和0.012 s。但本文算法能够以较少的时间花费换取更高的准确率,并能实现在人脸准确定位的同时将人脸信息从背景中分割出来,达到满意的检测与分割效果。

4 结束语

本文提出一种基于Mask R-CNN的人脸检测及分割方法,构建一个具有分割标注信息的人脸数据集,并在建立的数据集上训练模型。该模型利用RoIAlign算法使得人脸图像特征点定位精准度达到像素级的效果,结合ResNet-101网络与RPN网络,提高了检测精度,并通过全卷积网络生成相应的人脸二值掩码,实现了人脸信息与背景图像的分割。在公开数据集上的对比实验结果表明,本文方法能够在不显著增加计算和模型复杂度的情况下,取得较好的检测效果。下一步将对数据集进行扩充,并在现有研究的基础上对模型进行优化,进一步提高模型检测性能。

猜你喜欢
人脸卷积像素
像素前线之“幻影”2000
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
一起学画人脸
卷积神经网络的分析与设计
“像素”仙人掌
从滤波器理解卷积
三国漫——人脸解锁
基于傅里叶域卷积表示的目标跟踪算法
ÉVOLUTIONDIGAE Style de vie tactile