基于深度学习的排水管道缺陷内窥检测智能识别系统研究
2022-03-06钟洪德
钟洪德
(福州市勘测院,福建 福州 350108)
1 引 言
城市地下管线是保障城市运行的重要基础设施,如同人体的血管一般分布错综复杂。然而地下管道结构复杂维护困难,时间一长易发生各种形式的损坏情况,如:管道堵塞、管线爆裂、材料老化等,这些破损时常引发城市内涝、地表坍陷等事件,影响城市运行、甚至造成不可估量的经济损失。因此管道健康检查已成为市政管理中的重要工作。
地下管道健康检测方法有[1]:①管道闭路电视检测系统(CCTV),目前最普遍检测系统,操作人员利用控制台在地面上进行远程操纵CCTV爬行器拍摄管道内壁,录入管道内部信息进行评价和分析;②管道声呐检测技术,以水为介质利用声呐系统扫描管道内壁,得到结果是以管道纵向断面的过水面积表示,无须处理管道内部和截断水流,操作方便,但适用于管道的变形缺陷检测,结构性缺陷检测效果较差;③多重传感器法,由光学测量装置、微波传感器和声学系统构成,具有多功能检测管道效果,但费用成本较高。在上述三种检查技术中,管道闭路电视检测系统可深入管道内部摄取视频影像,能有效获取到可供管道缺陷检测的一手资料,检测安全性高、信息清晰直观、成本较低,目前在业界已得到普遍采用。但缺陷识别依靠事后人工目视识别,耗时耗力,生产周期长。
解决管道机器人系统检测效率重点在管道缺陷的判别上,深度学习为此提供了有效途径。吕兵、刘玉贤等人,借助卷积神经网络对管道CCTV视频进行了智能检测研究,试验证明在缺陷识别的准确率和召回率及识别速度上均满足了排水管道缺陷智能检测的需要,该方法已经在深圳市的排水管道检测中应用[2]。户莹等人基于卷积神经网络利用深圳市人工数据,建立了管道缺陷识别模型并可表示缺陷范围,二分类准确率接近90%,分割准确度接近80%,极大促进了管道缺陷检测的自动化和智能化水平[3]。但所有样本数据量较少(户莹,每类样本800个)模型准确度不足以取代人工判别,而且样本数据受地域局限不易推广。针对排水管道内部特殊环境,李波锋采用了一种改进的低通滤波求差法提取管道功能性缺陷,该算法能有效消除光照不均匀给检测造成的影响[4]。
2 深度学习原理
2.1 卷积神经网络(CNN)
1962年神经学家Hubel和Wiesel研究猫的视觉皮层[1],发现视觉皮层对于信息的处理是通过神经元上的多个轴突末梢进行分层处理、层层传递的,这启发了人们对于神经网络的研究思想。1998年,LeCun提出了LeNet-5,性能较单纯的分类器来说更加优越。在论文中,LeCun首次使用卷积一词,命名了卷积神经网络(CNN)。2006年,提出了反向传播算法的Hinton在论文中介绍了深度学习的概念,掀起了深度学习的热潮。
CNN是利用卷积核参数共享原理的一种前馈神经网络,最常用的CNN的学习算法是后向传播算法(BP),它具有多维函数映射和模式分类能力。它包括输入信息的正向传递和误差信息的反向传递两个部分,将神经网络的输出值与样本值进行对比,再以两者的均方误差作为目标函数,依照各层权重进行误差分配,调整各层参数,经过多次训练后使得目标函数符合要求,进而满足实际需要[5]。
2.2 残差神经网络(ResNet)
CNN随着网络深度不断增加,梯度弥散和梯度爆炸等问题也接连出现,特别是50层网络的测试误差率相较于20层网络高出一倍。2015年的ILSVRC(ImageNet Large Scale Visual Recognition Challenge)大赛中,He等人提出了残差神经网络(ResNet),层数达到了152层,top-5错误率降到了3.57%,且其参数量比只有十几层的VGGNet网络更少。该网络提升训练准确性[6],且在很大程度上避免了因网络层数过多而产生的梯度爆炸问题。
CNN模型期望可以学习一个非线性最优映射函数H(x),后续样本数据中出现同类数据时会相互靠拢,ResNet模型在传统CNN神经网络模型中增加了一个恒等映射(identity mapping),将该最优映射函数改为H(x)=F(x)+X,这样前一层的未降采样数据和经过降采样的数据可以共同作为下一层网络的输入数据,此时F(x)=H(x)-X,即整个网络只要学习输入、输出数据中的差别部分,即残差。这实际上增大了变化数值对于权重的影响,使得网络对于变化的反应更为敏感[6],更容易对权重进行调整。这解决了CNN模型在学习复杂函数时的困难,将学习过程拆成两个过程,首先学习残差函数F(X),然后通过简单映射学习函数H(x)=F(X)+X。
2.3 学习率优化算法
(1)梯度下降法
梯度下降法(gradient descent)是在深度学习中应用最为广泛的学习率优化算法。主要有两种典型形式[7],随机坡度下降法(SGD,Stochastic Gradient Descent)、小批量坡度下降法(MGD,Mini-batch Gradient Descent)。综合两种算法出现了几种(学习率)自适应优化算法:AdaGrad、RMSProp、Adam。
(2)Adam(Adaptive Moment Estimation)算法
Adam计算梯度的指数移动均值,即利用梯度的一阶矩估计和二阶矩估计独立地、动态地调整每个参数的自适应性学习率。比其他自适应算法更好。
该算法的权值更新规则如下:
(1)
它在实际应用中效果优于其他的自适应优化方法,并且可以提供解决噪声问题与优化稀疏梯度的方法。
3 管道缺陷分析与数据处理
3.1 管道缺陷定义与标识
目前我国排水管道有功能性缺陷与结构性缺陷两大类,依据日常养护中所遇到的各类管道病害和缺陷的状况,管道结构性缺陷包括破裂、变形、腐蚀、错口、起伏、脱节、接口材料脱落、支管暗接、异物穿入、渗漏共10种,管道功能性缺陷包含沉积、结垢、障碍物、残墙、树根、浮渣共6种[8]。修复等级分为三个等级:部分修复或不修复;缺陷管段整体修复;整段抢修或翻建。功能性缺陷一般养护可以得到改善,而结构性缺陷需要修复。具体的缺陷分类定义及等级标准参照表1和表2所示,其中为方便计算机处理将16类管道缺陷添加了数字标识。
管道结构性缺陷定义 表1
管道功能性缺陷定义 表2
3.2 管道缺陷成因分析
沉积:主要是泥沙、工业生活垃圾流入排水管,堆积在管道底部,一般以块状沉积,形态固定,存在不同的像素深度。浮渣:通常位于管道中部大多为泡沫面状,和水的像素边界明显。树根:沿着管道缝隙、接口等缺陷进入,没有及时处理树根生长堵塞管道,可以明显看到树根呈竖向线状生成,局部成网状,特征明显。支管暗接:支管未考虑主管最大排水量直接向主管排水,导致排水承载大产生积水。如图1~图4所示:
图1 沉积
图2 浮渣
图3 树根
图4 支管暗接
3.3 管道缺陷样本数据整理
福州市勘测院现有人工识别缺陷图片约16万多张,每张包括含缺陷类型、缺陷等级、方位、所在管道名称和处于管道相对位置等信息。大部分样本数据中特征明显易被识别,但也有少数模糊不清的样本数据。数据整理主要包括:
(1)先将16万多张图片,分别存放到按数字标识创建分类图像的存储目录Image_0至Image_16中,如图5所示;
(2)用xls文件记录每张图片的缺陷等级;
(3)然后对原始文档一些缺陷描述模糊不清、严重偏色、或描述混合类的图片进行了人工甄别。
图5 分类图像存储目录
3.4 数据增强
为改善样本不均衡性问题(破裂缺陷达3万张,浮渣缺陷只有几百张),防止模型过拟合。对样本数量较少的类别,使用torchvision.transforms(pytorch附带的图像预处理包)进行数据增强。随机翻卷图像,改变图像色差,扭曲图像特征,改变图像尺寸大小,剔除模糊不清色彩混淆的图像,增强图像噪音,一般使用高斯噪音,盐椒噪音[11]。
如图6为图像增强代码所示,transforms.compose函数把多种变化组合在一起,例如分别crop对数据随机大小宽高剪切后resize指定224大小统一形状大小;flip随机水平翻转原始图像。本文对数据进行了50%概率水平翻转,50%概率的垂直翻转,随机对图片进行15%的旋转以及把原本64×64尺寸进行数据变化成统一224×224尺寸图片。
图6 图像增强处理代码
4 模型设计与训练
4.1 模型设计
由于PyTorch框架和其他开源框架相比,在灵活性、速度、易用性这三个方面具有非常明显优势,本文利用Pytorch框架搭建管道缺陷识别ResNet模型。
如图7所示:18层管道缺陷识别ResNet模型:输入层:主要实现图像信息标准化处理;残差单元(4个):残差块的实现是把数据分别进行两次卷积(stage)和输入下采样短路连接;输出层(池化层+全联通层):使用maxpool最大池化向下采样去除冗余信息,最后用FC函数全联通输出。
图7 ResNet网络结构
(1)残差单元
残差单元(residual block)实现分三步:经两次卷积操作,其结果与输入下采样进行Shortcut操作(即残差计算),最后经ReLU激活操作后输出。用_init_函数定义计算序列,之后使用向前传播函数forward()执行计算。
二维卷积通过调用conv2d()类封装实现。本文管道图像像素为224×224,设置窗口每个维度滑动步长stride为1,padding使得输入输出图片维度一致。
(2)激活函数
残差神经网络中采用的激活函数是ReLU函数,相比于sigmoid、tanh函数,ReLU函数不用计算指数和倒数,大大减少了计算量。
其定义如下:
f(x)=max(0,x)
(2)
(3)损失函数与优化器
本文用到交叉熵损失函数,Pytorch封装为cross entropyloss(),使用的优化器为Adam代替随机梯度下降。
4.2 模型训练
(1)定义实验数据集
在模型训练之前通常把所得数据分为三大类,训练集(training set)用来训练模型;验证集(dev set)统计单一评估指标,调节参数选择算法和测试集(test set)模型训练结束后输入模型来进行整体评估模型性能。需要注意的是要注重数据集的均衡,本文数据集占比为60%训练集,20%验证集,20%测试集。
(2)数据加载
本文使用了类Dataset和工具函数DataLoader加载,需要继承Dataset的子类,重载len()与getitem()函数。
(3)迭代计算
迭代优化过程:先将trainloader中数据与标签转换为variable,数据输入网络后向前传播求得损失,由于每一次反向传播的梯度会累加在上一次循环的梯度,故使用zero_grad()函数将确保每一个新的循环前归零梯度,随后进行反向传播,计算损失函数更新优化器参数。
共训练了19个模型:一个二分类模型(即:按是否存在缺陷将样本图片划分为1或0两种状态),使用样本13万个(正样本13万个,负样本约3万个);一个缺陷分类模型,使用样本16万个;16个缺陷等级识别模型分别对应16类缺陷。全部在4倍4 096个NVIDIA CUDA©核心(2048/GPU)硬件支持下,使用Pytorch 1.1框架软件CDUA模式上完成训练,迭代epoch次数:120次,随机分组:10个/组。
为比较不同神经网络对管道样本数据的准确度响应,每个模型均采用18层,50层,101层残差神经网络进行训练,取准确度较高的作为最终模型。
(4)模型评价
缺陷分类模型Resnet18、ResNet50、ResNet101最终训练结果准确度分别为92%、96%、79%,相较AlexNet与VGG模型残差模型精度有所提高,但还存在分类错误情况。实验结果看并不是网络层越深越好。ResNet101层数最多但是实验过程中只达到79%精度产生过拟合现象导致精度下降,ResNet508模型训练效果最佳达到96%。
5 系统集成
5.1 应用背景与要求
系统最终用在管道检测视频缺陷判读上,为获得最好的工作效果,设定以下背景:
(1)机器人在爬行过程中,发现疑似缺陷管段(可以是操作员监视发现),停止前进对疑似区域进行近距离扫描,此时,视频帧显示距离值保持不变或仅有微小变化(设小于 5 cm)。此作业规则在后续数据分析中,能获得明显的空间聚类,有利于提高识别操作的针对性。
(2)剔除非应用场景视频段(机器人进入管道之前拍摄的地面背景视频等)和无用视频段(机器人到达管道尽头之后的图像帧),由人工标定摄像机有效距离起点和有效距离终点进行区分。
(3)外业完成后,系统智能化水平达到代替人工正式生产可接受的识别准确度。
应用要求:由于召回率和精确率不可兼得,考虑到出现检测遗漏难以补救,应尽量避免,因此疑似缺陷识别(YES、NO)召回率要尽量高,要求:特征明显时不低于99%,不明显时要求不低于95%。而疑似缺陷识别精确率可适度放宽,应用时会将不易区分的模糊样本划分为缺陷样本,但可以通过人工甄别剔除,根据缺陷常见度,精确率要求不低于表3。
排水管道缺陷智能识别召回率精确率一览表 表3
5.2 三级组合模型
为达到5.1节要求,本文采用“二分类模型”+“疑似缺陷识别模型”+“缺陷等级识别模型”三级组合模型,分两个阶段,如图8所示:
第一阶段:输入视频,按照一定规则扫描视频(例如:每5帧提取一帧),首先对提取的图片帧进行模糊度检测,过滤掉镜头变焦过程中出现的模糊影像,然后进行“二分类识别”,若无缺陷则忽略,否则进行“距离识别”并将结果计入二分类数据集(该数据集除包括二分类结果信息外,还包括图片帧计数,距离等信息)。
第二阶段:读入二分类数据集,先按距离进行空间聚类,然后对每个聚类进行如下操作:
(1)缺陷类型识别:针对聚类中所有图片;
(2)合并同类型:缺陷类型相同且距离在 0.3 m以内的图片,选取概率值较大者,舍弃其他;
(3)如果缺陷类型清晰,则进行缺陷等级识别,缺陷类型模糊则加入人工干预再进行等级识别。
其中,距离值是从图片底边固定位置上显示的距离影像,采用数字识别技术得到,是缺陷处于管道起始位置的相对度量。
图8 三级模型示意图
5.3 按管材分类建模
由于不同材质的管道管壁纹理差异,对缺陷判别精确度有一定影响,因此实践中对“砼”“铸铁”“PVC”三种管材,分别训练三种管材的识别模型,使准确度进一步提升。
6 应用效果评价
使用本成果共进行6条管道实验性生产,经与人工识别结果比对,各项指标如表4所示:
实验管道识别效果指标一览表 表4
从表4中结果可以看出,实验效果良好,各项指标符合预期,通过适度人工甄别,可以大幅度提高工作效率。同时注意到“PVC”管缺陷类型精确率相对偏低,造成此问题的原因主要是“PVC”样本数量相对偏少,将来可利用生产中得到新增“PVC”样本,通过“增强学习”方法得到改善。
7 结论与展望
排水管线检测成本高、耗时长、精度差,本文利用福州市勘测院16万个地下管线检测数据,立足系统整体实用性,通过对卷积神经网络模型的优化,建立了管道缺陷内窥检测智能识别系统,该系统已在福州市勘测院排水管道视频检测生产系统中应用。
主要结论如下:
(1)模型结构层数越高会产生过拟合现象,识别精度不一定越高反而可能下降,因此模型优化需要考虑现实数据特点和应用背景。
(2)本文推出独具特色的三级组合模型,各级别模型性能指标各有侧重,与生产规程相互配合,在试生产中证明其具有良好的实用性。但缺陷分割尚未实现,有待于进一步研究。
(3)模型训练采用训练样本数据量大,可靠性高。本文用人工智能建立了管道缺陷内窥检测智能识别系统,可有效提高管道健康状况检查质量和效率,研究成果可供管道检测维护相关人员参考。