嵌入空洞卷积模块的改进YOLOv3车辆检测算法

2021-04-23 02:09胡昌冉樊彦国禹定峰
计算机与现代化 2021年4期
关键词:置信度空洞卷积

胡昌冉,樊彦国,禹定峰

(1.中国石油大学(华东)海洋与空间信息学院,山东 青岛 266580;2.齐鲁工业大学(山东省科学院)海洋仪器仪表研究所,山东 青岛 266061)

0 引 言

随着我国经济的快速发展,车辆的持有数量逐年递增,对于道路交通的压力逐年加剧,从而导致车辆拥堵以及交通事故等的频繁发生,在这种情况下,催生出了智能交通系统。智能交通系统是一个全面、高效、实时的综合交通运输管理系统,其作为未来交通系统的重要发展方向可以在许多方面发挥作用,是一项多学科技术的集成应用。车辆检测对于智能交通系统来说至关重要,通过提取车辆的特征点以及特征区域,来预测车辆行驶的速度等信息,同时结合车牌识别算法为交管部门在分析车辆违规行为方面提供重要依据[1]。

随着深度学习的不断发展和创新,对于车辆检测的研究取得了重要进展[2],且随着深度学习在图像分类与识别领域的快速发展,使用卷积神经网络(CNN)来进行目标检测已经成了研究热点[3-4],现有的基于卷积神经网络的车辆检测算法大部分已经可以满足多种复杂场景下的车辆检测要求。深度学习卷积神经网络的结构是由Krizhevsky等人[5]在2012年提出的,也称为AlexNet网络。R-CNN[6]通过Selective Search方法[7]来对目标图像提取感兴趣的候选区域,相比较传统的机器学习方法检测效能有了大幅度提升,但是R-CNN输入尺度单一,同时训练过程较复杂,所以大大影响了检测速度。SPP-Net通过金字塔池化层[8],实现了多尺度预测,同时也减少了重复计算,从而大大提高了算法的速度和性能。Fast R-CNN[9]算法汲取了SPP-Net的优点并加入了ROI Pooling的池化层结构,解决了传统方法计算耗时的问题。Faster R-CNN[10]算法提出了RPN (Region Proposal Network)网络结构,通过RPN产生候选区域,同时还将卷积层提取的特征信息进行全网络的权值共享,解决了由于大量候选框而引起的速度慢的问题。YOLO[11]算法首先将图像划分为7×7的单元格,然后在每个单元格上预测2个边界框的位置、置信度和多个类别的概率。YOLOv2[12]算法加入BN[13]层,虽然使精度发生轻微下降,但是漏检率却得到极大的降低。为了在保持速度的同时实现更高的定位精度,YOLOv3[14]算法达到了检测精度与速度的最佳平衡点,但最小特征图尺寸仍然偏大,这必然会造成不必要的损失,比如车辆的错检、漏检或者重复检测的问题。如图1所示,故存在大量的改进算法来解决此类问题[15-16],但是效果不佳。由于YOLOv3算法拥有较高的检测精度和快速的检测速度,通过综合衡量,本文选取YOLOv3算法作为基础研究网络,并提出改进思路,在检测效率无损失的情况下可提高检测精度。

(a) 错检

(b) 漏检

(c) 重复检测

1 YOLO算法介绍

YOLO (You Only Look Once)[11]是一种端到端的目标检测方法,其模型由2个基本部分组成:卷积神经网络CNN和经过特殊设计的损失函数。CNN主干网受到GoogLeNet[17]的启发,具有24个卷积层,其后是2个全连接层。YOLO将网络输出重塑为二维网格,形状为GhGw,其中Gh是垂直的网格单元数,而Gw是水平的网格单元数。每个网格单元都占据图像的一部分,如图2所示。

图2 YOLO原理示意图

如果对象的中心落入网格单元,则该网格单元负责检测该对象。每个网格单元预测B个边界框和这些框的置信度得分。若单元格中包含对象,置信度分数则等于预测框与地面实况之间的交并比(IoU)。每个边界框包含5个预测量:x、y、w、h和置信度C。(x,y)坐标为相对于网格单元边界的中心,(w,h)是相对于整个图像预测框的宽度和高度。最后,置信度表示预测框与任何地面真实框之间的IoU。置信度C的计算方法如下:

C=Pobject·IoU

(1)

(2)

其中:Pobject表示预测框中含有目标的概率,若预测框中含有车辆目标,则Pobject=1,若预测框中未含有车辆目标,则Pobject=0;A(·)为面积函数;Bb为预测边界框,Bgroundtruth表示真实边界框。

