基于改进YOLOv7的桥梁裂缝检测算法
Bridge Crack Detection Algorithm Based on Improved YOLOv7
DOI: 10.12677/csa.2024.144108, PDF, HTML, XML, 下载: 67  浏览: 148  科研立项经费支持
作者: 华得亮, 陶为戈*:江苏理工学院电气信息工程学院,江苏 常州;孙志刚:哈尔滨工业大学电气工程及自动化学院,黑龙江 哈尔滨
关键词: 改进YOLOv7桥梁裂缝检测CBAMSPPFCSPCWIOUImproving YOLOv7 Bridge Crack Detection CBAM SPPFCSPC WIOU
摘要: 针对当前桥梁裂缝检测算法存在的错检、漏检等问题,本文对现有桥梁裂缝检测算法的进行了改进。首先,引入CBAM注意力机制,增强网络对裂缝边缘特征的提取能力,提升模型的检测精度;其次,基于SPPF对SPP的改进方法,使用改进后的SPPFCSPC模块替换SPPCSPC模块;最后,采用WIOU损失函数,提升了网络模型的收敛速度。经实验验证,本文改进的模型对桥梁裂缝的检测精度高达87.1%,较YOLOv7模型提高了8.8%,mAP值为85.4%,较YOLOv7模型提高了9.3%,能够满足当前桥梁裂缝检测需求。
Abstract: 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.
文章引用:华得亮, 陶为戈, 孙志刚. 基于改进YOLOv7的桥梁裂缝检测算法[J]. 计算机科学与应用, 2024, 14(4): 392-401. https://doi.org/10.12677/csa.2024.144108

1. 引言

至今我国已拥有超过100万座公路桥梁,随着时间的推移,越来越多的桥梁会进入维修期,其中,裂缝作为桥梁建筑中最常见、最严重的病害之一,是评判桥梁结构是否安全的重要指标。裂缝会破坏桥梁结构的整体性,降低桥梁的整体强度,易产生安全事故,是重大的安全隐患,需要及时发现解决。传统的裂缝检测方法主要采取人工检测,但人工检测效率低、成本高,且由于某些桥梁架设在深山或江河湖泊上,人工检测过程十分不便。随着深度学习技术应用拓展,为其应用于桥梁裂缝检测提供了又一重要选择。

主流的深度学习目标检测算法可以分为两类,一类是双阶段目标检测算法,例如R-CNN [1] 、Fast R-CNN [2] 和Faster R-CNN [3] 等,这类算法通常将目标检测问题分成两个步骤:提出特征候选区域和对其进行分类,洪卫星 [4] 等人利用Faster R-CNN对路桥裂缝图像进行训练检测。另一类是单阶段目标检测算法,例如SSD [5] 和YOLO系列,通过舍弃对候选区域的选择,使得算法整体的检测速度更快,刘永胜 [6] 等人通过替换SSD网络的Backbone和引入SENet (Squeeze-and-Excitation Networks)通道注意力机制,实现了裂缝检测精度的提升;苏卫国 [7] 等人使用YOLOv3网络对道路裂缝进行检测;石颉 [8] 等人在YOLOv4网络的基础上对上采样模块和特征融合模块的进行改进,使算法的整体精度提升了6.4%;何兆益 [9] 等人通过改进YOLOv5的特征融合层,显著提升了算法对公路隧道衬砌裂缝的检测效果;廖祥灿 [10] 等人在YOLOv5网络中加入注意力机制并对YOLOv5网络的损失函数改进,对桥梁裂缝的检测具有较好的效果,算法的精度提升了5%。以上这些算法实现了对桥梁裂缝的检测,但其检测精度仍有提升空间。

