改进YOLO的密集小尺度人脸检测方法

2020-04-24 03:07邓珍荣白善今马富欣黄文明
计算机工程与设计 2020年3期
关键词:栅格人脸尺度

邓珍荣,白善今,马富欣,黄文明

(1.桂林电子科技大学 计算机与信息安全学院,广西 桂林 541004; 2.桂林电子科技大学 广西高校云计算与复杂系统重点实验室,广西 桂林 541004)

0 引 言

传统人脸检测方法发展较快,并取得一定的效果[1]。例如Viola等[2]提出的基于Adaboost的方法及其改进之后的HeadHunters算法和SURF-Adaboost[3,4]算法。但是传统方法普遍采用人工手段按照既定的规则提取图像以及人脸的特征,这种方法提取的特征具有较多的主观属性,导致其表征的人脸特征具有一定的偏差,此外处于分类器发展的初级阶段,其分类能力有限,导致对人脸目标的检测精度较低。

近年来,基于卷积神经网络搭建的计算机视觉模型在目标检测领域取得巨大进展,卷积神经网络采用多种滤波器滑窗的形式自动提取图像和人脸特征,深层特征图组合的结构具有较强的鲁棒性,可以提高目标检测的精度。例如利用Selective search[5]生成候选框的R-CNN[6]。优化特征提取的空间金字塔池化网络[7]。单级训练的Fast R-CNN[8]。基于全卷积神经网络[9]改进的Faster R-CNN[10]。

同时研究人员发现,根据不同的人脸检测场景,对通用的目标检测方法做相应的改进,可以取得比传统方法更好的结果[11]。Jiang H等[12]将通用目标检测模型Faster R-CNN 应用在人脸检测领域,并使用人脸数据集重新训练Faster R-CNN模型使其满足检测需求。Wan S等[13]改进了通用目标检测模型Faster R-CNN,同时在小型人脸数据集FDDB[14]上对改进的模型进行迁移学习训练,提高了人脸检测的精度。Li等[15]对Faster R-CNN模型进行了进一步改进,引入联级训练检测结构提高检测精度。

但是以上工作大部分采用先产生目标候选框,再对候选框进行分类的两阶段检测方法,在提高了检测精度的同时牺牲了检测速度。Redmon等[16]提出YOLO(you only look once)模型,将目标框定位的问题转化为回归问题进行处理,实现对图像端到端的检测,极大提高了检测速度,但是由于算法不会提前生产检测框,所以检测精度相比于两阶段模型较低。

基于以上讨论,为有效提高人脸检测精度,同时保证检测速度,提出改进YOLO的密集小尺度人脸检测方法。首先使用目标框与真实框的面积交并比作为距离损失函数对传统的k-means聚类算法进行改进,同时结合小尺度人脸目标占比小且长宽比例接近1的特点,对候选框进行聚类筛选合适的尺度数量,其次对多级特征图进行细粒度特征融合,提高对小尺度人脸特征的表示能力,最后调整预测层的宽度和深度,形成适用于检测密集小尺度人脸的网络结构。在WIDER FACE人脸检测数据库上进行实验的结果显示,该方法对密集小尺度人脸的检测精度有明显提高。

1 YOLO算法

YOLO是继R-CNN、Fast R-CNN和Faster R-CNN之后一种新的端到端目标检测模型,其使用一个完整的卷积神经网络结构提取图像特征,在网络的输出层对目标的类别和位置信息进行统一的回归预测,完成从原始图像的输入到目标类别和位置的输出。其检测流程如图1所示。

图1 YOLO检测目标流程

YOLO算法将输入图像划分为7×7的栅格,当图像中某一个目标的中心点落在其中一个栅格中时,该栅格就会初始化两个边框,负责预测当前目标的类别和大小,再运行神经网络预测含有物体的边框,通过非极大抑制筛选合适的边框,得到输入图像中目标的位置和类别。YOLO的网络借鉴了GoogLeNet分类网络结构,在训练过程中随机初始化网络参数。在人脸检测任务中,网络输出层为7×7×11的预测张量,其中7×7为划分图像的栅格,11为两个预测框的坐标信息和置信度以及每个栅格所属类别的概率。

