基于改进Faster R-CNN的行人检测算法

2020-04-10 11:25姚万业李金平
科学技术与工程 2020年4期
关键词:锚点行人卷积

姚万业, 李金平

(华北电力大学控制与计算机工程学院, 保定 071003)

近些年,基于图像和视频序列的行人检测技术引起越来越多关注,它是车辆辅助驾驶、智能视频监控和人体行为分析等应用中的第一步,近年来也应用在航拍图像、受害者营救等新兴领域中[1]。但光线强度、复杂环境、穿着、遮挡、姿态和视角等因素,使得行人检测成为计算机视觉的研究难点与热点。

传统目标检测一般使用人工提取特征,然后接上一个分类器来实现目标检测。通常这类方法是利用一种或几种基本的图像特征,如颜色、纹理和梯度等。Dalal等[2]在2005年利用方向速度直方图(HOG)描述符结合线性SVM分类器实现行人检测,发现HOG描述符明显优于现有的人体检测特征集。Zhu等[3]为提高Dalal等[2]的方法快速性和准确性,利用AdaBoost算法提供最佳块的尺寸并构建级联分类器,系统每秒可以处理5~30帧的图像,接近实时检测。尽管这些图像特征不断提升但是传统方法采用人工提取特征所包含图像信息可能并不充分,且要求研究人员根据不同的检测任务,选择合适方法提取候选目标区域的视觉特征,泛化能力差,增加研究人工作量。

随着机器学习不断发展和完善,出现通过机器学习方法, 从大量样本中学习特征[1]。Viola等[4]利用AdaBoost算法训练检测器,充分利用动作和外观信息去识别行人。在此之前人们利用动作信息或者外观信息,而Viola等[4]将动作和外观信息结合在一个检测器中。Wu等[5]提取新型剪影导向的edgelet特征,基于这类特征通过增强学习来训练部分检测器,将部分检测器的响应组合以形成联合可能性模型。贵向泉等[6]使用改进卷积网络模型的克罗内克积对航拍图像采样,在保证原图像清晰度的情况下,长和宽被放大4倍。

随着神经网络和深度学习技术快速发展,传统人工提取的过程也可以通过神经网络学习实现。而且其拥有高级的语义表达能力、特征表达能力强、鲁棒性更好[7]。如基于卷积神经网络的三代目标检测算法R-CNN、Fast R-CNN[8]及Faster R-CNN[9],其中Faster R-CNN[9]通过一个全卷积层神经网络不断学习生成候选区域,其实现将整个物体检测过程纳入一个神经网络中,实现端对端学习。因其卓越的检测性能,被广泛应用到各类任务中。如李伟山等[7]基于Faster RCNN 算法,加入一种“金字塔 RPN”结构和特征融合技术,进行煤矿井下目标行人检测。王斌等[10]运用融合多模型和帧间信息进行行人检测,通过融合Faste R-CNN和Faster R-CNN模型获取精准检测窗口。Le等[11]通过RPN层结合低层次卷积特征图构成多尺度Faster R-CNN,检测手、手机和方向盘等的较小物体。 Roh等[12]认为Faster R-CNN对较小物体不敏感,是因为Faster R-CNN中块性能不足,通过精炼块来提升对较小物体识别。虽然Faster R-CNN[9]性能好、准确性高,但也存在处理速度过慢、对较小物体不太敏感等问题。

此外,非极大值抑制(non-maximum suppression,NMS)是应用最为广泛的一类后处理方法,在目标检测中需要通过NMS消除候选区域中那些有高重叠区域。目标检测中主要使用非极大值抑制方法有启发式融合算法、均值漂移非极大值抑制和贪心非极大值抑制。其中启发式窗口融合算法对人脸等检测效果很好,对于行人检测并不适合;均值漂移非极大值抑制不仅计算复杂,还需要调整很多与检测器的步长等相关联参数,目前较少使用;基于贪心策略的非极大值抑制算法被行人检测普遍使用,因为它简单高效[13]。NMS算法在目标检测中发挥重要作用,自然Faster RCNN框架也运用NMS算法。但非最大值抑制算法存在着的最大问题就是它将相邻检测框的分数均强制归0。在这种情况下,如果一个真实物体在重叠区域出现,则将导致对该物体的检测失败并降低算法的平均检测率。

针对NMS,Bodla等[14]提出一种新型Soft-NMS算法,改进传统贪心NMS算法的问题。该算法基于重叠部分的大小,为相邻检测框设置一个分数衰减函数而非彻底将其分数置为0。同时,Soft-NMS算法不需要额外的训练且易于实现,因此,它很容易被集成到当前的物体检测中。

