摘要
针对桥梁裂缝识别效率低、实时性差等问题,本文提出一种基于改进YOLOv8模型的桥梁裂缝无人机图像检测方法.首先,将动态蛇形卷积核融入YOLOv8骨干部分中的C2f模块,以增强裂缝特征提取能力;然后,引入CAM模块,提升小目标检测能力;最后,通过优化预测框损失函数,减少了低质量数据集对检测结果的影响.实验结果表明,改进后模型的GFLOPs达到14.4,mAP@50达到94%,较基础模型实现了较大的精度提升,检测速度达到147帧/s,能够满足无人机实时裂缝检测需求.
Abstract
To tackle the current challenges of low efficiency,poor performance,and inadequate real-time capabilities in bridge crack detection,this paper introduces a drone-based image detection method for bridge cracks using an improved YOLOv8 model.Firstly,the dynamic snake convolution kernel is integrated into the C2f module in the backbone of YOLOv8 to enhance the crack feature extraction.Then,the Context Augmentation Module (CAM) is introduced to improve the detection capability for small targets.Finally,the influence of low-quality datasets on detection results is reduced via optimizing the prediction box loss function.Experimental results show that the improved model achieves a GFLOPs of 14.4 and a mean Average Precision (mAP@50) of 94%,exhibiting a significant accuracy improvement compared to the baseline models.The detection speed reaches 147 frames per second,satisfying the requirements for real-time crack detection by UAVs.
Keywords
0 引言
在混凝土桥梁中,裂缝病害是一种最为常见的混凝土桥梁结构性表观损伤,其发生的位置和表观形态都不固定.裂缝的出现不利于混凝土对内部钢筋的保护,导致钢筋的有效使用周期缩短,增加了使用危险性.由于桥梁自身结构复杂、裂缝形态各异以及图像背景干扰等因素影响,人工检测和传统数字图像处理检测的方法难以满足实际工程所需[1],急需一种更高效、准确的桥梁裂缝检测方法.
针对桥梁特性,一些学者设计了专用检测设备,如基于车辆的图像采集系统、环形攀爬机器人和水下机器人等[2-5],但上述专用检测设备在桥梁结构限制下均存在局限性.而采用无人机检测则无需直接接触桥梁结构,可以有效降低作业人员的安全风险.例如:钟新谷等[6]使用旋翼无人机搭载相机获取桥梁表面裂缝图像;Sanchez-Cuevas等[7]为无人机添加了保护装置,采用贴近摄影测量方式获取桥梁裂缝图像.为了进一步提升桥梁检测的精度和效率,融合深度学习技术进行桥梁裂缝检测已成为一个新的研究热点.
深度学习方法在鲁棒性和普适性方面均优于传统的人工检测和数字图像处理方法,可以用于处理形态各异以及复杂背景的裂缝图像[8].目前,基于深度学习的方法大致可以分为基于候选区的两阶段目标检测算法和基于回归的单阶段目标检测算法两类.基于候选区的两阶段目标检测算法,其代表算法有R-CNN[9]、Fast R-CNN[10]、Mask R-CNN[11]等,这类目标检测算法主要是通过生成候选区,再对其进行分类和边界框回归,从而完成裂缝识别与检测.例如:余加勇等[12]基于Mask R-CNN方法,采用矩形滑动窗口的方式对图像进行扫描,实现对裂缝的自动检测;Nayyeri等[13]基于ResNet提出MR-CrackNet,实现了较高精度的裂缝检测;谭国金等[14]在DeepLabv3+模型中加入YOLOF和ResNet模块进行改进,增强了检测精度.基于回归的单阶段目标检测算法,其代表算法有OverFeat[15]、YOLO系列[16]等,这类目标检测算法不需要生成兴趣区域,直接在网络中同时预测类别和边界框的位置,实现裂缝识别与检测.例如:蔡逢煌等[17]利用YOLOv3结合深度可分离卷积和注意力机制,提出一种轻量级检测网络;Xiang等[18]基于YOLOv5s提出一种轻量级的无人机道路裂缝检测模型.相较于两阶段目标检测算法,单阶段目标检测算法速度更快,实时性更强,更适用于实时检测任务.尽管上述方法在一定程度上提升了裂缝检测的精度,但是仍存在一些共性问题,如文献[12-14]采用的两阶段目标检测算法检测速度相对缓慢,难以适应对实时性要求较高的场景,文献[17]所提出算法主要针对特征明显且背景简单的裂缝,而文献[18]所提出的算法虽然保证了模型的轻量化,提升了检测速度,但裂缝检测精度仍有待提高.
针对裂缝特征提取效果不佳、背景干扰以及检测精度与速度之间的不平衡问题,本文提出基于YOLOv8n-seg改进的YOLOv8-crack模型,具体如下:
1)针对裂缝细长且不规则的特性,引入动态蛇形卷积核,通过卷积核的自由选择以及连续性约束加强模型对裂缝特征的提取能力;
2)在无人机视角下,除裂缝主体外还存在大量干扰背景,为此,引入上下文增强模块(Context Augmentation Module,CAM),扩大模型的感受野,增强模型对裂缝的理解能力;
3)针对裂缝数据集存在一定的低质量标注问题,引入Focal-GIoU损失函数优化裂缝数据集训练效果.
1 YOLOv8-crack模型
YOLOv8是Ultralytics公司YOLO系列的最新版本,由骨干网络(Backbone)、颈部网络(Neck)和检测头(Head)2部分组成,它们的作用依次为特征提取、特征融合和预测.
本文采用动态蛇形卷积(Dynamic Snake Convolution)[19]对骨干网络部分的C2f模块进行改进.同时,在模型中引入上下文信息增强模块CAM.最后,采用Focal-GIoU损失函数对预测框损失函数进行改进.将改进后YOLOv8-seg模型命名为YOLOv8-crack,其结构如图1所示.图1中,骨干网络部分(Backbone)是模型的特征提取部分,采用Darknet-53框架,本文将基础模型所串行的4个C2f模块的首尾替换为DS_C2f模块,并将Backbone末尾的SPPF模块替换为CAM模块.颈部网络(Neck)是模型的特征融合部分,采用PAN-FPN(Path Aggregation Network-Feature Pyramid Network)的思想.检测头(Head)是模型的预测部分,包含3个拥有不同尺寸的检测头来对不同大小的目标物体进行检测输出,本文将基础模型所采用的CIoU损失函数替换为Focal-GIoU损失函数.
1.1 C2f模块改进
动态蛇形卷积核借鉴形变卷积核的思想,在方形卷积核中引入偏置量.在此基础上,将方形卷积核在x轴和y轴方向拉直,进一步贴近细长条状物结构.同时,为保证卷积核在自由选择时感受的连续性,将连续性约束加入卷积核的设计中,通过前一步位置对后一步位置的约束,使得卷积核在保证自由性的前提下保持连续性.卷积核在x轴和y轴上的摆动位置以及方向如式(1)、(2)所示.以卷积核在x轴上的摆动为例,通过定量c控制卷积核沿x轴方向运动,再通过偏置距离∑Δy控制卷积核在y轴方向偏置,从而完成卷积核的变形,如图2所示.