YOLO将整张图像作为目标检测网络模型的输入,直接在输出层预测图像中前景目标的类别,并且回归预测框的位置,这种one-stage的检测方式提高了检测速度,但是完全端到端的训练模式也导致了检测精度较低的问题,特别是在检测秘籍小目标人脸时尤为突出。首先,在two-stage的检测模型中,通常会在深层特征图上采用滑动窗口的形式,映射到训练图像中的感受野区域,使用固定长宽比例的先验框,递归的与标注框进行匹配,通过设置好的阈值提前筛选出有助于检测的先验框。但是YOLO网络并没有采用以上方式,而是使用输出层的全连接结构预测目标的位置和置信度,导致模型在训练的过程中,需要从随机初始化的状态开始,增加了模型往正确方向收敛的时间,与全卷积结构相比,全连接网络的参数量和计算量会更多,模型的复杂度也相应增加。其次,由于不同层次的特征图的感受野不同,且不同层特征图之间包含前景目标的上下文语义特征,而YOLO模型采用的自下而上的单级网络结构提取特征,会使得部分小目标的上下文语义特征缺失,导致小目标物体漏检的情况。最后,YOLO在划分图像为7×7的网格之后,每一个网格只设置了两个预测框,整个图像一共只有98个检测框可以预测目标,在检测密集小目标人脸时出现预测框漂移的现象,导致多个目标只被一个预测框检测到,且预测的位置与真实位置有较大的偏差。

针对以上问题,本文结合密集小尺度人脸目标的特点,分别从选择合适的先验框、融合多级特征图和构造适用于检测密集小尺度人脸目标的预测层3个方面,对YOLO算法进行改进,以提高对密集小尺度人脸的检测精度,同时也具有YOLO算法检测速度快的优点。

2 改进YOLO的人脸检测模型

2.1 对k-means算法进行改进之后聚类标准参考框

YOLO模型在检测图像中的人脸目标时,首先会随机初始化模型中的参数,然后使用人脸数据集训练模型,更新参数,最后在网络的输出层进行人脸目标的位置预测。在对参数初始化的过程中,由于每次随机种子都不固定,导致网络中的参数具有较大的偏差和方差,增加了模型训练的难度和收敛时间,浪费很多的计算资源,此外对预测的精度也有较大的影响。如果在参数初始化的阶段,通过一些数据预处理等先验的手段,得到更具有代表性参数分布来替代随机初始化的参数,尽量减少初始化参数与最优化参数之间的偏差和方差,这样不仅可以加速模型的收敛,而且有助于模型在训练过程中更快的微调预测框的位置信息,也更容易学习到更加准确的预测框的坐标,最终得到准确的边界框,提高检测网络的精度。

结合密集小尺度人脸的宽高比接近1且像素区域集中在10×10的特点,平衡了IOU均值和不同聚类框个数的复杂度之后,最终选择了3种大小的框作为网络预测框的初始化,分别为(10,13)、(43,47)、(168,180),其中正方形的框更符合人脸形状的特征,在提升小尺度人脸目标的同时对大尺度人脸目标的预测框也有一定的修正作用。在WIDER FACE数据集上聚类结果如图2所示。

图2 在WIDER FACE数据集上的聚类结果

2.2 在不同层级特征图中进行细粒度特征融合

原始YOLO算法在7×7的特征图上进行预测,这样的分辨率有利于检测大尺度的目标,但是对于密集小尺度人脸的检测效果很差。考虑到人脸特征在深度学习网络中呈结构性,浅层的特征映射在原图中的感受野比深层的特征较小,对图像中的特征表示具有较高的抽象性,而深层的特征映射在原图中的感受野比较大,对图像中的特征表示相对具体。结合不同细粒度特征,可以增加人脸特征的鲁棒性。为了提高对密集小尺度人脸的检测精度,融合多级特征图,让不同粒度的特征表达都参与检测,得到的特征图具有较高的分辨率,由原来的7×7的分辨率提升为14×14的分辨率,融合后的特征图具有更丰富的小尺度人脸特征,有助于检测精度的提高。

在原始YOLO算法的特征提取网络中,采用16个卷积层加4个池化层的单级网络,在416×416×3分辨率的输入图像上,得到14×14×1024维度的特征图。本文在其基础上,对特征提取网络进行了改进。利用单级网络提取特征,截取出28×28×512分辨率的特征图,使用4个步长为2的空间滤波器对其进行特征重组,每个空间滤波器均为2×2×512的维度,且滤波器中分别有1个位置的值是1,其它3个位置的值均为0,特征图经过空间滤波器之后,得到4个14×14×512维度的子特征图,然后将这4个自特征图按照先后顺序链接在一起,得到14×14×2048的重组特征图。单级网络最后提取到的特征图维度是14×14×1024,将重组特征图与其融合,得到最终的特征输出维度是14×14×3072。由于在图像中,相邻像素之间的空间维度信息的连接是很紧密的,在对其进行特征提取的过程中,不同感受野映射在原图中的区域会交叉重叠,提取到的特征图中会有较多的空间冗余性。通过在空间上降维,可以减少感受野中图像相邻像素的冗余性,在通道上升维可以丰富感受野区域里的图像信息在卷积网络中映射的特征信息,尽量以最小的维度,来获得图像中最本质的特征。

