肖顺亮,强赞霞,刘卫光
(中原工学院 计算机学院,河南 郑州 451191)
行人检测技术在日常生活中应用越来越广泛,比如自动驾驶[1]、视频监控[2]、机器人路径规划、行人再识别技术中都涉及到行人检测问题。由于它具有极大的应用研究价值,越来越引起学术界和工业界的广泛关注。近年来随着神经网络的迅速发展,从传统的手工提取图像特征到通过神经网络提取图像特征的转变,行人检测的效率和准确率在标准数据集上有了很大提高。然而,在实际场景中由于行人之间的相互遮挡、行人被其他障碍物遮挡,以及行人尺度的多变性等因素,当前的行人检测算法常常会出现误检和漏检的情况[3]。因此,在拥挤条件下的行人检测技术仍面临着挑战,检测的误检率需要进一步降低。
行人检测可以看作是目标检测中的一类被检测对象,可以使用目前比较成功的目标检测算法。常见的目标检测算法可分成两大类:一类是基于锚框(Anchor-base)的目标检测算法,如以Faster-RCNN[4]为代表的two-stage检测方法和以SSD[5]为代表的one-stage检测方法。另一类是无锚框(Anchor-free)的目标检测算法,如基于关键点检测的CornerNet[6]目标检测算法。以上两类目标检测算法都成功应用于行人检测技术中,并取得了一定进展。
然而,在实际场景中由于行人自身尺度的多变性,单一尺度的行人检测算法无法适应不同的尺度,达不到最优检测效果[7],加上行人之间的遮挡和行人被其他障碍物遮挡等因素,目前的行人检测算法在拥挤情况下的漏检率有待进一步降低。为解决这一问题,该文在CSP[8]方法的基础上,采用ResNet-50[9]网络结构与特征金字塔网络(feature pyramid networks,FPN)[10],将包含有较多位置信息的浅层特征层与包含较多语义信息的深层特征层相融合,最后用于预测的特征层既包含较多的行人位置信息也包含较多的行人语义信息。针对实际场景中行人尺度的多变性,该文采用多尺度预测方法,以适应更多的行人尺度变化。由于拥挤情形下,行人预测框之间的相交面积与相并面积的比值(intersection over union,IoU)相对比较大,采用标准的非极大值抑制(non-maximum suppression,NMS)处理方法会抑制掉部分有效预测结果。因此,该文使用DIoU(distance-IoU)[11]的NMS算法对预测结果进行处理,进而保留更多有效预测。所有实验均在Cityperson[12]数据集上进行训练和验证,结果表明该算法在行人拥挤情况下,较其他算法在严重遮挡评价指标的漏检率有所降低,同等实验条件下与CSP算法相比,行人严重遮挡和无遮挡的漏检率均有所降低。
行人检测是指在图像或视频中找到行人的位置以及确定行人的尺寸,常见的行人检测方法有传统的基于滑动窗口的检测方法、当前基于预设锚框的检测方法,以及基于关键点检测的行人检测方法。从有无预先设置锚框的角度,行人检测方法可分为两类:一类是基于锚框的行人检测方法,另一类是无锚框的行人检测方法。
基于Anchor-base检测算法中,一个重要组成部分就是Anchor的设置,检测之前要提前预设好Anchor的尺寸或者比例,检测时根据预先设定好的Anchor进行回归。Faster-RCNN通过预先设定好Anchor的宽高比,然后通过推荐网络生成可能与目标匹配的锚框。Zhang等[12]调整了Faster-RCNN算法用于行人检测;曾接贤[13]针对行人尺度较小情况下的误检问题,提出了融合多层特征的多尺度行人检测算法;郭爱心[14]为提升中小尺度的行人检测效果,提出了一种特征融合的多尺度行人检测算法;刘丹[15]采用语义信息来监督网络训练,提出了具有鲁棒性的行人检测算法;Adaptive NMS[16]通过预测行人的密度,在检测结果处理阶段,根据行人的密度动态调整NMS的阈值,从而保留更多有效检测框。以上基于Anchor的行人检测算法,都需要预先设置好锚框,从而增加了算法的复杂度。
基于Anchor-free检测算法省去了锚框尺寸的设定,检测时直接回归目标的位置和边框,简化了算法,提高了检测速度。近年来有研究者提出基于关键点检测的Anchor-free检测算法,比如CornerNet通过预测目标左上角和右下角的坐标,进而确定目标在图像中的位置。ExtremeNet[17]通过检测目标上下、左右四个极值点的坐标,从而确定目标在图像中的位置。TLL[18]提出了预测目标上下两个顶点的坐标来确定目标的位置,这些无锚框的目标检测算法在检测速度上比基于锚框的目标检测算法更快,其检测效果与基于锚框的目标检测算法相当,甚至在某些应用场景下其检测效果超过基于锚框的目标检测效果。
最近Liu Wei等人提出了基于Anchor-free思想的CSP行人检测算法,把行人的中心点和身高作为高级语义信息,通过预测行人的中心点位置和身高,根据行人身高和宽高固定比例生成行人预测框,整个算法流程中摆脱了锚框的生成,以及预测框与真实框之间的IoU计算,减少了算法的计算量,同时也取得了较好的检测效果。但CSP行人检测算法对不同尺度的行人采用统一尺度检测器,由于大目标和小目标行人的自身尺度差异,使检测效果不能达到最优。在检测结果的后续处理问题上,CSP行人检测算法采用的是标准的非极大值抑制算法,阈值设定相对盲目,不能达到更有效的处理效果。张庆伍[19]采用特征融合和多尺度结合的Anchor-free行人检测算法,在拥挤情况下产生了大量重复预测。针对以上问题,该文借鉴了FPN特征融合策略,采用多尺度预测方法,针对不同大小的行人采用不同的尺度预测分支进行预测,然后综合所有尺度的预测结果,通过DIoU-NMS后处理抑制掉重复预测框,降低行人漏检率,提高算法的性能。实际检测中,为了减少行人实际中心点位置与预测中心点位置的偏差,在检测头部分添加了中心点偏移分支,通过缩小两者差距使检测更加准确。
整个行人检测模型结构一共包含四个部分:特征提取模块、特征融合模块、行人预测模块和预测结果后处理模块。特征提取模块采用卷积神经网络进行图像特征提取操作,把图像I作为输入,每经过一次卷积会形成一个特征层,整个卷积过程中图像特征层的变化如下:
φi=fi(φi-1)=fi(fi-1(…f2(f1(I))))
(1)
其中,φi表示第i层的输出特征层,fi表示对第i层特征的卷积、池化、归一化、激活等操作。每个特征层包含了目标的不同位置信息和语义信息,实际检测中可以对不同特征层进行融合,N层的特征层可用一个集合表示为:
Φ={φ1,φ2,…,φN}
(2)
其中,Φ表示特征层集合。用Φdet表示最终用于检测的特征层集合,则Φdet={φl,φl+1,…,φN},1 文中算法采用ResNet-50作为行人特征提取主干网络,整个特征提取卷积层划分为五个特征层,前四个特征层分别通过前一层下采样操作得到当前特征层,最后一层特征层通过前一层空洞卷积操作得到当前特征层,最终得到五个特征层图像尺寸分别为原图像尺寸的1/4、1/16、1/64、1/256、1/256。特征融合模块采用FPN特征融合策略,其特征融合过程为:使上层特征通过反卷积操作,把图像的特征尺寸调整为下层特征尺寸大小,然后再与下层特征进行相加融合。融合后的特征层通过一个3×3的卷积核进行平滑操作,得到最终可以用于检测的Φ2、Φ3、Φ4特征层。行人预测模块通过三个1×1的卷积核,分别预测行人尺度(scale)、行人中心点(center)和中心点偏离(offset)。预测结果后处理模块通过DIoU-NMS处理,去除同一个行人的重复预测框,得到最终的预测结果,整个行人检测流程如图1所示。 图1 行人检测流程 基于关键点的目标检测算法通常标注的有目标角点、目标中心点、目标中轴线、目标四周的极值点等。文中算法采用的是行人的中心点和身高作为高级语义特征信息,把行人的中心点作为正样本,标注为1,其他位置坐标作为负样本,标注为0。由于Cityperson数据集标注的行人宽高比固定,因此,可根据行人高度预测结果自动计算出行人的宽度,再根据预测的行人中心点位置,进而可以预测行人在图像中的位置。实验中,输入图像由于下采样操作,行人的中心点会变得不精确,为了减少中心点的模糊对网络训练造成困难,以行人中心点为中心,生成一个2维的高斯热图Mij,如图2所示,其表达式为: 图2 行人高斯热图 (3) (4) 其中,K表示一张图像中行人的数量,(i,j)表示高斯热图的位置,(xk,yk,wk,hk)表示第k个目标的中心点坐标和宽高,(σw,σh)表示宽和高的协方差。从公式可以看出与目标中心点的距离越近,数值越大,当两个高斯热图重叠时取两者的最大值。 为了克服行人中心点的预测结果与实际中心点偏移问题,实验中,在检测头部分增加中心点偏移预测分支,通过最小化行人预测中心点与实际中心点两者误差损失,提高算法检测精度。行人中心点实际位置与标注的位置的偏移可以定义为: (5) 其中,r为下采样比率。 文中算法总的损失函数包含三部分:行人中心点损失Lcenter、行人尺度损失Lscale、行人中心点偏移损失Loffset。由于输入图像中行人中心点相对于非行人中心点较少,从而造成正负样本不均衡,不利于网络模型的训练。为解决这一问题,Lin T等人[20]提出了Focal Loss方法来解决正负样本不平衡问题。为此,中心点分类损失函数定义为: (6) (7) (8) 其中,K表示一张图像中行人的数量,W、H分别表示图像的宽高,pij∈[0,1]表示预测坐标点(i,j)属于行人中心点的概率,β,γ是两个超参数,实验中分别设置为β=4[6]、γ=2[20],Mij表示(i,j)坐标点的高斯热图。 使用L1损失函数计算行人尺度损失,其公式为: (9) 其中,pk,tk分别表示第k个目标的预测值与真实值。 使用SmoothL1损失函数计算偏移损失,其公式为: (10) 其中,pk,tk分别表示第k个目标的预测值与真实值。 综上所述,总的损失函数L定义为: L=λcLcenter+λsLscale+λoLoffset (11) 其中,λc、λs、λo分别表示中心点损失、尺度损失和偏移损失的权重,实验中分别取值为0.01、0.05、0.1。 标准NMS只考虑两个检测框的IoU,而忽略了两个检测框的相对位置,当两个检测框的IoU相同时,两个检测框可能检测的是同一个行人,也可能是不同的行人。这种情况下,为进一步提升算法的检测性能,该文采用DIoU-NMS对检测结果进行后处理。DIoU-NMS综合考虑了两个检测框中心点的欧氏距离(d)与同时包含两个检测框的最小框的对角线距离(c),如图3所示。 图3 DIoU建模 两个检测框的中心点欧氏距离的平方与同时包含两个检测框的最小框对角线距离平方的比值RDIoU为: (12) 其中,b1,b2分别表示两个行人检测框,c表示同时包含两个行人检测框的最小框对角线距离,ρ(·)表示欧氏距离,两个检测框中心点的欧氏距离d2即为ρ2(b1,b2)。 行人检测框得分si的计算公式为: (13) 其中,M表示当前取出得分最高的预测框,Bi表示与M相交的第i个预测框,ε表示设定的阈值。 从公式(12)与公式(13)可以看出,当d2与c2的比值较小时,两个预测框检测的是同一个行人的可能性比较大,此时两个预测框调整后的IoU依然较大,当调整后的IoU大于设定的阈值ε时,检测框得分设置为0,从而抑制重复预测框。当d2与c2的比值较大时,两个预测框预测的是不同行人的可能性比较大,此时两个预测框调整后的IoU小于设定的阈值ε,检测框的得分保持不变,从而保留更多有效预测结果。 为对文中提出的算法进行有效评估,训练和验证均在Cityperson数据集上进行。Cityperson数据集是在Cityscapes数据集的基础上建立起来的,它包含了18个不同城市、多种气候环境下的行人数据。数据集包含19 238个行人,平均每张图片上有6.47个行人,行人姿态多样、密度较高、背景环境复杂。Cityperson数据集可分为训练集、验证集,其中训练集2 975张图片,验证集500张图片。数据集中行人真实位置标注框的宽高比为0.41。文中实验均在kaggle平台上进行,实验环境为Tesla P100 16 GB的GPU。由于数据集中图片尺寸为1 024×1 024像素的高清图片,考虑到实验设备GPU内存限制,实验中将图片尺寸调整为640×1 280像素进行训练,Batch size设置为2。验证模型时,行人宽高比r设置为0.40。为有效评估算法性能,实验中把在验证集上的测试结果分为两个指标,即严重遮挡(Heavy)和无遮挡(Bare),分别得到对应指标的漏检率(%)。 输入图像随着网络逐层的卷积、池化、激活等操作,浅层特征层包含了较多位置相关的特征信息,但缺乏语义特征信息。而深层特征包含了较多语义特征信息,但随着逐层的池化、下采样操作丢失了目标的精确位置特征信息。为此,采用FPN特征融合模型,把浅层特征与深层特征结合起来,使用于检测的特征层既具有丰富的位置特征信息又具有丰富的语义特征信息。 实际场景中行人的尺度是多样的,为了对不同的行人尺度有更好的预测效果,文中采用多尺度预测方法,并探究不同尺度组合下的预测效果。实验中Φ2检测特征层的高斯热图为原图像的1/16,Φ3、Φ4检测特征层的高斯热图为原图像的1/64。 从表1可以看出,Φ3、Φ4两个检测层组合时,在Bare情况下行人预测效果最佳。Φ2、Φ3、Φ4三个检测层组合时,在Heavy情况下行人预测效果最佳。由于多尺度预测会对同一个行人产生多次预测,因此最终的预测结果中存在较多的重复预测,所以需要对预测结果进行后处理,以去除同一个行人的重复预测结果。图4为Φ3、Φ4两个预测层组合时的预测结果。 表1 不同特征层结合检测对比 % 图4 Φ3、Φ4特征层组合预测结果 卷积神经网络通过逐层提取图像中行人的特征,进而预测行人的中心点和身高,最终的预测结果再回归到原图像中,确定行人在原图像中的真实位置。由于预测的结果中存在重复预测,所以需对预测结果进行非极大值处理,去除重复预测是算法中不可缺少的一个重要组成部分。标准的NMS只考虑了两个预测框的相交面积与相并面积之间的关系,而忽略了两个预测框中心点的欧氏距离。DIoU-NMS综合考虑两个预测框的中心点欧氏距离与同时包含两个检测框的最小矩形对角线距离,对标准NMS进行了优化。为证明文中算法的有效性,采用同等实验条件下对CSP论文中的行人检测算法进行复现,与文中改进后的行人检测算法进行对比,结果证明文中提出的算法在各种遮挡情况下,行人漏检率均有所降低。实验结果如表2所示。 表2 同等实验条件下文中算法与CSP算法对比,DIoU-NMS与NMS实验对比 % 从表2可以看出,第一,同时使用标准NMS后处理方法,文中算法在Bare和Heavy两个评价指标上均比CSP的漏检率低;第二,使用DIoU-NMS后处理方法相比于标准NMS的后处理方法,在Bare和Heavy两个评价指标上的漏检率进一步降低。标准NMS阈值设置固定,而且盲目,在拥挤情况下会抑制掉部分有效的预测框。而DIoU-NMS在实际处理过程中会动态地调整预测框的IoU,从而可以减少错误抑制有效的检测框。图5为采用标准NMS处理结果,图6为采用DIoU-NMS处理结果,从两者的处理结果可以看出,前者会抑制掉部分有效预测结果,出现漏检现象,而后者保留了更多有效预测结果。 图5 标准NMS抑制效果 图6 DIoU-NMS抑制效果 多尺度行人预测会对同一个行人产生重复预测,拥挤情形下行人之间的相互遮挡比较严重,而且产生的预测框较多,框与框之间的IoU数值大。从图7可以看出,在一定范围内随着DIoU-NMS阈值的增大,严重遮挡(Heavy)的漏检率先降低较快,后面保持平稳。对于无遮挡(Bare)来说,开始随着阈值的增大,漏检率逐渐降低,当阈值超过0.52之后,随着阈值的增加,漏检率不再降低,出现上下波动。因为在无遮挡情况下行人密度小,阈值设置较大时将保留更多的重复检测。 图7 Heavy与Bare情况下漏检率随 文中提出的行人检测算法以行人中心点和身高作为高级语义特征信息,采用FPN特征融合策略,结合多尺度预测方法对不同尺度的行人进行预测,预测结果采用DIoU-NMS后处理方法抑制掉重复预测框,提高检测效果。与其他行人检测算法对比如表3所示。 从表3可以看出,文中提出的行人检测算法在Heavy和Bare情况下,漏检率较CSP算法均有所降低,在行人严重遮挡(Heavy)情况下的检测效果较好,无遮挡(Bare)情况下漏检率与其他行人检测算法相比有所降低。因为原图像在逐层卷积、池化过程中,拥挤场景下的行人位置信息丢失较多,采用FPN特征融合策略,将包含较多位置信息的浅层特征与包含较多语义信息的深层特征融合,使预测特征层具有更多的行人特征信息,再结合多尺度预测方法,在拥挤场景下取得了较好效果。 表3 行人检测算法对比 % 实际场景中由于行人之间的相互遮挡,给行人检测带来了困难,检测时常常会出现误检和漏检的问题。为解决这一问题,该文基于CSP改进的拥挤情况下的行人检测算法,利用ResNet-50作为主干网络提取图像特征,采用FPN特征融合策略进行特征融合,结合多尺度预测方法对不同尺度的行人进行预测,对预测结果采用非极大值抑制处理,在Cityperson数据集上进行训练和验证。预测结果后处理过程中采用DIoU-NMS算法相比较于标准NMS算法,能够根据两个行人预测框的中心点距离,动态调整交并比,保留更多不同行人的有效预测框。同等实验条件下,该算法在拥挤场景下和无遮挡场景下行人漏检率均有所降低。同时对不同的DIoU-NMS阈值,对严重遮挡和无遮挡的检测效果进行了研究,实验表明随着阈值的增大,严重遮挡和无遮挡情况下的漏检率均有所降低,当阈值大于0.52时无遮挡的漏检率出现轻微波动,而严重遮挡保持平稳。实验中发现该算法会对部分非行人错误地预测为行人,以及远处遮挡的行人会出现漏检现象,产生这些现象的原因是由于网络提取的行人特征不够充分。因此,下一步工作将探索更深层的网络结构用于提取更多行人特征,来提高行人检测效果,降低漏检率和误检率。2.2 数据标注
2.3 损失函数
2.4 DIoU-NMS
3 实 验
3.1 数据集与训练设置
3.2 FPN特征融合结合多尺度特征预测
3.3 预测结果后处理算法
3.4 阈值对严重遮挡和无遮挡的影响
3.5 行人检测算法对比
4 结束语