本文针对当前桥梁裂缝检测存在的错检、漏检问题,基于YOLOv7框架设计了一种桥梁裂缝检测算法,首先,将CBAM (Convolutional Block Attention Module)注意力机制加入的模型的主干特征提取部分,CBAM注意力机制融合了通道注意力机制和空间注意力机制,使网络模型可以同时关注通道维度和空间维度的信息,提高算法的检测精度;其次,优化空间金字塔池化结构以提升算法的检测性能;最后,更换YOLOv7的损失函数为WIoU (Wise-IoU),WIoU用预测框和真实框的边框中心点计算它们之间的距离,并将这个距离作为两个框之间的最大距离,进而计算两个框之间的区域。根据两个框之间的区域,计算权重系数,该系数衡量了两个框之间的关系,可以用于加权IOU得分,提升网络的收敛速度。

2. YOLOv7算法原理

YOLOv7 [11] 算法结构图如图1所示,该算法模型由四个部分组成,分别是输入端、主干网络、颈部网络和预测头网络。主干网络由CBS卷积、ELAN (Extended Efficient Layer Aggregation Networks)网络和MPConv模块组成。颈部网络主要由SPPCSPC (Spatial Pyramid Pooling, Cross Stage Partial Channel)金字塔结构、ELAN-H网络、上采样网络和MPConv模块组成;在预测头网络,RepConv结构可以对特征通道数进行调整,使算法可以输出三种不同尺度的预测结果。

Figure 1. YOLOv7 structure

图1. YOLOv7结构图

3. 改进的YOLOv7桥梁裂缝检测算法

3.1. CBAM注意力机制

本文引入了CBAM [12] 注意力模块,如图2所示,CBAM通过融合通道注意力和空间注意力,可以实现对输入特征进行通道级和空间级的注意力调控。CBAM注意力机制首先进行通道注意力机制的计算,通道注意力可以区分每个通道的重要性,使算法能够有效的获得不同通道之间的特征;然后CBAM注意力机制会进行空间注意力模块的计算,帮助算法捕捉裂缝的空间特征信息。

通道注意力模块如图3所示,首先,输入特征图F,并对其进行最大池化和平均池化操作,获得两个空间维度为1的特征图;然后将这两个空间维度为1的特征图送入共享多层感知机,得到两个特征图;最后,将两个特征图进行相加并通过sigmoid激活函数,得到输出特征图Fc。

Figure 2. CBAM attention module

图2. CBAM注意力模块

Figure 3. Channel attention module

图3. 通道注意力模块

空间注意力模块如图4所示,首先,在单通道维度上对输入的特征图Fc的做最大池化和平均池化操作,得到两个特征图;然后,将得到的特征图按照通道维度拼接成两个通道,通过卷积层对通道进行降维操作,最后将降维后的特征送入sigmoid激活函数得到最终的输出特征图Fout

Figure 4. Spatial attention module

图4. 空间注意力模块

本文将CBAM注意力模块添加在特征提取网络之后,使整个网络模型能够同时关注通道维度和空间维度,使网络模型能够更好的提取桥梁裂缝特征,从而提高桥梁裂缝的检测精度。

3.2. SPPCSPC模块改进

在网络结构中,SPP [13] (Spatial Pyramid Pooling)的作用是能够增大感受野,使算法适应不同的分辨率图像,它通过并联的三个最大池化结构来增大感受野,而CSP模块是由两部分组成,一部分进行SPP结构处理,另一部分则进行常规的处理,最后通过Concat的操作将这两个部分合并在一起,这样能够减少一半的计算量,不仅能提升桥梁裂缝的检测速度,同时还能提高桥梁裂缝检测的精度。YOLOv7中的SPPCSPC是将SPP和CSP结构进行结合。SPPF [14] (Spatial Pyramid Pooling-Fast)则是采用三个串联的池化层来代替SPP的三个串联的池化层,提高了检测速度。SPPFCSPC [15] 模块是将SPPF模块和CSP模块进行组合。SPPFCSPC模块在保证感受野不变的同时获得了检测速度的提升。SPPFCSPC的结构如图5所示。

Figure 5. SPPFCSPC structure diagram

图5. SPPFCSPC结构图

3.3. WIoU损失函数改进

YOLOv7的损失函数由分类损失、置信度损失和边界损失三部分加权相加组成,边界损失对应的边界框预测是目标检测中最重要的任务,CIoU损失函数 [16] 是YOLOv7使用的边界损失函数,它能评判预测检测框与真实检测框的检测效果。其计算公式如下:

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)