同时,每个网格单元还可以预测类别条件概率P(class|object)。这些概率以包含对象的网格单元为条件,预测每个网格单元的一组类概率,与框Box的数量无关。在测试时,将预测的类别条件概率与各个框的置信度相乘,从而为每个Box的特定类别提供了置信度得分。这些分数既编码了该类别出现在盒子中的概率,也预测了Box包含对象的可靠程度P。

P=Pr(class|object)·C

=Pr(class|object)·Pobject·IoU

(3)

其中:P(class|object)表示预测框中包含目标下的条件概率;C为置信度。

2 改进的YOLOv3算法

2.1 空洞卷积

将图像输入卷积网络的过程中,对其进行连续操作,包括卷积、池化、降采样等,整合多尺度上下文信息,这样会损失一些分辨率,导致一些图像细节信息无法重构。针对以上问题,本文在YOLOv3主干网络结构Darknet-53中引入空洞卷积模块,使其在不增加计算量、不损失特征图分辨率的情况下扩增特征图的感受野[18],从而能够获取更丰富的上下文信息以增强对小车辆以及遮挡车辆的检测能力。

空洞卷积对卷积神经网络进行了一定程度的改进,对于一个3×3、扩张率为2的空洞卷积,其输出图像中心位置的像素响应图如图3所示。由图3可见,通过空洞卷积的操作使得感受野增加到了5×5,并且保持了网络计算量不变。空洞卷积核和感受野的计算方法如下:

fn=fk+(fk-1)(Dr-1)

(4)

(5)

其中:fk表示原始卷积核大小;fn表示空洞卷积核大小;Dr表示膨胀系数;lm-1表示第(m-1)层感受野大小;lm表示经空洞卷积后的第m层感受野大小;Si表示第i层的步幅stride的大小。

(a) 3×3卷积操作

(b) 3×3空洞卷积操作

(c) 3×3空洞卷积操作响应

2.2 改进的YOLOv3特征提取网络

本文提出改进的车辆检测方法整体框架如图4所示。该方法以YOLOv3的整体架构为基础并对其进行改进,输入量为整张图像,输出为检测到的所有车辆的位置及其相应的类别。首先,本文提出的算法以Darknet-53网络提取车辆特征;然后在网络结构中嵌入空洞卷积模块以增强感受野,采用不同膨胀系数获得不同尺度的图像信息;最后使用非极大值抑制NMS剔除多余的边界框。空洞卷积模块如图5所示。

图4 改进的YOLOv3网络结构图

图5 空洞卷积模块

2.3 利用锚点框机制预测车辆边界框

为更好地预测车辆检测边界框,Faster R-CNN[10]提出通过锚框代替传统的图像金字塔作为选取车辆边界框的方法。这种改进提高了模型的训练效率。本文同样采用了YOLOv3中的锚框机制预测目标边界框并取得了较好的检测效果。

本文除了对深度卷积网络进行优化之外,还对原YOLOv3中锚点框的计算方法进行优化。根据文献[19]提出的基于K-means(K均值)的聚类算法对锚点框的选取方式进行改进,通过聚类算法实现Bounding Box自动寻找合适尺寸的锚点框以获得更高的IoU,同时锚点框的定位准确度也得到了较大的提升,从而大大解决了车辆检测框定位不准确的问题。其中K-means算法中距离公式为:

d(box,centroid)=1-IoU(box,centroid)

(6)

本文在自建的车辆检测数据集上重新生成新的锚框尺寸,改进的YOLOv3算法对于输入分辨率为416×416的车辆图片,可生成9个不同尺寸的锚点框,分别为11×26、18×40、27×88、41×58、46×115、62×197、93×114、97×252和223×253。

2.4 改进的NMS模块

NMS算法通常选取得分最高的框从而抑制得分较低的框。但是在有遮挡的情况下,如图6中,实线边框和虚线边框分别有0.96和0.83的类别得分。对于传统的NMS算法,如果其中的一个框得分大于另一个框,会将得分较低的框过滤掉,从而出现漏检的情况。针对以上问题,本文改进了NMS模块,使用降低后的分数来替代原有的分数,而不是直接将其过滤掉。

图6 检测框位置靠近

对于NMS算法,当2个框之间的IoU大于设定阈值时会直接被过滤掉,容易加大漏检。本文中使用降低后的分数来代替原有的分数,而不是直接置0。具体定义如下:

(7)

