基于BiFPN-YOLOv5的公路养护检测算法
2023-07-11李成袁
李成袁
关键词:公路养护; 目标检测; YOLOv5; BiFPN; SIou loss
0 引言
公路是中国最重要的交通设施,为我国经济发展带来了基础与保障[1]。目前我国高速公路已达到14.96万km,虽然我国公路已取得了巨大的成就,但其中有60%的公路年限超过了8年,导致公路的养护问题逐渐成为公路管理的主要任务[2]。公路养护问题上最核心的问题是如何快速精准地检测到公路损坏的位置,目前最主流的方式是通过人工对公路健康状态进行巡查与记录,但依赖人工的方式会浪费大量的人力与物力,同时人工的方式通常会出现漏检与误检的情况,因此利用目标检测算法来对公路情况进行实时检查与记录具有较强的现实意义[3]。
随着深度学习的发展,目标检测算法从传统的帧差法[4]与光流法[5]发展为基于深度学习的目标检测算法,但基于深度学习的目标检测算法中主要可分为One-stage 与Two-stage 两类,其中Two-stage 方法以RCNN系列改进算法为代表[6],其特点为检测时分为两个阶段进行检测,第一阶段检测目标图片的候选框,然后第二阶段再对检测到的候选框进行分类与回归操作,从而得到高精度的检测框。但该类方法由于需要两阶段分步进行检测,因此检测的效率相对较低。为了解决此问题,One-stage方法被提出,其中最具代表的方法的YOLO系列算法[7],其核心思想是通过一个网络直接输出候选框的位置信息与类别。由于该类方法具有更快的检测效率与足够的精度,因此在路面检测领域有着广泛的应用,如豆世豪[8]提出的改进YOLOv3的道路场景目标检测方法,通过对YO?LOv3引入SPP模块实现局部特征与全局特征的融合,但由于其网络相对复杂导致检测效率相对较低,为此杨登杰[9]提出了一种使用MobileNetV3-YOLOv4的检测算法,且轻量化改进YOLOv4的主干特征网络,将原来的YOLOv4的CSPDarknet53主干特征网络用轻量级网络Mobile-NetV3进行替换,从而得到了更快的检测速度。
随着YOLOv5[10]的提出,其检测效率与精度都优于YOLOv4,但在公路损坏检测中由于复杂的背景与严重的遮挡,导致其精度不足,因此本文提出了BiF?PN-YOLOv5算法,通过使用BiFPN替换FPN,从而使得模块能够融合不同尺度的特征进行检测,同时使用SIoU loss重新定义定位损失函数,提高了模型训练的速度和推理的准确性。
1 公路路面养护数据集制作
1.1 数据获取
检测对象主要為需要养护的物体与干扰项,数据集类别如表1所示。采集设备为巡逻车上的高清摄像头,其分辨率为1 280×720,拍摄时为了获得更广的视野与稳定性,因此通过搭建平台把摄像头固定在车顶,如图1所示。经过对拍摄的摄像进行逐帧截取,再对其筛选掉模糊、过度曝光与重复的图片,获得3 000 张公路路面图片。
1.2 数据标记
目测检测模型以监督学习的方式进行训练,因此需要对需要的养护的物体与干扰项进行标记,在标注时将养护物体最小外接矩阵框作为养护物体的真实框,肉眼可见的干扰项的最小外接矩阵框作为干扰项的真实框。标注工具为了能够在线进行分工检测,因此选用在线标记工具MAKE SENSE,通过对目标物体进行标记后能够自动输出其标记的XML文件,生成的XML格式文件主要包含:宽、高、维度和已标注的类别以及左上角坐标和右上角坐标等信息。
2 基于BiFPN-YOLOv5的公路养护检测算法
为了更精准地检测小目标物体,因此Bochkovskiy 等人[11]在2020年提出YOLOv4来解决此问题,随后在2021年该团队提出了YOLOv5,通过引入了多尺度的思想来使得模型能够同时检测不同尺寸物体,并改进了骨干网络的设计提升了模型检测的速度,从而使得模型的其精度与实时性都得到改善,因此YOLOv5更为适合于公路养护检测中。
虽然YOLOv5能够有效及实时地检测目标物体,但是由于公路养护检测中存在大量不同尺度的物体需要进行检测,同时在车辆的运动过程中,检测物体的大小也实时变化,因此YOLOv5对不同尺度的特征进行融合时,通常需要把不同尺度的物体调整到相同的尺度,然后再对目标物体进行相加融合。YOLOv5 不同尺度的特征采用平等对待的方式,但实际公路养护检测过程中不同尺度的物体对输出特征的贡献往往是不同的。同时在公路养护检测过程中,检测的物体是随着车辆加速度方向不同从而检测物体移动的方向也会不同,如果不考虑检测框与真实框中心点的移动方向会导致收敛速度较慢且效率较低,且预测框可能在训练过程中找不到正确方向移动导致最终的检测模型性能降低。
为了解决公路养护检测过程中存在的上述两个问题,因此本文提出了BiFPN-YOLOv5算法,该算法在YOLOv5基础上主要进行两个部分的改进,首先是提出了使用BiFPN[12]方法进行不同大小特征的加权特征融合,为每个输入的特征增加一个权重,从而使模型能够学习每个输入特征的重要程度,此外提出了使用SIoU loss来改进传统的无方向定位损失,该方法通过考虑所需回归之间的向量角度,重新定义了惩罚指标。下面两个小节将会介绍具体如何实现。
2.1 改进的定位损失函数
YOLOv5中的定位损失函数采用的CIoU loss,该方法不仅考虑了重叠框与预测框中心点的距离,也考虑了重叠与不重叠时稳定性的问题,但是从收敛角度并没有考虑,会导致最终的模型难以收敛,且找不到适合的收敛方向,因此本文提出使用SIoU loss来寻找预测框中心点到真实框中心点最优移动角度,从而使得模型能够向正确的方向进行收敛。
首先通过在CIoU loss的基础上引入真实框和预测框之间的向量角度,再重新定义了定位损失函数,其主要由四个损失项构成:
1)角度损失
角度损失的基本思想是让模型的预测框快速的先移动到最近的坐标轴,之后仅沿着一个方向X或Y 轴进行回归坐标,从而增加角度损失来减少了自由度的数量。如图2所示,为了向一个方向进行收敛,因此角度损失函数的计算公式如下:
2.2 改进的多特征融合方法
在YOLOv5中采用的多特征融合方式对不同尺度的特征融合采用相同的权重,而真实情况中不同尺度的特征对输出特征的贡献度并不相同,因此本文引入双向特征金字塔(BiFPN)来使得网络能够通过不同的权重对不同的输入的特征进行学习,同时反复使用自顶向下与自底向上的方式进行多尺度特征的融合。
BiFPN在不同大小的尺度特征进行融合时,通过上采样与下采样操作相同分辨率的特征,同时在相同特征的输入与输出节点使用横向连接,使得模型能够在不增加计算成本的情况下融合更多有效特征,且BiFPN 中一对路径可作为一个独立的特征层,BiFPN自身作为一个基本单元,反复多次从而使得高层特征得以融合,其网络结构如图3所示。
本文提出的BiFPN-YOLOv5的整体结构图如图4 所示,将原本的PANet结构改进为BiFP结构,从而使得模型能够更好对不同大小的特征进行融合。
3 实验方法及结果分析
本实验在Windows11操作系统,采用Python作为编程语言,利用PyTorch使用显卡cuda为计算加速。设备运行环境:Intel(R) Core(TM) i5-10600KF 处理器,GeForce RTX 3080显卡,内存为32G。数据采用本文制作的公路路面养护数据集,其中训练集2 000张,验证集500张,测试集500张,通过对YOLOv5及BiFPNYOLOv5進行训练,再对公路路面进行检测结果进行分析比较,验证本文算法的有效性。
3.1 评价指标
本实验评价指标选用Precision、Recall、mAP作为评价指标,目标检测过程中漏检目标个数为FN表示,正确检测个数为TP表示,错误检测个数为FP表示,Precision与Recall的计算公式如下:
4.2 实验结果
为了验证本文算法的有效性,选用YOLOv5作为对比算法,并且用YOLOv5+YOLOv5+CIoU loss作为消融对比算法,实验结果如表2所示。可以看出使用SLoU定位损失函数能够有效提高模型的mAP,相比YOLOv5提高了3.36%,在此基础上使用BiFPN对不同尺度的特征进行融合能够使得召回率与mAP同时得到比较明显的提升,这主要是因为BiFPN-YOLOv5能通过上采样与下采样操作相同分辨率的特征,同时在相同特征的输入与输出节点使用横向连接,从而使得模型能有效提升其检测性能。
实验结果对比图如图5所示,可以看出YOLOv5 对于中间的小车存在重复检测的情况,把小车同时检测为卡车和小车,但本文算法能够避免重复检测问题,同时本文算法通过引入BiFPN能够获取更多小尺度的特征,从(a)中看到本文算法能够有效检测交通标志,而YOLOv5存在漏检的情况。综上所述,本文算法对小物体的检测能够有所提升同时能够减少检测框重复的问题。
4 结束语
针对公路养护过程中需要养护的物体与干扰项的检测过程存在大量遮挡问题,且随着车辆移动拍摄的图片中目标物体的大小也存在不确定性,因此提出了BiFPN-YOLOv5算法来对需要养护物体更为精准地检测,通过使用BiFPN来替换原本的PANet结构,BiFPN中对不同尺度的特征加入了不同权重,从而不同尺度的特征层对输出结果影响程度不同,使模型能更好使用特征语义;同时使用SIoU loss来改进原本的CIou loss,使得模型能够有效寻找预测框中心点到真实框中心点最优移动角度,从而使得模型能够向正确的方向进行收敛。同时通过实验证明本文算法能够有效应用于公路养护过程中目标检测中,未来将侧重于轻量化模型大小与结构,使得算法能够保证精度的情况下提升其实时性。