APP下载

基于改进Faster R-CNN的小尺度行人检测

2020-09-18叶学义钱丁炜魏阳洋

计算机工程 2020年9期
关键词:池化行人尺度

陈 泽,叶学义,钱丁炜,魏阳洋

(杭州电子科技大学 模式识别与信息安全实验室,杭州 310018)

0 概述

近年来,行人检测作为智能交通应用的核心技术,引起了人们的广泛关注[1]。行人检测的任务是对输入的图像或视频帧通过计算机视觉技术输出包含行人的矩形框,可将其看作目标检测中的一个实例。由于深度学习强大的特征表达能力,因此基于深度学习的检测算法已经在目标检测领域占据了主导地位[2-3]。根据预测流程可将基于深度学习的目标检测算法分为两大类:一类是以Faster R-CNN[4]为代表的基于区域建议的目标检测算法,如SPP-Net[5]、Fast R-CNN[6]、R-FCN[7]等,这类算法都有两个流程,首先通过区域建议算法生成可能包含目标的候选区域,然后通过卷积神经网络(Convolutional Neural Network,CNN)对候选区域进行分类和位置回归得到最终的检测框;另一类是以YOLOv3[8]为代表的基于回归[9]的目标检测算法,如SSD[10]、RetinaNet[11]等,这类算法没有区域建议环节,而是将预先设置在原图上的窗口直接映射到卷积神经网络生成的特征图上,通过深度特征回归出窗口的类别和位置偏移量,最终得到目标的检测框。区域建议环节以牺牲检测时间为代价,可提供质量更好的检测框,也能使检测的结果更加精准。由于行人检测任务对于精度要求较高,因此目前多数研究在行人检测中使用基于区域建议的目标检测算法。文献[12]发现Faster R-CNN目标检测网络中的区域建议网络(Region Proposal Network,RPN)作为独立的检测器表现良好,而分类回归网络却受小尺度行人影响较大,大幅降低了整体网络的检测性能,因此,该文使用提升树(Boosted Forests,BF)算法替换分类回归网络,有效提高了网络对于小尺度行人的检测能力。文献[13]针对行人尺度变化过大的问题提出SA-Fast RCNN方法,分别设计两个子网络用于检测大尺度和小尺度行人。类似地,文献[14]提出多尺度卷积神经网络MS-CNN,在网络中的多个中间层同时进行检测以匹配不同尺度的目标。文献[15]通过引入其他特征(如梯度、热力信息、光流等)来改善Faster R-CNN的检测性能,但同时带来了更多的计算消耗。文献[16]将语义分割信息引入检测网络的共享特征图用于协助行人检测。

现实场景下的行人检测任务存在背景复杂多变、目标遮挡和尺度过小等问题,而其中小尺度的行人对于检测性能影响最大且出现的情况更普遍[17],如在自动驾驶场景下存在很多距离汽车较远的小尺度行人,这些目标很难用激光雷达探测到,因此需要引入计算机视觉技术。本文以Faster R-CNN为基础,通过重新设置包围框参数、取消感兴趣区域池化过程中的量化操作和多层特征融合3种方式,在不增加大量检测时间的前提下提高网络对小尺度行人的检测能力。

1 Faster R-CNN目标检测网络

1.1 网络结构

Faster R-CNN是基于区域建议的目标检测网络,其检测流程如图1所示。首先利用卷积神经网络对输入图像进行多层卷积特征提取,然后在区域建议网络中根据提取到的卷积特征生成可能包含目标的候选区域,也称为感兴趣区域(Region of Interest,RoI),并将其映射到卷积神经网络生成的特征图上,分类回归子网Fast R-CNN通过感兴趣区域池化提取出长度固定的特征张量,最后再对提取的特征张量进行分类和位置回归得到最终的检测框。

图1 Faster R-CNN网络结构

1.2 区域建议网络

区域建议网络是Faster R-CNN中非常重要的一部分,其根据卷积神经网络(CNN)提取的特征,在原图上铺设不同比例的参考框(Anchor)来产生匹配各种尺度目标的候选框,这种方式大幅降低了区域建议环节带来的计算成本,例如,传统的选择性搜索算法[18]对一张图像进行区域建议的时间为2 s,而RPN只需要10 ms。