图1YOLOv8-crack网络结构
Fig.1YOLOv8-crack network structure
(1)
(2)
式中:c={0,1,2,3,4};Kn±c,Km±c表示特征提取的位置;xn±c和xm±c表示在x轴上的前进距离;ym±c和yn±c表示在y轴上的前进距离;∑Δx和∑Δy分别表示卷积核在x轴和y轴上的偏置距离.
因为方形卷积核对于裂缝类细长不规则条状物特征提取效果不佳,所以利用动态蛇形卷积核对作用为特征提取的骨干网络部分进行修改,将动态蛇形卷积加入C2f模块的Bottleneck中.动态蛇形卷积核能更好地获取细小结构特征,有效提高细长状结构物的检测精度.
C2f模块是一个重要的特征融合模块,当特征图输入后,先经过一次卷积将通道数调整为输入通道数的2倍,然后通过Spilt模块将特征图分为两部分,一部分通过多个Bottleneck逐步提取特征后,再与另一部分进行拼接,最后通过一个卷积将拼接后的特征图调整到所需的输出通道数.

图2动态蛇形卷积摆动过程
Fig.2Oscillation processes of dynamic snake convolution kernel
Bottleneck是C2f模块的重要组成部分,由2个3×3的方形卷积核构成,其作用在于提高特征提取的能力.将这2个方形卷积核替换为动态蛇形卷积核形成一个新的模块,命名为DS_Bottleneck,并对C2f模块中的Bottleneck进行替换形成一个新的模块,命名为DS_C2f,如图3所示.
1.2 上下文信息增强模块CAM
CAM的设计思路来源于人类识别物体的模式,如识别一只天空中的飞鸟时,若不结合上下文信息“天空背景”,则很难辨别,当加上“天空背景”时,就比较容易将其辨别为飞鸟.在桥梁裂缝检测中同样存在大量背景干扰,当加入CAM后,模型能得到上下文信息,即裂缝不是独立存在,而是位于桥梁之上,这种思想的加入可以有效地降低背景干扰,进一步提高裂缝检测精度.