目前,两阶段算法对锚点均匀采样:以固定像素间隔扫描一个或多个CNN多尺度特征图,以生成具有不同尺度和比率的锚点,称为均匀采样。其最终锚点将均匀地分布在特征图平面中,锚点的位置仅受特征图的形状和固定像素间隔的约束。固定像素间隔(仅是采样步幅)可以帮助控制锚点的密度。因为原始图像与CNN特征图之间的尺寸比是给定CNN模型的固定值,所以在特征图上采样的锚可以通过将它们乘以尺寸比来转换为原始图像。这意味着CNN特征图上的均匀采样等同于在原始图像均匀采样。因此,基本假设是图像上的每个像素具有定位目标对象中心的相等概率。

Zhang等[15]认为在目标检测中大量候选框只与少量真实框进行匹配,大部分两阶段算法选择均匀采样,这导致检测效率慢。在这过程中大量候选框中不包含有效对象,训练和评估网络需要判断候选框对象是否有效。这样导致较高的额外计算负担和对象采样的不平衡。例如Faster R-CNN在采样过程中产生大量候选框,最终只选择评分最高前300个候选框,这无疑增加网络计算负担。所以他们提出一种启发式的采样方法寻找候选框,称之为“Hot Anchors”。

本文对Faster R-CNN框进行修改,使其适应于2分类行人检测。并用Soft-NMS算法去替代传统贪心NMS算法,消除NMS算法对检测结果的影响,提高检测精度。此外,针对Faster R-CNN算法处理速度过慢,根据” Hot Anchors”采样方法改进Faster R-CNN算法。最后,使用改进Faster R-CNN目标检测框架实现复杂场景的行人检测。

1 Faster R-CNN算法

Faster R-CNN算法由区域建议网络(region proposal network,RPN)和Fast R-CNN算法组成。Faster R-CNN算法检测性能优Fast R-CNN算法的点在于引入RPN网络,该网络与检测网络共享全图像的卷积特征,使近乎零成本的建议区域成为可能。整个系统是一个单个的,统一的目标检测网络。

1.1 区域建议网络

区域建议网络是一个全卷积网络能够预测物体的边框,同时也对每个位置的物体打分。区域建议网络接收任意尺寸图像输入,通过端到端训练可以产生高质量建议区域,然后通Fast R-CNN进行检测。整个过程采用ZF模型或者VGG-16模型,前者包括5个共享卷积层,而后者包括13个共享卷积层。

为产生建议区域,使用滑动窗口在最后一个卷积特征图上滑动。每个滑动窗口被映射到一个低维度特征。特征被传递给两个并列的全连接层,分别是框回归层(reg)和框分类层(cls)。每个滑动窗口位置,同时预测多个建议区域,每个位置的最大滑窗建议数量为k。这样reg层输出k个框的4k个坐标,cls层输出k个框的2k个概率打分,预测对象还是非对象。k个建议被参数化成k个参考框,参考框称为锚点。为应对不同尺寸物体,采用3种不同类型的滑动窗口,长宽比是1∶1、1∶2、2∶1,并用1282、2562、5122这3个尺度缩放滑动滑动窗口,一共采用9种类型的滑动窗口,如图1所示。

为训练RPN网络,设计针对每个锚点的二分类标签(判断是否是一个物体)。给两类锚点标记位正例:①和标注框最大重合的锚点; ②和任何标注框IoU重叠度超过0.7。对于一个真实标注可能会产生多个正例锚点。对于与标注框重叠度低于0.3的都标注为负例。

根据这些定义,对目标函数Fast R-CNN[9]中的多任务损失进行最小化。图像的损失函数定义为

(1)

预测和回归两个损失函数用Ncls和Nreg进行标准化,并由一个平衡参数加权。cls项通过小批量数据的大小进行归一化,reg项根据锚点位置的数量进行归一化。默认情况下,λ设置为10,因此cls和reg项的权重大致相等。

1.2 RPN和Fast R-CNN训练

采用四步训练算法,通过交替优化学习共享特征。第一步,先训练RPN网络。RPN网络使用ImageNet的预训练模型进行初始化,针对区域提议任务进行端到端微调。第二步,使用由第一步RPN生成建议区域,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet预训练模型进行初始化,此时两个网络不共享卷积层。第三步,使用检测器网络来初始化RPN训练,但是修正共享卷积层,并且只对RPN特有层进行微调。第四步,保持共享卷积层的固定,对Fast R-CNN的独有层进行微调。因此,两个网络共享相同的卷积层并形成统一网络。

2 Soft-NMS算法

传统NMS处理方法可以通过以下分数重置函数来表达:

(2)

式(2)中:bi是第i检测框;si第i检测框的得分;Νt是NMS阈值;M是检测分数最高检测框。

