基于YOLOv3 的雾天道路目标检测*

2023-12-09 08:50蒲虹林田怀文乐思显
计算机与数字工程 2023年9期
关键词:雾天道路特征

蒲虹林 田怀文 乐思显

(西南交通大学机械工程学院 成都 610000)

1 引言

随着人工智能的发展,智能化的无人驾驶技术得到了各行各业的广泛关注,将汽车智能化使其能够自动感知道路环境并实现自动驾驶,已经成为了未来汽车以及万物互联的大趋势[1]。目前有较多的深度学习算法对常规天气下的道路目标进行检测,取得了较好的效果,使用较为广泛的有以SSD[2]、YOLO[3]为代表的单阶段目标检测网络和以Faster R-CNN[4]为代表的双阶段目标检测网络等。在雾天情况下,因空气中存在大量的悬浮颗粒物,造成采集设备采集到的图像数据细节信息丢失,严重影响了交通道路上的车辆和行人检测。

针对雾天道路下的目标检测问题,目前解决方法多为同时使用去雾算法和检测算法,根据其实现方式主要分为去雾-检测无关联检测方法和去雾-检测有关联检测方法。其中陈琼红[5]提出了一种基于AOD-Net 和SSD 的雾天车辆检测方法,主要利用深度学习算法SSD 对经过去雾后的数据集进行特征学习和验证,其有较好的去雾检测效果。Jin[6]等对带雾图像先利用暗通道先验算法去雾,再利用卷积神经网络算法进一步实现去雾操作并完成检测任务,实现雾天场景下的车牌检测。黄开启[7]等提出一种基于改进YOLOv3 的目标检测算法,其先利用去雾算法对带雾图像进行去雾处理,再结合改进的目标检测算法实现了雾天场景下的道路目标检测,李轩[8]等提出一种复杂气象条件下的交通场景目标检测算法,引入DenseNet和膨胀卷积结构改进YOLOv3 结构,对复杂气象下拍摄的图片有较好的检测效果,但因其采用暗通道去雾算法对图片增强,对于含有天空区域图片处理效果较差。上述方法为去雾和检测无关联算法,受去雾算法影响,直接对经过去雾算法去雾后的图像检测,可能导致图像细节信息丢失,检测精度下降,且去雾和检测二者分开独立运行,内存容量花费较高。一些学者也提出了将去雾和检测算法相互结合的检测算法,例如Li[9]等将AOD-Net 网络与Faster RCNN 网络进行联合训练,实现去雾检测。解宇虹[10]等也提出一种将Faster RCNN和多种去雾算法相结合的联合去雾检测算法,有较高的检测精度但上述方法检测主干网络多为双阶段检测网络,检测速度受到一定限制,若将其直接用于交通目标检测,难以满足实时要求。

通过实验证明若对带雾图像进行去雾处理,其相似度等评价指标值和视觉效果能够有一定的提升,但是受去雾算法影响可能会导致图像失真和部分细节信息丢失,不利于后续执行检测任务。因此本文通过结合去雾和检测网络,构建一个端到端的去雾检测联合优化的网络模型A-YOLOv3。主要贡献如下:通过大气散射模型制作了适用于雾天道路目标检测数据集S-KITTI;基于改进的空间池化结构提出了一种端到端去雾模块;引入通道注意力机制,提出SE-ResNet 模块,改进DarkNet53 结构,提高特征提取性能;改进原FPN 结构,实现多尺度预测,提高目标检测率。

2 关键技术

A-YOLOv3 网络模型的设计主要由去雾、检测两个部分组成,其网络结构如图1 所示。网络中的DBL 是指卷积层、Batch Normolization 和Leaky relu激活函数;SE-Resn 表示引入注意力机制的残差块,Conv 表示卷积操作,SPP 为改进的空间金字塔池化结构。

图1 雾天道路检测网络

在去雾模块中,主要由五个卷积层构成,使用连接层补偿特征信息提取过程中造成的信息缺失,另外通过引入改进的SPP 模块加深对图像中霾结构的感知,使得网络能够更加准确地感知物体的边界信息,通过估算大气亮度值A和介质传输透射率t(x)实现网络的去雾操作。目标检测部分借鉴YOLOv3 思想,采用DarkNet53 网络实现特征信息提取,并通过在残差层中引入SE 通道注意力机制,使模型关注重点信息,避免了梯度扩散和梯度爆炸的问题,提高了模型的训练速度。在与DarkNet53 下采样提取的特征交互中,引入第四个特征层,实现多尺度的输出,其中最小比例尺大小为13*13,最大比例尺大小为104*104。

