基于改进RetinaNet的行人检测算法

2022-04-25 05:35刘晋川黎向锋叶磊刘安旭赵康左敦稳
科学技术与工程 2022年10期
关键词:锚框行人卷积

刘晋川,黎向锋,叶磊,刘安旭,赵康,左敦稳

(南京航空航天大学机电学院,南京 210016)

近年来,基于视觉的行人检测技术逐渐引起关注,它是车辆辅助驾驶系统、智能监控系统以及智能机器人等技术中的重要基础[1-2]。其研究主要是将一张包含行人的图片或视频帧中的所有行人位置和大小检测出来,属于典型的目标检测问题。行人检测的难点主要体现在:场景复杂、存在干扰因素(如光照、雨天、雪天以及雾天);行人与环境、行人间的相互遮挡;远处行人在图像中像素占比较小易造成漏检等问题。

基于视觉的行人检测研究经历了传统行人检测方法(其核心内容就是特征的提取方法和分类器的设计)和近年来研究火热的基于深度学习的行人检测方法。基于深度学习的目标检测算法通常分为二阶段目标检测算法和一阶段目标检测算法。其中,二阶段目标检测算法通过对卷积神经网络所生成的建议框进行简单的二分类,来判断建议框内的区域为前景或背景,被判断为背景的建议框将会被大量舍弃,从而降低了类别的不平衡;而一阶段目标检测算法则对生成的建议框不做任何处理直接统一进行后期的分类以及回归计算。因此,二阶段目标检测算法的处理速度要比一阶段的目标检测算法慢出许多。Girshick等[3]提出的二阶段目标检测算法R-CNN(region with CNN features)对包括行人在内的多种目标进行检测,但存在算法运算量过大、计算资源耗费过大等问题,而后提出的Fast R-CNN[4]解决了原来R-CNN中因重复提取子窗口重叠区域特征而导致的运算量过大问题,同年提出的Faster R-CNN[5]对Fast R-CNN中候选框的生成进行了优化以提升其检测准确率和检测速度;Zhang等[6]提出的OR-CNN(occlusion-aware R-CNN)算法提高了有遮挡行人的检测精度;Redmon等[7]提出的一阶段目标检测算法YOLO(You Only LookOnce)直接在输出层上进行回归和分类,有效提升了检测速度;朱敏[8]提出了基于SSD(single short multibox detector)[9]的行人检测方法,提高了小目标行人的检测精度;Lin等[10]提出了RetinaNet算法,通过设计损失函数Focal Loss解决了一阶段目标检测算法中类别不平衡问题。

在实际应用场景中,远处行人在图片上的面积占比较小,易造成漏检。针对小目标检测的问题,Sun等[11]提出了对小目标物体特征更加敏感的卷积神经网络HRNet,经此网络可以输出具有更强的位置信息和语义信息的特征图,将其作为目标检测算法的特征提取网络可以有效提高算法对于小目标物体的检测精度。

近年来,基于卷积神经网络的目标检测算法层出不穷,性能也在不断提高。这些算法整体上可以分为两类:基于锚点框架的目标检测算法以及基于无锚点框架的目标检测算法。其中基于锚点框架的目标检测算法得到了广泛使用;而基于无锚点框架的目标检测算法目前没有明显的识别优势[12]。但基于锚点框架的目标检测也存在一定缺陷,如锚框的尺度和长宽比需要预先定义,这是对检测器性能影响较大的超参数,且对于不同的数据集以及检测方法需要单独进行调整;如果尺度和长宽比设置不合适,还可能导致召回率不够高;同时锚框过多也会影响分类性能以及速度。基于此,Wang等[13]提出了一种新的锚框生成方法——Guided Anchoring(GA)机制,即通过图像的特征来指导锚框的生成,通过此种方法可以得到稀疏、形状根据位置可变的锚框。

为解决通用算法对小目标检测率低,并设计出检测精度和检测速度均衡的行人检测网络,现对RetinaNet算法进行改进,提出引入高分辨率网络作为特征提取网络,通过在特征提取过程中保持目标分辨率的方法,提高网络整体对于小尺寸行人的敏感度,从而提升召回率;此外,针对RetinaNet算法中锚点机制的缺陷,引入GA机制来对其进行优化以进一步提高算法的检测精度,同时降低对计算资源的消耗;最后,使用改进后的RetinaNet算法在Caltech数据集上进行行人检测实验。

1 Caltech行人数据集介绍