在式(2)中,NMS采用硬阈值来判断相邻检测框是否保留。存在最大问题就是将相邻检测框的分数均强制归0。在这种情况下,如果一个真实物体在重叠区域出现,则将导致对该物体的检测失败并降低算法平均检测率。

针对这种问题,引进 Soft-NMS算法。它基于重叠部分大小为相邻检测框设置一个衰减函数而非彻底将其分数置为0。简单来讲,如果一个检测框与最大分数检测框有大部分重叠,它会有很低分数;如果检测框与最大分数检测框只有小部分重叠,那么它的原有检测分数不会受太大影响。通过衰减与检测框M有重叠相邻检测框的检测分数是对NMS算法有效改进。越是与M高度重叠的检测框,越有可能出现假阳性结果,它们的分数衰减应该更严重。因此,对NMS原有函数做改进如下:

(3)

当相邻检测框与M重叠度超过重叠阈值Nt后,检测框的检测分数呈线性衰减。在这种情况下,与M相邻的检测框衰减程度很大,而远离M的检测框并不受影响。

但是,上述分数重置函数并不是一个连续函数,在重叠程度超过重叠阈值Nt时,该分数重置函数产生突变,可能导致检测结果序列产生大的变动,因此更希望找到一个连续分数重置函数。它对没有重叠的检测框原有检测分数不产生衰减,同时对高度重叠检测框产生大的衰减。对soft-NMS中的分数重置函数进行改进:

(4)

3 Hot Anchors

物体检测中,候选框(也称为锚)可以通过三个参数来表征:位置(location)、比例(scale)和比率(ratio)。位置表示对象真实框的中心坐标,比例和比率分别表示对象的大小和形状。

实际计算中,通常将比例和比率设置为固定的离散值。它们通常被认为是算法的超参数,可以手动设置。例如,Faster R-CNN中比例为[128,256,512],比率为[1/2,1,2]。事实上,位置、比例和比率是相互独立的,它们构成锚的三种不同优化维度,Hot Anchors只选择位置。

良好的锚点通常落在真实框的附近,需要进一步定义距离阈值判断锚是否合适。这相当于为两个盒子定义IoU阈值,以判断它们是否可以相互匹配。具体地说,如果真是框和任何锚之间的中心距离等于或小于距离阈值d0,定义有效命中;如果真实框和所有锚之间的中心距离大于距离阈值d0,则未命中。这可以用式(5)表示。真实框表示为gt_box,gt_box_hit表示真实框是否被任何锚点命中。d代表真实框与其最近的锚点之间的中心距离,d0是距离阈值为1表示真实框已被至少一个锚点命中,0表示真实框未被任何锚点命中。中心距离是真实框中心和锚中心之间的欧式距离。

(5)

统一锚点实际上仅利用图像形状信息,忽略图像特征信息。当图像通过卷积神经网络生成多尺度特征图,特征图像素值也是锚采样的有价值信息。基于这一观察,Hot Anchors是一种启发式采样方法,用于特征图上生成锚点。

由于CNN生成特征图是多尺度的,每个阶段具有不同尺寸,因此需要一些预处理。考虑锚点采样应该低计算成本,预处理方法不能复杂。假设特征图大小为[ batch, channel, height, width ],直接将特征图沿其颜色相加生成新的特征图,该特征图被称为热特征图。热意味着这个特征图可以反映高激活区域的感知空间,因此它可以用于示例热点。热特征图与原始特征图具有相同高度和宽度,其通道尺寸为1,因此大小为[ batch,1, height, width ]。batch是每次计算CNN输入图像的数量,channel是颜色通道。

因此,需要给出一个阈值来判断应该选择热特征映射上的哪个像素作为锚点位置。因为每个图像热特征图是不同的,所以使用热特征图的平均像素值作为阈值,对每个图像进行自适应判断。如果像素值大于阈值,则将其视为正热锚。这可能导致不同图像上不同数量的热锚,因此为确保不同图像上Hot Anchors数量相同并且便于程序处理,均值像素值乘以系数b作为最终阈值b可以初始化为1。如果获取锚点数量小于预设值,将b乘以0.8并尝试重新采样直到锚点数量足够。相比之下,如果热锚数量超过预定值,会随机消除冗余。这可以表示为式(6)和式(7),其中热特征图为HFM,原始特征图的通道为C,热特征图平均像素值为mpixel,(x,y)表示HFM上像素坐标。

(6)

HotAchors=Anchor[(x,y),scale,ratio]

if HFM(x,y)≥bmpixel

(7)

如果只想在其中一个多尺度CNN特征图上采样锚点,可以选择其中的中间阶段。 一方面,顶部阶段太抽象并且通常具有非常小的尺寸,因此忽略小对象; 另一方面,底层阶段不够抽象,可能会产生许多背景细节。通常在图像细节信息和对象语义信息之间妥协的中间阶段可能是一个不错的选择。