2.1 去雾

2.1.1 大气散射模型及其变形

大气散射模型[11]主要由入射光衰减模型和大气光成像模型两个部分组成,如式(1)所示:

其中,I(x)为雾天场景下拍摄的原始图像;J(x)为无雾的清晰图像;A为大气亮度;t(x)为介质传输透射率,当光线在均匀介质中传输时,表达式如式(2)所示:

其中,β为大气散射系数,当雾的浓度较均匀时,其值可以视作一个常数;d(x)为景物深度,反映景物与图像采集设备之间的距离信息,整理后可得去雾后的清晰图像表达式如式(3)所示:

从大气散射模型中恢复出无雾图像的关键是估计雾图的透射率和相应的大气光值,本文借鉴Li等人提出的思想,将大气亮度A和介质传输透射率t(x)两个变量参数统一为一个新的式子K(x),使神经网络模型直接估算透射率和大气光的联合值,完成图像的去雾任务,变形后的表达式如式(4)所示,

其中K(x)是A和t(x)整合的新变量,其表达式如式(5)所示,b为常数偏差,通常取值为1。

2.1.2 SPP结构

为分离上下文特征,增加感受野信息,便于后续融合全局特征信息,引入改进的空间金字塔池化结构[12],其结构如图2所示。

图2 改进后的空间金字塔池化结构

首先对输入的特征信息进行卷积操作,减少通道数;然后分别进行不同大小的最大池化操作,池化核分别为5,9,13,步长设置为1;最后将3个池化层和上一层的输出特征合并,输入到下一个卷积操作中实现特征学习,得到更加丰富的局部特征信息,SPP 网络结构的加入,可以极大地增加特征层的感受野,使全局和局部多尺度特征融合,获得更准确的信息。

2.2 检测

YOLOv3 采用去除全连接层的DarkNet53 作为特征提取网络,其融合残差网络思想,在网络中使用了大量的跳跃结构,该设计能够保证网络在训练的过程中收敛,并且能够改善随着网络深度增加而造成的梯度弥散问题,本文通过引入空间注意力机制和新增第四层检测层,提高模型识别精度。

2.2.1 融合注意力机制的残差网络

残差连接使得正向传播的特征保留,每一层的结果都是在之前的基础上得到的,这样的连接方式不仅能够防止网络梯度消失,还有利于网络的收敛。注意力机制能够使深度学习网络关注不同通道之间的特征关系,聚焦于重要信息,本文在残差密集块的基础上增添SE-Net(Sequeze and Excitation Network block,SE-block)通道注意力机制[13]。提高特征信息提取能力,融合通道注意力机制的残差结构如图3所示。

图3 引入注意力机制的残差块

2.2.2 多尺度检测

YOLOv3 借鉴了特征金字塔网络FPN 的检测框架,在三个尺度上实现目标检测,在检测过程中,三个输出分别用来检测小物体、中物体和大物体,对于检测大物体较为准确,但是在小物体方面,受到过多的卷积限制导致小物体特征信息丢失,存在漏检或位置信息不明确等现象。因此针对于特征金字塔FPN 结构进行改进,在模型中添加104*104这一尺度大小的特征图,将浅层特征上采样后与深层语义进行融合,作为第四层输出,实现了浅层特征和深层特征的融合,提高了定位精度。

2.3 联合网络损失函数

联合优化模型时,训练输入的学习样本分为三个部分:无雾图像、带雾图像和图像标注信息。通过输入无雾图像和带雾图像的输入对雾结构的特征进行学习,带雾图像和图像标注信息的输入实现对检测网络的训练。联合优化网络的损失函数由检测网络的损失函数和去雾网络的损失函数同时定义。本文采用均方误差函数作为去雾模块的损失函数,如式(6)所示:

原YOLOv3 检测网络的损失函数主要由三个部分组成:位置误差、分类误差、置信度误差,如式(7)所示:

对于去雾和检测网络联合优化的深度学习网络,训练时输入为无雾图像、带雾图像和图像标注信息三个参数,由联合模型统一实现去雾和检测学习,整体网络结构损失函数定义如式(8)所示。

3 实验

3.1 数据集制作

真实场景下的雾天道路目标数据集较少,制作雾天场景下的道路目标数据集成本较高,考虑到本文训练过程中需要同时利用原图和雾图信息,故采用合成雾图方式生成雾天道路下的目标检测数据集。

