基于改进YOLOv3的车辆目标检测

2023-02-17 01:54潘卫华罗裕坤
计算机应用与软件 2023年1期
关键词:实时性网络结构特征提取

潘卫华 罗裕坤

(华北电力大学计算机系 河北 保定 071000)

0 引 言

随着经济的快速发展,我国人民生活水平日渐提高,车辆数量也随之增长,但车辆的增长也伴随着各种交通问题的发生。调查显示,大部分事故是司机在无监管情况下违规驾驶、异常停车造成的,若道路管理方可以加强监控并及时发现驾驶员的违规行为,则可以减少交通事故的发生。在复杂的交通环境下精准且快速地识别车辆是热点也是难点。传统的目标检测算法[1]一般分为区域选择、特征提取、分类器分类三个阶段,但是传统算法的缺点较为明显,算法时间复杂度高,窗口冗余,特征提取对多样化的变化没有很好的鲁棒性。

伴随着深度学习的发展,目标检测算法也取得了巨大的突破,主流的基于深度学习的目标检测算法[2]主要分为两阶段检测算法(Two-stage detectors)和单阶段检测算法(Single-stage detectors)两类。

两阶段检测算法即基于候选区域的检测方法,过程主要包括两个阶段,即算法先提取候选区域,然后再对候选区域进行分类和回归。两阶段检测算法主要包括R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]、Mask R-CNN[6]等。而两阶段算法也存在明显的缺陷,例如R-CNN须采用固定尺寸的输入图像,候选区域提取、特征提取、分类和回归这些操作导致训练测试不简洁,也是R-CNN检测速度慢的主要原因。通过一系列改进的Fast R-CNN、Faster R-CNN、Mask R-CNN等算法检测精度很高而且检测速度也在不断提升,但是仍然无法满足实时性的要求。

单阶段检测算法即基于回归的检测方法,主要包括SSD[7]、YOLO[8]、YOLOv2[9]、YOLOv3[10]等。SSD是基于多尺度特征图像的检测,因此在一定限度上提升了小目标物体的检测精度,并且SSD借鉴了Faster R-CNN[11]中的Anchor boxes思想,提升了检测的召回率。YOLO系列是另一种单次目标检测器,YOLOv1直接在输出层回归bounding box的位置和bounding box所属的类别,网络结构借鉴了 GoogLeNet;YOLOv2在YOLOv1的基础上加入了批量归一化层以及残差网络结构;YOLOv3调整了网络结构,使用了全新的Darknet-53残差网络,并加入了多尺度预测,基本平衡了准确性与实时性间的关系。

将YOLOv3算法应用于车辆检测领域,为进一步提高算法对车辆检测的准确性以及满足车辆检测的实时要求,对YOLOv3算法加以改进。首先将特征提取网络进行删减,减少不必要的运算量,其次引进DenseNet[12]网络,加入Dense Block[13]块加深网络层次,最后用PReLU损失函数[14-16]替代原有损失函数。每一步改进后都与原YOLOv3模型在相同数据集下进行实验对比,在对比实验中使用相同的测试图片,以便发现方法的改进是否满足最初的想法,再将完全改进后的算法与原始YOLOv3算法及主流的目标检测算法进行实验对比,在相同数据集和相同测试图片的条件下,改进后的算法在mAP值、准确率及检测速度等方面要优于其他主流算法。

1 YOLOv3算法

YOLOv3是目标检测领域目前为止速度和精度最均衡的网络,与Faster R-CNN相比,YOLOv3实现了端到端的训练,降低了模型训练的复杂度,并且图像的处理速度大幅度提高;与SSD算法相比,YOLOv3有着更高的检测精度及更快的检测速度。

