本发明涉及计算机视觉、计算机图像处理和深度学习等领域,尤其涉及一种基于深度学习技术在判别下水管道异常类型的方法。
背景技术:
近年来,随着我国经济的发展,城市建设的规模越来越大,我国计划用10年左右时间,建成较为完善的城市地下排水管道体系,使地下排水管道建设管理水平能够适应经济社会发展需要,应急防灾能力大幅提升。然而由于种种原因,我国很多城市的地下排水管道存在着不同程度的异常现象,从而给城市排水甚至地面交通带来无穷的后患,严重影响了人们的日常生活。
目前,管道的检测技术主要有以下几种技术漏磁法、超声波法、涡流法、光环图像法、环形光切图像法、psd单点扫描法、全向检测法、内窥镜检测法等。现今使用最普遍的检测方法是使用闭路电视检测机器人(closedcircuittelevisioninspection)(参见:shehabt,moselhio.automateddetectionandclassificationofinfiltrationinsewerpipes[j].journalofinfrastructuresystems,2005,11(3):165-171.),它是一种可沿细小管道内部或外部自动行走、携带一种或多种传感器及操作机械,在工作人员的遥控操作或计算机自动控制下,进行一系列管道作业的机、电、仪一体化系统。通过它可以得到大量的排水管道视频数据,当前工作人员尚需要通过人工观看管道视频的方式,凭经验分析管道异常类型和程度,往往需要消耗大量的时间和精力,也难以实现管道异常检测的精准化、自动化和智能化。为了改善cctv的不足,汤一平等人(专利公开号cn104568983a)公开了一种基于主动式全景视觉的管道内部功缺陷检测装置,此装置使用传统计算机视觉与图像处理方法进行管道异常的识别,识别精度严重依赖于拍摄到的管道图像的质量,因此需要安装各种各样精密的传感器,制作成本较高,无法大规模投入生产。
技术实现要素:
本发明的目的是针对上述问题,提供一种基于深度学习的排水管道异常类型的识别方法,利用大量已有标注的管道异常样本进行训练,能够快速准确判别排水管道异常类型,技术方案如下:
一种基于深度学习的管道异常类型检测方法,包括下列步骤:
步骤1:从若干管道机器人拍摄的视频中抽取视频帧,形成管道图像集s和图像标签集γ,对于管道图像集s里的每个图像集x(n),有与之对应的图像标签集γ,γ=(γ(1),γ(2),…γ),γ(n)表示第ω(n)张图像所属管道异常类型;管道异常类型可划分为管道正常、管道错口、管壁环形裂缝、管壁长形裂缝、树根进入、累积漂浮物,管道积水,共7类情况,依次对应的γ值为0,1,2……6;
步骤2:建立训练数据集,将管道图像集s中的图片划分为训练集t、验证v和测试集ε,以及相应的标签集γt,γv,γε;将t与γt中的图像划分批次batch,送入卷积神经网络进行训练,在深度学习中,为避免出现过拟合overfitting,对训练数据进行数据增强,其方法包括水平翻转、改变图像色彩,加入噪声,在送入卷积神经网络训练之前对图像行标准化处理;
步骤3:使用制作好的数据集通过误差反向传播算法bp进行卷积神经网络的训练,最终输出该图像对应7个异常类别的概率;
步骤4:每次训练模型都会在验证集进行验证,如果在验证集上损失下降,则保存模型,在此期间不断在验证集上进行调优,调优方式包括:调整学习率、改变网络权重初始化参数、调整网络结构、改变dropout强度,使用最优的模型在测试集上进行测试。
优选地,步骤3的卷积神经网络结构为:
第一卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共32个特征图像;
第一最大池化层,池化范围为2*2,每次移动两个像素;
第二卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共64个特征图像;
第二最大池化层,池化范围为2*2,每次移动两个像素;
第三卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共128个特征图像;
第三最大池化层,池化范围为2*2,每次移动两个像素;
第四卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共128个特征图像;
第四最大池化层,池化范围为2*2,每次移动两个像素;
第一全连接层fc,全连接层接的节点个数为256个,dropout强度0.5;
第二全连接层fc,全连接层接的节点个数为7个,dropout强度0.5;
softmax层,最终输出该图像对应7个异常类别的概率。
本发明在分级过程中采用有监督学习的学习方法,通过准确标注管道异常类型图像训练卷积神经网络,所得模型足以区分管道异常类型,解决了目前需要靠人工判别管道异常类型效率低的问题。
附图说明
图1是本发明的流程图
图2是本发明的卷积神经网络结构示意图
图3所提方法处理结果示意图。
具体实施方式
为了使本发明目的、技术方案及优点更加清楚明白,以下参照附图并举实例,对本发明进行详细说明。显然,所描述的实施仅是本发明的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施及实施例中的特征可以互相结合。
通过使用深度学习技术,尤其是近年来在计算机视觉领域中大放异彩的卷积神经网络(convolutionalneuralnetwork,cnn),使得计算机在图像识别与分类领域中取得了相当可观的准确率。因此可以使用已有的,经人工标注好的管道异常图像训练cnn模型提取管道异常处的特征并识别排水管道的异常类型。得到的模型具有泛化更力强,识别准确度高,可直接在闭路电视检测机器人上部署等优势。本发明提出了一种基于深度学习的排水管道异常类型自动检测方法,下面进行说明。
图1是本发明一种基于深度学习的排水管道异常类型自动检测方法的流程图,图2为本发明一种基于深度学习的排水管道异常类型自动检测方法中深度学习网络的结构示意图:
如图所示,所述基于深度学习的排水管道异常类型自动检测方法可以包括如下步骤:
步骤1:通过闭路电视检测机器人拍摄的视频搜集排水管道内部图像数据:从若干管道机器人拍摄的视频中抽取视频帧,形成管道图像集s和图像标签集γ。
s=(x(1),x(2),…x(n)),x(n)表示来自第n个视频的图像集x。
x=(ω(1),ω(2),…ω(n)),ω(n)表示该来自视频的第n张图像。
对于每个图像集x(n),有与之对应的图像标签集γ
γ=(γ(1),γ(2),…γ),γ(n)表示第ω(n)张图像所属管道异常类型。
管道异常类型可划分为管道正常、管道错口、管壁环形裂缝、管壁长形裂缝、树根进入、累积漂浮物,管道积水,共7类情况,依次对应的γ值为0,1,2……6。
步骤2:建立训练、验证、测试数据集;将管道图像集s中的图片划分为训练集t、验证v和测试集ε,以及相应的标签集γt,γt,γt
其中s=t∪v∪ε,
步骤3:进行卷积神经网络的训练
步骤4:训练完成后通过输入管道机器人拍摄的视频进行异常识别。
作为优选的,在步骤1中,所述搜集图像数据的过程包括:
使用matlab2017a,从若干管道机器人拍摄的视频中抽取视频帧(每30帧抽取一帧),形成管道图像集,按照cjj181-2012中华人民共和国行业标准城镇排水管道检测与评估技术规程中给出的管道异常类型对获得的图片进行标注,划分为管道正常、管道错口、管壁环形裂缝、管壁长形裂缝、树根进入、累积漂浮物、管道积水,共7种类别。在此过程中需要人为删除一些对训练有影响的数据,比如:有水印标注的图像、机器人进入管道前和离开管道后拍摄的图像、机器人因为在固定地点停留时间过长而采集到的冗余的图像。
作为优选的,在步骤2中,所述建立数据集过程包括:
将管道图像集s中的图片划分为训练集t、验证v和测试集ε。其中需要保证训练数据集中样本均匀分布,也就是说保证上述提到的7类管道异常类型的图片数量大致相等。
作为优选的,在步骤3中,所述进行卷积神经网络的训练过程包括:
将t与γt中的图像划分批次(batch),送入卷积神经网络进行训练。在深度学习中,为了避免出现过拟合(overfitting),通常我们需要输入充足的数据量,因此可以对训练数据进行数据增强,其方法包括水平翻转、改变图像色彩,加入噪声等。对每张图片随机执行其中的一种或者多种方法。进行数据增强后能使训练的模型有更好的抗噪声能力和泛化能力。最后在送入卷积神经网络训练之前需要对图片进行标准化处理,将图像矩阵每个元素都除以255,使得每个像素值都在0~1之间。
使用制作好的数据集通过误差反向传播算法(bp)进行卷积神经网络的训练,训练使用nvidiagpu进行。该卷积神经网络结构为:
第一卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共32个特征图像。
第一最大池化层,池化范围为2*2,每次移动两个像素。
第二卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共64个特征图像。
第二最大池化层,池化范围为2*2,每次移动两个像素。
第三卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共128个特征图像。
第三最大池化层,池化范围为2*2,每次移动两个像素。
第四卷积层,卷积核大小为3*3,全0填充,卷积核滑动时每次移动1和像素,总共128个特征图像。
第四最大池化层,池化范围为2*2,每次移动两个像素。
第一全连接层fc(512),全连接层接的节点个数为256个,dropout强度0.5
第二全连接层fc(7),全连接层接的节点个数为7个,dropout强度0.5
softmax层,最终输出该图像对应7个异常类别的概率。
每次训练模型都会在验证集进行验证,如果在验证集上损失下降,则保存模型。在此期间不断在验证集上进行调优,主要方法有,调整学习率,改变网络权重初始化参数,调整网络结构,改变dropout强度。使用最优的模型在测试集上进行测试。
上述网络以tensorflow为后台,通过keras深度学习库搭建。在本实施例中,使用kreas中的顺序模型(model=sequential()),通过model.add()方法构建conv2d、maxpooling2d、dense、dropout层。所述全连接层上的每个输出节点为所述管道异常图像的中异常类别属性概率,即每个输出节点上输出的是该图像属于某个异常的概率,例如第一个输出节点为该图像材属于正常类别的概率、第二个输出节点为该图像属于管道环形裂缝的概率等,最终根据概率大小确定出该图像具体属于哪种异常类型。
本发明实施例所提供的管道异常类型检测方法在获取到待识别图像之后,无需用户手动定义特征再进行分类,直接利用预先训练得到的深度学习网络即可判定待识别图像的类别:图像依次经过卷积层、池化层和全连接层后得到异常属性概率,从而确定图像的属性信息。本发明实施例所提供的方案利用的是深度学习识别管道异常,深度学习网络足以刻画和区分物体,相比现有的人工定义特征进行分类的方式准确性更高。
作为优选的,在步骤4中,所述训练完成后,开始识别的过程包括:
通过opencv读取一段管道机器人拍摄的视频,每一秒钟截取视频当前帧输入卷积神经网络进行一次检测(在此期间机器人行进10厘米),将图像传入训练好的模型,依次经过卷积层、池化层、全连接层和softmax层后得到管道的异常类型概率,从而确定管道的异常类别。并通过opencv在视频中对该帧图像加入标注,提示用户检测异常类型。