其中:Si表示窗口被过滤掉的可能性大小;IoU表示面积的交并比;Nt表示预先设定的阈值。阈值在实际的操作过程中通常设定为0.5,在目标检测的车辆检测领域中,通常认为覆盖到车辆一半以上即可认为检测到了车辆目标。

3 车辆检测数据集构建

3.1 数据来源

目前网上公开的目标检测领域的标准数据集主要有KITTI数据集[20]与UA-DETRAC数据集[21-22]。相对来说交通视频的公开数据集较少,且有些视频车辆数量较少并且分辨率较低。鉴于现有的车辆检测算法大多是根据公开的标准数据集进行测试验证,选取网络上已有的车辆检测数据集,用来对比本文提出的改进算法与先前算法的检测效果。

鉴于目前公开的交通数据集较少,同时清晰度较低以及场景复杂度不高,为了丰富车辆检测数据集,提高模型检测能力,并进一步验证本文提出的改进算法的优越性,本文构建了自己的车辆检测数据集。具体做法如下:首先准备KITTI标准数据集以进行训练和学习,同时对比本文算法与先前算法;然后构建自己的车辆检测数据集,用于验证本文算法在实际情况下检测的准确性。车辆数据集中的图片均来自于实际场景,共包含5700幅图像。图例如图7所示。测试集图片包括1100张。

图7 车辆检测数据集图例

3.2 数据标注

本文采用YOLO_MARK对车辆图片进行标注。实际车辆运行过程中,道路以及其他交通设施同样存在,故样本标注时必须考虑到只有道路或者只有其他交通设施时将其误判为车辆的情况,从而引起误报。因此对车辆进行标注时,在保留车辆形状完整的情况下,尽可能地减少框入过多的道路或者其他交通设施,并针对性地对车辆进行标注。

4 实验与结果分析

4.1 实验条件

实验平台:本文实验基于Windows 10操作系统,配置为Intel(R) Xeon(R) Bronze 3106 CPU@1.70 GHz, TITAN XP显卡。

4.2 多尺度训练

本文在自建的车辆检测数据集中对改进的YOLOv3算法进行训练。整个训练过程中,进行了50000次迭代。其中设置冲量为0.9,权重衰减设置为0.0005,批处理大小设置为64,初始学习率设置为0.001。当训练的迭代次数依次达到40000和50000时,其学习效率随之依次降低为10-4与10-5。前2000次的迭代震荡幅度较大,故可忽略,当迭代次数逐渐增加,曲线也逐渐趋于平稳状态。

4.3 评价指标

传统车辆检测算法多以TP率作为性能的评价指标。TP指的是真正例(True Positive)。TP率即在所有图片中检测到含车辆图片的比例。除TP外,样本还可被分为假正例(False Positive, FP)、真负例(True Negative, TN)和假负例(False Negative, FN)。基于卷积神经网络的检测算法指标评价多采用文献[23]所提标准,即评价各模型的精确率(Precision)、召回率(Recall)与F1值。计算公式分别为:

(8)

(9)

(10)

其中:TP表示为正确检测到的车辆数量;FN表示漏检的车辆数量;FP表示误检的车辆数量;TN表示检测正确的非车辆类别的数量。精确率又称查准率,是模型检测能力的真实反映,表示正确检测到的车辆数量和所有检测出的车辆数量的比值;召回率又称查全率,是模型查全性能的体现,表示的是模型检测出的车辆数目和所有车辆总数的比值。为了平衡查准率和查全率,利用F1值进行综合测评。F1值越高,表示模型的检测性能越好。

4.4 实验结果与分析

本文首先在公开车辆检测数据集KITTI上对比了Fast R-CNN[9]、Faster R-CNN[10]、DAVE[24]、YOLO[11]、YOLOv2[12]、原YOLOv3[14]及本文所提算法的检测效果,以验证本文算法优于其他传统的车辆检测算法。各算法结果列于表1中,同时本文针对引言中提到的漏检、错检以及重复检测问题对原YOLOv3以及改进的YOLOv3算法结果进行对比,如图8所示。从图8中可以看出,YOLOv3中出现的错检、漏检情况运用本文的方法后得到了明显的改善。从表1中可以看出,本文提出的改进YOLOv3算法不仅检测精度上相比传统的车辆检测方法有明显提升,检测耗时也大大缩短。

表1 不同方法在KITTI数据集上的检测结果

