APP下载

优化EfficientDet深度学习的车辆检测

2022-01-20陈西江安庆班亚

南京信息工程大学学报 2021年6期
关键词:距离深度车辆

陈西江 安庆 班亚

0 引言

随着居民生活水平的不断提高,越来越多的人拥有车辆,而车辆的不断增加也加剧了城市对车辆监控的难度.为了有效地打击违法、违规行为,保障城市安全,城市主要路段都有监控系统[1-2],以实现对机动车和非机动车等目标的有效监管.车辆检测成为城市车辆智能监控系统中的重要功能.在实际应用中,由于受光照条件、部分遮挡及背景杂乱等环境因素的影响,车辆检测的准确度会受到极大影响.为了提高车辆检测的可靠性及准确度,学者们对其进行了大量的研究.

车辆检测方法主要包含基于图像的检测方法和基于深度学习的检测方法.基于图像的检测方法主要是通过车辆图像特征和方向梯度直方图特征来对车辆目标进行检测.例如:文献[3] 使用图像的特征变换进行车辆的分类检测;文献[4] 通过分析车辆图像的边缘特征结合主成分分析法来实现对车辆的检测.基于图像特征的车辆检测方法虽然计算复杂度较低,能够快速地检测车辆,但受环境影响较大,特别是对于车辆有部分遮挡或者光照变化的区域很难对其进行准确检测.因此,文献[5] 通过融合Sobel和Sift特征来对车辆图像特征进行增强处理,并由此实现对车辆的检测;文献[6] 利用Sobel边缘检测对车位中的车辆进行检测,并实现了不同种类车辆的检测得分;文献[7] 使用基于模糊c均值聚类和超参数调优的分类器来实现对车辆的检测,并基于车辆检测结果完成了车辆在某个车位的定位.由于车辆本身的图像具有独特的纹理特征,所以可以根据车辆纹理特征来实现对车辆的检测[8].基于车辆图像纹理特征及车辆边缘特征的车辆检测方法的主要缺点是受光照的影响较大.随着深度学习的不断发展,越来越多的学者开始研究利用深度学习来实现对车辆的检测.文献[9] 利用卷积神经网络对车辆图像进行训练,并将训练后的模型用于车辆检测;文献[10] 提出一种基于Haar-AdaBoosting算法和卷积神经网络的车辆检测方法;文献[11] 提出超区域候选网络,该深度学习检测模型可以实现对较远摄像头拍摄的小车辆进行检测.在检测车辆的过程中,很难保证车辆不被遮挡,为了解决车辆在遮挡情况下能够实现对其检测,文献[12] 将对抗学习引入到RCNN目标检测过程中,提高了车辆检测精度.RCNN算法的优点是检测精度较高,但其检测速度较慢,很难适用于实时视频流车辆检测.为了提高检测效率,文献[13] 引入YOLO系列算法来实现对车辆的检测,该检测网络主要是基于SSD网络,对车辆的检测速度较快,但其精度不是特别高.为了提高检测精度,文献[14] 对SSD网络进行了改进,通过融合级联模块和元素模块来实现高精度的车辆检测,但由于融合了较多的模块,使得检测速度有所下降.目前,深度学习在车辆检测领域得到了学术界的广泛关注[15].因此,本文通过对深度学习EfficientDet模型训练阶段进行优化,构建分阶段训练模型,实现快速准确的车辆检测.

图1 车辆数据集Fig.1 Vehicle data set

1 车辆检测模型的构建

首先利用EfficientDet深度学习模型对车辆进行训练,并用训练好的模型对车辆进行检测.基于深度学习的目标识别网络主要包括Cascade R-CNN[16]、SpineNet[17]和CenterNet[18]等.为了验证不同深度学习网络的性能,表1给出了不同识别网络模型的检测性能.表1 中的COCO mAP[^1]是用于衡量检测性能的平均精度,其值越大说明检测性能越好.

由表1可以明显看出,EfficientDet系列的深度学习网络模型检测性能最好,其次是Cascade R-CNN_ResNet深度学习网络模型.而EfficientDet系列中检测性能最好的为EfficientDet-D7x网络,该网络的识别精度达到了55.1,其次是EfficientDet-D3.EfficientDet-D7x网络的缺点是复杂度太高,无法实现车辆实时检测.综合考虑,本文选用EfficientDet-D3作为车辆检测网络.

表1 不同识别网络模型的性能

为了构建基于EfficientDet-D3优化的车辆检测模型,采集了不同时间段不同场景下的车辆图像数据集,如图1所示.该数据集分为训练数据集和验证数据集.总共7 533张图像,其中,6 387张为训练数据集,1 146张为验证数据集,均通过LabelImg工具进行注释.每张图像生成的注释文件通过Python脚本文件转换为Tensorflow统一的TFRecord数据格式.

