基于边缘增强感知的混凝土裂缝病害检测方法

2023-09-25 13:11:24谭兆王保宪秦守鹏赵维刚
铁道科学与工程学报 2023年8期
关键词:边缘像素病害

谭兆,王保宪,秦守鹏,赵维刚

(1.中国铁路设计集团有限公司,天津 300251;2.石家庄铁道大学 安全工程与应急管理学院,河北 石家庄 050043)

裂缝检测与识别是开展混凝土结构耐久性评估中的一项重要内容。由于人工检查存在主观性强、效率低等缺点,近年来随着信息技术的快速发展,基于深度学习的裂缝视觉检测与识别方法成为行业发展的新趋势[1]。相比于边缘检测[2]、阈值分割[3]等传统方法,深度学习方法利用卷积网络从图像中挖掘多层特征,再通过训练特定的网络结构,完成图像分类、定位、分割等任务。CHA等[4-7]提出利用卷积网络提取图像语义特征,并取得了比传统方法更好的裂缝检测效果。王耀东等[8]通过改进AlexNet 网络结构,建立了隧道裂缝病害目标自动提取模型。虽然上述几种方法采用了卷积网络具备的良好特征提取能力,但是整个网络结构较为简单,因而在复杂背景下的普适性无法有效保证。为了适应复杂环境,薛亚东等[9]提出利用Faster RCNN 二阶段网络先确定裂缝候选区域再辨识裂缝病害,可一定程度上提高裂缝检测与识别性能。柴雪松等[10]在超像素分割筛选基础上,提出了基于ResNet18 与DeepLab-V3 的分割网络;该方法依赖于超像素分割结果,对于细微裂缝或强背景干扰并不适用。刘新根等[11]引入多尺度裂缝特征融合策略,取得了较好的裂缝分割结果。类似地,刘凡等[12]也提出一种基于并行注意力机制的裂缝检测与识别模型。虽然上述方法利用深度神经网络能够挖掘裂缝图像中的一些关键特征,但由于深度学习网络在各自方法中仍是一个“黑盒子”模型,网络训练过程中的一些不确定性会导致识别模型提取到一些非重要特征,而较为关键的裂缝边缘特征未能得到重点提取。最终可能导致模型性能局部“坍塌”到一些不好的特征提取层,进而出现裂缝漏检或虚警问题。此外,由于裂缝边缘特征未能得到强化学习,在深度学习网络的多次下采样中,几个像素宽度的细微裂缝将更容易丢失,因而出现裂缝漏检问题。为了更好地建立裂缝检测模型,李艳霞[13]提出对裂缝图像进行边缘增强预处理,突出裂缝线条属性特征,有利于模型更好地训练学习。受此启发,本文提出一种基于边缘增强感知学习的裂缝检测方法。但不同于文献[13],本文将裂缝边缘作为网络训练辅助标记,如图1 所示,该方法以U-Net++为主框架,利用通道卷积将原始的U-Net++分割网络划分为2 条支路,一条支路继续进行裂缝主干区域的分割工作;另一条支路则利用U-Net++网络解码器具备的聚合上下文功能,构建一个裂缝边缘预测分支网络。2 条分支网络共同形成双任务学习体系,使整个网络在学习主干特征的同时能够聚焦于裂缝边缘信息,提高对细微裂缝病害的检测与识别精度。将待测试的裂缝图像输入到已建立的裂缝检测网络模型中,模型会同时输出裂缝主体分割区域以及裂缝边缘检测区域,其前者将被作为最终的裂缝检测结果。

图1 本文提出的裂缝检测模型原理图Fig.1 Schematic diagram of proposed crack detection model

1 算法提出

1.1 裂缝分割主干网络

U-Net++网络是在原U-Net 网络基础上提出的语义分割模型[14]。图2 展示了本文应用的5 层网络结 构:X0,X1.0,X2.0,X3.0和X4.0分别表示一个特征提取卷积模块,其包含了卷积、激活与归一化等操作;每个卷积模块后紧跟一个池化层,向下箭头代表下采样,向上箭头代表上采样;虚线代表了跳跃连接层。本文以U-Net++网络为裂缝分割主干网络,利用其提取裂缝的多尺度特征。

图2 U-Net++网络结构图Fig.2 Structure diagram of U-Net++

利用Dice 系数来计算裂缝分割主干网络的损失,其公式为式(1)。其中X*为裂缝分割结果,Y为人工标记真值图,|X*|和|Y|分别为分割结果与真值图中的像素数量,|X*∩Y|则为分割结果与真值图内容相同的交集。当分割结果与真值图的内容重合度较大时,Dice 值接近于1;反之,Dice 值接近于0。式(2)为最终的主干网络的损失函数,式中ε是为了避免Dice 计算中分母出现0 而设立的极小常数值。

