针对当前桥梁裂缝检测算法存在的错检、漏检等问题,本文对现有桥梁裂缝检测算法的进行了改进。首先,引入CBAM注意力机制,增强网络对裂缝边缘特征的提取能力,提升模型的检测精度;其次,基于SPPF对SPP的改进方法,使用改进后的SPPFCSPC模块替换SPPCSPC模块;最后,采用 WIOU损失函数,提升了网络模型的收敛速度。经实验验证,本文改进的模型对桥梁裂缝的检测精度高达87.1%,较YOLOv7模型提高了8.8%, mAP值为85.4%,较YOLOv7模型提高了9.3%,能够满足当前桥梁裂缝检测需求。 Aiming at the current bridge crack detection algorithm’s problems such as misdetection and omission, this paper improves the existing bridge crack detection algorithm. Firstly, the CBAM attention mechanism is introduced to enhance the network’s ability to extract features from the crack edges and improve the detection accuracy of the model; secondly, based on the improvement method of SPPF to SPP, the SPPCSPC module is replaced by the improved SPPFCSPC module; finally, the WIOU loss function is adopted to improve the convergence speed of the network model. After experimental verification, the improved model in this paper has a high detection accuracy of 87.1%, for bridge cracks which is 8.8% higher than the YOLOv7 model, and the mAP value is 85.4%, which is 9.3% higher than the YOLOv7 model, and it can satisfy the current demand for bridge crack detection.
针对当前桥梁裂缝检测算法存在的错检、漏检等问题,本文对现有桥梁裂缝检测算法的进行了改进。首先,引入CBAM注意力机制,增强网络对裂缝边缘特征的提取能力,提升模型的检测精度;其次,基于SPPF对SPP的改进方法,使用改进后的SPPFCSPC模块替换SPPCSPC模块;最后,采用WIOU损失函数,提升了网络模型的收敛速度。经实验验证,本文改进的模型对桥梁裂缝的检测精度高达87.1%,较YOLOv7模型提高了8.8%,mAP值为85.4%,较YOLOv7模型提高了9.3%,能够满足当前桥梁裂缝检测需求。
改进YOLOv7,桥梁裂缝检测,CBAM,SPPFCSPC,WIOU
Deliang Hua1, Weige Tao1*, Zhigang Sun2
1School of Electrical and Information Engineering, Jiangsu University of Technology, Changzhou Jiangsu
2School of Electrical Engineering and Automation, Harbin Institute of Technology, Harbin Heilongjiang
Received: Mar. 26th, 2024; accepted: Apr. 30th, 2024; published: Apr. 30th, 2024
Aiming at the current bridge crack detection algorithm’s problems such as misdetection and omission, this paper improves the existing bridge crack detection algorithm. Firstly, the CBAM attention mechanism is introduced to enhance the network’s ability to extract features from the crack edges and improve the detection accuracy of the model; secondly, based on the improvement method of SPPF to SPP, the SPPCSPC module is replaced by the improved SPPFCSPC module; finally, the WIOU loss function is adopted to improve the convergence speed of the network model. After experimental verification, the improved model in this paper has a high detection accuracy of 87.1%, for bridge cracks which is 8.8% higher than the YOLOv7 model, and the mAP value is 85.4%, which is 9.3% higher than the YOLOv7 model, and it can satisfy the current demand for bridge crack detection.
Keywords:Improving YOLOv7, Bridge Crack Detection, CBAM, SPPFCSPC, WIOU
Copyright © 2024 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
至今我国已拥有超过100万座公路桥梁,随着时间的推移,越来越多的桥梁会进入维修期,其中,裂缝作为桥梁建筑中最常见、最严重的病害之一,是评判桥梁结构是否安全的重要指标。裂缝会破坏桥梁结构的整体性,降低桥梁的整体强度,易产生安全事故,是重大的安全隐患,需要及时发现解决。传统的裂缝检测方法主要采取人工检测,但人工检测效率低、成本高,且由于某些桥梁架设在深山或江河湖泊上,人工检测过程十分不便。随着深度学习技术应用拓展,为其应用于桥梁裂缝检测提供了又一重要选择。
主流的深度学习目标检测算法可以分为两类,一类是双阶段目标检测算法,例如R-CNN [
本文针对当前桥梁裂缝检测存在的错检、漏检问题,基于YOLOv7框架设计了一种桥梁裂缝检测算法,首先,将CBAM (Convolutional Block Attention Module)注意力机制加入的模型的主干特征提取部分,CBAM注意力机制融合了通道注意力机制和空间注意力机制,使网络模型可以同时关注通道维度和空间维度的信息,提高算法的检测精度;其次,优化空间金字塔池化结构以提升算法的检测性能;最后,更换YOLOv7的损失函数为WIoU (Wise-IoU),WIoU用预测框和真实框的边框中心点计算它们之间的距离,并将这个距离作为两个框之间的最大距离,进而计算两个框之间的区域。根据两个框之间的区域,计算权重系数,该系数衡量了两个框之间的关系,可以用于加权IOU得分,提升网络的收敛速度。
YOLOv7 [
图1. YOLOv7结构图
本文引入了CBAM [
通道注意力模块如图3所示,首先,输入特征图F,并对其进行最大池化和平均池化操作,获得两个空间维度为1的特征图;然后将这两个空间维度为1的特征图送入共享多层感知机,得到两个特征图;最后,将两个特征图进行相加并通过sigmoid激活函数,得到输出特征图Fc。
图2. CBAM注意力模块
图3. 通道注意力模块
空间注意力模块如图4所示,首先,在单通道维度上对输入的特征图Fc的做最大池化和平均池化操作,得到两个特征图;然后,将得到的特征图按照通道维度拼接成两个通道,通过卷积层对通道进行降维操作,最后将降维后的特征送入sigmoid激活函数得到最终的输出特征图Fout。
图4. 空间注意力模块
本文将CBAM注意力模块添加在特征提取网络之后,使整个网络模型能够同时关注通道维度和空间维度,使网络模型能够更好的提取桥梁裂缝特征,从而提高桥梁裂缝的检测精度。
在网络结构中,SPP [
图5. SPPFCSPC结构图
YOLOv7的损失函数由分类损失、置信度损失和边界损失三部分加权相加组成,边界损失对应的边界框预测是目标检测中最重要的任务,CIoU损失函数 [
L C I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + ( v ( 1 − I o U ) + v ) (1)
v = 4 π 2 ( arctan w g t h g t − arctan w h ) 2 (2)
其中,b和bgt分别表示预测框和真实框的中心点,ρ代表这两者之间的欧式距离。c表示两个框的交集最小方框的对角线距离,wgt、hgt是真实框的宽和高,w、h是预测框的宽和高。
考虑到实际的检测任务中,训练数据中并非全部都由高质量样本组成,如果算法在训练过程没有分辨样本质量高低的能力,会导致模型泛化性能的降低。而WIoU [
L W I o U = γ R W I o U + L I o U (3)
γ = β δ α β − α (4)
β = L I o U * L I o U ¯ (5)
R W I o U = exp ( ( x − x g t ) 2 − ( y − y g t ) 2 ( W g 2 + H g 2 ) ) (6)
其中,δ,α为超参数,γ为梯度增益,β为离群度, L I o U ¯ 是具有动量m的动态平均IoU值。为了网络训练的收敛速度,将β中LIoU和RWIoU中的Wg和Hg从梯度计算中分离出来(上标*表示此操作)。由于LIoU并非静态的,预测框的质量划分标准也不是一成不变的,这使得WIoU可以在整个训练检测过程中都可以做出对当前情况最有利的梯度分配方案。改进后的YOLOv7算法结构图如图6所示。
图6. 改进YOLOv7结构图
实验使用的裂缝图像来自于Original_Crack_DataSet_1024_1024 [
图7. 标注示例图片
评价网络性能的指标主要有精度(Precision),召回率(Recall),平均精度均值(mAP)三个指标来客观的评价模型的性能。AP是PR曲线下面积的标量表示,线下的面积越大,表示精度越好。mAP则是表示所有类别的平均AP,其值越大表示模型越好。各指标的计算公式如下所示:
P = T P T P + F P (7)
R = T P T P + F N (8)
A P = ∫ 0 1 P ( R ) d R (9)
m A P = 1 N ∑ k = 1 N A P ( k ) (10)
式中FP表示模型预测错误的正样本数,TP表示模型正确预测的正样本数,FN表示模型预测错误的负样本数。
为了验证本文改进的YOLOv7桥梁裂缝检测算法的提升效果,基于4.1节的实验环境和数据集,分别对YOLOv7桥梁裂缝检测算法和本文改进的桥梁裂缝检测算法进行训练,对比算法性能,对比结果如表1所示。
方法 | P/% | R/% | mAP/% |
---|---|---|---|
YOLOv7 | 78.3 | 76.9 | 76.1 |
Ours | 87.1 | 86.3 | 85.4 |
表1. 模型性能对比
图8. 算法改进前后mAP值对比图
通过实验对比发现,本文改进的YOLOv7算法在本文数据集上的检测精度达到87.1%,召回率达到86.3%,对比原YOLOv7模型的精度和召回率,获得了显著提升,其中,精度提升了8.8%,召回率提升了9.4%;改进后算法模型的mAP值对比原YOLOv7算法模型也获得显著提升,原模型的mAP值为76.1%,改进后模型的mAP值达到了85.4%,提升了9.3%,两种算法模型的mAP值对比结果如图8所示。实验结果表明,本文改进的YOLOv7算法模型对桥梁裂缝的检测效果要明显优于YOLOv7算法模型。
为了直观展示本文算法的检测效果,从测试集中选取部分裂缝图片的检测结果进行展示,可视化的检测结果如图9所示,由图9可知,原YOLOv7算法的基本能检测出大部分桥梁裂缝,但存在一些漏检的情况,而本文改进的算法在裂缝的漏检方面明显要优于原YOLOv7算法,本文改进算法基本可以全部检测出桥梁裂缝,这体现了本文改进算法具有良好的桥梁裂缝检测能力。
图9. 裂缝检测算法对比图
本文算法在YOLOv7网络的基础上,增加了注意力机制,并对特征融合方法和损失函数进行了改进。为了验证各模块的改动和不同模块相互组合对检测算法的性能影响,设计了消融实验,实验的基准模型为YOLOv7模型,为了保证实验的准确性,所有实验均在4.1节所设置的环境使用相同的参数和数据集进行训练。实验验证情况如表2所示。
序号 | CBAM | SPPFCSPC | WIoU | P/% | R/% | mAP/% |
---|---|---|---|---|---|---|
1 | × | × | × | 78.3 | 76.9 | 76.1 |
2 | √ | × | × | 80.5 | 79.8 | 79.4 |
3 | × | √ | × | 83.4 | 82.6 | 81.9 |
4 | × | × | √ | 79.3 | 78.5 | 77.3 |
5 | √ | √ | × | 85.8 | 84.7 | 84.6 |
6 | √ | × | √ | 81.6 | 81.3 | 80.7 |
7 | √ | √ | √ | 87.1 | 86.3 | 85.4 |
表2. 消融实验结果对比
消融实验的结果如表2所示,原YOLOv7模型的检测精度、召回率和mAP值最低,分别为78.3%,76.9%和76.1%;本文改进后算法的精度、召回率和mAP值都得到了显著提升,分别达到了87.1%,86.3%和85.4%。在分别加入CBAM注意力机制、改进SPPFCSPC模块和改进WIoU模块中,我们发现改进SPPFCSPC模块后对算法的提升最大,算法的检测精度达到了83.4%,提升了5.1%,召回率达到了82.6%,提升了5.7%,mAP值达到了81.9%,提升了5.8%;加入CBAM注意力机制和改进WIoU的对算法的提升虽然不及改进SPPFCSPC,但对比原YOLOv7在检测精度、召回率和mAP值上都得到了一定的提升,在加入CBAM后,检测精度达到了80.5%,提升了2.2%,召回率达到了79.8%,提升了2.9%,mAP值达到了79.4%,提升了3.3%;在加入WIoU损失函数后,检测精度、召回率和mAP值分别达到了79.3%,78.5%和77.3%。
在加入两种模块的实验中,我们发现,对比检测精度、召回率和mAP值都比单独加入一种模块有所提升,这也验证每个单独的改进之间可以叠加,使用多种改进使模型的整体性能提升呈正向优化。在加入两种改进的模型中,同时加入CBAM注意力机制和改进的SPPFCSPC模块的模型检测精度最好,mAP值最高,检测精度达到了85.8%,对比YOLOv7提升了7.5%,mAP值达到了84.6%,对比YOLOv7模型提升了8.5%。加入CBAM注意力机制和改进WIoU损失函数后,对比YOLOv7模型,检测精度提升了3.3%,召回率提升了4.4%,mAP值提升了4.6%。实验数据表明多种优化策略组合使用可以提升模型性能。消融实验mAP值对比情况如图10所示。
图10. 消融实验mAP值对比图
本文针对现有桥梁裂缝检测算法存在的错检、漏检等问题,提出了一种基于改进YOLOv7的桥梁裂缝检测算法。在Original_Crack_DataSet_1024_1024公开数据集进行训练验证,加入CBAM注意力机制并优化颈部网络的特征融合层网络结构,提升模型对桥梁裂缝特征的识别检测能力,引入WIoU损失函数提升模型的泛化能力,增强模型的检测性能。实验结果表明,改进后的YOLOv7算法能够显著提升其对桥梁裂缝的检测能力。后续将从轻量化的角度考虑,对网络结构进行进一步的优化和改进,使算法可以应用于更多的建筑裂缝检测场景。
常州市5G + 工业互联网融合应用重点实验室(CM20223015)。
华得亮,陶为戈,孙志刚. 基于改进YOLOv7的桥梁裂缝检测算法Bridge Crack Detection Algorithm Based on Improved YOLOv7[J]. 计算机科学与应用, 2024, 14(04): 392-401. https://doi.org/10.12677/csa.2024.144108
https://doi.org/10.1016/j.neucom.2019.03.082
https://doi.org/10.1109/ICCV.2015.169
https://doi.org/10.1109/TPAMI.2016.2577031
https://doi.org/10.16503/j.cnki.2095-9931.2021.04.014
https://doi.org/10.11896/jsjkx.211100281
https://doi.org/10.16749/j.cnki.jecjtu.2023.06.001
https://doi.org/10.14048/j.issn.1671-2579.2023.02.010
https://doi.org/10.19304/J.ISSN1000-7180.2022.0386
https://doi.org/10.13367/j.cnki.sdgc.2023.04.005
https://doi.org/10.1142/S0218001423500301
https://doi.org/10.1109/ACCESS.2020.2997466
https://doi.org/10.19356/j.cnki.1001-3997.20240316.016, 2024-03-18.
https://doi.org/10.19678/j.issn.1000-3428.0067820
https://doi.org/10.1109/ACCESS.2021.3100414