图3C2f、DS_C2f模块与子模块
Fig.3Modules of C2f, DS_C2f and their sub-modules
本文将CAM模块引入模型,使其能够以不同卷积速率的空洞卷积获得不同感受野的上下文信息,从而使得裂缝特征与其周围的特征信息相结合,变相增强裂缝的特征信息,最终增强模型对裂缝的理解能力,提升模型在复杂背景下的抗干扰能力.
CAM模块结构如图4所示.将Backbone部分输出的图像经过空洞卷积,再将处理后的3个特征图经Concat函数拼接后输入网络结构的下一层进行处理.

图4CAM模块
Fig.4Context augmentation module
1.3 预测框损失函数优化
在损失函数计算方面,基线模型采用Task Aligned Assigner正样本分配策略,由分类损失(BCE)和回归损失(CIoU+DFL)2个部分的3个损失函数加权组合而成.针对基线模型CIoU损失函数在训练时损失曲线振荡以及正负样本失衡问题,引入Focal-GIoU损失函数.Focal-GIoU损失函数由Focal损失函数和GIoU函数耦合而成.Focal损失函数定义如下:
(3)
式中:pt为模型对当前样本的预测概率;αt为平衡因子,用来调整正负样本的损失权重;γ是一个控制曲线弧度的超参.
Focal损失函数主要是为了解决单阶段目标检测中正负样本数量极不平衡问题.在裂缝检测模型训练中,数据集中所呈现的正常区域远大于裂缝区域.通过引入Focal损失函数,可以使模型聚焦裂缝区域,减少对非裂缝区域的过拟合,从而提高模型的裂缝检测性能.
IoU是目标检测中常用的评价指标,用于反映预测的效果,定义如下:
(4)
式中:A为预测检测框;B为真实框.IoU的优点在于其具有尺度不变性以及满足非负性和对称性,但当两个框之间没有交集时,IoU值恒为0,损失值恒为1,此时,预测框和真实框之间的距离无法被衡量.而GIoU则引入最小包闭框概念,即能将预测框和真实框同时包裹的最小矩形框,定义如下:
(5)
(6)
式中:C为最小包闭框;A为预测检测框;B为真实框;\表示相减.最小包闭框的引入解决了在IoU中两个框之间没有交集时出现的问题,GIoU能够反映出两框之间的重叠方式.因此,GIoU损失函数的使用可以更好地适应目标的形状变化和尺度变化,提高裂缝检测的精度.
结合式(3)—(6)可得Focal-GIoU损失函数的表达式如下:
(7)
在本文中,γ取值0.5 [20].
2 实验与分析
2.1 数据集与环境配置
本文采用的数据集为SDNET(Structural Defects Network)2018[21]和Crack-seg(https://universe.roboflow.com/university-bswxt/crack-bphdr?).SDNET2018包含大小为256×256(像素)可用混凝土裂缝图像620张,通过翻转、旋转将数据集扩充到1 069张,并以4∶1的比例将数据集划分为训练集和验证集;Crack-seg包含846张可用墙面裂缝图像,通过翻转、旋转将数据集扩充到1 484张,并以4∶1的比例将数据集划分为训练集和验证集.考虑到数据集样本较少,在训练过程中启用mosaic数据增强方法,该方法随机选择数据集中4张图片,随机缩放后再随机进行拼接,在有效扩充训练数据集的同时增强模型的鲁棒性.裂缝检测模型训练环境如表1所示.
表1训练环境
Table1Training environment

训练时,采用随机权重进行训练,批量大小设置为16,最大训练周期轮数为500,为防止训练轮数过多出现过拟合情况,将耐心值(patience)设置为50,采用最佳训练权重构建裂缝检测模型.
2.2 评价指标
为对裂缝检测模型性能进行量化分析,采用不同的指标对模型进行综合分析,具体如下:
(8)
(9)
(10)
(11)
(12)
式中:TP(真正例)表示模型在含有裂缝的图像中正确检测出裂缝;FN(假反例)表示模型在含有裂缝的图像中没有检测出裂缝;TN(真反例)表示模型在不含裂缝的图像中未将其他目标错误检测为裂缝;FP(假正例)表示模型在不含裂缝的图像中将其他目标错误检测为裂缝;P表示模型准确率,即模型所预测裂缝中有多少比例为裂缝;R表示模型召回率,即在包含有裂缝的图像中,模型所预测出含有裂缝图像的比例;F1是P和R的调和平均数,兼顾了准确率和召回率;AP表示一类样本平均准确率;mAP表示所有样本平均准确率.mAP@50表示IoU阈值为0.5;mAP@50~95表示IoU阈值在0.5到0.95之间、间隔0.05所取得10个mAP值的平均值;FPS表示模型每秒处理的图像帧数;GFLOPs,即每秒10亿次的浮点运算数.
2.3 消融实验
2.3.1 DS_C2f消融实验
为验证基于动态蛇形卷积核改进的DS_C2f在Backbone中的效果,在加入CAM模块和Focal-GIoU损失函数的基础上,设计11组消融实验,选用不同组合对Backbone中连续的4个C2f进行部分替换和全部替换,消融实验结果如表2所示.表中,方法列的x-y表示将x位置和y位置的C2f替换为DS_C2f,如1-2表示将位置1和位置2的C2f替换为DS_C2f,1-2-3表示将位置1和位置2以及位置3的C2f替换为DS_C2f.其中,1-4组合在检测任务中展现了良好的性能优势,尤其在精确度、召回率和mAP指标上表现突出,尽管其计算复杂度略高,但并未显著影响其在检测性能上的表现.
表2DS_C2f消融实验
Table2Ablation experiment of DS_C2f

2.3.2 模块消融实验
以YOLOv8n-seg模型为基础模型进行消融实验,结果如表3所示.A、B、C模型是在基础模型上分别加入DS_C2f、Focal-GIoU、CAM模块后所得.由表3可知,Focal-GIoU和CAM的加入使得模型各项性能得到一定提升,但DS_C2f对模型产生了一定的负优化.其中,加入Focal-GIoU损失函数得到的B模型优化效果最佳.B模型的精度与基础模型持平,R、mAP@50、mAP@50~95分别提升4.2%、2.1%和1.8%,FPS提升5帧/s.如图5所示,将Focal-CIoU和Focal-GIoU损失函数分别加入基础模型并与基础模型的CIoU损失函数进行对比实验,在耐心值设定为50轮的情况下,Focal-GIoU、CIoU在282轮收敛,Focal-CIoU在296轮收敛,Focal-GIoU、Focal-CIoU、CIoU的mAP@50分别为0.912、0.900、0.893.通过Focal和CIoU的耦合,证明了Focal的耦合能够有效提升模型检测精度.同时,Focal-GIoU在收敛轮数相同的情况下,收敛精度高于CIoU,也证明了Focal-GIoU对于基础模型改进的有效性.
表3模块消融实验结果
Table3Module ablation experiment results


图5不同损失函数下模型精度对比
Fig.5Comparison of model accuracy under different loss functions
从模块两两组合效果来看,DS_C2f在加入Focal-GIoU损失函数后(D模型),P、R、mAP@50分别提升2.4%、6.0%和1.9%;同样,E、F模型中,各项指标均有所提升.最后,将所有改进加入基线模型得到G模型,G模型的P、R、mAP@50、mAP@50~95分别为0.899、0.886、0.940、0.794,相较于基线模型分别提升2.86%、4.48%、5.26%、3.93%,体现了本文改进的有效性和互补性.G模型的GFLOPs为14.4,FPS较基线模型有所下降,但仍可以达到147帧/s,能够满足实时检测的要求.
表4模型对比试验结果
Table4Model comparison results

2.4 对比试验
2.4.1 模型对比实验
为体现本文所提出改进在检测精度和速度上的优越性和平衡性,将本文算法在相同硬件和数据集下与YOLO系列算法进行对比,包括YOLOv5n-seg、YOLOv9-c-dseg[22]和最新的YOLOv11n-seg,表4给出了不同算法的评价结果.
由表4可知,本文算法的各项评价指标与YOLOv9-c-dseg相当,但是YOLOv9-c-dseg的算法复杂度达368.6,远高于本文算法,这也造成YOLOv9-c-dseg的检测速度只有65帧/s,较本文算法降低82帧/s.YOLOv5n-seg、YOLOv8n-seg和YOLOv11n-seg的检测速度高于本文算法,但是其他指标均低于本文算法.本文算法各项指标良好,检测速度为147帧/s,能够满足实时检测的需求.
2.4.2 数据集对比实验
为证明改进模型的普适性,本文采用Crack-seg数据集对YOLOv8n-seg和本文算法在相同硬件和参数下进行训练,训练结果如表5所示.由表5可知,本文算法的P、R、mAP@50和mAP@50~95指标均优于YOLOv8n-seg,体现了本文改进算法的普适性.
表5数据集对比实验结果
Table5Dataset comparison experiment results

2.5 可视化分析
在未参加训练的SDNET2018数据集中任意挑选30张裂缝图像,使用表3中各模型进行检测,裂缝检测效果可视化对比如图6所示.图6中,黄色框表示误识别,蓝色框表示漏识别.在基础模型的检测结果(图6a)中可以看到,基础模型错误地将阴影区域识别为裂缝,且对于一些特征较弱的裂缝,基础模型出现漏识别的情况.随着多种改进的加入,模型的误识别和漏识别概率逐渐下降,最终的G模型(图6h)未出现误识别情况,但对于一些特征弱的裂缝仍不可避免地出现漏识别情况.
图6裂缝检测效果可视化对比
Fig.6Visual comparison of crack detection effect
3 结束语
本文提出一种改进YOLOv8n-seg的裂缝检测算法,旨在提升桥梁裂缝检测的准确性和效率.考虑到现有算法中裂缝识别的难点问题和无人机计算负担,采用YOLOv8-seg参数量最小的n模型作为基线模型,主要从特征提取和损失函数方向对模型进行优化,通过加入动态蛇形卷积核改善模型对裂缝类不规则条状物特征信息提取能力,加入上下文信息增强模块CAM,扩大感受野,减少多余背景对裂缝检测的干扰,从而提升模型裂缝检测精度.此外,将损失函数替换为Focal-GIoU使得模型能够更加关注裂缝区域,减少对非裂缝区域的过拟合.从消融实验结果可以看出,本文所提出改进模型的mAP@50达到94%,实现了较大的精度提升,检测速度达到147帧/s,能够满足无人机实时裂缝检测需求.
为了进一步提高无人机裂缝检测模型在复杂环境下的检测精度,今后研究中将进一步收集不同环境、不同材质条件下的裂缝图像以提高模型的泛化能力,使模型能够更好地适应各种复杂的现实场景.同时,为增加检测模型的应用范围,将增加样本类型如坑槽、腐蚀和修补等.此外,还将对算法进一步改进,提取裂缝检测结果与设施之间的相对定位信息,使模型能够更快速、准确地定位裂缝位置.