KITTI 数据集[14]是道路目标检测常用的数据集,共7481 张,包括“Car”、“Van”、“Truck”、“Pedestrian”、“Cyclist”、“Tram”、“Misc”、“DontCare”、“Person_sitting”九类。对数据集进行初步处理,将“Person_sitting”、“Pedestrian”合并为“person”类,将“Car”、“van”合并为“car”类,去掉“DontCare”、“Misc”两类。处理后的数据集分类为“car”、“person”、“Cyclist”、“Tram”四类。monodepth2[15]是一个单目深度估计自监督深度学习算法,通过其能够获得输入图像的深度信息图。本文结合大气散射公式,制作合成带雾数据集,制作流程见图4。

图4 数据集制作流程

其中大气散射光A值的每一个通道值在[0.7,1.0]中随机取值,t(x)计算式中的β值在[0.6,1.8]中随机取值。通过上述处理方式,在KITTI 数据集基础上合成雾天道路目标检测数据集,在后续实验中将经过上述方法处理的KITTI 数据集简称为S-KITTI,各步骤图见图5。

图5 数据集示例

3.2 实验环境与参数设置

在训练过程中,设置初始学习率为0.001,并在后续的训练过程中不断优化减少学习率,每次训练的选取的样本数设置为8,Momentum设置为0.9,使用Adam算法对模型进行优化,实验环境见表1。

表1 实验环境参数表

3.3 评价指标

本文采用均值平均精度mAP 和每秒传输帧数fps作为模型评价指标。其计算式如下:

其中AP为检测类别的平均精度值,n为类别数量;Npic表示检测图片数量,Ttime表示检测耗费时长。

3.4 实验结果

将自制数据集S-KITTI按照7∶1∶2的方式划分为训练集、验证集、测试集三个部分,通过对训练集和测试集采用不同处理方式,验证本文算法的有效性,部分实验测试结果图如图6所示。

图6 检测结果对比图

图6(a)是合成后的雾图,图6(b)为采用Darknet53 作为backbone 的YOLOv3 算法检测结果,其mAP 值为65.22%,从图示样例可见存在部分目标漏检,其检测性能一般;图6(c)为先进行AOD-Net去雾算法去雾处理后,再利用YOLOv3 算法测试,其测试结果为58.09%,经过去雾处理后不仅图像质量降低,检测性能甚至不如直接使用检测网络;图6(d)为文献[10]提出的算法,相比于前两种方式,其检测性能有较大提升,但仍存在部分目标漏检,其mAP 值为71.25%;图6(e)为文献[9]提出的算法,检测目标较为完整,但检测框与真实框重叠比较低,mAP 值为70.2%;图6(f)为本文提出的算法,相比于其余几种去雾检测方式,检测精度最高,能够基本实现雾天道路下的目标检测任务,其mAP值为72.5%;从检测精度,可以得出相比于其它训练方式,其精度有较大提升,验证了本文提出的联合优化算法的有效性,实验数据详见表2。

表2 实验数据表

实验证明单独的对图像去雾,虽然从视觉效果上有较好的去雾效果,但由于去雾环节照成的失真等问题,将会大大影响后续检测效果,同时也证明了本文提出的去雾检测联合优化网络对雾天场景图片检测的有效性。

另外,为充分验证本文算法的优越性,采用真实场景下数据集RTTS 作为测试集。图7 为评估结果,图7(a)为YOLOv3 测试结果图,对于真实道路下的雾天图片其检测效果较差,存在大量漏检;图7(b)为文献[11]提出的去雾方法,其去雾效果较好,但仍存在漏或误检;图7(c)为本文算法检测方法,其检测效果最好,能基本实现雾天道路目标检测。

图7 真实场景下的去雾检测效果对比

4 结语

本文提出了一种去雾和检测联合优化的道路目标检测算法,利用改进的空间金字塔池化结构构建去雾模块,并将其嵌入至引入通道注意力机制的YOLOv3 目标检测网络中,并通过新添一层检测层,提高网络小目标检测能力。对自制合成雾气数据集和真实雾天道路目标数据集测试,其有较好的检测效果,相比于YOLOv3 算法,检测精度提升了7%。本文还有进一步研究的方向:轻量化模型,便于后续移植至嵌入式设备中。

猜你喜欢
雾天道路特征
坚持中国道路——方向决定道路,道路决定命运
道听途说
为什么在雾天不适宜进行晨练
我们的道路更宽广
如何表达“特征”
不忠诚的四个特征
微波辐射计对昆明雾天的监测及应用
抓住特征巧观察
雾天高速公路交通安全风险评估
一次骑行带来的感悟