余 胜,谢 莉
(韶关学院 信息工程学院,广东 韶关 512005)
关键字:人脸检测;卷积神经网络;多尺度特征学习
人脸是每个人的门户窗口,日常交流中快速准确的完成人脸检测对人而言是非常容易的一件事,人能够在人群拥挤、相互遮挡等各种复杂情况下精确的确定目标人脸所在位置.在人工智能高速发展的时代,人脸检测更是当前许多人工智能项目的基础,如刷脸支付、人脸识别、疲劳驾驶、美颜技术等,在现实应用中有着非常重要的意义[1].
近年来,随着深度学习技术的成熟,特别是卷积神经网络在图像增强、目标分割、目标检测与识别等领域都有突破性的发展[2-3],这也给人脸检测带来了巨大的成功[4-6].相比于基于人工设计特征的人脸检测方法,以卷积神经网络为原型构建的人脸检测模型模拟人类大脑,以原始的图像作为输入,自动学习获取人脸相关特征,完成人脸的检测.当前在限定条件下的人脸检测可以达到商用的程度,但在非限定条件下,涉及到人脸头像采集的角度、光照、背景等复杂环境和因素的影响,导致非限定条件下的人脸检测更为复杂、难度更大.根据人工设计特征的不同,可以将人脸检测方法分为基于知识的方法、基于模板匹配的方法、基于统计学习理论的方法和基于表观的方法四大类[7].
基于知识的方法主要根据每个人具有不同的五官、肤色等特征,同时人脸的五官特征之间又有一定的规则特点去约束人脸检测的过程[8].基于模板匹配的方法主要是根据事先设计的固定模板或可变形模板,首先在目标图像中进行滑窗扫描,若模板与对应滑动窗口区域的相关系数大于设定的阈值,则认为该区域为候选人脸目标[9-10];然后用非极大值抑制等方法删除候选目标区域间重复率过大的候选目标;最后获得人脸目标区域,实现人脸检测.基于统计学习理论的方法[11].统计学习理论的基本思想是根据大量给定的正向、反向的例子样本集,然后根据输入的正负样本,利用机器学习方法训练分类模型,进而实现人脸检测.此类方法的优点是在大量的样本中学习和测试,然后学习到人脸自身固有的内在特征,不需依赖于先验知识,但基于统计学习理论的方法受样本集数目的影响比较大.基于表观的检测方法是根据一系列具有代表性的人脸图像库中学习到人脸的公共表观特征,实现人脸图像的检测.
随着深度学习技术的发展以及成功的实际应用,特别是卷积神经网络在人脸检测中取得了突破性成果[12-13].人脸检测属于目标检测领域中的一个特殊应用方面,因此目标检测中的R-CNN,Faster R-CNN和YOLO 等方法在人脸检测的应用中取得了较好的检测效果.李祥兵等[1]提出以ResNet-50 为深度学习网络框架学习人脸特征,通过融合不同卷积层的特征实现多尺度融合.Le 等提出多尺度Faster-RCNN 网络实现不同尺度的特征有效融合[14].张智等提出基于YOLOv3 的小尺寸人脸检测方法,提升了模型对多尺度人脸的检测性能[15].贺怀清等在YOLO 的基础上,设计了一种由密集到稀疏的多尺度并行人脸检测模型,提升了检测的定位准确性和召回率[16].在实际场景中往往存在人脸过小、相互遮挡等情况,虽然通过深度网络提取的图像特征包含了丰富的高层语义特征,但仍然难以准确表征人脸.同时,上述基于目标检测方法存在有网络模型层次过深,难以训练和耗时的不足,且容易忽略小尺寸的人脸.
笔者设计了一种改进的全卷积神经网络模型用于非限定场景下人脸检测.该方法能够适应较复杂的自然场景,在确保检测准确率的同时进一步提升了检测速度.
笔者提出了基于全卷积神经网络的人脸检测模型,通过设计多尺度特征融合神经网络,应用软非极大值抑制、多尺度特征学习结构,实现人脸的检测特别是小尺度人脸目标的定位和检测.
VGG-Net 最初是2014 年由牛津大学视觉几何团体设计并与用于2014 年ImageNet 图像分类挑战赛,并获得了第2 名的成绩,笔者在VGG-16 模型基础上设计了一种全卷积神经网络的人脸检测模型[18].
VGG-16 网络结构主要由13 个卷积层和3 个全连接层组成,模型待优化参数是数亿级别,其中全连接层的参数约占整个网络参数的89%.在VGG-16 网络中,卷积层后面接3 个全连接层和Softmax 层实现特征维度的降维和图像的分类预测.但在VGG-16 网络中的全连接层将特征映射到低维特征空间的过程中,会把目标对象的空间位置特征信息全部丢失,导致后续无法实现特征目标的定位.针对全连接层丢失目标空间位置信息和参数巨大的问题,提出用卷积层代替全连接层的网络结构.首先将神经网络的后3 个全连接层修改为3 个卷积层,卷积核大小为33,卷积核个数为512 个(见图1);然后分别将第4、5 和6等3 个卷积层组的最后一个卷积层用ROI-Pooling 进行处理,使得池化后的特征映射在维度上相同;接着增加一个卷积核大小为11,卷积核个数为1 024 的卷积层用于降低特征维度;最后在卷积层后分别接一个Softmax 层和Bound box 回归层.
图1 基于全卷积神经网络的人脸检测框图
一般的人脸检测算法中,是将最后卷积层特征映射输入到反卷积神经网络,再进行上采样过程,最后得到跟输入图像尺寸一样的热图.根据热图上每个像素点的概率值判断输入图像中相应感受野区域为人脸目标的概率值.如果所得概率值大于设定的阈值则将该区域作为人脸候选目标区域.但在深度神经网络中,深层网络层的感受野较大,对大尺度目标敏感,而对一些小尺度目标则不敏感.为了提升对小尺度人脸目标的检测性能,提出将多个低层和高层卷积特征映射图通过ROI-Pooling 进行融合,获得更多的人脸细粒度特征信息.具体是选择VGG-16 网络中分别把第4,5 和6 等3 个卷积组中最后一个卷积层进行ROI-Pooling 池化,然后将3 个ROI-Pooling 后的特征映射图进行串接作为反卷积层的输入,最后得到细粒度人脸目标的候选区域.
非极大值抑制(Soft Non-Maximum Suppression,SNMS)通过抑制非极大值的元素,获取局部极大值[17].在目标检测中,非极大值抑制方法用于对候选目标框进行筛选,保留置信度最高的目标候选框,去除重合度较高的目标候选框.在人脸检测中,可以去除同一张脸附近产生的多个候选框,保留置信度最高的人脸候选框.但对重叠人脸的情况,非极大值抑制容易误删除部分人脸,容易出现漏检的情况.非极大值抑制方法中得分重置函数表示为:
其中,为两个检测框的重叠率,为设置的重叠率阈值,M为得分最高的检测框,一般设为0.3. 但将NMS 算法用于人脸检测时,当不同人脸重叠过大时,部分人脸检测框的得分会被直接置零,会导致人脸漏检.例如一张图像中两个人脸检测框的检测得分是0.95 和0.91,非极大值抑制中的重叠率设置为0.3. 当两个人脸检测框的重叠率为0.35 时,根据非的极大值抑制方法,第二个人脸检测框会被删除,这会导致得分为0.91 的人脸漏检.
针对非极大值抑制存在的问题,使用改进的非极大值抑制算法SNMS[18]去除重叠检测框.对比NMS算法,SNMS 算法将存在重叠的检测框在重叠率大于阈值时不是直接置零,而是设置一个衰减函数. SNMS得分衰减函数见式(2).通过衰减函数的设置,当一个检测框与M的重叠部分较大时,对应的得分会比较低;当仅有小部分重叠时,检测框的得分影响较小,不会被丢弃.
实验在Ubuntu 18.04 系统实现,并选用Tensorflow 和Keras 深度学习平台,GPU 为NVIDIA GTX Titan,内存34 G,对VGG-16 网络模型用在ImageNet 上训练好的模型进行参数的初始化.
人脸数据集选用公共Wider Face 数据集,Wider Face 共包含有32 203 张图像,其中包含有393 703 个标注好的人脸.这些标注的人脸在形状、尺度、光照情况、遮挡等因素都不一样,对人脸目标检测有很大的挑战性.实验选用FDDB 人脸作为测试数据集,其中包括2 845 张图片,共有5 171 个人脸.网络训练时,初始学习率设置为0.000 1,衰减率设置为0.005,每经过20 000 次学习率衰减一次.为增加训练样本数目,采用水平翻转作为数据增强策略.测试时,首先采用软非极大值抑制方法,滤除重叠候选目标区域,然后再将测试图像中候选目标区域的得分超过0.8 时将该目标区域视为人脸区域.
实验的方法与其他经典的人脸检测方法进行对比,实验结果见表1.从实验结果可知,全卷积神经网络模型的检测准确率要明显高于参考文献中的检测准确率.另外,由于将全连接层替换成为卷积层,大大减少了待优化参数的数目,从单张检测时间可以看出,全卷积神经网络结构的时间复杂度要低于其它检测算法.同时,通过对人脸检测结果的观察,对测试集中一些小尺度人脸检测的效果也要明显优于其它对比算法.这说明设计的多尺度特征学习网络结构能够学习到细粒度特征,更有利于小尺度人脸目标的检测.
表1 人脸检测算法性能对比
图2 为本算法设计网络对不同图像中人脸检测的效果.在人脸密集度不高的场所,该算法都能准确的完成人脸检测.在图2(b)中对有部分遮挡的人脸也实现了准确的检测;在图2(c)中人脸密集且小尺度人脸的情况下,该算法同样有很好的检测效果,具有对小尺度人脸检测的鲁棒性.
图2 不同场景下全卷积神经网络人脸检测效果图
针对非限定场景中人脸检测问题,笔者设计了一种全卷积神经网络的人脸检测结构,并设计了多尺度特征学习网络结构,有利于细粒度特征的学习,在小尺度人脸检测方面有较大的优势.通过软非极大值抑制方法一定程度上解决了人脸重叠时漏检的问题,提升了检测模型的查全率.实验结果显示,全卷积神经网络结构对非限定场景下的人脸检测有很好的检测效果,在FDDB 测试集中的检测准确率达到96.6%,平均单张图像的检测时间0.83 s.