1. 引言
中国地下工程的建设规模名列世界前茅,截至2022年底,中国城市地下空间累计建筑面积29.62亿平方米 [1] 。然而早期投入使用的地下工程设施,例如公路和铁路隧道、地下停车场和洞库等地下工程设施在长期的服役过程中,不可避免地承受着结构应力、地质变动以及化学腐蚀等关键因素的耦合作用,各类衬砌病害 [2] 也由此逐渐产生,其中衬砌开裂、衬砌掉块与衬砌鼓包是三类较常见的表观衬砌病害。因为不同程度的病害反映着不同程度的工程结构缺陷,并预示着将来工程结构有可能出现的安全隐患,所以衬砌病害检测工作显得尤为重要。人工检测作为最常使用的传统的检测方法,分为人眼检测与人工使用仪器检测。人眼检测以肉眼配合基础测量工具进行检测,记录病害位置与严重程度 [3] ,这种方法检测不仅低效而且实时性差 [4] 。人工使用仪器检测主要使用检测仪进行测量 [5] 。两种人工检测方法都需要暂停设施的运营,占用大量的运营时间,并且检测精度较差,容易滋生安全隐患。
随着计算机和摄像设备性能的提升,衬砌病害检测逐渐由传统的人工检测向自动化、智能化的方向发展。目前,以深度学习算法为基础的衬砌病害检测方法的研究,逐渐成为热点。例如卢芳芳等 [6] ,提出的基于深度学习的隧道衬砌病害检测与识别研究,首先构建隧道衬砌病害数据库,其次详细对比了VGG16和ResNet34在各自训练环境的识别效果,最后提出了一种基于YOLOv3隧道衬砌病害检测算法,使用改进的K-Means++分配合适尺寸的先验框,加强了网络对小目标病害的定位和识别能力;任松等 [7] ,在自制数据集上对比SSD模型和R-FCN模型,提出离线式隧道衬砌病害检测方案;胡丽娜等 [8] ,使用卷积神经网络(CNN)的深层架构来检测隧道衬砌病害,提出了一种基于视觉的方法;仁安虎 [9] 提出的改进YOLOv5s算法,将结合深度可分离卷积(DSC)的全局注意力(GAM)以及空间金字塔软池化网络(SPSF)引入主干特征提取网络,使用空洞深度可分离卷积(Atrous DSC)进行下采样,实现了复杂背景下的裂缝病害检测。
本文针对实际衬砌病害检测的需要,优选新颖的目标检测算法,并根据实际应用中的需要对算法进行改进,给出了一种改进YOLOv7的地下工程衬砌病害检测算法。该方法首先在主干网络输出部分分别加入CBAM模块,保留待测目标关键特征信息的同时,抑制无关信息的干扰,使网络能够关注到更多有效的病害特征;再将无参数注意力机制SimAM加入SPPCSPC模块的池化层之前,并裁剪掉1个位于池化层之前的CBS层,在输入特征图中将目标和背景像素点进行分离,以计算三维注意力权重的方式,来增强对密集小目标病害目标的关注,同时缩减计算量和参数规模。
2. YOLOv7算法
YOLOv7是目前最新颖的单阶段目标检测算法之一,于2022年被提出。在COCO公开数据集上YOLOv7基础网络的检测精度和检测速度均超过了之前所有的目标检测算法 [10] 。与之前的YOLOv5版本相同,YOLOv7依旧包含:输入层(Input)、主干层(Backbone)、特征融合层(Neck)以及输出层(Prediction)四个部分。其中,主干层具有特征提取能力,由CBS、ELAN-1、MP和SPPCSPC四种模块构成。在特征融合层,通过路径聚合特征金字塔网络(PAFPN)利用不同层级的特征信息,捕捉目标的多尺度特征。输出层中引入了RepVGG重参数化思想 [11] 。建立REP模块,该模块在推理和训练过程中表现出不同的状态,在训练过程中模块有3 × 3卷积、1 × 1卷积和Identity三个分支;在推理过程中只包含一个3 × 3卷积,该卷积由训练结果重参数化转化求得。
3. 改进YOLOv7算法
YOLOv7主干网络进行特征提取时,将所有信息按照相同权重的方式进行处理,却没有体现局部关键信息的重要性,导致许多重要信息的丢失。然而在衬砌病害的检测过程中,背景与病害的区分度较小且病害密集,需要重视关键区域信息的提取。为此本文采用以下改进:首先在主干网络输出部分添加多个CBAM模块;其次再将无参数注意力机制SimAM加入SPPCSPC模块的池化层之前,使得目标和背景像素点有效地分离开,以加入三维注意力权重的方式,增强对密集小目标病害目标的关注;最后并裁剪掉1个位于池化层之前的CBS层,缩减计算量和参数规模。
3.1. CBAM注意力机制
CBAM [12] 注意力机制具有重点关注有效的目标特征信息,并抑制无关信息干扰的能力。该注意力机制同时关注了空间和通道维度特征,有利于提高目标检测能力。具体的CBAM结构如图1所示。
在通道维度上,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具体计算如
(1)
(2)
(3)
(4)
式中,σ为激活函数Sigmoid;
,
;
为
的卷积。
3.2. 引入SimAM注意力机制
为加强网络对密集小目标特征区域的关注能力,有效提高密集小目标的定位精度。以SPPCSPCS模块为对象展开了相应改进,来提高模型的泛化能力和检测精度。
3.2.1. SPPCSPC
SPPCSPC模块的作用是增大感受野,提升算法的泛化性能,该模块将多通道特征图分成两部分,一部分采用多尺寸最大池化操作来获得不同的感受野,另一部分采用常规卷积操作提取特征,该模块在提升模型精度的基础上能最大程度降低计算量,是提升模型效率的重要结构。
3.2.2. SimAM
SimAM [13] 因为其本身无参数的特性,相比现有的通道注意力机制与空间注意力机制,SimAM在没有引入额外参数的前提下,能够综合考虑通道维度与空间维度的相关性,直接推理出三维注意力权重,能够有效的平衡模型的计算量与检测效率,其结构如图2所示。
在衡量目标像素点(t)和背景像素点(xi)的线性可分性时,SimAM使用了能量函数,当输入特征图为
时,像素点线性变换如下:
(5)
(6)
其中,wt和bt分别是线性变换的权重和偏置值。将这些值代入能量函数中,可以得到能量函数的表达式:
(7)
其中,yt和y0为目标像素点(t)和背景像素点(xi)的标签值,y为某一像素点的标签值,i为空间维度上的索引,et为能量函数的值,M为某一通道上像素点个数:
(8)
3.2.3. 改进后的SPPCSPC
为使得网络更加关注密集小目标区域的特征,本文提出SimAM-SPPCSPC结构,在原SPPCSPC中引入SimAM,再去1个CBS层。SPPCSPC和SimAM-SPPCSPC的结构见图3(a)和图3(b)。

