罗舜, 于娟
(福州大学经济与管理学院,福建 福州 350108)
基于深度卷积神经网络的计算机视觉技术已取得了令人瞩目的成就,这些成就推动了自动驾驶技术的发展.行车过程中的行人目标检测是自动驾驶技术中的一项重要研究内容,也是计算机视觉领域的研究热点,是保障行人和驾驶员安全的重要技术.基于计算机视觉的行人目标检测方法通常使用车载拍摄设备来获取行车中的图像,以此从序列或图像中判断行人的存在并得到准确的位置信息.目前,常用的行人检测方法主要分为基于人工设计特征的浅层机器学习模型的传统方法和基于深层机器学习模型的方法[1].
传统的行人检测方法主要使用人工设计的提取规则,并采用浅层机器学习模型反映图像局部的变化实现行人检测.但是传统方法的检测速度慢、 对复杂的行人目标适应性差并且泛化能力不足,难以满足实际应用需求[2].
随着深度卷积神经网络在目标检测任务中的发展,以及大规模行人检测公共数据集的出现,基于深度神经网络的行人检测算法已在实际问题中得到应用.2012年Krizhevsky等[3]提出的卷积神经网络(convolutional neural networks,CNN)结构AlexNet, 使用激活函数ReLu[4]与Dropout[5]方法并在减少过拟合方面取得了显著的效果后,基于深度神经网络的目标检测算法分为了二阶段目标检测算法和一阶段目标检测算法.二阶段目标检测算法为基于候选区域的深层卷积网络,首先生成可能包含检测目标的候选区块,再使用卷积神经网络对候选区块进行分类和位置回归并得到检测框,其代表算法有R-CNN (region CNN)[6]、 Fast R-CNN (fast region-based CNN)[7]和Faster R-CNN (faster region-based CNN)[8]等.一阶段目标检测算法为基于回归计算的深层卷积网络的目标检测.这类方法将目标定位整合在单一CNN网络中,只需进行向前运算就能预测不同目标的位置与类别,其标志性算法有YOLO (you only look once)[9]、 SSD (single shot multibox detector)[10]和YOLOv4 (YOLO version 4)[11]等.目前已有许多研究人员使用这两类算法解决行人检测问题并取得了一系列的研究成果.例如,陈泽等[12]提出一种基于改进Faster R-CNN的目标检测方法,通过引入基于双线性插值的对齐池化层,并设计基于级联的多层特征融合策略,较好地解决小尺度行人在深层特征图中特征信息缺乏的问题.舒壮壮等[13]提出基于YOLOv3的改进行人检测算法,优化生成先验框算法为K-means++算法,并且改进主干特征提取网络和损失函数,在MSCOCO数据集上的检测精度指标达到了48.3,检测速度达到了19.73 f·s-1.
虽然现有的两类目标检测算法在行人检测方面已取得了一些研究进展,但仍存在许多重叠和被遮挡的行人目标被误检、 漏检的问题.此外,在自动驾驶应用场景下,行人目标检测算法应当同时具备准确性和实时性,对于复杂场景和多目标都能及时做出准确的响应[14].Faster R-CNN等二阶段方法由于实时性难以得到保证而较难实现应用,而YOLOv3、 YOLOv4等一阶段算法在经过不断的改进后,在检测的实时性方面性能达到了要求,但在检测精度方面依然存在一定的不足.针对上述问题,提出一种基于多尺度网络YOLOv5的卷积神经网络模型,构建同时考虑通道间关系和特征空间位置信息的多重协调注意力模块,然后将原损失函数改进为具有双重惩罚项的切比雪夫距离交并比损失函数,最后设计瓶颈状DSP1_X和DSP2_X模块,减少重叠和遮挡的行人目标的漏检情况发生.
在YOLO系列目标检测网络中,YOLOv5属于最新的改进版本,是集合之前各版本YOLO算法后检测能力较好的单阶段目标检测网络[15].在目标检测任务中,其整合了之前版本及其他网络的优点,在检测准确度和实时性上都有所提高.YOLOv5按照模型规模从大到小排序分为4个版本,依次是YOLOv5x、 YOLOv5l、 YOLOv5m、 YOLOv5s,其中YOLOv5s因其轻巧性和可部署性被广泛使用.
原算法在面对具有复杂背景的图像检测任务时,检测精度和实时性都大幅减低.为了提高算法在图像具有大量特征信息的情况下提取目标任务关键信息的能力,引入注意力机制.深度学习中的注意力机制通过快速浏览整个图像,对关键目标领域投入注意力资源,从而高效地筛选出所需信息,抑制其他无效信息.借鉴压缩和激励网络(squeeze-and-excitation networks, SENet)思想[16],引入一种同时考虑通道间关系和特征空间位置信息的多重协调注意力模块并置于YOLOv5的主干网络backbone部分,将位置信息嵌入到通道注意力中,旨在增强网络特征的表达能力.
以往的注意力机制模块SENet先对卷积得到的特征图进行压缩,然后再进行激活操作,得到更佳的特征表示.然而SENet只考虑通过建立通道关系来重新衡量每个通道的重要性,忽视了对于生成空间选择性十分重要的位置信息.因此引入一种多重协调注意力模块,如图1所示,不仅仅考虑了通道间的关系,还考虑了特征空间的位置信息.
给定输入的特征图X∈RC×H×W,首先使用尺寸为(H, 1)或(1,W)的池化核分别沿着水平坐标和垂直坐标对每个通道进行编码.因此,高度为h的第c个通道的输出可以表示为:
(1)
同理,宽度为w的第c个通道的输出可以写成:
(2)
上述2种变换分别沿两个空间方向聚合特征,得到一对方向感知的特征图.这2种转换也允许注意力模块捕捉到沿着一个空间方向的长期依赖关系,并保存沿着另一个空间方向的精确位置信息,这有助于网络更准确地定位感兴趣的目标.然后对上面的变换进行拼接操作,使用1×1卷积变换函数对其进行变换操作:
(3)
式中: [,]为沿空间维数的拼接操作;δ为非线性激活函数,将其定义为Relu激活函数;f∈RC/r×1×(H+W)为对空间信息在水平方向和垂直方向进行编码的中间特征映射,r是用来控制通道数量的缩减率.
沿着空间维数将f分解为2个单独的张量和,并利用另外2个卷积变换和分别将和变换为具有相同通道数的张量到输入X,得到:
gh=σ(Fh(fh))
(4)
gw=σ(Fw(fw))
(5)
式中:σ为Sigmoid激活函数.
为了降低模型计算参数,这里使用缩减比r来减少f的通道数, 并对输出gh和gw进行扩展,分别作为注意力权重.最后得到协调注意力的输出:
(6)
由于原模型中的边界框损失函数GIOU_Loss严重依赖IOU项[17],需要多次的迭代才能收敛,使得模型表现下降,并且没有考虑到水平和垂直边界框比例变化对损失的影响,导致预测框准确度降低.因此,提出切比雪夫距离交并比 (Chebyshev distance IOU, CDIOU)来解决上述问题[18].GIOU损失函数如下式所示:
(7)
式中:A和B分别为预测框和真实框;C为覆盖检测框和真实框的最小框.虽然相比IOU损失函数来说GIOU损失函数考虑到了检测框与真实框重叠部分缺失的情况并加上了惩罚项,但是其惩罚项事实上仅与检测框和真实框的空间位置有关联,忽略了检测框与真实框之间的距离,导致梯度下降速度比较缓慢.因此,将GIOU损失函数的惩罚项删除,添加新的惩罚项, 而新的惩罚项可以使得两个检测框中心点的距离最小化.同时,CDIOU考虑到检测框与真实框的长宽比之间的关联,再添加一个惩罚项,增加网络损失的收敛速度.CDIOU损失函数的公式如式(8)所示:
(8)
式中:xi、yi是预测框A=(xi,yi)中心点的横坐标和纵坐标;xj、yj是真实框B=(xj、yj)中心点的横坐标和纵坐标;C为预测框A和真实框B的最小包围框的对角线长度;L表示检测框与真实框中心点之间的切比雪夫距离;wi、hi、wj、hj分别表示预测框和真实框的长和宽.CDIOU损失函数的示意图如图2所示.
从图2可以看出,预测框与真实框之间的距离越远,LossDMIOU的值就越大,距离越近,则LossDMIOU的值就越小并且趋近于0.改进惩罚项之后的损失函数对于预测检测框和真实检测框更加敏感,增加了尺度不变性,提高了检测框精度并使得网络收敛速度加快.
原多尺度网络中的CSPnet结构使用跨阶段层次结构拼接基础层的特征层,导致梯度混淆更易发生.因此,借鉴mobilenetv3网络[19]的思想,将网络backbone部分的CSP1_X和CSP2_X模块分别改进为瓶颈状DSP1_X和DSP2_X模块.改进后两个模块结构如图3所示,不同于普通的卷积方式,DSP1_X和DSP2_X在去掉拼接操作的同时,先将3 px×3 px大小的深度空间卷积层Dwise移动到多维残差模块的左端,再把两个1 px×1 px卷积核置于深度空间卷积层和残差模块的两端.两次逐点卷积和一次深度空间卷积减少了参数量,降低了梯度混淆的几率,从而提高网络的整体运算速率.
搭建OpenCV深度学习平台,具体测试环境: 显卡为Nvidia Tesla K80,显存为12 GB,编译语言为Python3.7,共训练200个epochs; 主要参数设置: 输入图像大小为608 px×608 px,batch_size为64,学习率learning_rate为0.001.输入图像统一固定为608 px×608 px方便模型运行.本研究旨在构建一个在自动驾驶过程中鲁棒的行人目标检测算法,因此采用Wider Person数据集中行车记录仪拍下的包含行人的子集进行训练,包括单目标图像、 多目标图像和有遮挡与重叠目标图像.由于原图片数据集样本数量较少,使用对称、 裁剪和对比度变换等方式将数据集扩充.图4为几种典型的行人目标示例图,其中图4 (b)为经过对比度变换后的图像,图4(c)为经过对称变换后所得图像.
在目标检测领域中通常使用精准率(precision)、 召回率(recall)和平均精度 (mean average precision,mAP)对图像目标检测方法的性能进行评价[20].精准率针对最后的预测结果,用于描述所有正例中预测出来的正例的所占比率,计算公式如下:
(9)
式(9)中:P表示精准率; FP表示将样本中负例预测为正例的个体数量,即检测错误的目标.召回率针对正类样本,计算公式如下:
(10)
式(10)中:R表示召回率; TP表示方法将样本正类检测为正类的个数; FN表示将样本正类检测为负类的个数,即遗漏检测的个数.一般情况下召回率和精准率相互制约,同时维持在高水平的情况较少出现,因此使用综合检测指标mAP值来衡量检测网络的算法性能,计算公式如下:
(11)
式(11)中:N表示test集中的样本个数;P(k)是精准率P在同时检测k个样本时的大小; ΔR(k)表示召回率R在检测样本个数从k-1个变为k个时的变化情况;C为多分类检测任务重类别的个数.
首先对改进后网络整体训练的收敛性进行分析,对YOLOv5和改进后的YOLOv5进行相同epoch数量的训练,同时,在相同实验环境下使用YOLOv4网络训练做多元对比.为了方便比对,将改进后的模型命名为YOLOv5-walking.首先对比各模型之间损失下降的情况,图5为3种模型的损失曲线图,横坐标为epoch个数,纵坐标为损失值,虚线、 实线和点线分别代表3种不同的模型.可以看出,YOLOv5-walking的loss下降速度比YOLOv5和YOLOv4的损失下降速度更快,表明改进后的算法损失收敛更快,并且其收敛后损失值更趋近于0且更为平滑.
为了比较YOLOv5和经本研究改进后的YOLOv5模型的检测精度和实时性,对其进行相同epoch数量的训练[20],同时,加入PP-YOLO检测网络[21]、 PP-YOLOv2[22]和双阶段检测网络Faster RCNN的测试结果进行多元分析,结果如表1所示.
表1中,检测速度单位f·s-1(frame per second)表示每秒钟内检测图像的数量.对比表中的数据可以看出,YOLOv5-walking在检测速度方面总体优于其他算法,并且YOLOv5-walking的检测精度指标相较于之前的网络有所提高,mAP提高了5.57%,说明改进后的网络在检测行人目标的能力上有比较显著的提升[23],并且检测速度也有较大提升,提高了2.44 f·s-1.Faster RCNN使用双阶段检测机制微调锚框区域,其mAP较其他模型只超过了YOLOv3,但检测速度与远不如其他算法.
表1 不同目标检测算法对比
接着对本研究提出的改进YOLO模型进行消融实验以验证各模块功能,对部分网络模块进行更换,并组合部分模块进行实验[24],实验结果如表2所示.由表中数据可知,CDIOU模块和DSP1_X模块的应用对于检测的精度与速度的提升较为明显,而MCAM模块虽然提高了检测精度,但检测速度有所下滑.MCAM模块对于检测精度的提升最为明显,mAP提高了2.04%,但也导致检测速度降低; CDIOU模块提高了检测框的精确度并且减少了损失下降的迭代次数,使得检测精度和速度有了较大提升,分别提高了1.35%和1.74 f·s-1; DSP1_X和DSP2_X模块减少梯度混淆,降低了参数计算量,对于检测速度有一定的提升.接着将模块MCAM分别和DSP1/2_X、 CDIOU模块结合在原模型上,两种测试的检测精度均较前模型有所提高,但检测速度几乎与原模型持平甚至低于原模型.再单独将CDIOU与DSP1/2_X模块结合在原模型上,结果表明检测速度较之前提高较多,但检测精度提高幅度不大,这也侧面说明3种模块结合对于检测速度和精度同时提高的必要性.
表2 消融实验结果[24]
此外,改进后的算法减少了漏检情况的发生,并且在检测被遮挡的行人目标方面表现良好,检测结果如图6所示.由于车载摄像头拍摄角度等问题,原图中有部分行人重叠和被遮挡目标,而改进后的算法在检测被遮挡和未被遮挡的行人目标时均有良好表现,没有出现误检和漏检的情况,说明改进后的网络能够更好地对行人目标特征进行提取,提高了有效信息完整性,减少了重叠目标与被遮挡目标漏检现象的发生.
针对自动驾驶中行人目标因重叠与遮挡所导致的检测精度低、 实时性差的问题,提出一种改进多尺度网络的行人图像检测算法.本研究使用Wider Person数据集中行车记录仪拍下包含行人的图像作为数据集,在YOLOv5网络中构建多重协调注意力模块MCAM,并将原损失函数改进为切比雪夫距离交并比损失函数,最后分别设计瓶颈状DSP1_X和DSP2_X模块替换网络中的CSP1_X与CSP2_X模块.实验分析结果表明,改进后的算法损失收敛速度更快,对于行人特征的提取能力更强,并且与原YOLOv5相比mAP提高了5.57%,达到94.41%; 检测速度提高了3.29 f·s-1,达到42.63 f·s-1,说明本研究提出的模型检测精度高且具有实时性,可以应用于自动驾驶中的行人目标检测.未来的工作将在训练过程中采集更多环境下的行人数据集,提高模型的泛化能力,进一步增强行人目标的检测精度和速度.