周 中,张俊杰,鲁四平
(中南大学 土木工程学院,湖南 长沙 410075)
近年来,随着隧道工程数量的不断增多,隧道衬砌病害的治理问题逐渐成为了社会关注的热点,由于大多数隧道的设计使用年限较长,受到长期循环荷载、地下水等多种外界作用的影响,隧道在运营期间难以避免的会出现各类衬砌病害[1]。其中,裂缝是隧道衬砌表面中最为常见的病害[2],裂缝一旦形成不仅会使得衬砌的承载力下降,还会成为地下水的通道,进而引发隧道结构的渗漏水问题[3],对于隧道的安全施工以及运营极为不利,因此有必要定期对隧道内的衬砌裂缝进行检测,掌握裂缝的数量和具体位置,并采取相应的措施进行治理。
目前国内隧道对于裂缝的检测大多还停留在人为巡检的方式[4],检测人员沿着隧道线行走,并对沿途衬砌出现的裂缝进行记录,但是隧道中光线比较暗,对于拱顶、拱腰这些较高的位置,仅仅凭借肉眼难以准确的判别是否存在裂缝,经常出现漏检、错检的现象,不仅耗费大量时间,检测的准确率也不高。近年来,随着计算机的快速发展,图像处理算法凭借其高精度、自动化、远距离等优势逐渐被应用于裂缝的检测当中,图像处理算法主要分为数学图像处理算法[5-7]和深度学习目标检测算法[8-10]两类。其中,数学图像算法虽然能够快速识别裂缝,但是其识别精度受到光线明暗的严重干扰[11],对于隧道裂缝的识别准确度仍有待提高。而深度学习目标检测算法相对来说具有更好的泛用性,更加适合隧道衬砌裂缝的检测。目前被广泛应用于各个领域的目标检测算法主要有以SSD[12]、YOLO系列[13-15]为代表的单阶段神经网络以及以RCNN[16]、Fast-RCNN[17]、Faster-RCNN[18]为代表的双阶段神经网络。单阶段网络相比双阶段网络结构更加简单,因此在运算速度上具有较为明显的优势,但是其算法的目标识别精度一般不如双阶段网络。
隧道衬砌裂缝的自动化识别是隧道裂缝检测的发展趋势,采用无人机或者检测台车沿隧道线路进行实时的裂缝目标检测对算法的检测速度有较高的要求,如果采用双阶段网络结构不可避免地会存在一定的延迟。因此运算速度以及检测精度方面综合表现较为优秀的YOLOv4单阶段神经网络更加适用于隧道衬砌裂缝的检测任务。但是在实际的应用中,该网络仍然存在以下不足:模型参数量较大,难以嵌入到计算能力较差的移动设备当中;对不同的光照以及复杂背景条件下的衬砌裂缝的识别效果不理想。基于此,本文对YOLOv4算法进行改进,提出一种用于隧道衬砌裂缝检测的改进YOLOv4算法,并与Faster-RCNN、SSD、YOLOv3、YOLOv4四种算法进行对比分析,验证了本文提出的改进算法的可靠性。
YOLOv4隧道衬砌裂缝检测算法原理如图1所示,其主要由四个模块组成,分别是输入模块(Inputs)、特征提取模块(CSPDarknet53)、空间金字塔池化(SPP)和路径聚合网络(PANet)共同组成的加强特征提取网络(Neck)模块以及预测模块(Yolo head)。
图2 不同大小先验框示意
本文提出的改进YOLOv4算法将从三个方面进行优化:在输入模块中采用Mosaic数据增强技术对图片进行预处理;采用轻量级网络MobilenetV3取代CSPDarknet53作为YOLOv4神经网络的主干特征提取网络;采用深度可分离卷积替换YOLOv4网络结构中的卷积核大小为3×3的标准卷积。
1.2.1 Mosaic数据增强
Mosaic数据增强就是在图片输入至主干特征提取网络之前,从数据集每一个batch-size的图片中随机选取4张,通过对4张图片进行随机的裁剪、缩放、拼接获得一张新的图片,再将该图片输入至网络中进行训练。Mosaic数据增强过程见图3。采用Mosaic数据增强技术能够有效地丰富检测背景,解决数据集中目标尺度单一的问题,并且由于一张新图片中实际上包含了4张图片的数据,因此训练过程中的batch-size不用设置得很大,单GPU也能实现较好的训练效果。
图3 Mosaic数据增强
1.2.2 Mobilenetv3主干特征提取网络
采用Mobilenetv3代替CSPDarknet53作为YOLOv4主干特征提取网络,Mobilenetv3是2019年谷歌提出的一种轻量化网络[20],该网络继承了Mobilenetv1[21]的深度可分离卷积和Mobilenetv2[22]的逆残差结构,不仅能够有效地降低主干提取网络的参数量,还能够使得特征提取的过程在高维度上进行,从而获取更多有效的特征信息。此外,Mobilenetv3还引入了SE注意力模块[23]。该模块会得到一个与特征通道数量相同的一维向量,此向量与特征通道相乘会使得有效的特征通道的权重增大,而无效或者效果很小的特征通道权重减小,有助于模型在目标检测过程中更好地区分出目标与背景,从而解决复杂背景条件下隧道衬砌裂缝的特征难以提取的问题。
1.2.3 深度可分离卷积
CSPDarknet53网络的参数量占YOLOv4网络的参数总量的比例不足50%,仅仅对主干特征提取网络进行轻量化是不够的。基于此,将YOLOv4网络中卷积核大小为3×3的标准卷积替换为深度可分离卷积,两种卷积过程见图4。
图4 标准卷积与深度可分离卷积对比图
由图4(a)可知,标准卷积操作就是将输入的特征通道经过3×3的卷积核的卷积运算后输出新的特征通道,卷积部分的参数量qstd为
qstd=3×3×C1×C2
(1)
式中:C1、C2分别为输入特征通道数、输出特征通道数。
深度可分离卷积则是将标准卷积结构中的一步卷积拆分为卷积核大小为3×3的深度卷积和卷积核大小为1×1的逐点卷积,深度卷积对每个输入通道进行卷积运算,然后逐点卷积在深度方向上对生成的特征层进行加权和组合,从而创建新的特征层。卷积部分的参数量qdpt为
qdpt=3×3×C1+1×1×C1×C2
(2)
标准卷积与深度可分离卷积的卷积部分参数量比值为
(3)
由式(3)可知,采用深度可分离卷积的计算量远远小于标准卷积,该方法能够有效减少YOLOv4网络的参数量,从而大幅度提高裂缝目标的检测效率。
YOLOv4的总损失函数Loss一共由三部分组成,分别是目标位置误差Lloc、分类误差Lcls、置信误差Lconf,总损失函数的计算式为
Loss=Lloc+Lcls+Lconf
(4)
其中目标位置误差Lloc采用CIOU损失函数进行计算,计算过程为
(5)
(6)
(7)
(8)
式中:P为预测框;R为真实框;Pctr、Rctr分别为预测框、真实框的中心点位置;ρ2(Pctr,Rctr)为预测框与真实框的中心点位置的欧式距离;c为能够同时完全包含预测框和真实框的最小封闭矩形区域的对角线距离;IoU为预测框和实际框的交集区域和并集区域面积的比值;wgt、hgt为真实框的宽和高;w、h分别为预测框的宽、高。
分类误差Lcls计算公式为
(9)
置信误差Lconf计算式为
(10)
本文通过对近十年课题组在多个隧道进行病害检测过程中拍照收集的隧道衬砌裂缝图像进行汇总,构建了包含650张裂缝图像的初始数据集,裂缝图像的分辨率范围为800~3 000,部分裂缝图像见图5。由图5可知,本文构建的的裂缝数据集光照条件多变、背景丰富、裂缝的形状多样,能够较好地反映出实际隧道衬砌裂缝所处的环境以及裂缝的形状特征。为了进一步扩充数据集并丰富背景,在初始数据集的基础上,本文采用旋转、水平及垂直翻转、光照、模糊等多种方式对裂缝图像进行处理,处理过程及部分方法见图6。最终构建的数据集一共含有1 000张隧道衬砌裂缝图片,并按照8∶1∶1的比例划分得到训练集、验证集和测试集。训练集用于对网络进行训练,验证集用于判断训练过程中网络是否收敛,测试集用来判断训练后模型的各项性能的优劣,各数据集隧道衬砌裂缝图像数量见表1。
表1 各类型衬砌病害图像数量
图5 部分隧道衬砌裂缝图像展示
图6 数据集扩充方法
采用Labelimg标注软件对图片进行标注,将数据集转变成VOC格式。由于裂缝的形状和方向不同,采用两种不同的标注策略对裂缝进行标注。其中,对于图片中形状较为规则的横向和竖向裂缝,使用单个矩形框对其进行标注,标注方法见图7(a)。而对于斜向裂缝以及形状不规则的裂缝,为了保证标注的矩形框内,裂缝尽可能占据更大的标注区域从而减少背景的干扰,使用多个小矩形框对裂缝进行标注,标注方法见图7(b)。
图7 隧道裂缝标注过程
本文基于Pycharm开发平台,采用Python 3.9计算机编程语言,使用Pytorch 1.8.0模块进行基于改进YOLOv4算法的隧道衬砌裂缝检测模型的构建,使用NVIDIA GeForce RTX 2080Ti GPU对模型进行训练。训练epochs设置为100次,前50个epochs冻结主干特征提取网络模块权重,只对改进YOLOv4算法框架中其余模块进行训练,设置bacth-size为12,初始学习率为0.001。经过50个epochs训练后进行解冻,对整个网络进行训练,设置bacth-size为8,初始学习率为0.000 1,并采用一维线性差值方法更新不同epochs的学习率。此外,为了对比验证本文模型的有效性,采用相同数据集对Faster-RCNN、SSD、YOLOv3、YOLOv4四种网络进行训练,并在训练之前对各网络参数进行反复调试,从而尽可能确保各网络在训练后能够达到最优性能。
由于先验框的尺寸大小对于模型的检测性能有着较为明显的影响[25],而原始的YOLOv4算法的先验框是作者根据COCO数据集K-means聚类方法获得的,因此尺寸大小并不适用于本文的隧道衬砌裂缝的目标。为了提高模型的检测性能,采用K-means算法对本文构建的隧道衬砌裂缝数据集进行聚类操作。最终确定9个先验框大小分别为(14,26)、(24,61)、(43,102)、(51,55)、(77,191)、(109,97)、(144,279)、(264,183)、(368,381)。
本文选取精确率Pr、召回率Rc、精确率和召回率的加权调和平均值F1、PR曲线、平均准确度AP、模型大小MS、平均检测时间AT、每秒传输帧数FPS作为模型衡量的指标参数。设置IoU的取值为0.5,即当模型输出的预测框与真实标注的裂缝矩形框的重叠区域大于0.5时,认为预测框中存在裂缝目标,反之,预测框中的识别对象为背景。基于该设置,Pr、Rc两项指标分别为
(11)
(12)
式中:TP为裂缝被正确检测的数量;FP为将背景错误检测为裂缝的数量;FN为裂缝未被检测出的数量。
根据上述计算所得Pr、Rc,F1越大表明模型综合性能越好,得F1计算式为
(13)
以Pr为纵坐标、Rc为横坐标绘制得到PR曲线,PR曲线在坐标轴中所包含区域的面积即为AP,AP为评估模型性能的检测精度指标,计算所得的AP越高,表明模型的检测精度越好。此外,由于本文的目标是能够建立实时检测隧道衬砌裂缝检测的模型,因此平均检测时间AT和每秒传输帧数FPS同样也是判定模型优劣的重要参数之一,AT和FPS计算式分别为
(14)
(15)
式中:Ttotol为图片检测的总时间;Npicture为被检测图片的总数量。
根据式(4)~式(10)计算可以得到本文改进YOLOv4模型训练过程的Loss变化曲线,见图8。
图8 损失函数变化曲线
由图8可知,训练集和验证集的Loss变化规律基本一致,在冻结部分权重训练阶段初期Loss迅速下降,经过大约10次迭代之后,损失变化梯度逐渐减小并趋于收敛。由于在迭代50次后对部分冻结权重进行了解冻,整个网络模型均参与训练过程,因此总损失Loss在第51次迭代训练时出现了小幅度的上升,随后继续减小。在迭代70次后,Loss趋于稳定,表明此时网络已经基本收敛,保存训练过程中验证集误差最小的epoch所对应的网络权重参数作为本文的裂缝衬砌裂缝模型的网络权重。
采用测试集分别对Faster-RCNN、SSD、YOLOv3、YOLOv4以及本文提出的改进YOLOv4算法模型进行对比验证分析,各项评估指标结果见图9、表2、表3。
表2 不同算法检测性能评价指标 %
表3 不同模型大小及检测效率指标
图9 PR曲线
由表2可知,本文提出的改进YOLOv4算法模型在进行隧道衬砌裂缝检测时指标Pr、Rc、F1在五中算法中表现均为最优,其中反映模型综合性能的F1相对Faster-RCNN、SSD、YOLOv3、YOLOv4算法分别增加了3.21%、42.04%、20.89%、6.09%。此外,对比分析图9中的PR曲线和表2中的AP可以发现,本文提出算法在裂缝检测精度方面同样表现最优,其AP比Faster-RCNN的增加了2.74%,比SSD增加了26.71%,比YOLOv3的增加了13.19%,比YOLOv4的增加了1.82%。以上结果表明,采用含有注意力机制的Mobilenetv3代替CSPDarknet53作为YOLOv4的主干特征提取网络能够更有效地提取背景条件较为复杂的裂缝特征,从而提高模型对隧道衬砌裂缝的检测精度。
由表3可知,本文提出的算法模型的大小仅为55.1 MB,相对于原始YOLOv4算法模型减小了78.0%,比SSD的减小了46.3%,比YOLOv3的减小了77.3%,比Faster-RCNN的减小了89.6%。在检测速度方面,本文算法的单张图片的检测时间为23.75 ms,FPS为42.1帧/s,同样优于其他四种模型。综合上述数据可以看出,本文提出的改进YOLOv4算法具有更小的模型量以及更快的检测速度,且很好地满足了隧道衬砌裂缝进行实时检测移动设备对帧率的要求。
为了探究光照和背景对于本文提出的隧道衬砌裂缝检测模型的影响,首先按照光线条件将测试集分为光线明亮和光线昏暗两组,分别对模型进行测试,测试结果见表4。然后再按照背景条件将测试集分为背景单一和背景存在各类噪声两组,分别对模型进行测试,测试结果见表5。
表4 不同光照条件下模型测试结果 %
表5 不同背景条件下模型测试结果 %
由表4和表5的结果可知,光线明亮组的F1、AP仅比光线昏暗组的增加了0.63%、0.75%,背景单一组的F1、AP仅比光线昏暗组的增加了1.85%、1.98%,对比可以看出,不同的光照和背景条件下,本文提出的改进YOLOv4模型依旧可以保持较高的精度,表明本文模型具有较好的泛化能力和抗干扰能力。
为进一步直观地展现改进YOLOv4模型在不同光照和背景条件下对于隧道衬砌裂缝的识别效果,本文列举了部分隧道衬砌裂缝检测图像,见图10。隧道光线明亮且背景单一时隧道衬砌裂缝的检测结果见图10(a),隧道光线较暗时隧道衬砌裂缝的检测结果见图10(b),背景存在坑洼、麻点等噪声时衬砌裂缝的检测结果见图10(c)。
图10 隧道衬砌裂缝检测图像
图10中检测框上的数字为裂缝的预测置信度,置信度越高,表明模型认为该目标为衬砌裂缝的概率越高,并且图片中只对置信度为0.5以上的检测框进行显示,避免检测框过多影响显示效果。此外,当预测置信度大于等于0.8时,检测框显示为红色;当预测置信度小于0.8大于等于0.7时,检测框显示为蓝色;当预测置信度小于0.7大于等于0.5时,检测框显示为绿色。
由图10(a)和图10(b)可知,本文模型对于不同的隧道光照条件具有较好的适用性,即使光线较暗时也能够正确的识别出衬砌裂缝目标所在的位置。由图10(c)可知,该模型具有一定的抗干扰能力,当背景中出现泛白、麻面、坑洼等各类干扰时,依旧能保持较好的识别效果。
基于本文提出的改进YOLOv4算法,本文通过Python 3.9计算机编程语言,使用PYQT5模块开发了隧道衬砌裂缝检测平台,见图11。该平台的功能主要包括图片检测、视频检测、摄像头实时检测,用户根据自身需求点击相应的功能按键即可进行检测,检测的结果会显示在界面下方的文本框中。值得说明的是,为了不影响检测的精度,进行检测的的裂缝图片和视频的最低分辨率应不小于416×416。
图11 隧道衬砌裂缝检测平台
基于该平台的摄像头实时检测功能,本文设计了一套完整的隧道衬砌裂缝实时检测流程,见图12,首先将高清摄像头搭载在隧道检测车上,检测车在预定路线前进的过程中不断的对隧道衬砌图像进行收集,收集的视频文件将被实时传输至本文开发的平台进行裂缝病害检测并输出检测结果。在该检测流程的基础上,对宁波某高速公路隧道进行了裂缝病害的实时检测应用测试,测试结果表明,包扩收集、传输、识别在内的整个检测过程的平均检测速度FPS为29.12帧/s,达到了实时检测的要求,且裂缝病害检测结果与人工巡检的结果重合率超过了75%,表明本文提出的改进YOLOv4算法能够较好的应用至实际隧道工程中的衬砌裂缝的实时检测中。
图12 隧道衬砌裂缝实时检测流程
本文通过Mosaic数据增强、Mobilenetv3替代CSPDarknet53作为主干特征提取网络以及深度可分离卷积的方式对YOLOv4算法进行优化,提出一种用于隧道衬砌裂缝检测的改进YOLOv4算法,实现了对隧道衬砌裂缝的准确、快速、智能化识别,主要结论如下:
(1)在检测性能方面,本文模型的F1、AP分别为84.44%、78.05%,相较于Faster-RCNN、SSD、YOLOv3、YOLOv4均有提升,表明该模型有效的提高了裂缝的检测精度。在模型大小方面,本文模型的大小仅为55.1 MB,相对于原始YOLOv4模型减小了78.0%,且远小于Faster-RCNN、SSD、YOLOv3模型。在检测效率方面,本文模型同样表现最优,单张图片的检测时间AT为23.75 ms,FPS为42.1帧/s,很好地满足了隧道衬砌裂缝进行实时检测移动设备对帧率的要求。
(2)本文模型具有良好的抗干扰能力,对于不同光照、复杂背景条件下衬砌裂缝均能保持较好的识别效果,准确地定位出裂缝所在的位置,并使用合适大小的矩形框进行标记
(3)基于本文提出改进YOLOv4算法和PYQT5模块开发了隧道衬砌裂缝检测平台并设计了隧道衬砌裂缝实时检测流程,利用该检测流程实现了对实际隧道工程的裂缝检测。