Figure 3. SimAM-SPPCSPC and SPPCSPC Module
图3. SimAM-SPPCSPC和SPPCSPC模块
1) 在SPPCSPC池化层之前嵌入SimAM,将目标像素点和背景像素点分离开,并增加三维注意力权重的方式重点关注密集小目标区域。
2) 去除多余CBS。在池化层之前去除1个CBS层,削减不必要的卷积计算,加快模型的推理速度。
3.3. 改进后的YOLOv7网络结构
改进后的YOLOv7主干网络部分,在第2、3、4个ELAN模块后面分别引入CBAM模块,重点关注关键病害区域的特征。提高算法对密集小目标的检测能力。用SimAM-SPPCSPC模块替换SPPCSPC模块,减少有效特征损耗并抑制混淆特征表达,同时增强对密集小目标区域的关注。具体的改进网络如图4所示。

Figure 4. SimAM-SPPCSPC and SPPCSPC Module
图4. SimAM-SPPCSPC和SPPCSPC模块
4. 实验分析
4.1. 训练环境
本文的实验环境建立在Linux ubuntu操作系统上,以RTX3060GPU对加速图像处理、PyTorch深度学习框架,使用Pycharm编辑器,基于Python3.8语言进行编程。
4.2. 病害数据集建立
针对实际应用场景存在复杂多样性的问题,首先本实验依靠自动监测小车实现具体应用场景下的图像采集,使用Labelme软件进行标注,具体的采集设备和图像标注软件如图5中所示;之后使用人工方式优选出合适的样本作为原始数据集,共1994张病害图片,其中包括衬砌开裂病害571张、衬砌鼓包病害758张以及衬砌剥落病害615张,部分病害图像数据如图6所示;最后按照8:1:1的比例划分训练集、验证集和测试集。

