针对地下工程衬砌表观病害检测精度低的问题,给出了一种改进YOLOv7的衬砌表观病害检测算法。该算法首先在主干网络输出位置各自加入CBAM注意力机制,用于加强主干网络对关键区域的特征提取能力;其次将无参数注意力机制SimAM引入到SPPCSPC模块中,并裁剪掉冗余的一层CBS模块,在增强主干网络对密集小目标的特征提取能力的同时,缩减计算量和参数规模;最后使用自制数据集训练算法模型,与原算法相比本算法的 P、 R以及 mAP0.5分别提升了12.7、5.4和8.6个百分点。实验结果表明本文改进方法有效地提升了算法对衬砌表观病害的检测性能。 Aiming at the low detection accuracy of underground engineering lining apparent disease, an improved YOLOv7 algorithm for lining apparent disease detection is presented. Firstly, CBAM attention mechanism is added to each output position of the backbone network to enhance the feature extraction capability of the backbone network for key regions. Secondly, the non-parametric attention mechanism SimAM is introduced into SPPCSPC module, and the redundant CBS module is cut out, which enhances the feature extraction ability of the backbone network for dense small targets, and reduces the computation and parameter scale. Finally, the algorithm model is trained with self-made data set. Compared with the original algorithm, the P, R and mAP0.5 of the proposed algorithm are improved by 12.7, 5.4 and 8.6 percentage points respectively. The results show that the improved method can effectively improve the detection performance of the algorithm on the apparent diseases of the lining.
针对地下工程衬砌表观病害检测精度低的问题,给出了一种改进YOLOv7的衬砌表观病害检测算法。该算法首先在主干网络输出位置各自加入CBAM注意力机制,用于加强主干网络对关键区域的特征提取能力;其次将无参数注意力机制SimAM引入到SPPCSPC模块中,并裁剪掉冗余的一层CBS模块,在增强主干网络对密集小目标的特征提取能力的同时,缩减计算量和参数规模;最后使用自制数据集训练算法模型,与原算法相比本算法的P、R以及mAP0.5分别提升了12.7、5.4和8.6个百分点。实验结果表明本文改进方法有效地提升了算法对衬砌表观病害的检测性能。
YOLOv7,SPPFCSPC,衬砌病害,注意力机制
Zhulin Shi1, 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. 20th, 2024; accepted: May 16th, 2024; published: May 24th, 2024
Aiming at the low detection accuracy of underground engineering lining apparent disease, an improved YOLOv7 algorithm for lining apparent disease detection is presented. Firstly, CBAM attention mechanism is added to each output position of the backbone network to enhance the feature extraction capability of the backbone network for key regions. Secondly, the non-parametric attention mechanism SimAM is introduced into SPPCSPC module, and the redundant CBS module is cut out, which enhances the feature extraction ability of the backbone network for dense small targets, and reduces the computation and parameter scale. Finally, the algorithm model is trained with self-made data set. Compared with the original algorithm, the P, R and mAP0.5 of the proposed algorithm are improved by 12.7, 5.4 and 8.6 percentage points respectively. The results show that the improved method can effectively improve the detection performance of the algorithm on the apparent diseases of the lining.
Keywords:YOLOv7, SPPFCSPC, Lining Disease, Attention Mechanism
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/
中国地下工程的建设规模名列世界前茅,截至2022年底,中国城市地下空间累计建筑面积29.62亿平方米 [
随着计算机和摄像设备性能的提升,衬砌病害检测逐渐由传统的人工检测向自动化、智能化的方向发展。目前,以深度学习算法为基础的衬砌病害检测方法的研究,逐渐成为热点。例如卢芳芳等 [
本文针对实际衬砌病害检测的需要,优选新颖的目标检测算法,并根据实际应用中的需要对算法进行改进,给出了一种改进YOLOv7的地下工程衬砌病害检测算法。该方法首先在主干网络输出部分分别加入CBAM模块,保留待测目标关键特征信息的同时,抑制无关信息的干扰,使网络能够关注到更多有效的病害特征;再将无参数注意力机制SimAM加入SPPCSPC模块的池化层之前,并裁剪掉1个位于池化层之前的CBS层,在输入特征图中将目标和背景像素点进行分离,以计算三维注意力权重的方式,来增强对密集小目标病害目标的关注,同时缩减计算量和参数规模。
YOLOv7是目前最新颖的单阶段目标检测算法之一,于2022年被提出。在COCO公开数据集上YOLOv7基础网络的检测精度和检测速度均超过了之前所有的目标检测算法 [
YOLOv7主干网络进行特征提取时,将所有信息按照相同权重的方式进行处理,却没有体现局部关键信息的重要性,导致许多重要信息的丢失。然而在衬砌病害的检测过程中,背景与病害的区分度较小且病害密集,需要重视关键区域信息的提取。为此本文采用以下改进:首先在主干网络输出部分添加多个CBAM模块;其次再将无参数注意力机制SimAM加入SPPCSPC模块的池化层之前,使得目标和背景像素点有效地分离开,以加入三维注意力权重的方式,增强对密集小目标病害目标的关注;最后并裁剪掉1个位于池化层之前的CBS层,缩减计算量和参数规模。
CBAM [
图1. CBAM注意力模块
在通道维度上,CBAM模块首先对输入的F (H × W × C)特征图进行全局最大池化和全局平均池化,得到两个1 × 1 × C的通道的重要性权重;再将这两个权重分别送入共享的多层感知机(MLP)网络处理,生成通道特征Mc。通道特征Mc反映了每个通道在分类任务中的重要性,将其与输入特征图相乘,便能得到空间特征模块所需的输入特征。在空间维度上,对通道特征模块的输出特征图,使用全局最大池化和全局平均池化操作,得到两个H × W × 1大小的特征图,并将特征图做通道拼接;然后经过一个7 × 7卷积,降维为1个通道,即H × W × 1;再使用激活函数生成空间特征Ms,反映了输入特征图中不同位置的重要性;最后再将输入特征图与Ms相乘。通道上模块具体计算如式(1)~式(4)所示,CBAM具体计算如
M c ( F ) = σ ( M L B ( A v g P o o l ( F ) ) ) + M L P ( M a x P o o l ( F ) ) (1)
M c ( F ) = σ ( W 1 ( W 0 ( f a v g c ) ) ) + W 1 ( W 0 ( f m a x c ) ) (2)
M s ( F ) = σ ( f 7 × 7 ( [ A v g P o o l ( F ) ; M a x P o o l ( F ) ] ) ) (3)
M s ( F ) = σ ( f 7 × 7 ( [ f a v g S ; f m a x S ] ) ) (4)
式中,σ为激活函数Sigmoid; W 0 ∈ R C / r · C , W 1 ∈ R C · C / r ; f 7 × 7 为 7 × 7 的卷积。
为加强网络对密集小目标特征区域的关注能力,有效提高密集小目标的定位精度。以SPPCSPCS模块为对象展开了相应改进,来提高模型的泛化能力和检测精度。
SPPCSPC模块的作用是增大感受野,提升算法的泛化性能,该模块将多通道特征图分成两部分,一部分采用多尺寸最大池化操作来获得不同的感受野,另一部分采用常规卷积操作提取特征,该模块在提升模型精度的基础上能最大程度降低计算量,是提升模型效率的重要结构。
SimAM [
图2. SimAM注意力模块
在衡量目标像素点(t)和背景像素点(xi)的线性可分性时,SimAM使用了能量函数,当输入特征图为 X ∈ R C × H × W 时,像素点线性变换如下:
t ^ = w t t + b t (5)
x i ^ = w t x i + b t (6)
其中,wt和bt分别是线性变换的权重和偏置值。将这些值代入能量函数中,可以得到能量函数的表达式:
e t ( w t , b t , y , x i ) = ( y t − t ^ ) 2 + 1 M − 1 ∑ i = 1 M − 1 ( y 0 − x i ^ ) 2 (7)
其中,yt和y0为目标像素点(t)和背景像素点(xi)的标签值,y为某一像素点的标签值,i为空间维度上的索引,et为能量函数的值,M为某一通道上像素点个数:
M = H × W (8)
为使得网络更加关注密集小目标区域的特征,本文提出SimAM-SPPCSPC结构,在原SPPCSPC中引入SimAM,再去1个CBS层。SPPCSPC和SimAM-SPPCSPC的结构见图3(a)和图3(b)。
图3. SimAM-SPPCSPC和SPPCSPC模块
1) 在SPPCSPC池化层之前嵌入SimAM,将目标像素点和背景像素点分离开,并增加三维注意力权重的方式重点关注密集小目标区域。
2) 去除多余CBS。在池化层之前去除1个CBS层,削减不必要的卷积计算,加快模型的推理速度。
改进后的YOLOv7主干网络部分,在第2、3、4个ELAN模块后面分别引入CBAM模块,重点关注关键病害区域的特征。提高算法对密集小目标的检测能力。用SimAM-SPPCSPC模块替换SPPCSPC模块,减少有效特征损耗并抑制混淆特征表达,同时增强对密集小目标区域的关注。具体的改进网络如图4所示。
图4. SimAM-SPPCSPC和SPPCSPC模块
本文的实验环境建立在Linux ubuntu操作系统上,以RTX3060GPU对加速图像处理、PyTorch深度学习框架,使用Pycharm编辑器,基于Python3.8语言进行编程。
针对实际应用场景存在复杂多样性的问题,首先本实验依靠自动监测小车实现具体应用场景下的图像采集,使用Labelme软件进行标注,具体的采集设备和图像标注软件如图5中所示;之后使用人工方式优选出合适的样本作为原始数据集,共1994张病害图片,其中包括衬砌开裂病害571张、衬砌鼓包病害758张以及衬砌剥落病害615张,部分病害图像数据如图6所示;最后按照8:1:1的比例划分训练集、验证集和测试集。
图5. 采集设备和图像标注软件
图6. 衬砌表观病害图像数据
本文以准确率(Precision, P)、召回率(Recall, R)和平均精确度均值(mAP)这三个指标来评估模型的性能。具体的指标如式(9)~式(12)表示。准确率表示模型预测的正确性,召回率则表示模型查全率。平均精确度考虑了模型在不同阈值下的表现,综合评估了模型的检测效果。具体的公式为:
P = T P T P + F P (9)
R = T P T P + F N (10)
A P = ∫ 0 1 P ( R ) d R (11)
公式(11)中,AP是模型的平均精度由一对相矛盾的指标——准确率P和召回率R共同决定。而平均精度均值(mAP)则是所有类别下AP值的平均值,用于综合评估网络在不同类别下的检测效果。
m A P = 1 n ∑ 1 n A P (12)
式(12)中:n是所有类别的数量。
为了验证每一部分改进的有效性,建立本消融实验。由表1可知,第二组实验添加CBAM可以使模型的mAP0.5提升了6.6个百分点;第三组实验通过加入SimAM-SPPCSPC模块增强对密集小目标病害目标的关注,模型的mAP0.5增加了5.2个百分点;由第二和第三组实验可知,引入CBAM和SimAM-SPPCSPC模块都不同程度的对网络性能进行了提升;第四组实验同时使用上述两部分改进,模型的mAP0.5为91%,达到了本消融实验的最大值。上述消融实验结果证实了改进的有效性。
组号 | SimAM-SPPCSPC | CBAM | mAP0.5 (%) |
---|---|---|---|
1 | ━ | ━ | 82.4 |
2 | ü | ━ | 87.6 |
3 | ━ | ü | 89.0 |
4 | ü | ü | 91.0 |
表1. 消融实验结果
为了进一步验证本文所提出的改进YOLOv7算法的检测性能,将该算法和YOLOv5 [
算法 | P (%) | R (%) | mAP0.5 (%) |
---|---|---|---|
YOLOv5 | 75.4 | 78.3 | 80.4 |
YOLOv7-tiny | 76.9 | 79.0 | 81.0 |
YOLOv7 | 75.8 | 83.9 | 82.4 |
改进算法 | 88.5 | 89.0 | 91.0 |
表2. 算法对比实验结果
通过自制病害数据集对改进YOLOv7进行训练,结果如图7中所示,图中左侧6张图表示的是模型在训练集与验证集上的各部分损失函数。右侧四张图分别对应P、R、mAP0.5和mAP0.5:0.95四项指标。从图7中可知,改进的算法随着训练轮数的增加,损失函数下降速度减缓并且收敛,各项指标不断提升且在300轮训练时仍然有较好的增长趋势,证明本文改进算法具有较好的收敛和学习能力。
图7. 训练结果图
检测结果如图8所示,从图8(d)和图8(e)对比可以看出,改进算法对于易丢失小目标病害的检测效果优于YOLOv7原算法,并且检测精度也高于原算法,提升了衬砌病害的检测质量,能够实现衬砌外观病害的有效检测。
图8. 检测结果对比图
本文通过在YOLOv7主干网络输出部分分别加入CBAM注意力机制,在SPPCSPC模块中加入无参数注意力机制SimAM,并裁剪掉一层冗余CBS层,提升了网络对衬砌病害的检测精度,其准确率P、召回率R以及平均精度均值mAP@0.5分别提升了12.7、5.4和8.6个百分点,且模型具有较好的泛化性能抑制复杂背景对检测效果的影响。由于本领域没有较完善的公开数据集,本文的数据集样本量过小,且包含的病害种类有限,后期需要对数据集进一步的扩展,同时模型的检测效率也需要进一步提升。
常州市5G+工业互联网融合应用重点实验室(CM20223015);江苏省研究生实践创新计划(SJCX22_1481)。
石朱林,陶为戈,孙志刚. 改进YOLOv7的地下工程衬砌表观病害检测算法The Apparent Disease Detection Algorithm of Underground Engineering Lining of YOLOv7 Was Improved[J]. 人工智能与机器人研究, 2024, 13(02): 290-299. https://doi.org/10.12677/airr.2024.132031
https://doi.org/10.19721/j.cnki.1001-7372.2022.01.001
https://doi.org/10.19721/j.cnki.1001-7372.2021.11.015
https://doi.org/10.27144/d.cnki.ghbsc.2021.000314
http://kns.cnki.net/kcms/detail/50.1085.TN.20230626.1756.012.html, 2024-03-18.
https://doi.org/10.1109/CVPR52729.2023.00721
https://doi.org/10.1109/CVPR46437.2021.01352
https://doi.org/10.1007/978-3-030-01234-2_1
https://doi.org/10.1109/AVSS52988.2021.9663841