RPN进行区域建议的流程如图2所示,首先在从CNN提取到的卷积特征图上以每个点为中心生成3种尺度(128,256,512)、3种宽高比(1∶1,1∶2,2∶1)共9种不同大小的Anchor。值得注意的是,Anchor虽然以特征图上的点为中心,但它是铺设在原图尺度上的,如图2右边部分所示。这样的设计是为了更高效地应对多尺度目标的检测,相比于传统的图像金字塔[19]方案(把图像在多个尺度上进行缩放,并针对每个尺度进行特征提取),Anchor的设置更有效且计算量大幅减少。本文在卷积特征图上滑动一个3×3的窗口做卷积操作,每一个滑动窗口生成一个512维的特征向量(特征向量的维度由CNN决定,如使用VGG-16[20]构建特征提取网络,则最后一层卷积得到的特征图有512个通道),之后这个特征向量被分别输入到两个1×1的全连接层,分类层输出参考框作为前景的置信度,回归层输出参考框相较于标注框的坐标偏移量。本文通过设置损失函数来指导训练RPN网络,测试时RPN会输出约2 000个只包含前景并经过位置修正的候选区域,以供Faster R-CNN做进一步分类回归。

图2 RPN示意图

为训练RPN,对与标注框的重叠交并比(Intersection over Union,IoU)最大或者与标注框的IoU超过0.7的Anchor分配正标签,对IoU低于0.3的Anchor分配负标签。IoU的计算如式(1)所示:

(1)

基于上述计算公式,RPN的损失函数可以定义为:

(2)

(3)

1.3 RoI池化

通过RPN能够得到约2 000个可能包含目标的候选区域,文献[6]将这些候选区域裁剪到相同的尺寸后分别送入CNN提取特征进行分类,显然这样的方式计算效率非常低。Faster R-CNN通过RoI池化层重用现有的卷积特征,以提高计算效率。RoI池化工作流程如图3所示。首先将候选区域映射到CNN最后一层卷积得到的特征图上,由于候选区域形状、大小各异,其对应的特征图形状也各不相同,而全连接层要求输入维度相同的特征向量,因此Fast R-CNN将不同的特征池化成7×7×512固定维度的张量,然后通过全连接层分别输出各个类别的置信度和位置修正参数。值得注意的是,RPN输出的候选区域已经经过一次位置的修正,Faster R-CNN对于候选区域位置的第2次修正也使得最终生成的检测框的位置更加准确。

图3 RoI池化示意图

2 Faster R-CNN网络分析及改进方法

Faster R-CNN网络在通用的目标检测领域表现优异,但是对于行人检测任务却表现不佳,尤其在检测小尺度行人方面出现了大量的误检和漏检情况[15]。Faster R-CNN网络应用于行人检测尤其是小尺度行人检测时存在的不足具体如下:

1)在RPN网络中,Anchor的设置是针对通用目标的,为同时检测到行人和车辆,Anchor需要使用不同的宽高比,但是行人的包围框多数为瘦长型,且具有固定的宽高比0.41[1],所以,该超参数设置对于行人检测任务而言具有明显缺陷。

2)原始网络在RoI池化过程中存在两次量化(即将浮点数取整)操作。如图4所示,原网络首先将对应于原图上的RoI坐标(分别为RoI左上角和右下角2个点的4个坐标值)映射到特征图上,因为CNN的池化操作,特征图的尺寸相比于原图缩小了16倍,所以应通过x/16来计算对应坐标,但是这样计算是有小数的,因此,需要进行第一次取整操作,即x/16。为方便讨论,本文假设进行2×2的池化操作(原网络使用的是7×7),即对于每一个映射到特征图上的RoI都要分成2×2个区域,再进行一次除法操作又会出现小数,所以,需要进行第2次取整。经过两次取整之后就使得RoI池化层最终提取的特征和原图的RoI不再对齐,这在特征图上可能仅是1个或2个点的偏差,但是相对于原图则是16个点甚至更多像素的偏差,这对于一般尺度的目标不会有太大的影响,但是对于自身包含像素就较少的小尺度行人目标而言却是严重的误差。

图4 RoI池化中的两次量化

3)RPN和Faster R-CNN共享CNN提取的卷积特征图,这个特征图的质量直接影响了前期区域建议的质量和后续分类回归的准确度。在卷积神经网络中,越深层的特征图分辨率越低且具有较大的感受野和丰富的语义信息,相反越浅层的特征图分辨率越高且具有较小的感受野和丰富的细节信息。Faster R-CNN网络使用最后一层的卷积特征图,通过深层特征更为丰富且抽象的语义信息来提高网络对于物体形变及遮挡的鲁棒性,这对于大尺度目标是有效的,但是这些分辨率过小的深层特征图并不适用于小尺度行人,因为小尺度行人自身所包含的像素点较少,难以从中提取到丰富的语义信息,并且随着网络层数的增加,其细节特征不断与周围提取的特征组合,使得深层特征图中的每个点都包含很多小尺度目标周围的信息,降低了检测的准确性。