Figure 5. Acquisition equipment and image annotation software
图5. 采集设备和图像标注软件

Figure 6. Lining apparent disease image data
图6. 衬砌表观病害图像数据
4.3. 评价指标
本文以准确率(Precision, P)、召回率(Recall, R)和平均精确度均值(mAP)这三个指标来评估模型的性能。具体的指标如式(9)~式(12)表示。准确率表示模型预测的正确性,召回率则表示模型查全率。平均精确度考虑了模型在不同阈值下的表现,综合评估了模型的检测效果。具体的公式为:
(9)
(10)
(11)
公式(11)中,AP是模型的平均精度由一对相矛盾的指标——准确率P和召回率R共同决定。而平均精度均值(mAP)则是所有类别下AP值的平均值,用于综合评估网络在不同类别下的检测效果。
(12)
式(12)中:n是所有类别的数量。
4.4. 对比实验
为了验证每一部分改进的有效性,建立本消融实验。由表1可知,第二组实验添加CBAM可以使模型的mAP0.5提升了6.6个百分点;第三组实验通过加入SimAM-SPPCSPC模块增强对密集小目标病害目标的关注,模型的mAP0.5增加了5.2个百分点;由第二和第三组实验可知,引入CBAM和SimAM-SPPCSPC模块都不同程度的对网络性能进行了提升;第四组实验同时使用上述两部分改进,模型的mAP0.5为91%,达到了本消融实验的最大值。上述消融实验结果证实了改进的有效性。
为了进一步验证本文所提出的改进YOLOv7算法的检测性能,将该算法和YOLOv5 [14] 、YOLOv7-tiny以及YOLOv7进行对比实验。利用本文自制数据集对上述算法进行训练,并对模型性能进行比较,实验结果如表2所示。由表2可知,本文改进算法各项指标相较于其他目标检测算法都具有优势,其中相较于YOLOv7算法的P、R和mAP0.5分别提升了12.7、5.1和8.6个百分点。实验结果验证了本改进算法的性能优势。

Table 2. Algorithm comparison experiment results
表2. 算法对比实验结果
通过自制病害数据集对改进YOLOv7进行训练,结果如图7中所示,图中左侧6张图表示的是模型在训练集与验证集上的各部分损失函数。右侧四张图分别对应P、R、mAP0.5和mAP0.5:0.95四项指标。从图7中可知,改进的算法随着训练轮数的增加,损失函数下降速度减缓并且收敛,各项指标不断提升且在300轮训练时仍然有较好的增长趋势,证明本文改进算法具有较好的收敛和学习能力。
检测结果如图8所示,从图8(d)和图8(e)对比可以看出,改进算法对于易丢失小目标病害的检测效果优于YOLOv7原算法,并且检测精度也高于原算法,提升了衬砌病害的检测质量,能够实现衬砌外观病害的有效检测。

Figure 8. Comparison chart of test results
图8. 检测结果对比图
5. 总结
本文通过在YOLOv7主干网络输出部分分别加入CBAM注意力机制,在SPPCSPC模块中加入无参数注意力机制SimAM,并裁剪掉一层冗余CBS层,提升了网络对衬砌病害的检测精度,其准确率P、召回率R以及平均精度均值mAP@0.5分别提升了12.7、5.4和8.6个百分点,且模型具有较好的泛化性能抑制复杂背景对检测效果的影响。由于本领域没有较完善的公开数据集,本文的数据集样本量过小,且包含的病害种类有限,后期需要对数据集进一步的扩展,同时模型的检测效率也需要进一步提升。
基金项目
常州市5G+工业互联网融合应用重点实验室(CM20223015);江苏省研究生实践创新计划(SJCX22_1481)。
NOTES
*通讯作者。