Caltech数据集[14]是目前规模比较大且应用最为广泛的行人数据集,数据集中的图片来源于车载摄像头以分辨率为640×480、30帧/s拍摄得到的视频中截取的视频帧,视频约10 h。其不仅标注了大约250 000帧(约137 min)图片,350 000个矩形框,2 300个行人,还另外对矩形框之间的时间对应关系及其遮挡情况进行了标注。该数据集中的部分样本图片如图1所示。

图1 Caltech数据集图片

由于Caltech行人数据集是由安装在行驶的汽车上的车载摄像头连续拍摄得到的视频而来,相比其他的公共行人数据集更加符合行人检测算法的实际应用场景,数据集中包含各类复杂场景下的行人目标,如遮挡目标、小目标等困难样本。

2 RetinaNet算法

行人检测中,一张待检测图片上可能只有一个小目标,大量的目标框并不包含目标,这会导致背景框和目标框类别的不平衡。Lin等[10]提出了一阶段目标检测算法RetinaNet,并针对一阶段目标检测算法中由于类别不平衡造成检测精度低的问题,提出了新的损失函数Focal Loss,该损失函数在传统的二分类交叉熵损失函数上进行改进得来,标准交叉熵函数的计算公式为

(1)

式(1)中:CE为交叉熵函数;y为框所属的标签类别;1表示前景类即目标类别;-1表示结果为背景类别;p为模型对于标签类别y的预测概率。

为了方便计算,定义概率系数pt为

(2)

则原式可表达为CE(p,y)=CE(pt)=-lnpt。

背景(不包含行人)的分类对于模型而言属于易分类的样本,为了让模型将关注点更多地集中在难分类的样本上,在原来的损失函数上加上了一个权重参数来控制正负样本对总损失的贡献。综合式(1)和式(2),整合出Focal Loss的最终表达式为

FL(pt)=-(1-pt)γlnpt

(3)

式(3)中:γ为关注度参数,γ≥0。

图2为γ取值为[0,5]时的损失曲线图。由图2可以看出,Focal Loss使得易分类的样本对总损失的贡献有所降低,从而可以让模型更加关注难分类的样本。采用式(4)的表达式来进行实践,系数αt的作用是平衡正负样本。经实验,当γ=2、αt=0.25时的表现最好。

loss总损失

FL(pt)=-αt(1-pt)γlnpt

(4)

RetinaNet算法的整个网络结构清晰且设计简单,其检测结构如图3所示,特征提取网络由残差网络ResNet-101和特征金字塔网络FPN构成,使用该算法在COCO数据集上进行实验,结果表明:相较于经典的二阶段目标检测算法Faster R-CNN,RetinaNet算法具有更高的检测精度。因此,主要在RetinaNet算法上来进行后续的优化。

图3 RetinaNet算法结构

3 改进RetinaNet算法的行人检测

虽然一阶段目标检测算法RetinaNet具有更高的检测精度,但是其仍然存在着一些问题:小尺寸行人的漏检以及算法中锚点机制本身的缺陷。因此,将引入高分辨率特征提取网络和Guided Anchoring机制对其进行改进优化,使其性能表现更佳从而更加契合实际应用的场景。

3.1 特征提取网络优化

实际上,在低分辨率的特征图上是看不见小目标物体的,这是因为当目标物体的尺寸小于卷积神经网络的下采样率时,该目标在此特征图上便会消失。比如32×32大小的目标在采样率为1/32时,该目标在特征图上就变成了一个点,而小于32×32大小的目标则会消失,这便造成了高层的特征图无法检测到小目标。标准的RetinaNet算法中主要是通过引入特征金字塔网络结构来提高网络对于小目标物体的检测精度,该网络结构主要是采用浅层的大尺寸特征图来检测小目标,并且还将其与高层上采样后的特征图进行融合来丰富特征;然而高层特征图中的小目标物体的语义信息在下采样的过程中已经丢失,于是便造成了融合后特征图中来自浅层大尺寸特征图的语义信息不足,从而导致类别识别能力较弱。

针对这个问题,引入高分辨率特征提取网络HRNet,该网络的结构如图4所示。

图4 HRNet网络结构