其中,bbgt分别表示预测框和真实框的中心点,ρ代表这两者之间的欧式距离。c表示两个框的交集最小方框的对角线距离,wgthgt是真实框的宽和高,wh是预测框的宽和高。

考虑到实际的检测任务中,训练数据中并非全部都由高质量样本组成,如果算法在训练过程没有分辨样本质量高低的能力,会导致模型泛化性能的降低。而WIoU [17] 采用动态非单调聚焦机制,用离群度代替IoU来评价锚盒的质量,可以有效减小了低质量样本带来的危害,从而提高桥梁裂缝检测的整体精度。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所示。

Figure 6. Improved YOLOv7 structure diagram

图6. 改进YOLOv7结构图

4. 实验环境与结果分析

4.1. 数据集及环境

实验使用的裂缝图像来自于Original_Crack_DataSet_1024_1024 [18] 公开数据集,主要是桥梁裂缝图像。将数据集按照7:2:1的比例分为训练集、验证集和测试集,并使用labelme对训练集和验证集中的所有图片进行人工标注,得到桥梁裂缝的txt格式的标签文件,标注示例图如图7所示,图7(a)为数据集原图,图7(b)为标注后的图片。

Figure 7. Labeling example images

图7. 标注示例图片

4.2. 评价指标

评价网络性能的指标主要有精度(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表示模型预测错误的负样本数。

4.3. 实验结果

为了验证本文改进的YOLOv7桥梁裂缝检测算法的提升效果,基于4.1节的实验环境和数据集,分别对YOLOv7桥梁裂缝检测算法和本文改进的桥梁裂缝检测算法进行训练,对比算法性能,对比结果如表1所示。

Table 1. Model performance comparison

表1. 模型性能对比

Figure 8. Comparison of mAP values before and after algorithm improvement

图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算法,本文改进算法基本可以全部检测出桥梁裂缝,这体现了本文改进算法具有良好的桥梁裂缝检测能力。

Figure 9. Comparison chart of crack detection algorithms

图9. 裂缝检测算法对比图

4.4. 消融实验

本文算法在YOLOv7网络的基础上,增加了注意力机制,并对特征融合方法和损失函数进行了改进。为了验证各模块的改动和不同模块相互组合对检测算法的性能影响,设计了消融实验,实验的基准模型为YOLOv7模型,为了保证实验的准确性,所有实验均在4.1节所设置的环境使用相同的参数和数据集进行训练。实验验证情况如表2所示。

Table 2. Comparison of ablation experiment results

表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所示。

Figure 10. Comparison of mAP value for ablation experiments

图10. 消融实验mAP值对比图

5. 结论

本文针对现有桥梁裂缝检测算法存在的错检、漏检等问题,提出了一种基于改进YOLOv7的桥梁裂缝检测算法。在Original_Crack_DataSet_1024_1024公开数据集进行训练验证,加入CBAM注意力机制并优化颈部网络的特征融合层网络结构,提升模型对桥梁裂缝特征的识别检测能力,引入WIoU损失函数提升模型的泛化能力,增强模型的检测性能。实验结果表明,改进后的YOLOv7算法能够显著提升其对桥梁裂缝的检测能力。后续将从轻量化的角度考虑,对网络结构进行进一步的优化和改进,使算法可以应用于更多的建筑裂缝检测场景。

基金项目

常州市5G + 工业互联网融合应用重点实验室(CM20223015)。

NOTES

*通讯作者。

参考文献

[1] Ma, C., Chen, L. and Yong, J. (2019) AU R-CNN: Encoding Expert Prior Knowledge into R-CNN for Action Unit Detection. Neurocomputing, 355, 35-47.
https://doi.org/10.1016/j.neucom.2019.03.082
[2] Girshick, R. (2015) Fast R-CNN. 2015 IEEE International Conference on Computer Vision (ICCV), Santiago, 7-13 December 2015, 1440-1448.
https://doi.org/10.1109/ICCV.2015.169
[3] Ren, S., He, K., Girshick, R., et al. (2017) Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis & Machine Intelligence, 39, 1137-1149.
https://doi.org/10.1109/TPAMI.2016.2577031
[4] 洪卫星, 吴羡, 陈贵海, 等. 基于机器视觉的路桥裂缝病害自动检测技术[J]. 交通运输研究, 2021, 7(4): 114-122.
https://doi.org/10.16503/j.cnki.2095-9931.2021.04.014
[5] 张卫良, 陈秀宏. 跨层融合和感受野扩增的SSD目标检测算法[J]. 计算机科学, 2023, 50(3): 231-237.
https://doi.org/10.11896/jsjkx.211100281
[6] 刘永胜, 熊吉光, 游志杰, 等. 基于改进SSD算法的结构表观裂缝病害检测[J]. 华东交通大学学报, 2023, 40(6): 1-7.
https://doi.org/10.16749/j.cnki.jecjtu.2023.06.001
[7] 苏卫国, 王景霄. 基于YOLO v3深度学习算法的道路裂缝识别模型研究[J]. 中外公路, 2023, 43(2): 58-63.
https://doi.org/10.14048/j.issn.1671-2579.2023.02.010
[8] 石颉, 马文琪, 吴宏杰. 改进YOLOv4的混凝土建筑裂缝检测算法[J]. 微电子学与计算机, 2023 ,40(3): 56-66.
https://doi.org/10.19304/J.ISSN1000-7180.2022.0386
[9] 何兆益, 常宝霞, 吴逸飞, 等. 基于YOLO v5-IBX网络模型的公路隧道衬砌裂缝检测方法研究[J]. 沈阳建筑大学学报(自然科学版), 2023, 39(5): 888-898.
[10] 廖祥灿, 李彩林, 姚玉凯, 等. 基于改进YOLO V5的公路桥梁裂缝检测方法[J]. 山东理工大学学报(自然科学版), 2023, 37(4): 1-7.
https://doi.org/10.13367/j.cnki.sdgc.2023.04.005
[11] Xiao, Q., Huang, J., Huang, Z., et al. (2023) Transparent Component Defect Detection Method Based on Improved YOLOv7 Algorithm. International Journal of Pattern Recognition and Artificial Intelligence, 37, 2350030.
https://doi.org/10.1142/S0218001423500301
[12] Chen, Y., Zhang, X., Chen, W., et al. (2020) Research on Recognition of Fly Species Based on Improved RetinaNet and CBAM. IEEE Access, 8, 102907-102919.
https://doi.org/10.1109/ACCESS.2020.2997466
[13] 章曙光, 刘洋, 张文韬, 等. 改进Tiny-YOLOv3的工业钢材瑕疵检测算法[J/OL]. 机械设计与制造: 1-6.
https://doi.org/10.19356/j.cnki.1001-3997.20240316.016, 2024-03-18.
[14] 王晓龙, 江波. 基于改进YOLOX-m的安全帽佩戴检测[J]. 计算机工程, 2023, 49(12): 252-261.
https://doi.org/10.19678/j.issn.1000-3428.0067820
[15] 秦忆南, 施卫, 张驰皓, 等. 基于改进YOLOv5s的道路行人与车辆检测算法[J]. 电脑知识与技术, 2023(31): 5-8.
[16] Wang, X., Song, J. (2021) ICIoU: Improved Loss Based on Complete Intersection over Union for Bounding Box Regression. IEEE Access, 8, 105686-105695.
https://doi.org/10.1109/ACCESS.2021.3100414
[17] 郑陆石, 胡晓锋, 于伟国, 等. 基于改进YOLOv7-tiny的坦克车辆检测方法[J]. 兵器装备工程学报, 2023, 44(12): 285-292.
[18] 赵雪冰, 王俊杰. 基于改进DeeplabV3 和迁移学习的桥梁裂缝检测[J]. 计算机工程与应用, 2023, 59(5): 262-269.