从表1中不难看出,经典的车辆检测算法Fast R-CNN与Faster R-CNN的平均精确率分别为0.72和0.86,在目标检测领域,后者的精确率提升较大,但它们比本文提出的改进算法的精确率分别低了0.24与0.10。DAVE算法的平均检测精确率为0.88,比传统方法的精确率稍高,但是相对于YOLOv3以及本文提出的改进算法仍有较大差距。检测速度方面,传统的方法中Faster R-CNN最快,但仍然没有达到实时检测的要求,这是两阶段目标检测的通病。表1中显示了YOLO系列的算法均达到了实时性的要求,且其中YOLOv2的检测速度最快,每帧用时为0.037 s。同样YOLOv3以及本文提出的改进算法的检测速度也达到了实时处理的要求。YOLOv2、YOLOv3和本文改进的YOLOv3算法的检测精确率分别为0.91、0.94和0.96,且在召回率方面,本文提出的改进算法相较于其余2个YOLO系列算法更高,性能更好。综上,在KITTI数据集中的测试结果显示,本文改进的YOLOv3算法综合效果最好。

(a) 图片1的YOLOv3算法检测结果

(b) 图片1的改进的YOLOv3算法检测结果

(c) 图片2的YOLOv3算法检测结果

(d) 图片2的改进的YOLOv3算法检测结果

(e) 图片3的YOLOv3算法检测结果

(f) 图片3的改进的YOLOv3算法检测结果

(g) 图片4的YOLOv3算法检测结果

(h) 图片4的改进的YOLOv3算法检测结果

(i) 图片5的YOLOv3算法检测结果

(j) 图片5的改进的YOLOv3算法检测结果

为了进一步验证本文提出的算法在实际场景中的检测能力,将该算法运用于自建的车辆检测数据集中进行验证,其检测结果如图9所示。

(a) 图片6的改进的YOLOv3算法检测结果

(b) 图片7的改进的YOLOv3算法检测结果

(c) 图片8的改进的YOLOv3算法检测结果

(d) 图片9的改进的YOLOv3算法检测结果

此外,将车辆检测算法应用于实际场景时,保证精度是必然的要求。针对误检的处理,主要是在建立车辆检测数据集时充分选取不同尺度以及不同场景的车辆图片,同时在标注的过程中着重强调车辆的位置以及类别。模型在进行训练的时候只会对数据集中标注的车辆进行特征提取和学习,从而将其他视为背景,因此降低了模型的误检率。最后,本文在自建的车辆检测数据集上进一步比对了原YOLOv3以及改进后的YOLOv3的各项指标,如表2所示。结合表1和表2来看,相较于公开数据集,本文自建的车辆检测数据集上的各项指标均有所下降,这是因为该数据集包含多种复杂场景下的多种尺度大小的车辆样本。部分样本检测难度较大,模型需进一步优化。不过对于改进的YOLOv3来说,其检测精度依然优于原YOLOv3模型。在检测速度方面,严格的实时检测速度一般不低于24帧/s。对于本文的算法来说,其速度较原始算法虽有所下降,但是精度有较大提高。在速度没有过多损失的情况下提高了检测精度,基本能够满足实时检测的需求。

表2 改进的YOLOv3与原YOLOv3结果对比

5 结束语

现有的车辆检测算法很难同时兼顾速度与精度,因此,本文提出一种基于YOLOv3改进的车辆检测算法,在Darknet-53特征提取网络中加入了空洞卷积模块,提升了网络对小型目标车辆以及遮挡车辆的检测能力,并自建了一个包含多尺度以及多场景的车辆检测数据集。本文在公开数据集上对比了本文的算法和传统算法之间的性能,结果显示,本文算法在速度和精度方面均优于其他算法。为了进一步验证,本文还在自建的车辆检测数据集中进行测试,验证了本算法对遮挡车辆以及小型车辆的检测效果。

综上,该算法具有较强的实用性同时也存在一些不足。算法在测试集上对车辆的定位还是不够精确,在测试集中的结果和标准数据集中有所差距。考虑到样本选取的数量和质量有所不足,这也是导致检测结果和标准数据集中有所差距的原因。在后续的研究中会进一步研究造成差距的原因并着重解决这些问题,提升算法的检测能力。

猜你喜欢
置信度空洞卷积
硼铝复合材料硼含量置信度临界安全分析研究
基于3D-Winograd的快速卷积算法设计及FPGA实现
锻造过程中大截面塑料模具钢中空洞缺陷的闭合行为
从滤波器理解卷积
正负关联规则两级置信度阈值设置方法
基于傅里叶域卷积表示的目标跟踪算法
空洞的眼神
置信度条件下轴承寿命的可靠度分析
用事实说话胜过空洞的说教——以教育类报道为例
一种基于卷积神经网络的性别识别方法