1.2 裂缝边缘真值图

相比于混凝土结构表面其他类病害(比如渗水、掉块等),裂缝为一种典型的条状类病害。在深度学习网络的特征提取中,特征下采样操作会导致裂缝条状信息大幅衰减。因此,如何保持裂缝条状病害的边缘特征,是本文所解决的关键问题。为了构建裂缝边缘预测分支网络,需先提取裂缝的边缘真值图。考虑裂缝边缘主要包含2 个属性,即方向和幅度。沿着裂缝边界方向的像素亮度变化平缓,而垂直于裂缝边界方向的像素亮度变化剧烈。因此,本文提出利用Sobel 算子提取人工标记裂缝区域的边缘,作为裂缝边缘真值图。

如图3 所示,Sobel 算子提供了对垂直(图3(b))边缘与水平边缘(图3(c))的2个检测模板。设图3(a)为待检测的3×3 输入图像,通过式(3)~(4)可分别计算图像中每个点的水平方向与垂直方向的梯度值,再利用式(5)计算该点像素的总梯度大小,由此可判定该像素点是否属于裂缝图像边缘。

图3 Sobel边缘检测模板Fig.3 Template of Sobel edge detector

1.3 裂缝边缘预测分支网络

为了提高网络模型对细微裂缝病害的检测效果,本文在裂缝主干区域分割基础上,进一步考虑利用裂缝特有的边缘特征,构造一个边缘辅助预测分支网络,并将其与主干网络统一到一个深度学习模型中。如图2所示,选用的裂缝识别主网络U-Net++主要包含编码器、解码器等结构。在编码器部分,网络通过卷积得到不同分辨率的特征图;在解码器部分,网络将编码特征与编码器特征通过跳跃连接操作进行融合,如此构建了一个具有多分辨率特征的金字塔。受此启发,提出在主干网络的解码器上构建边缘预测分支网络,其利用裂缝输入图像与裂缝边缘真值图进行迭代训练,通过计算裂缝边缘真值图与裂缝边缘预测结果之间的差值来构造损失函数。边缘预测分支网络的具体建立过程如下所述。

设主网络U-Net++为5 层网络,其原始解码端的特征金字塔会输出5 层特征图。如图4 所示,边缘预测分支网络以VGG16 网络为基础,去除VGG16 模型中的全连接层,并在卷积层后增加5个侧边输出层,用以输出多尺度特征。从特征图的尺寸来看,主网络与边缘预测分支网络的各层特征图尺寸是一样的(分别为448×448,224×224,112×112,56×56 与28×28),因此可将U-Net++网络的解码器视为边缘预测分支网络的编码器,并在U-Net++网络的后端构建边缘预测分支网络,增强网络模型对细微裂缝病害的检测效果。同时为了防止主干分割任务与边缘检测任务发生冲突,应用通道卷积对U-Net++解码器输出的特征图进行分支管理,分别用于主干网络训练与边缘检测网络训练。

图4 裂缝边缘预测分支网络结构图Fig.4 Structure diagram of crack edge prediction branch network

设X为输入裂缝图像,Y'为原裂缝真值图Y对应的边缘真值图。为了方便与原始分辨率的图像标记进行损失函数计算,将所有子解码网络层对应的特征图上采样至与原始图像尺寸相同的分辨率,这里设分支网络上采样后的第i层解码网络特征图为ψi,可利用交叉熵函数dist(·,·)计算第i层网络对应的预测损失值,如式(6):

考虑每层解码网络特征图反馈的信息有所差异,引入特征图权重参数W={w1,w2,w3,w4,w5}对分支网络的每层网络预测损失值进行综合计算,由此得到裂缝边缘预测分支网络的损失函数,如式(7):

将式(7)项作为正则化约束项,联合裂缝主干分割网络的损失函数(式(2)),构建一种双任务联合训练框架,最终总体的裂缝分割模型的训练损失函数如式(8):

在双任务联合训练过程中,整个网络结构会根据训练误差量迭代更新网络结构的所有参数以及所有特征图的权重参数W,由此实现对裂缝主干区域与裂缝边缘特征的综合感知学习。

2 实验评估与分析

2.1 数据集建立

为了验证所提出的裂缝病害视觉检测模型的有效性,本文收集了来自Cracktree[15]、CRACK500[16]、CFD[17]等大量裂缝数据集进行测试分析,并进一步使用佳能HS125 相机对石家庄铁道大学结构实验室的诸多试验构件进行拍摄,尤其拍摄了100 张带有细微裂缝的混凝土病害图像。为了统一所有的裂缝图像尺寸,本文将收集与拍摄的裂缝图像均分割成448×448 大小的方块图像,共计有11 600 张。随机选取10 000 张数据用来训练网络模型,剩余1 600 张数据则作为测试集,用于评估算法检测效果。由于新采集的图像数据,缺少人工标记,本文利用Photoshop 软件对裂缝数据进行标注。不同于Labelme 等图像标记软件,Photoshop 软件具有对相近亮度的像素点快速引导标记功能,因而对裂缝图像的像素级标记效率较高。如图5 所示,通过Photoshop 软件中的快速选择工具对裂缝区域进行逐像素标记,其裂缝区域被标记为白色(像素亮度值为255),背景区域被标记为黑色(像素值亮度值为0)。