YOLOv3网络是从YOLO网络和YOLOv2网络的基础上发展并改进而来的。首先,YOLOv3改进了特征提取网络,用更深Darknet-53网络结构代替YOLOv2的Darknet-19,具体网络结构如图1所示,该网络是在ResNet[17]网络结构上发展起来的,总体网络结构用由52个卷积层和一个全连接层组成,将输入的图像数据交替进行3×3、1×1的卷积。其次YOLOv3借鉴了FPN(Feature Pyramid Networks)[18]的思想,FPN通过高低层融合的方式增强低层特征的语义信息,从而提高对小目标检测的准确率,YOLOv3分别在32倍降采样、16倍降采样、8倍降采样时进行检测,输出三个特征图并进行尺度融合,将深层信息与浅层信息结合,最后输出多尺度预测结果。

图1 YOLOv3模型结构图

图1中Convolutional由一个卷积层(Conv2d)、BN层批量归一化层(Batch Normalization)[19]和激活函数(Leaky ReLU)[20]组成,BN层在神经网络训练网络模型时加速网络收敛,并且能够解决梯度消失和梯度爆炸问题。Residual代表一个残差块,Concatenate代表张量拼接,Convolutional Set由五个卷积核分别为1×1、3×3、1×1、3×3、1×1的Convolutional单元组成。

2 改进YOLOv3算法

2.1 改进Darknet-53网络

虽然YOLOv3算法中使用的Darknet-53网络在实时性和准确性方面获得了很好的平衡,并且通过使用残差网络结构使得训练难度降低,但考虑到是针对车辆的目标检测,原网络结构中过多的卷积层显得有些复杂和冗余,导致检测速度变慢,不符合挡路车辆检测对实时性的要求。因此,为满足车辆检测实时性,将原来的Darknet-53网络结构进行删减,将原有的1×、2×、8×、8×、4×残差块的五组网络改成1×、2×、4×、4×、2×残差块的五组网络,参数数量减少,运算复杂度下降,改进的网络模型结构图如图2所示。

图2 改进的Darknet-53网络模型结构图

2.2 引入密集连接网络

为提高目标检测性能,在改进的Darknet-53网络结构的基础上加入DenseNet[16]网络结构来提高特征提取网络的信息传递能力。相比ResNet,DenseNet[16]的特征重用(feature reuse)是通过特征在channel上的连接来实现的,所以DenseNet在与ResNet参数量相等的情况下,计算成本更少,但性能比ResNet高,DenseNet将所有层都互相连接,后面每个层的输入都是前面所有层的输出。式(1)和式(2)分别代表了ResNet和DenseNet的信息传递方式,通过公式可以更直观地对比出DenseNet的优越性。

xl=Hl(xl-1)+xl-1

(1)

xl=Hl(x0,x1,…,xl-1)

(2)

式中:l代表神经网络层数;H(·)代表非线性转化函数;xl代表第l层的输出。可以看出ResNet网络第l层的输出为第l-1层输出的非线性转化加上第l-1层的输出,而DenseNet网络第l层的输出则是从第0层到第l-1层的输出都进行非线性转换,再将这些非线性转换进行维度拼接而成的,显然DenseNet网络减少了许多计算量,因此决定将DenseBlock[17]结构融入到特征提取网络中以提高检测精度。

由于网络层次越深其语义信息就越丰富,所以将DenseBlock结构加入到改进好的网络结构中。而DenseNet网络结构过深则会导致算法复杂度升高,从而使得检测速度变慢,所以不宜增加过多的DenseBlock结构,因此决定在特征提取网络末尾增加俩个DenseBlock结构来提升检测精度。在DenseBlock中,非线性组合函数H(·)采用的是BN+ReLU+1×1 Conv+BN+ReLU+3×3 Conv结构,与ResNet不同,DenseBlock在卷积后均输出k个特征图,k在DenseNet称为增长率(growth rate),同时在DenseBlock中1×1的卷积数量为4k个,3×3的卷积数量为k个,本文中拟决定k为24(因为一般使用较小的k就可以获得较好的性能)。

单个DenseBlock结构如图3所示。

图3 单个DenseBlock结构图

最终的特征提取网络结构如图4所示。

图4 最终的特征提取网络结构图