由图4可以看出,HRNet采用的是并行连接的方式,特征图在网络的传递过程中,通过下采样操作分离出低尺寸的特征图,随后以此作为输入分离出一条卷积神经网络,从而逐步的增加高分辨率到低分辨率的子网络,形成更多的阶段,并将多分辨率的子网络并行连接,通过在并行的多分辨率子网络上反复交换信息来进行多尺度的重复融合,从而不断地提高每一条子网络的高分辨率特征。当网络传递到最后时,将所有网络的特征图进行融合,于是便获得了信息更加全面的高分辨率特征,使得特征图上目标的空间位置信息以及语义信息都变得更加完善。

3.2 锚点机制优化

基于锚点机制的行人检测算法在整体上可以分为两个步骤,第一步是提取候选区域,第二步便是将提取出的候选区域送入后续的网络中做进一步的分类以及定位。锚框机制的引入使目标检测算法的性能有了较大的提高,但同时也带来了一些问题。基于此,引入一种新的锚框生成方法——Guided Anchoring(GA)机制,即通过图像的特征来指导锚框的生成。图5为Guided Anchoring模块的整个过程,共分为三个部分。

图5 Guided Anchoring模块

3.2.1 位置预测

位置预测的主要目的是预测哪些区域应该作为中心点来生成锚框,属于二分类问题。与区域建议网络的工作不同,这里并不是预测每个点是前景还是背景,而是预测其是否为物体的中心。首先,整个特征图的区域被分为物体中心区域、外围区域和忽略区域,然后将真实框的中心一小块对应在特征图上的区域标记为物体中心区域,训练时将其作为正样本,其余的区域按照离中心的距离标为忽略样本或者负样本,最后通过选择对应概率值高于预定阈值的位置来确定可能存在对象活动的区域。对输入尺寸为W×H×C(宽×高×通道数)的特征图FI使用1×1的卷积网络NL,得到与FI具有相同分辨率、但是只有一个通道的输出W×H×1,输出的每个位置的值表示原图上对应位置出现物体的可能性,也就是概率图,最后通过选择对应概率值高于预定阈值的位置来确定可能存在对象活动的区域。

通过位置预测,便可筛选出一小部分区域作为锚框的候选中心点位置,从而使得锚框数量大大降低,最后只需要针对有锚框的地方进行计算即可。

3.2.2 形状预测

形状预测分支的主要目标是根据给定锚框的中心点,预测出锚框最佳的长和宽,属于回归问题。将FI输入1×1的卷积网络NS,输出与FI尺寸相同的双通道的特征图,两个通道分别用dw和dh表示,表示每个位置可能的最好的锚框尺寸。虽然预测的目标是w和h,但是直接预测这两个数字不稳定,因为范围会很大,所以将空间[0,1 000]近似映射到了[-1,1]中,计算公式为

w=σsedw

h=σsedh

(5)

式(5)中:s为步幅;σ为经验因子。

对于锚框和真实框匹配的问题,传统的区域建议网络是直接计算锚框和所有的真实框的交并比(intersection of union,IoU),然后将锚框匹配给IoU最大的那个真实框,但是经过改进后锚框的宽(w)和高(h)都是不确定的,而是需要预测的变量,定义预测的锚框为awh,真实框为gt,IoU(·,·)表示预测框与真实框的交并比,于是将这个锚框和某个真实框的交并比定义为vIoU,计算公式为

(6)

由于不可能将所有可能的w和h遍历一遍来求IoU的最大值,所以只采用了9组可能的w和h作为样本,经实验发现近似效果已经足够。通过对锚框的位置预测和形状预测,便可以生成最终的锚框了,此时生成的锚框即为稀疏且每个位置不一样的。

3.3.3 特征精调模块(feature adaption)

由于每个位置锚框的形状是不同的,大的锚框对应着较大的感受野,小的锚框则对应小的感受野,所以不能像传统的基于锚框的方法那样直接对特征图进行卷积而进行预测,而是需要对特征图进行精调。通过借鉴可变形卷积(deformable convolution)[15]的思想,根据形状对各个位置单独进行转换。

特征精调的方法就是将锚框的形状信息直接融入特征图中,从而得到新的特征图来适应每个位置锚框的形状。主要通过3×3的可变形卷积NT对原特征图进行修正,其中可变形卷积的变化量是由锚框的w和h经过一个1×1的卷积得到的。整个过程可以用式(7)来描述:

f′i=NT(fi,wi,hi)

(7)

式(7)中:i是对特征图位置的枚举;fi为第i个位置的特征;(wi,hi)为对应的锚框的形状;f′i为精调后的第i个位置的特征。