图5 裂缝病害像素级标记示意图Fig.5 Illustrations of labeling the pixels of crack region

2.2 实验环境与参数设定

考虑公平性,本文提出的裂缝检测算法与其他对比算法均在同一个计算平台上实现,具体实验环境参数为:CPU处理器I9-9900K、内存64 GB、GPU 显卡11GB-GTX1080Ti,操作系统为Ubuntu16.04,所有算法均采用Python 进行编程。对于网络模型而言,其训练参数主要包括权重衰减系数、指数衰减率、模糊因子、批量处理值以及学习率等。这里,权重衰减系数是为了避免模型过拟合而设定的惩罚参数,一般设为默认值0;指数衰减率主要用于平滑权重参数的梯度与梯度的平方值,一般设为默认值0.99;模糊因子是防止在网络训练过程中出现分母为0的情况,一般设定为1×10-8。批量处理值与硬件计算资源有关,当批量处理值过大时,GPU 内存会溢出,导致网络无法训练;而当批量处理值设为1时,会出现网络收敛不稳定的现象。综合实际情况,本文将批量处理值设为4。学习率是网络模型训练的一个关键参数,其值过小会导致网络收敛缓慢,其值过大时虽可提高网络训练速度但可能会导致网络无法收敛。为了确定最优学习率,本文选取5 个常见数值(即0.001,0.005,0.01,0.05和0.1)进行测试。由于在训练过程中,训练初期的损失值衰减较大,因此利用模型迭代训练20 次后的损失值大小作为评判依据,其最小损失值对应的学习率参数为最优。如图6所示,0.005被确定为最优学习率参数。图7展示了在最优学习率参数0.005 下,整个模型的迭代训练损失值变化曲线。当迭代次数为250 次时,整个网络的损失值不再发生明显变化,因此本文将迭代250次时的网络权重参数保存为最终裂缝检测模型参数。

图6 各学习率下的网络损失值变化曲线Fig.6 Changing curve of loss function with different learning rates

图7 最优学习率下网络损失值变化曲线Fig.7 Changing curve of loss function with best learning rate

2.3 实验结果与分析

2.3.1 定性分析

图8 展示了本文算法与3 种对比算法FCN[18],U-Net 和U-Net++对部分裂缝病害图像的视觉检测结果。首先,图8 中1~5 号分图均为细微裂缝病害,从原图中可以看到这些细微裂缝与背景区域的对比度较低、信噪比较小,给裂缝区域精准检测带来很大困难。相比于其他3 种方法,经典的FCN 分割模型的解码层部分相对简单,导致其无法有效检测与识别大部分细微裂缝(见图8中的3~5 号分图)。对于图8 中的2~3 这2 个分图,U-Net算法将背景的2 个划痕误检测为裂缝(见虚线框),可能的原因是U-Net模型未使用跳跃连接层导致其对裂缝的感知不精准。虽然U-Net++算法借助跳跃连接层在一定程度上可获得较为精准的裂缝分割结果,但是对于细微裂缝而言,其在图像数据中只有几个像素的宽度,其形状类似于一条细线(例如图8 中的3~5 分图中的细微裂缝),本就稀少且不明显的裂缝原始特征很容易在深度学习编码阶段的多次下采样过程中被消除,因此U-Net++算法对于细微裂缝病害的感知结果出现了漏检(即图8中的3~5 分图中的虚线框部分)。相比而言,本文算法利用通道卷积操作将整个裂缝分割解码网络分为2条支路,一条支路继续为裂缝主体区域检测服务,另一条支路则为一个边缘预测分支网络,这使得整体网络在学习裂缝主体区域特征的同时能够聚焦于裂缝的边界信息,其通过裂缝边缘条件约束,从而获得更加完整的裂缝区域检测结果。图8 中1~5 分图的实验结果表明本文网络在细微裂缝检测任务中均取得了最优的检测效果。

图8 部分代表性的细微裂缝病害检测结果Fig.8 Some representative detecting results of fine cracks