2.1 RPN改进

本文在RPN的基础上做出改进,根据行人较为固定的宽高比的特性,将Anchor设置为1种宽高比(0.41)和11种尺度,其具体数值可以根据数据集中行人的高度分布进行设置。图5展示了RPN和改进后提供的Anchor对比,图中方框部分为Anchor,可以看出,改进RPN后提供的Anchor与行人更为对齐,并且由于RPN中的损失函数是由分类损失和用于位置修正的回归损失组成的,更为对齐标注框的Anchor使得回归的损失函数较小,在训练过程中,网络将更侧重于学习分类,进而使得最终RPN提供的候选区域更为准确。

图5 改进前后的Anchor对比

2.2 双线性插值的对齐RoI池化

为避免RoI池化中两次量化操作所带来的像素偏差,本文采取一种基于双线性插值的对齐RoI池化[21]方式,如图6所示。首先将RoI映射到特征图上,计算过程中保留小数,不进行取整操作。为方便讨论,同样将RoI对应的特征图均分为2×2个区域,并在每个区域内设置4个采样点,可以看到,所有的采样点都不是整数坐标,没有对应具体值,因此,本文通过双线性插值分别对每个采样点进行估值。插值完成之后,对每个区域内进行最大池化操作,即对每个区域内的4个点取最大值,最终得到一个2×2大小的特征张量。在对齐RoI池化的整个过程中没有用到取整操作,从而能够很好地保存每个RoI的空间位置,进一步提高检测框精度。

图6 对齐RoI池化示意图

2.3 基于级联的特征融合

Faster R-CNN只使用最后一层的卷积特征图,其较低的分辨率不能满足小尺度行人检测的要求,而使用分辨率较高的第4层卷积特征图(VGG-16[20]中有共5个卷积模块)就可以提高对小尺度行人的检测能力,文献[2]即采用这种方法。但是该方法并没有充分利用到卷积神经网络强大的特征提取能力,并可能影响对于大尺度目标的检测。考虑到浅层特征分辨率较高且细节信息丰富、深层特征分辨率较低但语义信息丰富的特点,本文采用特征融合的策略实现特征复用,以丰富小尺度行人的特征。特征融合一般分为特征通道叠加和特征图求和两种方式,对于两路特征融合而言,通道叠加和与求和的计算公式分别由如式(4)和式(5)所示:

(4)

(5)

其中,Xi和Yi分别表示两路待融合的特征,Ki表示卷积核,*为卷积操作。特征求和要求两路特征通道数必须相同,而通道叠加并不需要,并且特征求和是通过特征图逐元素相加的方式进行的,如果两路特征不具有同类的特征信息,则很可能会给融合结果带来负面影响。通道叠加的方式可以理解为增加了图像的不同特征而每一层的特征信息没有变化。因此,本文采用通道叠加的方式进行多层的通道融合,以丰富小尺度行人的特征信息。具体的融合策略如图7所示。首先将conv3_3后的特征图和conv5_3后的特征图调整到conv4_3后特征图的尺寸,然后将两者与conv4_4进行通道叠加,再将通道叠加后的特征通过1×1卷积降维到原始的512通道数,最终得到融合后的特征。

图7 特征融合示意图

3 实验与结果分析

为验证本文改进方法的有效性,在计算机上进行仿真,对原Faster R-CNN目标检测网络和改进后的Faster R-CNN进行比较。使用PyTorch深度学习框架,在16 GB内存、4 GB显存NVIDIA GeForce GTX1050Ti GPU并搭有CUDA8.0和CUDNN5.1运算平台的笔记本电脑上进行训练。本文实验基于PASCAL VOC2007、PASCAL VOC2012和INRIA数据集。采用VOC2007数据集中包含行人的部分作为训练集(共6 383张),采用INRIA数据集中训练集里的正样本图片作为测试集(共614张),并将测试集中的正样本作为验证集(共576张)。采用PASCAL VOC2012数据集中小目标行人图片制作小尺度行人测试集(共154张),本文定义行人高度小于图片高度1/4为小尺度行人。

3.1 实验过程

3.1.1 特征融合

本文将conv3_3后的特征图通过最大池化下采样到conv4_4的尺寸,对于conv5_3后特征图的上采样则是使用双线性插值的方式而不是当前流行的反卷积[22],这是因为在实际训练中,反卷积由于参数过多导致难以训练,而双线性插值根据临近像素的位置进行估值无需参数,其实验效果相较于反卷积更好。在特征通道叠加前本文又分别通过Batch Normalization层[23]对调整过尺寸的不同层特征图进行归一化。最后加入1×1的卷积层将融合特征的维度降到512,同时卷积层后增加了Relu非线性激活函数,进一步增强网络的表达能力。