在图4中每个DenseBlock块由俩组1×1和3×3的卷积构成,每组的输入都和前面每组的输出有关,输入图片后,将输出五种尺寸不同用于检测的特征图,例如输入的图片尺寸为512×512,输出的特征图尺寸则为64×64、32×32、16×16、8×8、4×4。输出的五组特征图通过FPN的思想进行上采样尺度融合构造特征金字塔,通过高低层信息融合的方式进行目标检测。而如果将原有特征提取网络全部替换为DenseNet网络,虽然会更有效地提取特征信息,但会使得特征提取网络变得冗余复杂,计算量加大,检测速度则会大大减慢,与改进初衷有所相悖,故采用添加DenseBlock块的方式来提高检测精度。

2.3 损失函数的改进

在车辆检测数据集中,存在一些数据集车辆被障碍物遮挡或者在光照条件不好的情况下车辆的特征不明显的情况,为了改善在复杂环境下车辆的检测,决定使用参数修正单元PReLU激活函数来代替原有的Leaky ReLU激活函数。Leaky ReLU会给予所有负值0.01的非零斜率即将数据中的负特征看作弱特征,导致在检测的过程中会出现漏检或错检的情况。Leaky ReLU公式定义如下:

(3)

PReLU则会根据数据来确定负值的斜率即会根据数据特征来调整斜率,在检测的过程中会更加注重数据中的负特征。PReLU的公式定义如下:

(4)

可以看出在检测场景简单的条件下(即数据无遮挡以及光照条件较为良好的条件下),PReLU函数就会退化成Leaky ReLU函数,两种函数都可以将数据目标的特征在卷积层之间传递;在检测场景复杂的条件下,PReLU函数会更加注重负特征的变化,在反向传播的过程中会根据负特征的变化来改变线性函数的斜率,在对目标进行分类回归时,结合语义信息以及负特征,会一定程度上改善车辆在被障碍物遮挡以及光照条件不好的场景下检测效果不佳的情况。在神经网络反向传播的过程中,是采用带动量的更新方式来更新斜率ai的:

(5)

式中:ai的初始值为0.25;μ为动量因子;ε为学习率,φ为常数。

3 实 验

实验的软硬件配置如下:处理器Intel(R) Core(TM) i7-8700 CPU @3.20 GHz 16 GB,显卡Nvidia GeForce GTX 1080Ti的Windows 10 64位,深度学习框架为Tensorflow,程序设计语言为Python。

3.1 数据集及其处理

RETRAC数据集是从北京和天津不同的24个区域道路的监控中截取的,其俯拍照片与本文道路车辆实时监测的场景相吻合,从RETRAC数据集中选取了具有代表意义的8 000幅图片作为本文的数据集,其中训练集为7 500幅,测试集为500幅,并将输入图片的尺寸改为512像素×512像素。

YOLOv3的9组anchor box是由COCO和VOC数据集训练所得的,对本文的数据集来说其原有的anchor box的尺寸不合适,故本文采用聚类算法对车辆数据重新进行聚类分析,生成15组大小分别为(36,36)、(442,68)、(76,77)、(89,88)、(126,134)、(150,142)、(147,200)、(162,228)、(76,240)、(320,107)、(162,134)、(184,277)、(247,327)、(342,276)、(396,412)的anchor box,其中小尺寸的负责检测小目标,大尺寸的负责检测大目标。由于本文只检测车辆一个类别,故本文迭代次数为5 000次,avg loss最终为0.113 2。

改进后的算法评价指标为平均精度均值(Mean Average Precision,mAP)、单幅图片检测时间(单位:ms)以及准确率。

3.2 特征提取网络改进效果测试

对特征提取网络的改进结果如表1和图5所示,并在表1中列出了改进特征提取网络的其他两种网络结构(即Darknet-45和Darknet-19)。

表1 特征提取网络改进效果表

图5 引入密集连接网络效果测试图

由表1可以看出,对特征提取网络进行删减会不同程度地提高网络的运算速度,但经过比较Darknet-33(即本文改进的方法)在平均精度均值及准确度方面皆优于其他两种改进方法,故本文提出的特征提取网络改进方式更优。由图5(左为原YOLOv3算法效果,右为改进后效果)的实验结果可以看出,在删减卷积层后,虽然一个车辆目标没有被检测出来,但是检测速度大大提高,比原来的网络结构单幅图片检测速度提高了大约16 ms,符合了改进的初衷,满足了检测的实时性,因此删减不必要的卷积层是有意义的。