2.3 改进预测层的结构

在YOLO算法将输入图像划分为7×7的栅格,每个栅格有两个预测框,整个YOLO检测网络共有98个预测框。在人脸检测任务中,网络的分类部分只需要区分目标是否人脸即可,是二分类问题,所以在预测网络最后的输出张量维度是7×7×11,其中7×7对应将原始图像划分为 7×7 的栅格。每一个栅格即一个11维的向量,其中前10维对应着两个预测框的信息,分别是预测框在图像中的中心点坐标、预测框的长宽和当前预测框中有目标的置信度,最后一维向量对应着当前栅格中的目标是人脸目标还是背景目标。当待检测的图像中存在较密集的小尺度人脸目标时,YOLO算法对这种图像的检测精度较低,甚至检测不到,主要的原因是两个预测框共用最后一维向量,而最后一维向量主要负责预测栅格中的目标是否是人脸目标的,当最后一维向量得到的预测结果是栅格中的目标不是人脸目标时,这个栅格对应的两个预测框将全部失效,导致预测框的数量进一步减少,检测精度降低。原始YOLO的网络结构如图3所示。

图3 原始YOLO网络结构

为了克服这一问题,本文改进了YOLO算法的预测层结构,将输出层的分辨率从7×7提升为14×14,同时改进每一个栅格中预测边框的结构。使用改进的k-means算法对标准参考框进行聚类,得到适用于小尺度人脸检测的预测框尺度,使用这些尺度去初始化预测框的参数,此外对YOLO算法中每个栅格只负责预测一个类别的网络结构,改进为每个栅格分别预测3个类别。在改进后的预测层中,输出的预测张量维度是14×14×18,其中14×14对应将原始图像划分为14×14的栅格。每一个栅格由18维向量组成,分别对应3个预测框。与YOLO中两个预测框共用一个预测维度不同,改进之后的预测层,每一个预测框将分别独立预测当年栅格中的目标是否人脸目标,所以每一个栅格由6为向量组成,其中的前4维向量分别对应预测框在原图中的中心点坐标和预测框的长宽信息,第5维向量代表检测框中有无目标的置信度,第6维向量代表栅格中的目标是否人脸目标的置信度。同时每个栅格中的3个预测框,均负责预测不同尺度的人脸目标,彼此独立预测。原始YOLO使用全连接网络将最后的特征图压缩为4096维的一维向量,然后在连接到预测层网络中,这种连接方式会导致特征图中的空间信息和上下文语义信息的丢失,降低密集小尺度人脸的检测精度。在改进的预测层网络中,使用1×1的卷积核对特征图进行压缩,整合不同感受野的信息,增强对小尺度人脸的特征表示,在最后的预测层也是通过全卷积网络进行预测,最大程度的保留了图像中有用的空间信息,有助于小尺度人脸的检测。

通过对预测层的结构改进之后,整个模型的预测框达到588个,而YOLO算法只有98个预测框,在预测框的数量上,增加了6倍之多,进一步提高了检测的精度,极大的改善了原始YOLO对小目标的检测效果不理想的问题。改进YOLO之后的网络结构如图4所示。

图4 改进的YOLO网络结构

3 实验结果分析

以原始YOLO网络特征提取框架为基础,使用改进的预测层结构,引入聚类框初始化参数,对不同层级的特征图进行细粒度的特征融合,训练人脸检测模型。同时为了加快网络的收敛速度避免过拟合,本文采取多分布策略,初始化学习率为0.0005,并设置权值衰减系数为0.0005,设置冲量常数为0.9,使用图形加速单元训练模型。

3.1 实验环境

本文实验环境使用Ubuntu 14.04操作系统,中央处理器为Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz,运行内存16 G,显卡使用NVIDIA Tesla K80,16G显存。

3.2 数据集

使用卷积神经网络作为特征提取网络的模型需要从大量的样本中学习人脸的特征,因此最好选用具有代表性的数据,这样模型可以学习到更好的特征表示。本文使用的人脸数据集是由香港中文大学YangShuo等[18]收集发布的WIDER FACE人脸检测数据集。该数据集是由61个事件类别组成的,共包含32 203张图像数据,其中人脸目标共393 793个,这些人脸目标在尺度、姿势、装扮和光照等方面均有比较大的变化,这种规模的数据集可以使模型更有效的学习到人脸目标的特征属性。本文选取其中每一个事件的40作为训练数据集,50%作为测试数据集,10%作为交叉验证数据集。

