基于DenseNet分类的隧道裂缝检测研究
2020-09-02高新闻李帅青金邦洋
高新闻,李帅青,金邦洋
(1.上海大学 机电工程与自动化学院,上海 200444;2.上海大学 上海城建(集团)公司建筑产业化研究中心,上海 201400)
0 引言
地铁是缓解城市交通拥挤的主要方式之一。然而,由于老化、热膨胀、人为损坏、地形变换等影响,地铁隧道的表面和内部结构受到破坏。这些分裂和细长的缺陷通常被称为裂缝。
裂缝作为常见的隧道病害类型,会破坏衬砌结构的刚度和承载能力,而且有概率发展成裂缝通道腐蚀钢结构,导致结构的进一步受损,造成恶性循环,严重影响隧道的正常运营和耐久性[20]。人工检测作为隧道裂缝检测的通常手段,漏检严重,这种方法主观且低效。此外,隧道的不良照明条件使检查员很难从远处看到裂缝。因此,开发自动裂缝检测和分类方法是解决上述问题的更优选择。
1 相关研究
通过机器人搭载的高清相机自动触发拍摄采集隧道衬砌图像[1-5],多方位的相机阵列保证了隧道图像采集的完整性,针对采集的图像数据利用图像处理技术自动识别检测裂缝的位置、长度、宽度及面积等信息。利用图像处理技术、裂缝量化、变化检测、神经网络和三维可视化模型来可视化缺陷[9]。通过自动化的检测手段将人从乏味、枯燥的劳动密集型工作中解脱出来。
裂缝检测算法[8],大致可以分为图像获取、预处理、图像处理、裂缝检测、参数评判几个步骤。张文宇等人[7]利用传统的分割算法对裂缝图像进行处理,获得了接近90%的准确度,但是直接对整张图像进行裂缝提取容易将噪声信息包含在内,导致精度降低。
随着深度学习在图像领域的快速发展,许多有效的分类网络被提出,如AlexNet[10]、VGGNet[11]、GoogleNet[12]等,利用神经网络对裂缝分类后处理能够有效提高检测的准确性[13-15]。Sattar Dorafshan等人通过AlexNet对混凝土裂缝图像进行分类后检测,减少了背景信息干扰,但是在隧道复杂环境下,AlexNet分类效果受环境影响较大,影响后续裂缝检测。黄高、刘壮等人[16]设计的DenseNet网络结构在公开数据集ImageNet上取得了非常高的识别率和检测效果,然而目前该网络应用于隧道裂缝分类还比较少。
基于深度学习的语义分割算法在大样本集的数据集上有较好的效果,黄宏伟等人[3]利用FCN语义分割算法对隧道图像进行处理,直接获取裂缝的语义信息。但是FCN分割的结果往往不够精细,图像过于模糊或平滑,没有分割出目标图像的细节,同时裂缝细长交错的形态在语义分割标签的制作过程中消耗的时间成倍增加,人力成本相对较高。另一方面,隧道中裂缝属于较为严重的病害,在裂缝早期阶段就需要及时发现处理,与传统方法相比,细长裂缝图像的分割处理是深度卷积神经网络的弱点[6]。
另外,裂缝检测除了计算机视觉方法,还有利用激光点云信息[17]、红外信息[18]等进行检测,相对视觉方法可以忽略一部分光照不均的影响,但是数据处理量较大,成本相对较高,故不在本文考虑范围之内。
有别于其他类型的检测,隧道裂缝检测对于裂缝的检测率有更高的要求。对于潜在的高危害裂缝,检测算法必须保证不放过任何一个可能。只有这样才能实现隧道的安全。为此,本文提出基于DenseNet分类的隧道裂缝检测,以应对复杂隧道环境,并通过多维分类器在分割基础上进一步去除背景噪声,以期达到检测的鲁棒性。
2 检测系统设计
本文所提出的检测算法如图1所示,主要可以分为3个部分:1)将自动巡检车采集隧道视频按照管片位置进行裁剪获取原始隧道图像,通过畸变校正,去噪等预处理操作获得较为清晰的图像;2)将预处理后的图像切分,通过深度学习分类算法进行裂缝辨别;3)将分类判别为裂缝的图像区域通过滤波、光照均衡化、分割、去噪、区域选取等操作完成裂缝快速检测。
图1 检测算法结构图
2.1 数据采集
盾构隧道检测系统由激光传感器、云台、相机阵列、磁条导航、避障模块、RFID路标、装置底盘等组成。
如图2所示,隧道视频由履带式自动巡检车视频阵列采集模块采集,采集模块由3个高清运动相机阵列组成。相机自带的光学防抖技术以及底部云台可以减少由于巡检车车身晃动造成的画面抖动。巡检车底部安置高功率光源,保证在隧道光线不足处对照明提供补充,保证采集画面的纯净度,但受限于数量及实际工作条件限制,采集的视频画面不可避免地存在阴影和昏暗的角落。激光距离传感器用于测量表面和相机之间的距离,为计算裂缝病害实际物理参数(面积、长度)提供依据。
图2 盾构隧道检测系统
巡检车在隧道行进途中对周围的图像进行采集后,先依据视场长度进行帧率提取,接着对采集视频图像进行畸变矫正与降噪,最后把处理后的图像输入进本文检测算法之中。
3 裂缝检测
3.1 DenseNet裂缝分类
如图3所示,将原始图像均匀切分,获得子图像。对子图像进行裂缝与非裂缝分类标注,建立初始隧道裂缝数据集。
图3 裂缝分类
DenseNet结构主要由密集连接块(DenseBlock)和过渡层(Transition,卷积+池化)组成。DenseNet将图像低层的特征图以适当的方式映射到高层的网络中,互相连接所有的层,每个层都会接受其前面所有层作为其额外的输入,这可以实现特征重用,使得模型更加简洁,更易提升效率。由于密集连接方式,DenseNet提升了梯度的反向传播,使得网络更容易训练。
3.2 检测流程
如图4所示,裂缝检测包括以下流程:
图4 快速检测
1)图像滤波处理。获取的原始图像由于受到混凝土及环境因素等影响,往往存在较多的噪声信息。比如衬砌表面常见的砂石、坑洼麻点等噪声,如果不做处理会导致检测结果带有大量干扰,增加了检测的难度,同时围绕在裂缝周围的噪声破坏裂缝图像形态降低了检测的精度。预先利用图像滤波去除噪声可以减少上述问题。
2)将RGB图像转化为灰度图像。图像的R、G、B颜色分量分别映射到R、G、B立方体的对角线上。
3)光照均衡化。由于隧道光照条件恶劣,只有引入外部照明才能满足图像采集要求,但同时也会造成光照不均匀进而影响后续图像分割效果。特别是过曝,会导致裂缝区域与背景信息层次不清,裂缝提取困难。为解决光照不均匀的问题,本文通过底帽变换,闭运算减去原图的结果得到背景相对均匀的图像。如图5所示,观察裂缝图像的灰度三维图,可以看到,光照均衡化后,裂缝区域被凸显出来。
图5 光照均衡化
(1)
两个区域的平均灰度为u0和u1,整幅图像的平均灰度为u,计算类间方差区域间的方差为:
σ2(T)=P0(T) (u(T)-u0(T))2+
P1(T) (u(T)-u1(T))2
(2)
取分割的两个区域的最大方差以确定是两个区域的最佳分离状态。
5)消除孤立点或孤立块。由于隧道内部的环境光、衬砌表面缺损、杂物附着以及软件算法修正等影响,图像分割可能会出现孤立点或孤立块噪声。采用形态区域开运算,可以去除这些噪声。公式如下:
E= (FΘS) ⊗S
(3)
6)区域选取。利用Sobel边缘检测方法选取裂缝区域,作为后续多维分类器操作输入。
3.3 分类器
在预处理中的开操作后,多数的错误识别被移除。但是,一些较大区域的非裂纹部分仍然存在。虽然,当阈值足够大时,能够移除这些部分区域。但是,过大的阈值会移除裂缝中不连续的一部分,降低检测率。提取它们的数值特征可以用于裂缝划分。采用的数值特征有周长面积比律、相对大小和长宽比。选取这些多维度特征进行分类,将图像闭合区域分为裂缝与非裂缝两类,剔除非裂缝区域保留余下部分,获得较为精准的裂缝识别图像。
3.3.1 周长面积比律。
对于平面规则图形或者光滑围线,其周长和面积有如下关系:
(4)
其中:A是平面区域面积,P为边界长度。比值:
(5)
α的值和图形形状有关系,和大小无关。即对相似的图形来说,α是一常数。
裂缝可以归为分形结构,具备自相似性,遵从分形规律。因此,通过分析隧道裂缝分形规律,提取裂缝面积-周长特征可以更为有效的筛选裂缝。
3.3.2 相对大小
对于处理后的裂缝闭合区域,通过计算区域内像素数目与图像尺寸的比值获得闭合区域相对大小。噪声对象的像素数总是小于裂缝的像素数。考虑到图片裁剪,缩放等因素产生的影响,选取相对大小作为特征。
(6)
其中:Σa为闭合区域像素数目,w为图像宽度,h为图像高度。
3.3.3 长宽比
裂缝具有细长连续的特征,通过裂缝最小外接矩形获取裂缝闭合区域长宽比特征,通过筛选符合细长特征的区域可以过滤掉一部分噪声。
在实际应用中,分类器的设计有较多的限制,时间成本及分类效果都要顾忌到。提取裂缝样本的上文特征输入One-Class SVM,训练单分类的分类器用来检测异常闭合区域,剔除非裂缝点。
4 实验分析
4.1 实验数据及配置
本次实验平台采用的操作系统为Ubuntu16.04,编程语言Python,内存32 GB,GPU为NVIDIAGeForce 1070,在Keras深度学习框架下进行实验。分类数据集分为两部分,一部分来自SDNET2018[19],另一部分为本文数据集。我们按照训练集、验证机、测试集8∶1∶1的比例分别进行随机划分,在迁移学习模式下实验。
本文准确率计算公式为:
(7)
其中:TP(True Positive)表示正确分类的正样本数,TN(True Negative)表示表示正确分类的负样本数,FP(False Positive)表示错误预测为正例的负样本数,FN(False Negative)表示错误预测为负例的正样本数。
4.2 结果对比
如表1所示,在SDNET2018数据集上,DenseNet算法在2 epoch(4 000迭代)后就达到了99.95%的准确率,相比AlexNet在10 epoch后92.90%的准确率,DenseNet更加高效。隧道裂缝相对于其他混凝土裂缝来说,存在渗漏水、蛛网、管线以及更复杂的光照环境的干扰。在实际工程中,检测更加困难。可以看到在本文数据集中,DenseNet在5epoch后的准确率为95.83%,相对SDNET2018数据集测试有一定程度的下降,但是4.17%处于可接受范围内,但是AlexNet网络层数相对较浅,应对复杂环境下各种干扰因素能力相对更差。
表1 分类算法对比
图6中的(a)为原始图像,图(b)为Sattar Dorafshan等人[13]提到的效果表现较好的LoG检测算法,图(c)为本文使用的检测算法。可以看到,在光照均匀,背景无干扰,画面纯净度较高的情况下,LoG以及本文算法都能很好地检测出裂缝区域。但是LoG算法检测裂缝边缘周围部分非裂缝区域被错误的划分。在实际隧道环境中,裂缝区域往往伴随着渗漏水,灰尘,等噪声的干扰,采集的图像画面明暗不均衡,纯净度较低,如图7所示,对比LoG及本文算法可以发现,LoG算法有较多的不连续现象,同时,存在较多的错检,而本文算法能够将大部分的裂缝区域识别出来,并且不连续及错检较少[21]。
图6 图像对比图
图7 图像对比图
如图8所示,图(b)为直接利用本文分割算法对原图处理结果,图(c)为结合DenseNet深度学习分类网络后处理结果。通过前置的分类,原图中无关的背景信息,衬砌表面麻点、水痕、灰尘等干扰因素被屏蔽,大大提高了后续处理的准确性。
图8 检测对比图
5 结束语
本文提出了一种基于深度学习的裂缝检测算法。传统算法大多只关注于直接对裂缝图片的检测,本文通过卷积网络对图像裂缝区域进行筛选后检测,排除了背景无关信息的干扰,并通过提取识别出的裂缝区域多维特征进一步的对其分类,过滤掉误识别的裂缝区域,从而获取精确地裂缝信息为裂缝的病害程度分析提供依据。本文选取混凝土裂缝数据集及隧道裂缝数据集,通过实验对比AlexNet及DenseNet网络,验证了DenseNet在隧道裂缝分类上的准确性。
本文提出的裂缝检测框架具有分类效果较优、数据获取简单、成本较低等优势。但仍存在一些可改进方向:1)通过加入反馈环路,使裂缝检测方法参数能够根据最终检测结果调整检测方法;2)SVM分类器的分类依据直接影响过滤效果,今后可以通过增加分类维度及更有效的分类依据改进分类器效果。