4 实验与结果分析

从github上获取基于tensorflow的Faster RCNN框架代码,该代码支持VGG16,Resnet V1和Mobilenet V1架构。主要利用VGG16进行电力部件识别。整个过程:第一步,把电力部件数据集输入VGG16进行特征提取;第二步,将最后一层卷积特征图输入RPN层,每张图生成300个建议窗口;第三步,把建议窗口映射到最后一层卷积特征图上;第四步,通过RoI pooling层使每个RoI生成固定尺寸的特征图;最后,利用Softmax Loss和Smooth L1 Loss对分类概率和边框回归联合训练。

根据“Hot Anchors”观点修改RPN层,用“Hot Anchors”采样在热特征图去替代滑动窗口在最后卷积特征图采样,将采样到的锚点执行RPN层后续操作,如图2所示。

图2 结合Hot Anchors的RPN结构图Fig.2 Combine the RPN structure diagram of Hot Anchors

在VOC 2007公测数据集中的行人数据集上训练和测试模型,以验证改进后的Faster R-CNN性能。VOC 2007 数据集共包括 9 963 张图片,20个类别,共标注24 640 个目标,尺寸基本为 375×500 自然场景下的图片。选择其中行人数据集来训练模型,将原来21分类任务变成2分类任务。

网络实现部分选择主流的深度学习框架tensorflow作为实验平台。选择预训练好的VGG16模型初始化特征提取网络卷积层权重。整个网络训练过程使用 SGD 反向传播优化整个网络模型。前60 000次迭代学习率为 0.001,后20 000次迭代学习率为 0.000 1,共进行 8 万次的迭代,momentum 为0.9,weight_decay 为 0.000 5。相同条件下,同时训练Faster R-CNN和改进Faster R-CNN。此外,在相同数据集下训练第一代YOLO模型[16]和第二代YOLO模型[17]。YOLO模型是将物体检测任务当做一个回归问题来处理,使用一个神经网络直接在1张图像上预测出边界框坐标、框中包含物体的置信度和物体概率。

在检测效率和准确率方面,比较四种方法,如表1所示。改进Faster R-CNN相对于Faster R-CNN,检测效率增加2帧/s,准确率增加1.9;效率提升33%,检测准确率提升2.6%。虽然,改进Faster R-CNN相对于第二代YOLO模型处理速度显得慢,但是其检测准确率超过7.8%。比较四种模型,改进Faster R-CNN,在检测效率和准确率方面,有其他方法不具备的优势。

表1 行人检测模型对比Table 1 Pedestrian inspection model comparison

运用训练好的改进Faster R-CNN模型,去检测不同场景、不同姿态和不同穿着行人,如图3所示。图3中改进后算法对于不同场景、姿态以及穿着的行人,无论其所在图像中位置远近和在图中所占区域的大小都能够得到很好的识别效果。

图3 行人检测效果Fig.3 Pedestrian test renderings

图4 两种算法检测效果对比Fig.4 Test renderings comparison of two algorithms

此外,对比改进前后两种算法的检测效果,如图4所示。图4中,蓝色框是Faster R-CNN检测结果、红色框是改进后Faster R-CNN检测结果。原Faster R-CNN算法对于过大遮挡和重叠的行人难以检测,改进后Faster R-CNN算法很好解决这个问题。由于传统NMS算法中忽略重叠区域存在真实物体情况,改进Faster R-CNN算法以Soft-NMS算法代替NMS算法,提高行人检测准确率。

5 结论

基于Faster R-CNN算法,改进Faster R-CNN算法并应用到行人检测。首先,针对传统NMS算法回避的重叠区域存在真实物体问题,引入Soft-NMS算法。其基于重叠部分的大小,为相邻检测框设置一个分数衰减函数而非彻底将其分数置为0,这样保留重叠区可能存在的真实物体。然后,针对Faster R-CNN算法中均匀采样导致的检测效率低问题,引入 “Hot Anchors”。其把热特征图上的高激活区域作为锚点,避免像均匀采样中采样到大量无用的锚点,增加额外计算负担。最后,将Faster R-CNN框架的21分类问题,修改成适合行人检测的2分类问题。在VOC 2007行人数据集上训练改进后算法。相对原Faster R-CNN算法,在检测效率和准确率方面都有所提升。

猜你喜欢
锚点行人卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于NR覆盖的NSA锚点优选策略研究
毒舌出没,行人避让
5G手机无法在室分NSA站点驻留案例分析
5G NSA锚点的选择策略
5G NSA组网下锚点站的选择策略优化
卷积神经网络的分析与设计
从滤波器理解卷积
路不为寻找者而设
基于傅里叶域卷积表示的目标跟踪算法