3.3 实验结果分析

本文使用改进的模型在WIDER FACE人脸检测数据集上迭代训练一万步,并且在测试数据集上对YOLO算法和本文提出的算法进行对比分析,对每一个改进点进行验证。

3.3.1 本文提出的模型的收敛性验证

在训练卷积神经网络模型时,模型是否能够达到稳定收敛状态也是模型性能的参考标准之一。本文在训练模型的过程中,分别在每一步迭代中收集模型的训练日志,其中包括模型的损失值、模型的准确率、模型的召回率、平均IOU值等信息,通过对训练日志的分析,可以掌握模型在训练中的状态。图5是将日志中的模型损失可视化的展示,可以很直观的看出模型在前2000步的迭代训练中,损失值在不断的降低,在2000步左右到达稳定状态,并且在之后的训练步数中,模型的损失值持续降低,整体趋于稳定,也反映了本文提出的模型可以较快的达到收敛状态。

图5 模型训练损失变化曲线

3.3.2 测试改进策略对模型精度的影响

本文采用变量控制的原则,对提出的3个改进点进行逐一测试,并在测试数据中对比其对检测精度的影响。测试结果如图6所示,YOLO算法在测试数据集中的精度是76%,当只在YOLO算法中引入聚类结果中不同尺度的检测框时,检测精度提高了近10个百分点;当只改进YOLO算法预测层的网络结构时,检测精度提高了近5个百分点;当只对YOLO算法进行细粒度特征融合时,检测精度提高了近3个百分点。由测试结果可以看出,本文提出的改进点对YOLO算法的检测精度均有不同程度的提升,也验证了每一个改进点都是有效的。其中聚类框的引入对模型精度的提升最为显著。最后本文将以上3个改进点同时应用在YOLO算法中训练,得到的模型在测试集上的检测精度为90.5%,相比于YOLO算法提高了近15个百分点。

图6 不同改进策略对模型精度的影响

3.3.3 不同检测模型对比

目标检测模型的性能不止有模型的精度,还有模型的速度,即平均检测一张图像花费的时间。检测速度快、精度高的目标检测模型一直是研究人员所追求的目标。本文在同一测试环境下,对比了其它检测模型与本文方法在WIDER FACE测试数据集上的性能表现,由表1可见,本文方法与YOLO检测模型相比,查准率提高了14.9%,达到了90.5%;查全率提高了22.7%,达到了86.1%;由于使用了较密集的栅格和较多的预测框,检测速度比YOLO慢了90毫秒,但是依然比两阶段的检测模型速度快,平均检测一张图像只需0.34 s。

表1 性能对比

3.3.4 与YOLO检测结果对比

文本在相同检测环境下,分别对YOLO和本文方法的检测结果进行对比分析,检测结果如图7所示,图7左边是YOLO模型检测密集小尺度人脸的效果图,右边是本文方法检测密集小尺度的效果图。可以看出本文提出的方法对密集的小目标人脸的检测结果好于YOLO。

图7 左:YOLO检测结果右:本文方法检测结果

4 结束语

为解决密集小尺度人脸检测精度低的问题,本文提出一种基于改进YOLO算法的密集小尺度人脸检测方法。首先使用目标框与真实框的面积交并比作为距离损失函数对传统的k-means聚类算法进行改进,同时结合小尺度人脸目标占比小且长宽比例接近1的特点,对候选框进行聚类筛选合适的尺度数量,然后在多级特征图中融合细粒度特征,对感受野较小的浅层特征进行空间降维通道升维之后,与感受野较大的深层特征进行融合,得到的特征图中包含小尺度人脸的抽象信息和细节信息,提高特征图对小尺度人脸的特征表达能力;最后结合聚类选择的候选框,增加预测层的深度和宽度,形成适用于检测密集小尺度人脸的网络结构。在WIDER FACE人脸检测数据库上进行实验的结果表明,该方法在对密集小尺度人脸的检测精度有明显提高。

猜你喜欢
栅格人脸尺度
基于邻域栅格筛选的点云边缘点提取方法*
有特点的人脸
一起学画人脸
财产的五大尺度和五重应对
基于A*算法在蜂巢栅格地图中的路径规划研究
三国漫——人脸解锁
宇宙的尺度
不同剖面形状的栅格壁对栅格翼气动特性的影响
9
长得象人脸的十种动物