NT通过一个3×3的变形卷积来实现,首先通过形状预测分支预测偏移字段offset field,然后对带偏移的原始特征图做变形卷积获得自适应特征F′I,之后再进一步做分类和回归。通过这样的操作,达到了让特征的有效范围和锚框形状更加接近的目的。

经过上述三个步骤后,生成的锚框数量相对普通的锚框生成方法明显减少,且与目标的匹配度更高。通过对RetinaNet进行上述改进,得到了如图6所示的算法结构图。

图6 改进后的RetinaNet算法结构

4 实验与结论

4.1 模型训练

实验共设置三组,分别为标准Faster R-CNN、Faster R-CNN+ResNet-101+FPN、RetinaNet算法以及本章提出的改进算法,对其分别进行训练后测试,然后针对实验结果进行分析。

4.1.1 训练策略

按照1∶1比例划分训练集和验证集,使用HRNet在ImageNet大型数据集上的模型的作为预训练模型,同时采用递增的学习率预热策略,即先使用较低的学习率来对模型进行训练,在训练的过程中逐渐增加学习率,等模型逐渐稳定后再增加到真正的初始学习率继续进行训练。

4.1.2 参数设置

算法采用的是随机梯度下降(stochastic gradient descent,SGD)优化算法来对模型进行求解,初始的学习率设为0.002,权重衰减设置为0.000 1,同样的设置训练学习的轮数为12轮,并在第8轮以及第11轮时调整学习率(分别在原有的学习率的基础上下降0.1,也就是分别下降到0.000 2和0.000 02),详细的设置如表1所示。

表1 超参数的设置

4.2 实验结果分析

实验过程中采用的硬件平台以及软件环境如表2所示。本文提出的算法在实验过程中的损失曲线图如图7所示。

iter为迭代次数;loss为每次迭代对应的损失值

表2 硬件及软件环境配置

本次评价的技术指标为平均精度均值mAP。将本文的算法在Caltech行人数据集上进行实验,得到的结果如表3所示,同时与其他的三种算法进行对比。从表3可见,本文提出的改进后的算法的检测精度表现最好。图8为使用本文算法对图片的检测效果的示例。从图8可以看出,很多小尺度、模糊以及遮挡的行人都可以通过本文算法检出。当场景同时存在大尺度行人和小尺度行人时,本文算法也可以很好地区分。

图8 改进后算法检测结果示例

表3 不同算法在Caltech数据集上的mAP

由于本文研究的行人检测算法最终是要应用在辅助驾驶系统或自动驾驶系统中,因此对于算法的检测速度即实时性有较高的要求。使用优化后的算法模型对从行车记录仪中截取的真实场景下的行车视频片段进行检测,计算检测速度,在输入的视频分辨率为1 280×720时,各算法的每秒检测帧数(frames per second,FPS)结果如表4所示。根据表4中数据可以看出,本文提出的改进后的算法在视频检测速度稍稍降低的条件下性能有所提升,实现了检测速度与精度的均衡。

表4 视频检测结果

5 结论

通过对实际应用场景中行人检测的难点问题进行分析,提出将原来的特征提取网络替换为对小目标物体更加敏感的高分辨率网络,以提高低层特征图的语义信息以及高层特征图中的位置信息;同时,对目标检测算法中的anchor机制进行分析,发现该机制中存在的一些缺陷,并基于此而引入Guided Anchoring机制,从而使得anchor的位置以及形状与目标更加接近,减少了anchor的数量,降低了计算量,使得模型的检测精度得到提升;其次,将优化后的算法在Caltech行人数据集上进行了实验,最终得到mAP为0.905的检测精度,相比于标准的RetinaNet算法提高约6%,证明了本文提出的优化方案可以提高算法对行人的检测能力;最后,将实验结果与不同的行人检测算法进行对比分析,证明了提出的改进算法的检测精度达到了领先水平;并对该算法进行了符合应用场景的视频检测实验,结果为19 FPS,证明了该算法在检测速度上也有一定优势。

猜你喜欢
锚框行人卷积
锚框策略匹配的SSD飞机遥感图像目标检测
基于SSD算法的轻量化仪器表盘检测算法*
基于GA-RoI Transformer的遥感图像任意方向目标检测
基于3D-Winograd的快速卷积算法设计及FPGA实现
毒舌出没,行人避让
基于深度学习的齿轮视觉微小缺陷检测①
卷积神经网络的分析与设计
从滤波器理解卷积
路不为寻找者而设
基于傅里叶域卷积表示的目标跟踪算法