根据数据集的特点,训练前调整模型对应的配置文件中的参数,包括类别数量、批大小、初始学习率以及相关的数据读取路径.车辆检测模型不受车型的影响,在迭代开始时,选取一部分数据,通过深度学习算法得到预测值.根据数据集大小和计算机配置,首先选择初始训练的批大小,然后根据损失函数值的变化和检测效果进行调整.利用标准梯度下降算法训练车辆检测模型,在模型训练阶段,TensorFlow_Slim 模块提供了简单但很强大的训练模型.在模型训练过程中,损失函数的返回值即为每次迭代过程中产生的目标函数值.另外,检测模型对车辆定位损失和置信度损失之和是衡量预测模型性能的指标.为了调试和优化模型训练过程,TensorFlow提供了一个可视化工具TensorBoard,通过读取记录的数据文件来监控和显示训练过程.批处理的大小越大,内存利用率就越高,处理数据的速度就越快.在训练中,当使用单个NVIDIA GeForce RTX 2080Ti GPU时,本文将批大小设置为16.学习率是影响模型性能最大的参数之一,学习率太大会导致检测不稳定,学习率太小会导致过拟合和收敛速度慢等现象.为了加快模型的收敛速度,本文利用AdamW算法[19]来优化学习率.在训练阶段,如果连续3个周期损失不下降,学习率就会降低.本文依据总损失值变化情况对车辆检测模型训练阶段学习率参数的变化情况调整,结果如图2所示.

图2 学习率参数的变化Fig.2 Variation of learning rate

根据图2,第1阶段为迭代从0到41 870阶段,初始学习率被设定为1e-3,此时,由图3可明显看到,总损失值较为迅速地递减到0.26,意味着学习率需要调整.第2阶段迭代从41 871 到 54 980,学习率设置为1e-4,由图3可知总损失值降低为0.225,且在其附近趋于平滑.为了确定学习率是否仍然需要优化,第3阶段从59 431次迭代到结束,学习率被降低到1e-6,总损失值仍然没有变化,其值为0.225,并趋于平滑.整个模型训练过程结束,总的训练收敛时间约为37 h,训练得分大于99.5%,总的学习率参数经过3次调整,最终完成深度学习车辆检测模型的构建.

图3 总损失值变化趋势Fig.3 Variation trend of total loss value

2 实验分析

1) 不同方法比较

为了验证本文方法的性能,利用Cascade R-CNN和CenterNet 方法对远近距离车辆进行检测,并将检测结果与本文方法进行比较.表2给出了3种方法对车辆检测时需要使用的参数数量.

表2 3种不同方法的参数数量

由表2可以明显看出,本文方法对车辆检测使用的参数数量最少,Cascade R-CNN需要使用的参数数量最多,即该方法的计算复杂度最高,其次是CenterNet模型.利用这3种方法对近距离车辆进行检测,结果如图4所示.

由图4可明显看出,3种方法对近距离车辆的检测得分都大于80%,表明都适合该种情况下的车辆检测.其中,本文方法对2辆车的检测得分均为100%,高于其他2种方法.

图4 不同方法对近距离车辆检测效果Fig.4 Performance of different methods on short-range vehicle detection

利用3种方法对远距离车辆进行检测,检测得分如图5所示.

图5 不同方法对远距离车辆检测效果Fig.5 Performance of different methods on long-distance vehicle detection

图5显示:本文方法对3辆车的检测得分均为100%,基于Cascade R-CNN方法对3辆车的检测得分分别为99%、100%和100%,基于CenterNet方法对3辆车的检测得分分别为99%、98%和99%.本文方法的检测得分最高且最稳定.

为了评估本文方法和其他2种方法在检测车辆上面的检测效率,得到对车辆检测的时间成本,结果如图6所示.由图6可明显看出,基于Cascade R-CNN检测时间最长,需要140 ms左右,而本文和基于CenterNet方法的检测时间相似,且2种方法只需要耗费32 ms左右,低于基于Cascade R-CNN方法.从检测时间成本上可以看出,本文和基于CenterNet方法较好,但是,基于CenterNet方法需要的参数较多,计算复杂度较高.因此,从检测时间成本、检测精度及复杂度3个方面综合分析,本文方法要优于基于Cascade R-CNN和CenterNet方法.

图6 3种不同方法检测时间Fig.6 Detection time of three different methods

2) 不同场景检测比较

为了评价本文所构建的深度学习车辆检测模型适用于不同场景下的车辆检测情况,对不同场景下的车辆进行检测,结果如图7所示.车辆的检测得分越高,检测效果越好.