考虑在实际应用中,细微裂缝只是混凝土裂缝病害的一种特殊形式,在大部分情况下,细微裂缝与正常裂缝同时存在,呈现一种多尺度裂缝并存现状,如图8 中的6~8 分图所示。为了验证本文算法在取得对细微裂缝良好检测效果的同时,对于其他非细微裂缝仍可保持良好的检测效果,故测试了本文方法及其他3种算法对多尺度裂缝病害图像的检测效果。从图8 中分图6 的检测结果可看出,其他3 种算法均出现了一些虚警(见图中虚线框部分);如图8 中分图7 所示,U-Net 模型对于背景块状阴影干扰较为敏感;U-Net++算法虽然可分割出大部分裂缝区域,但是在细微裂缝病害感知方面出现了漏检(见图8 中分图6~8 虚线框)。光照干扰也是裂缝检测应用中必须考虑的一个问题,图8 中分图9 展示了在不均匀光照干扰下4 种模型的裂缝检测结果。显然FCN 模型对于背景光照干扰敏感,出现了一些虚警;U-Net 和U-Net++这2个模型未利用裂缝边缘关键特征,导致裂缝区域出现部分漏检。综合对比可知,本文算法在基于U-Net++对于正常裂缝病害具有良好感知能力的基础上,通过引入了裂缝分支预测网络,取得了在多尺度以及光照干扰等复杂条件下最优的检测与识别效果。

2.3.2 定量分析

本文使用准确率(A)和Dice 系数这2 个指标来评价各个裂缝检测模型的性能,具体定义如下:

式中:TP代表算法检测到的裂缝区域像素与真值图中裂缝区域像素重合的数量;TN代表算法检测到的背景区域像素与真值图中背景区域像素重合的数量;FP代表算法误将背景区域识别成裂缝的像素数量;FN代表算法误将裂缝区域识别成背景的像素数量。表1 展示了3 种算法对所有测试数据集的平均准确率与Dice系数值。

表1 裂缝检测结果的定量对比Table 1 Quantitative comparison of crack detection results

准确率参数A描述了一幅图像中所有像素被正确判定为裂缝或背景的比例,其数值越大,表示裂缝检测算法可以正确辨识图像中裂缝或背景像素正确标签的能力越高。对比可知,上述3种检测算法的准确率相差不大。从2.3.1 节的定性结果来看,在引入边缘预测分支网络后,本文算法对于细微裂缝像素的感知能力有明显提升,但由于细微裂缝本身的占比像素较小,因此导致本文算法的平均准确率相比于U-Net++算法仅有一个小幅度的提升。Dice 系数表征了裂缝病害预测结果与真值图之间的交集与并集的比值,Dice 值越大,则表示裂缝检测效果越好。相比于准确率参数,Dice系数可以更好地衡量裂缝检测结果与真值图之间的相似性。对比可知,本文算法的平均Dice 系数值最优,且明显比U-Net++算法高出1 个百分点,这验证了本文算法在引入边缘增强感知机制后,取得了最优的裂缝病害感知效果。模型测试应用时间也是评估裂缝检测算法的一个重要指标,本文将3 种算法对1 600 张同一测试数据集进行测试并计算3 种方法平均处理1 张448×448 大小方块图像的时间值,其结果见表1 的第4 列。由于UNet++网络结构比U-Net 模型复杂,因而其计算时耗略大于U-Net 模型;相比于U-Net++模型,本文方法采用了双任务学习架构,其计算过程有一定的任务增加,因此计算时耗比U-Net++模型有一定幅度的增长,但是平均每秒处理帧数大于15,仍可以满足大部分裂缝检测时间需求。

3 结论

1) 该算法以U-Net++为主框架,利用主干网络解码器与裂缝边缘预测网络的结构相似性,提出通过通道卷积将原始裂缝分割网络分为2 条支路,一条支路用于裂缝主干分割任务,另一条支路则用于裂缝边缘预测感知。

2) 将构建的裂缝边缘预测分支网络以正则化约束方式,与主干网络联合训练,形成一种基于双任务学习的裂缝病害感知体系,可提高算法对多尺度裂缝的综合感知精度。

3) 本文方法的平均Dice 检测指标比U-Net++模型高出1 个百分点,尤其在细微裂缝识别方面,会取得更优的检测与识别效果,特别适用于一些远距离拍摄产生的细微裂缝检测与识别应用场景。

猜你喜欢
边缘像素病害
赵运哲作品
艺术家(2023年8期)2023-11-02 02:05:28
早春养羊需防六大病害
今日农业(2022年3期)2022-06-05 07:12:02
像素前线之“幻影”2000
小麦常见三种病害咋防治
今日农业(2021年8期)2021-11-28 05:07:50
葡萄病害周年防治历
烟台果树(2021年2期)2021-07-21 07:18:28
果树休眠期咋防病害
今日农业(2020年19期)2020-11-06 09:29:38
“像素”仙人掌
一张图看懂边缘计算
高像素不是全部
CHIP新电脑(2016年3期)2016-03-10 14:22:03
在边缘寻找自我
雕塑(1999年2期)1999-06-28 05:01:42