3.3 引入密集连接网络效果测试

引入密集连接网络后的改进结果如表2和图6所示。

表2 引入密集连接网络效果表

(a) 原YOLOv3算法 (b) 本文算法图6 引入密集连接网络效果测试图

从表2可以看出,在加入Dense Block加深网络结构后,平均精度均值相较于原始的YOLOv3提高了3.02百分点,准确率提高了2.52百分点,并且满足实时性的要求。从图6可以看出,同一幅测试图片,在原始YOLOv3中没有检测出的车辆在本模型中可以检测出来,改进后的YOLOv3算法利用五组不同尺度构成的特征金字塔可以较好地解决漏检的问题,小尺度的特征对测试集中较小的目标检测效果较好,而由于使用了密集连接网络,加深网络层次并不会引起梯度消失和梯度爆炸,因此引入密集连接网络是有意义的。

3.4 损失函数改进效果测试

表3为对原始的YOLOv3算法、用Focal loss改进损失函数[21]及使用PReLU损失函数的数据对比。

表3 损失函数改进效果表

(a) 原YOLOv3算法 (b) 本文算法图7 改进损失函数结果效果图

从表3可以看出,使用Focal loss对损失函数进行改进后,在mAP值、单幅图片检测时间以及准确率方面都有所提升,但是使用PReLU损失函数代替原有的损失函数后,mAP值和准确率比使用Focal loss对损失函数进行改进后都高,检测单幅图片的速度也更快,并且PReLU损失函数提高了对负特征的关注,所以从图7可以看出,在光照条件不好的情况下,改进后的算法可以检测出原算法漏检的车辆,因此在使用PReLU损失函数后,降低了原算法的漏检率。

3.5 整体改进效果测试

在对YOLOv3算法进行改进后,改进模型在准确率和实时性方面都高于当前主流的目标检测算法。

表4 总体改进效果表

图8 与其他主流算法相比较结果测试图

从表4和图8可以看出,改进的算法在准确率和实时性方面是优于其他三个算法的。改进后的算法检测出了其他三种算法都没有检测出的小目标及模糊目标,明显改善了小目标的识别效果。改进后的算法mAP值比Mask R-CNN高14.50百分点,检测单幅图片的时间比Mask R-CNN少36.49 ms,同时准确率提高了1.32百分点,故本文算法满足实时性和准确性的要求,有效地降低了车辆的漏检率,并在遮挡和拍摄模糊的情况下仍然有着良好的检测效果。

表5给出了其他改进YOLOv3算法与本文改进YOLOv3算法的结果对比,可以看出改进后mAP值和速度都有一定程度的提升,而其他文献的算法改进只是在速度或者精度一方面的提升,对比而言,本文提出的改进更具有综合性。

表5 与其他改进后的YOLOv3算法进行比较

4 结 语

为了对道路车辆进行实时且准确的检测,提出将YOLOv3算法改进并应用于道路车辆的检测中。为了满足车辆检测的实时性,对原YOLOv3算法特征提取网络中不必要的卷积层删减,大大提高了检测速度,并且引入了密集连接网络来加深网络层次提高车辆检测的准确率。最后将原损失函数改为参数修正单元PReLU损失函数,有效地改善了车辆错检和漏检的问题,并有效改善了小目标车辆的识别效果。实验结果表明,提出的算法在车辆检测中mAP值达到了83.63%,检测单幅图片的速度达到了32.64 ms,并且准确率达到了96.77%,为后续研究车辆跟踪奠定了良好的基础。

猜你喜欢
实时性网络结构特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于Daubechies(dbN)的飞行器音频特征提取
航空电子AFDX与AVB传输实时性抗干扰对比
Bagging RCSP脑电特征提取算法
计算机控制系统实时性的提高策略
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析
复杂网络结构比对算法研究进展
基于MED和循环域解调的多故障特征提取