由图7可明显看出,3种不同背景下的车辆检测得分均为100%,特别是只有部分车身在图像中显示的情况下,车辆检测得分仍然是100%,表明本文方法对车辆检测效果较好,适用于不同背景下车辆的检测,且能够实现对非完整车辆图像进行检测.

图7 深度学习车辆检测模型对不同场景下车辆的检测效果Fig.7 Performance of the proposed model for vehicle detection in different scenarios

图8 不同距离车辆检测得分Fig.8 Vehicle detection scores from different distances

3) 不同距离车辆检测分析

为了验证不同距离对本文方法的影响,选取4个不同距离:8、15、22和30 m,使用训练好的深度学习车辆检测模型对不同距离的车辆进行检测,如图8所示.由图8a可明显看出,在8 m的情况下,4辆车都能被检测到,且检测分数都为100%.摄像头距离车辆15 m的情况下,7辆车检测得分都为100%,如图8b所示.当距离增加到22 m时,检测得分稍微有所降低,其中有1辆车检测得分为98%,剩余6辆为100%,如图8c所示.从以上分析可知,当距离为22 m以内时,本文方法对每辆车的检测得分几乎不受距离的影响.主要原因是本文方法训练模型所使用的车辆距离都超过了22 m.当检测距离增加到30 m时,大部分车辆的检测得分大于93%,如图8d所示.即随着距离的增加,检测效果略有降低.因此,在训练模型时,所使用的车辆数据集的距离最好要大于检测车辆的距离,这样可以保证检测车辆的精度.

4) 不同角度车辆检测分析

为了验证不同角度车辆对检测的影响,本文设置6个不同角度:0°、20°、40°、60°、80°和90°,结果如图9所示.

图9 6个不同角度车辆检测结果Fig.9 Vehicle detection scores from six angles

图9a为正对着车辆拍摄,即0°方向,本文方法对所拍摄4辆车均可检测,且检测得分均为100%.图9b显示的是20°的情况,本文方法对5辆车的检测得分分别为100%、100%、100%、100% 及 89%.当角度变为40°时,相邻车辆图像之间存在重叠区域,由图9c覆盖的5辆车中仅有3辆车能够被检测到.图9d显示的是60°的情况,仅有4辆车被检测到,其得分分别为92%、86%、100% 和100%.而从图9e可以看出,12辆车中只有2辆车的检测分数大于90%,其余都无法被检测到.如图9f所示,当角度增加到90°时,几乎所有车辆都无法被检测到.所以,车辆检测效果受角度的影响较大,造成这种现象的可能原因是训练数据集中不包含不同角度的车辆数据集;同时,角度较大时,图像中的相邻车辆间存在着重叠.因此,为了对车辆进行准确检测,应尽量使用正对着拍摄的车辆.

3 实例分析

利用本文训练好的深度学习车辆检测模型对停车场中的车辆进行检测,其检测后的得分如图10所示.

图10 较大停车位中每个车辆的检测得分情况Fig.10 Detection scores of each vehicle in a large parking lot

由图10检测结果可知,实现了对拍摄的12个车辆的检测.其中,最高检测得分为100%,最低检测得分为74%,且只有1辆车检测得分低于90%,其余车辆检测得分均高于90%.高于70%的检测得分被认为是有效检测,即本文检测的结果认定这12个检测均为车辆,与实际情况相同,表明本文方法的检测为可靠检测.

4 结论

本文提出一种基于深度学习的车辆检测方法,建立了基于EfficientDet-D3模型的车辆检测模型.在EfficientDet-D3模型训练阶段,为了提高检测模型的训练效率,依据总损失值的变化情况,给出分阶段训练学习参数的设定,建立了自适应的模型训练的学习机制.

将本文检测模型与基于Cascade R-CNN和CenterNet方法进行比较,本文方法使用的参数最少,其计算复杂度最低,本文方法对车辆的检测耗时与CenterNet方法相当,低于Cascade R-CNN方法,同时3种方法的检测精度基本相同.因此,从计算复杂度、耗时及检测精度3方面分析确定本文方法优于其他2种方法.

利用该检测模型对不同距离和角度的车辆进行判断.结果表明,当检测的车辆距离小于训练的车辆距离时,检测效果不受距离的影响,当检测的车辆距离大于训练的车辆距离时,检测效果随着距离的增加而降低.因此,为了使得摄像头覆盖的所有车辆获得良好的检测效果,本文使用车辆数据集距离较远.角度对车辆检测效果影响很大,特别是当摄像头方向与车辆方向的夹角大于20°时,有些车辆无法被成功检测到.因此,摄像头的角度要尽可能小,以保证能够准确地检测到每辆车.

猜你喜欢

距离深度车辆
四增四减 深度推进
深度思考之不等式
德国车辆来波兰加油
简约教学 深度学习
算距离
距离美
车辆
冬天路滑 远离车辆
爱的距离
距离有多远