0 引 言
截至2022年,全国公路里程达到5.354 8×10
6 km,其中国道3.795×10
5 km,省道3.936×10
5 km,农村公路4.531 4×10
6 km
[1]。公路里程及交通流量的增长对路面状况提出了更高要求,但实际上在车辆载荷、环境以及人为干扰下,路面易出现各类破损、坑洞、裂纹、平整度变化问题,这些问题均可归结为“路面异常”。快速、准确地发现路面异常有利于道路的及时维护,对提升道路使用效率、保障道路使用寿命、减少行车安全隐患有着重要意义。
传统的人工巡检效率低且主观性强,而半自动化检测技术也难以完全解决这些问题。近年来,计算机视觉领域的技术进步为路面异常检测提供了新的支持。Li等
[2]提出一种基于YOLOv3的异物碎片检测算法,将特征金字塔网络(Feature pyramid network,FPN)融入YOLOv3网络进行多尺度特征融合,可以有效检测出跑道上的异物碎片。Shah等
[3]采用残差网络(Residual network,ResNet)进行坑洼、减速带及正常路面的分类,结合YOLO网络对减速带进行定位,但其模型训练数据缺乏雨天、低光照路面图像。Song等
[4]提出一种多尺度扩展卷积模型进行路面损伤检测,可以在复杂背景下有效获取裂纹特征。Kalfarisi等
[5]将结构化森林边缘检测(SRFED)与更快的基于区域的卷积神经网络(Faster R-CNN)相结合实现结构表面的裂缝检测。然而,现有研究多集中于坑洼和裂缝的检测,且缺乏对人工设施的识别,部分模型也缺乏车载部署能力。
针对复杂路面的多种异常状况,本文提出一种轻量化路面异常检测算法ATFL-YOLOv8,在实现检测网络轻量化的同时提升一定的检测精度,可用于车载部署以提升路面异常维护效率及行车安全性。本文主要工作如下:
(1)由于主流数据集RDD2020
[6]和RDD2022
[7]主要为国外道路且忽略了人工设施引起的路面异常,本研究构建一个包含坑洞、裂缝、井盖、减速带4种路面异常的共计3 024张图片的数据集。
(2)引入ADown卷积模块
[8]替换部分普通卷积,实现更高效的特征提取及采样操作。
(3)引入Triplet注意力机制
[9]提升模型的语义特征提取能力,增强模型鲁棒性。
(4)基于FasterNet网络
[10]中部分卷积(Partial convolution,PConv)思想构造出C2f-Faster模块,替换基线模型颈部网络部分的C2f模块,实现模型轻量化。
(5)引入LSCD-Head检测头(Lightweight shared convolutional detection head)
[11],通过共享卷积和尺度层缩放特征进一步提升检测能力并减少模型参数量。
1 YOLOv8模型
2015年,Redmon等
[12]开发出YOLOv1网络模型用于执行检测任务,由于其相较于同期的R-CNN算法
[13]有更快的检测速度,同时具备一定检测精度,在目标检测领域得到了广泛应用,后续在其基础上不断优化的YOLOv2~YOLOv8算法也为各领域的深入研究提供了性能卓越的检测方法。Ultralytics公司于2023年1月发布了YOLOv8,基于缩放系数提供n(nano)、s(small)、m(medium)、l(large)、x(extra large)5个不同大小的模型,其中YOLOv8n作为轻量级的版本,拥有较小的模型参数和文件大小,适合边缘计算和移动应用,本文选用其作为基线模型进行优化。
YOLOv8输入端采用数据增强操作提高了对小目标物体的检测效果,采用自适应锚框的方式调整输入图像尺寸,提升检测效率。主干网络主要由CBS卷积模块、C2f模块、快速空间金字塔池化模块(Spatial pyramid pooling fast,SPPF)堆叠而成,卷积模块和C2f模块主要用于特征提取,SPPF则负责以不同尺度进行池化操作,进行多尺度特征的融合。颈部网络采用特征金字塔网络和路径聚合网络(Path aggregation network,PAN)结构,进行浅层信息和深层特征的充分聚合,同时穿插有C2f模块扩大感受野,更充分地捕捉不同尺度目标的特征。检测头(Head)采用主流解耦头(Decoupled head),将分类和回归头解耦,根据颈部网络传递的特征精确预测目标位置和类别。
2 ATFL-YOLOv8检测算法
为有效提升车载式路面异常检测方式的效率,本文提出一种轻量化目标检测算法ATFL-YOLOv8。首先,采用ADown卷积模块替换部分主干网络及颈部网络结构中的普通卷积模块,实现特征提取与模型参数优化;其次,在基线模型主干网络结构的基础上引入Triplet注意力机制,使其更关注通道与空间维度的信息;再次,采用C2f-Faster模块替换颈部网络的C2f模块,减少冗余计算;最后,引入最新的LSCD-Head检测头进一步实现模型多尺度感知能力的提升。ATFL-YOLOv8网络结构如
图1所示。
2.1 ADown卷积模块
当检测目标及其特征相对不明显时,在主干网络的特征提取过程中,由于标准卷积使用较大步长进行采样,可能忽略部分微小特征,导致所提取到的特征不够完整,为改善此问题,本研究采用ADown卷积模块替换基线模型中的部分普通卷积,以实现更好的检测效果和模型轻量化。普通CBS卷积与ADown卷积模块网络结构对比如
图2所示。
输入张量通过平均池化层进行采样操作后沿通道维度将其分为两部分,一部分直接通过3×3卷积进行特征提取和维度变换;另一部分先通过3×3最大池化操作获取信息,后通过1×1卷积层进行特征提取和维度变换,最终将两部分的输出特征图沿通道维度进行拼接得到输出张量。该模块所引入的分支结构实现了更多的特征组合和信息交互,在一定程度上保留了更多的上下文信息,有效减少了特征丢失,使模型具有良好的不同尺度物体感知能力,小尺寸的卷积核可以使模块在保持较强特征表达能力的同时控制参数数量,更有利于模型的训练和提高推理效率。
2.2 Triplet注意力机制
Triplet Attention是一种轻量注意力机制,不同于SE(Squeeze-and-excitation)
[14]注意力机制可能带来的空间信息丢失以及CBAM(Convolutional block attention module)
[15]注意力机制忽略了通道注意力与空间注意力的相互依赖关系,Treplet注意力机制通过创建一个三分支结构捕获通道、高度、宽度3个维度之间的交互关系计算注意力权重,通过旋转输入张量和应用残差变换建立不同维度间的依赖,可以有效提高模型对特征的理解能力,有助于改善模型在处理复杂任务时的表现。其结构如
图3所示。
图中H、W、C分别为高度、宽度、通道维度。在最上层的第一分支中,输入张量(C×H×W),围绕H轴逆时针旋转90°生成张量(W×H×C)并输入Z-池化模块降维至(2×H×C),通过一7×7卷积核,经BN归一化处理得到(1×H×C),经过Sigmoid函数转化为注意力权重并作用于张量(W×H×C),再沿H轴顺时针旋转90°保持与原始输入张量一致,以此建立(C,H)之间的交互依赖关系。在中间层的第二分支用相似的方式绕W轴进行旋转建立起(H,W)维度之间的相互作用。最下层的第三分支则直接对输入张量进行Z-池化模块降维至(2×H×W),并逐步通过卷积核、BN归一化、Sigmoid函数转化为该分支的注意力权重并作用于张量(C×H×W)。最终,通过学习3个权重参数,将3个注意力分支获取的不同注意力特征经过简易平均计算整合到一起获得最终的输出张量。
2.3 C2f-Faster模块
C2f模块在特征提取的过程中可以获取到丰富的梯度流信息,但同时多个特征图携带了相同的信息,导致存在一定的信息冗余。本文新构建C2f
-Faster模块替换C2f模块,具体操作为采用轻量化网络FasterNet所提出的PConv部分卷积思想设计Faster Block结构替换C2f中的Bottleneck结构。PConv结构及Faster Block结构如
图4所示。
图4中
h、
w分别为张量的宽和高;
k为过滤器的尺寸;
cp为用于空间特征提取的通道。PConv模块只对图中虚线前部分的输入通道进行空间特征提取,并与虚线后部分通道进行拼接后输出。该操作可以很大程度保存原有通道信息且有效减少冗余计算。Faster Block结构以PConv作为主要算子,包括3×3的PConv层,后接1×1的Conv层并进行BN归一化以及ReLU激活操作,最终通过1×1的Conv层将其输出与PConv层的输出进行残差拼接得到最终输出。
采用Faster Block替换Bottleneck结构后每个Faster Block只需对原来的部分通道进行卷积,后续的1×1卷积计算开销较低,因此,Faster Block的计算开销要远低于Bottleneck,新构建的C2f-Faster可以在检测精度下降较小的前提下充分减少模型的计算量。
2.4 LSCD-Head检测头
YOLOv8中所采用的检测头存在部分局限,首先,检测头的计算参数量相对较大,所有的3个检测头分别通过两个3×3卷积和一个1×1卷积进行图像特征提取,导致了算法参数量的增加;其次,原算法采用的传统单尺度预测结构仅从一个尺度进行预测,从而忽略了其他尺度特征对检测的贡献。由此,本文采用一种全新的LSCD-Head检测头解决上述问题,其结构如
图5所示。
该结构采用共享卷积模块替换原检测头中的常规卷积模块,共享卷积模块将CBS卷积模块中的BN层替换为GN(Group normalization)层。通常在采用BN层进行归一化处理时,其统计信息的计算与批次大小相关,当批次变小时会导致统计均值和方法的计算不稳定,最终导致小批次高错误率的现象发生。GN层是为了克服BN层在算法中对批次性依赖过强的问题而提出的改进方法,GN层会将特征通道进行分组,并计算每一组之内的均值和方差,进而进行归一化操作,其计算与批量大小无关,且精度在各批量大小下保持稳定。
此外,共享卷积策略减少了模型参数量,降低了计算复杂度,适用于资源受限的设备。LSCD-Head结构接收P2~P4层级输入特征,首先使用卷积核为1×1的共享卷积进行处理,增加通道维度的信息交换;接着使用两个3×3卷积核的共享卷积进行信息聚合,减少冗余信息,增加相邻特征信息的学习概率;最后,将共享卷积提取的信息输入分类和回归头中,并通过Scale层进行特征缩放,增强多尺度特征的保留能力。
3 实验结果与分析
3.1 实验数据集制作
针对现有的路面异常检测数据集(RDD2020和RDD2022)存在不符合需求的问题,本研究自行构建路面异常数据集,图片获取来源主要分为4部分:①于RDD2020数据集中筛选出少量符合本研究行车视角的图像;②在4种异常路面处,采用私家车行车记录前置摄像头采集数据,并进行抽帧和裁剪,以获取路面异常图像;③使用人工手持智能手机维持行车视角拍摄,获取4种异常路面的图像;④部分图像来自网络,展示了行车视角下的异常路面情况。
图像数据采集完成后,采用labelImg图片标注工具进行PASCAL VOC格式标注,得到XML标注文件,文件标签包含坑洞、裂缝、井盖、减速带4类。同时,为了获取更为丰富的数据样本,防止模型发生过拟合,采用数据集增强技术进行图像运动模糊处理、图像雾化处理、图像色彩随机增强处理。图像增强处理后采用转换脚本将所有XML文件转换为网络模型需要的TXT格式,最终数据集包总共含3 024张图片,利用数据集划分程序,将数据集随机划分为训练集2 224张、测试集400张和验证集400张。
3.2 实验环境与参数配置
实验在社区企业版操作系统7.9(Community enterprise operating system,CentOS7.9)上进行,使用深度学习框架Pytorch 1.13.0,CUDA版本为11.3,编程语言为Python3.9,训练使用的图形处理器(GPU)为NVIDIA GeForce RTX 4090。主要训练参数设置为Batachsize=32,训练400轮。
3.3 实验评价指标
实验采用平均精确率mAP(mean Average precision)、参数量(Params)、浮点运算数(Floating point operations,FLOPs)以及模型大小作为评估检测性能的指标。精确率AP@0.5表示当IoU阈值取0.5时,某类别样本的精确度;平均精确率mAP@0.5表示IoU阈值取0.5时所有类别样本的平均精确率,mAP@0.5:0.95表示IoU从0.5到0.95,步长取0.05时的平均精确率。二者可以直观地反映模型检测性能。参数量表示模型的参数数量,用于衡量模型对显卡性能的需求程度,浮点运算次数用于衡量模型的复杂程度。
3.4 轻量化结构有效性分析
为验证本文算法所采用的轻量化结构ADown、C2f-Faster和LSCD-Head的有效性,在3.2节实验环境下同其他轻量化结构模型进行实验对比,评估结果见
表1。ShuffleNetV2、MoblieNetV3、GhostNet作为最常见的轻量级网络结构模型,通常被用于替换YOLO系列中的特征提取模块,以达到轻量化效果。由
表1可知,采用以上3种方式轻量化模型时,模型平均精度出现较明显下降;本文采用的C2f-Faster轻量化结构可以在精度下降较小的前提下有效轻量化模型;C2f-Faster和LSCD-Head则在轻量化的同时实现了模型检测精度的提升,并且三者轻量化的方向均不同,可以相结合以求达到最佳的轻量化模型-YOLOv8-ADown-C2f-Faster-LSCD-Head。该模型相较于基线模型参数量、浮现运算数量、模型大小分别降低约47%、37%、45%,mAP0.5、mAP@0.5:0.95分别提升1.9、2.0个百分点;相较于实验中轻量化效果最好的YOLOv8n-Ghost模型,参数量、模型大小均小于该模型,同时检测mAP0.5、mAP@0.5:0.95分别高出3.6、8.5个百分点。
3.5 消融对比实验
为验证每个改进模块对基线模型的优化效果,本研究在3.2节实验环境下进行了12组消融实验,评估结果见
表2。由
表2可知,针对行车视角下的路面异常检测,本研究改进的每个阶段相较基线模型均有提升。引入ADown卷积后模型参数量、浮点运算数量、模型大小分别下降约14%、9%、13%,mAP0.5、mAP@0.5:0.95分别提升1.3、0.2个百分点;引入Treplet Attention高效注意力机制后mAP0.5提升2.3个百分点,参数量、浮点运算数量、模型大小几乎没有增加;引入C2f-Faster模块后参数量、浮点运算数量、模型大小分别下降约11%、9%、11%,mAP0.5、mAP@0.5:0.95仅下降了0.6、1.0个百分点;引入LSCD-Head检测头后参数量、浮点运算数量、模型大小分别下降约21%、20%、21%,mAP0.5、mAP@0.5:0.95分别提升2.1、2.3个百分点。为进一步验证改进模块的有效性,本文对改进模块进行多种组合,以验证其性能。由于4部分改进模块位置不同,其改进效果存在一定影响,但整体检测性能得到提升,其中,模型参数量、浮点运算数量以及模型大小的下降呈累积式下降趋势,极大程度保留了本研究的轻量化效果。具体检测效果可参考
表2,其最终模型相较于基线模型mAP0.5、mAP@0.5:0.95分别提升3.1、4.2个百分点,参数量、浮点运算数量、模型大小分别下降47%、37%、45%。
3.6 同类型算法效果对比实验
为验证本文算法ATFL-YOLOv8相较当前热门检测模型的优越性,通过与单阶段检测模型中性能较优异的YOLOv3-tiny、YOLOv5n、YOLOv6、YOLOv7-tiny、YOLOv8s在3.2节实验环境下进行对比实验,评估结果见
表3。由表可知,YOLOv3-tiny、YOLOv6和YOLOv7-tiny模型的参数量、浮点运算数量以及模型大小相对较高,同时检测平均精确率均不太突出,不适用于本研究的检测任务;YOLOv5n模型在模型轻量化方面具备良好表现,但其参数量和模型大小均高于本模型,同时检测平均精确率相较于本模型仍有一定差距,其mAP0.5、mAP@0.5:0.95分别相差1.9、1.1个百分点;YOLOv8s模型则取得与本模型相近的检测效果,但参数量、浮点运算数量以及模型大小约为本模型的692%、552%、649%。以上数据进一步表明ATFL-YOLOv8模型具备良好的检测性能和轻量化能力,可以满足行车视角下的路面异常检测任务及后续部署的轻量化要求。
3.7 检测效果对比分析
为更直观地评价本文改进算法的性能,对YOLOv8n与本文算法在测试集上的检测结果进行对比。对比结果如
图6所示:(a)组图片在云雾环境下进行检测,基线模型出现坑洞漏检;(b)组图片在正常环境下行进行检测,基线模型出现裂缝漏检;(c)组图片模拟雨天环境进行检测,基线模型出现井盖漏检;(d)组图片在模拟运动模糊场景下进行检测,基线模型针对同一减速带生成两个高度重叠的预测框。相较于基线模型,ATFL-YOLOv8在轻量化的同时对复杂行车视角下的检测依旧有很好的性能,进一步证明了改进模型的有效性和实用性。
3.8 实车检测性能验证
为验证本研究的可行性,进行了实车检测性能分析。实验在Windows 11专业版系统上进行,使用深度学习框架Pytorch1.10.2,CUDA版本为10.2,图形处理器(GPU)为NVIDIA GeForceMX550,通过调用外接摄像头的形式获取行车过程中的实时视频进行检测,外接摄像头通过磁性吸盘固定于车辆正前方挡风玻璃后,在该实验条件下以30 km/h通过异常路面,所获取的检测图像如
图7所示。
由
图7可见,在低速下ATFL-YOLOv8检测算法具备一定的检测效果,同时通过计算可得在上述实验条件下ATFL-YOLOv8模型每秒能检测的帧图像数量(FPS)
[16]达到65.08,在该实验条件下测得基线模型FPS为52.47,证明本文ATFL-YOLOv8检测算法在低算力设备上也具备一定的时效性,基本满足实时检测要求。
4 结束语
针对复杂路面的多种异常状况,为实现行车端快速、准确的路面异常检测,为后续的路面异常自主定位以及路面异常信息报警提供支撑,本文提出了一种轻量化路面异常检测算法ATFL-YOLOv8。通过构建行车视角下的路面异常数据集(坑洞、裂缝、井盖、减速带),并对基线模型进行改进:引入ADown卷积模块进行高效特征提取,引入Triplet注意力机制提取高阶语义特征,引入C2f-Faster模块减少特征通道中的信息冗余,引入LSCD-Head检测头进行特征缩放以提升检测能力并减少模型参数量。实验表明最终模型在该数据集上相较基线模型mAP0.5与mAP@0.5:0.95分别提升3.1、4.2个百分点,达到89.9%、59.7%;同时,参数量、浮点运算数量、模型大小分别下降47%、37%、45%,降至1.61 M、5.2 G、3.31 MB。且最终模型通过实车检测性能验证,表明该算法具备低速下行车端的路面异常检测功能。