3.1.2 Soft-NMS算法

原网络在测试时会通过NMS算法去除同一目标上的重叠框,NMS算法将检测框按置信度排序,然后保留置信度最高的框,同时直接删除与该框IoU大于一定阈值(如0.5)的其他框,然而这种过滤方式并不适用于重叠情况较为普遍的行人检测。如图8所示,深灰色框的置信度最高,得到保留,而同样检测到行人的浅灰色框会因为与实线框的IoU高于设定阈值而被过滤掉,最终导致实线框中行人的漏检。文献[24]针对此问题做出改进,提出了Soft-NMS算法。该算法没有直接删除图中的虚线框,而是通过线性加权或是高斯加权的方式降低其置信度,与实线框重叠程度越高则置信度下降得越快,这种方式能够很大程度地保留因重叠而导致被误删的检测框。因此,本文在测试时使用Soft-NMS算法替换传统的NMS算法,使平均精确率均值(mean Average Precision,mAP)约提升2%。

图8 行人重叠示意图

3.2 结果分析

3.2.1 RPN实验

为验证改进RPN的有效性,本节使用不同的区域建议网络(分类回归子网络使用相同原Faster R-CNN)在INRIA数据集中进行比较,结果如表1所示。

表1 改进RPN前后实验结果对比Table 1 Comparison of experimental results before and after RPN improvement

从表1可以看出,在和原RPN提供相同数量的候选区域的情况下,改进RPN的mAP分别提升了6.22%和5.48%,这说明改进后所提供的候选区域质量更高。

3.2.2 特征融合实验

为验证特征融合策略的有效性,本节采用不同卷积层的特征图进行融合,使用INRIA数据集进行对比实验,结果如表2所示,其中,√表示叠加的卷积层。可以看出,3层叠加的情况能够获得较高的mAP。

表2 不同卷积层特征融合效果对比Table 2 Comparison of feature fusion effects of different convolutional layers

3.2.3 小尺度行人检测实验

本节使用PASCAL VOC2012数据集中提取出的小尺度行人测试集进行实验,结果如表3所示。

表3 PASCAL VOC2012数据集实验结果对比Table 3 Comparison of experimental results in PASCAL VOC2012 dataset

表3显示本文改进方法对于小尺度行人检测的mAP提高了23.78%,检测时间略有延长。这表明本文针对于检测小尺度行人的改进是有效的,虽然检测时间相比原始方法有少许增加,但换来的是对于小尺度行人检测能力的大幅提升。

图9(a)~图9(c)为改进方法前后在行人遮挡及尺度变化较大的场景和自动驾驶场景下的行人检测结果,它们更直观地展示了改进方法检测小尺度行人的性能,图中左图为Faster R-CNN检测结果,右图为改进方法检测结果。

图9 Faster R-CNN与改进方法的检测结果对比Fig.9 Comparison of detection results between Faster R-CNN and improved method

从图9(a)中可以看出,改进方法不仅检测出了Faster R-CNN漏检的远处小行人,同时也检测出了被部分遮挡的行人,这说明改进方法对于行人的遮挡具有一定的鲁棒性。图9(b)和图9(c)是由车载摄像头采集到的图像,可以看出改进网络均能检测出道路远端的小尺度行人,这也说明在自动驾驶场景下改进方法对于小尺度行人检测能力也有很大的提高。

4 结束语

为提高小尺度行人的检测能力,本文以Faster R-CNN为基础,针对行人的特点重新设置RPN中的候选框参数,采用基于双线性插值的对齐池化方式以避免在感兴趣区域池化中两次量化操作带来的位置偏差,同时针对小尺度行人在深层特征图中特征信息的不足,设计基于级联的多层特征融合策略,将具有丰富细节信息的浅层特征图和具有抽象语义信息的深层特征图进行融合,使用最终融合的特征进行行人检测。实验结果表明,本文方法能够有效提高改进Faster R-CNN网络对于小尺度行人的检测性能。但该方法的改进Faster R-CNN网络在面对密集人群互相遮挡的场景时依然存在漏检情况,因此,后续将在本文工作基础上对行人的自遮挡问题进行研究,进一步提高行人检测的准确度。

猜你喜欢

池化行人尺度
基于高斯函数的池化算法
卷积神经网络中的自适应加权池化
毒舌出没,行人避让
财产的五大尺度和五重应对
路不为寻找者而设
基于卷积神经网络和池化算法的表情识别研究
用于手写汉字识别的文本分割方法
我是行人
曝光闯红灯行人值得借鉴
宇宙的尺度