基于全景图像的隧道渗漏水病害识别方法
2023-09-11许敏娟陈莹莹
许敏娟,陈莹莹,刘 浩
(1.昆明地铁运营有限公司,云南 昆明 650021;2.上海同岩土木工程科技股份有限公司,上海 200092;3.上海地下基础设施安全检测与养护装备工程技术研究中心,上海 200092;4.济南轨道交通集团有限公司,山东 济南 250000;5.北京交通大学 交通运输学院,北京 100044)
渗漏水是常见的隧道病害之一[1-2],如不及时进行处理,会导致隧道内部的钢筋、螺栓金属腐蚀,严重的引起隧道管片开裂、变形,对隧道的安全运营构成威胁[3]。
传统人工检测效率低、主观因素影响大、成本高,且对交通运营产生干扰,已无法满足病害检测的需求。近些年基于机器视觉的自动化检测技术获得快速发展,主要包括激光扫描技术及摄影测量技术[4]。国内外厂家通过研制隧道病害快速检测专用装备,对隧道衬砌表观图像进行采集,如何实现基于图像的病害自动、准确识别成为解决问题的关键。
黄永杰等[5]基于数字图像算法完成盾构隧道渗漏水自动检测。彭斌等[6]基于图像分割相关处理技术,通过图像灰度转换、选择分割阈值、二值图像的开闭运算等对全景图像的渗水区域进行识别与修正。Protopapadakis等[7-8]通过对图像提取熵、纹理、灰度、边缘等多种低级特征,再输入卷积神经网络以获取高级特征,最后通过多层感知机对隧道病害进行识别,但是构建的深度学习网络框架较简陋。黄宏伟等[9]提出一种基于全卷积网络的盾构隧道渗漏水检测算法,消除干扰物带来的影响。薛亚东等[10]改进CNN模型的inception模块以及网络结构,构建了隧道衬砌特征图像的分类系统。薛亚东等[11]通过数据统计和聚类算法K-means对衬砌病害几何特征分析,优化VGG-16网络模型,基于卷积神经网络Faster R-CNN进行病害自动检测。汤一平等[12]对获取的全景图像展开,基于图像预处理和二值化分割处理等对疑似病害区域提取,使用卷积神经网络自动检测病害。
上述成果表明,利用深度学习方法进行隧道渗漏水病害自动识别已成为新的发展趋势[13-14],但现有研究大多基于单张局部原始图像,难以体现渗漏水完整的形态,基于隧道全景图像,可展示出渗漏水完整的形态,使深度网络可充分获取渗漏水特征,同时也便于获取工程中所需的病害面积等几何特征。
隧道背景中存在螺栓、衬砌修补、污痕、管线等干扰,若隧道光照不均匀易导致采集的图像明暗不均匀,都可造成渗漏水病害的误识别;渗漏水形态复杂多样,样本不平衡可导致漏识别。为解决以上问题,提出基于全景图像的隧道渗漏水病害识别方法。基于采集的全景图像构建渗漏水样本库,使用RetinaNet目标检测网络实现渗漏水区域初步定位,改进DeepLab V3+网络提高分割精度,并提出方向区域搜索算法实现邻近断开渗漏水区域的连接,算法能快速精准检测、分割渗漏水区域。
1 样本库建立
深度学习网络模型的训练需要大量数据样本[15],首先,基于二维伽马自适应校正算法调整全景图像亮度,以解决图像光照不均匀问题,效果见图1,调整后的亮度均匀性明显提高。然后,对处理后的全景图像进行人工筛选、标注、裁剪等操作,构建样本库,见图2。
图1 图像预处理
图2 渗漏水示例
渗漏水病害的灰度多样性体现为:既存在喷射、涌流造成的暗黑色区域,见图2(a);又存在滴漏、浸渗结构腐蚀造成的白色结晶物区域,见图2(b)。共分2个类别进行标注,标签命名为“S1”“S2”,标注区域需大于50×50像素。样本标注步骤为:
Step1采用labelme软件进行全景图像分割标注,见图3(a);对标注获得的分割标签图扩充区域进行原图裁剪,见图3(b)。
图3 标注与裁剪示意
裁剪区域扩充为Wc×Hc像素,裁剪区域左上角坐标为
xc=xr-(Wc-Wr)/2
yc=yr-(Hc-Hr)/2
( 1 )
式中:裁剪区域宽、高分别为Wc=2 560像素、Hc=2 048像素,(xr,yr)为渗漏水轮廓最小外接矩形左上角坐标点;Wr为矩形的宽度;Hr为矩形的高度。
Step2选用LabelImg软件进行渗漏水区域定位检测标注,见图4。
图4 定位检测标注示例
共构建66 552张2 560×2 048像素渗漏水定位检测数据集和66 552张2 560×2 048像素分割数据集,其中,类别S1共39 931张,类别S2共26 621,两个类别样本比例未达1∶1,即白色结晶物区域渗漏水样本不平衡,易造成漏识别。
2 渗漏水识别方法
基于构建的样本库进行渗漏水识别,主要步骤包括:①区域定位检测;②渗漏水分割;③邻近断开区域连接以解决因窗口滑动预测方式而造成渗漏水分割断裂的情况,实现渗漏水的精准识别,流程见图5。
图5 渗漏水识别方法流程
2.1 渗漏水区域定位
隧道背景中存在螺栓、修补、污痕、管线等干扰,易造成误识别,通过搭建RetinaNet网络,实现渗漏水区域的定位检测,降低误识别,以便后续基于准确检测到的渗漏水区域进行分割处理。
RetinaNet网络由骨干网络、分类和边界回归子网络构成,用于特征提取的骨干网络可选择VGG、残差网络ResNet、密集连接卷积神经网络DenseNet[16],本文采用ResNet50。通过骨干网络对高层语义特征进行提取映射,使用FPN提取相同维度的多种尺度的特征进行融合,最后将特征送到分类和边界回归子网络中,见图6。
图6 RetinaNet结构
RetinaNet网络采用新型损失函数Focal Loss,通过调制因子,使得网络能专注于渗漏水区域,模型训练过程中,增大困难样本渗漏水区域的权重,减小简单样本背景区域的权重,实现渗漏水区域定位,检测效果见图7。
图7 渗漏水区域定位
2.2 渗漏水分割
DeepLab[17]系列网络是图像分割领域成熟且主流的网络,选择DeepLab V3+进行渗漏水分割。但渗漏水是形态复杂多样的非刚性目标,DeepLab V3+存在一定的不足,网络误识别及漏识别较高,且不能满足工程自动识别速率要求。对此,改进DeepLab V3+网络,在保证分割准确率的同时,对模型进行压缩,加快运行推理速度,网络结构见图8。
图8 改进的DeepLab V3+网络结构图
从骨干网络、可变形金字塔、损失函数三大部分改进网络,并进行改进效果对比测试。
2.2.1 骨干网络
骨干网络选用轻量化网络MobileNet V2,基于逐点卷积PW和深度卷积DW进行特征的提取。DW卷积上层输入通道的数量决定了输出通道的数量,自身无法改变通道的数量。若上层输入通道数较少,DW仅可以提取较低维度的特征,对此MobileNet V2在DW卷积前构建了一个升维系数是6的PW,以便提取高维特征。确保不管输入的通道数多大,DW都能够基于逐点卷积在更高的维度提取特征。
2.2.2 可变形金字塔
原始ASPP模块使用的标准卷积核基于规则格点采样,其感受野在同一层中不同位置的大小完全相同,无法依据检测目标的尺度进行调整。渗漏水这类形态复杂的非刚性目标在图中不同位置,对应的尺度和形态也不同,标准卷积核不能很好地适应渗漏水特征变化。
为使模型能够适应物体的各种形状,DeepLab V3+使用数据增强处理,通过数据集使网络适应目标的形态变化比较耗时,且对网络的结构设计有很高的要求。对此,引入可变形卷积核,将DeepLab V3+中ASPP模块采用的标准卷积核进行替换,可得
( 2 )
式中:Y为输出特征图;W为权重;X为输入特征图;p0为特征图Y上的某一点;pn为标准采样点;Δpn为需要增加的位置偏移;R为感受野的尺寸,R={(-1,-1),(-1,0),…,(0,1),(1,1)}。
二维图像中,每个像素点在x和y两个维度上均有9个偏置方向。基于单个通道数为18的卷积层获取位置偏移,并将该偏移量加入输入层固定的采样区域,进而使原始卷积窗口发生了不同位置的平移。原始特征图上没有与新位置对应的像素,因此采用双线性插值算法生成新的特征图,且保证分辨率不变。
DeepLab V3+加入可变形卷积,使感受野能够自适应渗漏水尺度的变化,对信息的融合更加灵活,提高分割网络对渗漏水形态变化的学习能力。
2.2.3 损失函数
渗漏水样本不平衡以致漏识别,为此引入Focal Loss损失函数,并结合逐像素交叉熵损失函数,通过对样本类别占比与判定阈值比较,自适应选择损失函数训练模型。
Focal Loss损失函数FL(pt)为
FL(pt)=-α(1-pt)γln(pt)
( 3 )
式中:α和γ为2个超参数,控制难易检测不平衡的样本权重;pt为模型预测的概率;α(1-pt)γ为调制因子。
基于调制因子获取不同的损失,简单样本的pt较大则减小相应权重,困难不平衡样本的pt较小则增大相应权重,使模型集中在困难不平衡样本上进行训练。
逐像素交叉熵损失函数Lseg为
[1-sgt(c,x,y)]log[1-spred(c,x,y)]}
( 4 )
式中:n为类别的总数;h、w为图像的长度和宽度;sgt(c,x,y)为像素(x,y)是否属于类别c;spred(c,x,y)为像素(x,y)预测属于类别c的概率;Lseg为每个像素的预测spred(c,x,y)与标注sgt(c,x,y)误差损失和的平均值。
当训练样本类别S1∶S2不满足1∶1时,使用Focal Loss损失函数,当类别S1和S2样本比例平衡时,使用逐像素交叉熵损失函数。
2.2.4 改进效果
随机选取图像进行对比测试:①原始ASPP与引入可变形卷积效果对比见图9;②原始损失函数与融合Focal Loss损失函数效果对比见图10。
图9 原始ASPP与引入可变形卷积效果对比
图10 融合Focal Loss损失函数效果对比
图9(a)中原图存在形状、尺度大小不一的两处渗漏水,基于原始ASPP模块的标准卷积核,感受野未依据渗漏水的尺度进行调整,仅检测到红色框中渗漏水区域,造成黄色框内渗漏水区域漏识别,引入可变形卷积后,能够准确检测到两处渗漏水,降低漏检数;图10(a)中原图存在白色结晶物渗漏水区域,数据集中此类渗漏水样本比例不平衡,基于原始损失函数训练的检测模型难以检测,造成漏识别,引入Focal Loss损失函数,增大样本的训练权重,使模型能够精准检测到此处渗漏水区域,以降低漏检数。
改进后的网络最终分割效果见图11。图11(a)为一张背景复杂的渗漏水图像,包含线缆、交通锥、铝窗、衬砌修补等干扰,图11(b)为Deeplab v3+分割效果,网络将交通锥误识别为渗漏水区域,进行分割;改进后分割效果见图11(c),算法不仅能避免复杂背景造成的干扰,正确识别出渗漏水区域,且对滴漏、浸渗结构腐蚀造成的白色结晶物区域这类不平衡样本,也能够完整且精准分割出渗漏水区域。
图11 渗漏水区域效果比较
2.3 邻近断开区域连接
实际工程中检测图像为分辨率超过3 000×4 000的隧道全景图,而网络输入尺寸为513×513,若对原始全景图进行检测,图像会被压缩,丢失大量信息,因此在全景图上进行窗口滑动预测,但此方法会造成完整相连的渗漏水区域被切断,导致分割结果不完整。对此,提出方向区域搜索算法实现渗漏水邻近断开区域的连接。算法步骤如下:
Step1当前渗漏水轮廓区域A1查找最小外接矩形R,矩形R左上角坐标点为Ru(xu,yu)、右下角坐标点为Rd(xd,yd)。
Step2对渗漏水轮廓区域A1进行上下左右四方向区域搜索,以向下搜索渗漏水区域A2为例,见图12,限定向下搜索距离为T像素,依据经验值设T为25,分割图Is的宽、高分别记为Ws、Hs:
图12 四方向区域搜索示意图
Step2.1行坐标遍历范围为[ys,ye],列坐标遍历范围为[xs,xe],设xl记录搜索到的左边列坐标最小值,xr记录右边列坐标最大值。
Step2.2对分割图Is从上至下逐行遍历,当前行yt从左至右搜索非0像素,一旦搜索到,记录左边坐标为(xz,yt),同时从右至左搜索非0像素,一旦搜索到,记录右边坐标为(xy,yt),当满足条件xz
Step2.3继续遍历yt+1行,重复Step2.2中操作,直至遍历完所有行。若最终未搜索到,则跳转Step2.3,进行其他方向搜索。
Step2.4基于分割图Is截取限定区域A′2,A′2左上角坐标(xl,ys),宽度为WA′2=|xr-xl|,高度为HA′2=|ye-ys|,截取限定区域A′1,A′1左上角坐标为(xu,2yd-ye),宽度为WA′1=|xd-xu|,高度为HA′1=|ye-ys|。
Step2.5提取限定区域A′2和A′1最左边指定宽度范围Dl=10像素区域内边缘像素坐标点,考虑分割边缘存在毛刺拐点的情况,如图13(b)红色框放大区域所示,使用RANSAC[18]算法进行多项式曲线拟合,以剔除毛刺拐点带来的干扰,使拟合的曲线更贴近渗漏水轮廓形态,如图13(d)蓝色框放大区域所示,连接A1和A2断开区域左边部分,右边部分做同样处理,连接渗漏水邻近断开轮廓。
图13 邻近断开区域连接
Step3其余方向搜索操作处理同Step2。
为使连接的轮廓更平滑,进行形态学闭运算处理,最终效果见图13。
3 试验与分析
通过上海同岩土木工程科技股份有限公司自主研制的隧道智能检测车进行隧道衬砌表观病害图像的快速采集,采集了海量衬砌表观病害图像。
基于Visual Studio 2015开发环境、OPENCV图像库、Tensorflow深度学习网络框架,在配置有GTX1660 GPU的PC上对采集的图像进行样本标注、模型训练及结果分析。
3.1 渗漏水定位检测
对构建的66 552张定位检测数据集,以8∶2的比例随机选取图像作为训练数据和验证数据,初始学习率为0.001,批量大小为8,图像训练轮次500次。通过C++编程语言实现Retinanet模型的调用,置信度设为0.5,对输入的图像进行渗漏水区域定位检测,部分结果见图14。
图14 渗漏水定位检测
对6 552张裁剪小图进行渗漏水定位批量检测,以验证模型定位效果。图像共有6 825处渗漏水,正确检测到6 376处,定位准确率可达93.42%,仅449处检测错误,误检率为6.58%,模型定位效果可靠。
3.2 目标区域分割
同理,对构建的66 552张分割数据集,以8∶2的比例随机选取训练数据和验证数据,初始学习率为0.001,批量大小为16,共进行30 000次迭代训练。
前期定位检测到渗漏水区域之后,将检测到的区域送入改进的DeepLab V3+网络进行分割,部分分割结果见图15。
图15 渗漏水区域分割
选取Unet、Deeplab V3+算法与本文算法进行对比分析,不同算法渗漏水分割效果见图16,图16(b)为人工标注的渗漏水标签图,作为各个算法分割效果对比的标准。
图16 算法分割效果对比
图16(a)中①图的两处渗漏水位置较接近,Unet[19-20]、Deeplab V3+算法将其作为一个整体,进行分割,本文算法能将两个渗漏水区域独立分割出来;对于②图,Unet、Deeplab V3+算法存在过分割以及分割不完整的情况;对于③图,Unet算法对渗漏水区域过度分割,且第二处较小渗漏水区域漏分割,Deeplab V3+算法对两处渗漏水均分割不完整;对于④图,Unet算法存在过度分割问题,Deeplab V3+算法能较好的分割;对于①~④图,本文算法均能较好的分割,且与标签图对比,分割结果更精准;⑤图相较其他算法,本文分割效果仍是最好的,因此类为多处局部散点渗漏水,无详实的渗漏水边界,导致存在分割不完整的情况;⑥图中的渗漏水,所有算法均未检测到,此类是衬砌修补过后的几处局部点渗漏水,在衬砌修补的痕迹上,渗漏水的特征表现不明显,以至难以检测。
为了更客观的对各种算法进行评价,分别从分割精度以及处理速度两个方面对比分析,使用分割指标平均交并比(MIoU)[21-22]进行评估,见表1。
表1 不同算法性能对比
由表1可知,Unet和Deeplab V3+算法的平均交并比分别为83.54%、87.72%,本文算法引进可变形卷积以及自适应选择多类别损失函数,将分割指标提高3.3%,可更好地适应渗漏水形态变化;“时间”指平均处理一张2 560×2 048像素图像的时间,Unet和Deeplab V3+算法的检测时间分别为0.11、0.39 s,本文算法基于Deeplab V3+进行改进,网络结构相对Unet较为复杂,处理时间也略高于Unet,但使用轻量化网络MobileNet V2,在保证分割精度的同时,处理时间比Deeplab V3+低。
3.3 邻近断开区域连接处理
实际工程应用中,检测图像大小为8 000×5 500像素的隧道全景图像,为了保证渗漏水检测识别的效果以及满足定位检测、分割网络图像输入尺寸的要求,
基于全景图采用窗口滑动预测方式识别渗漏水,滑窗大小设置为2 560×2 048像素,水平和垂直方向滑动步长设置为1 000像素,示意见图17。
图17 窗口滑动示意图(单位:像素)
图17中,完整的渗漏水区域会因窗口滑动预测方式,被切割为上下、左右多个部分进行检测,部分被割裂的渗漏水区域易被误识别为背景进而被剔除,造成渗漏水分割不完整,产生断裂的情况,基于本文提出的方向区域搜索算法,实现渗漏水邻近断开轮廓的连接,效果见图18。
图18 邻近断开轮廓后处理
经过滑窗检测的分割方式,获得图18(b)轮廓断开的分割图;对于原图①,经过向上区域搜索,实现断开轮廓的连接;原图②、③,分别使用向左、向右区域搜索算法,连接邻近区域;邻近断开轮廓连接之后,再经过形态学闭运算处理平滑边缘,最终效果见图18(c)。
本算法已集成于同济曙光病害自动识别软件中,并进行了大量工程应用,部分隧道全景图像渗漏水检测效果见图19。
图19 隧道全景图像检测效果
图19基于提出的隧道渗漏水自动识别算法,能够精准定位到渗漏水区域,并完成精细分割,满足实际工程应用需求。
4 结论
基于深度学习算法实现隧道渗漏水自动识别,构建渗漏水样本库,重点分析并改进DeepLab V3+分割网络,并提出了方向区域搜索算法,实现邻近断开渗漏水区域的自动连接。研究结果表明:
(1)改进DeepLab V3+分割网络,引入可变形卷积,使感受野自适应渗漏水复杂形态的尺度变化,并将逐像素交叉熵损失函数与Focal Loss损失函数结合,基于类别占比自主选择损失函数,可解决背景复杂、样本不平衡带来的误识别及漏识别问题。
(2)与分割网络UNet、DeepLab V3+进行对比,实验结果表明本文算法在渗漏水分割的准确度上有更好的表现,结合提出的方向区域搜索算法,实现渗漏水邻近断开区域的连接。
(3)研究成果可应用于隧道渗漏水自动化检测,检测效果更精准、更高效,已进行了工程应用。后续工作需要对渗漏水类别进一步细分,进行研究。