基于改进U-Net网络的隧道裂缝分割算法研究

2021-11-26 07:22饶志强赵玉林李益晨
计算机工程与应用 2021年22期
关键词:残差卷积损失

常 惠,饶志强,赵玉林,李益晨

1.北京联合大学 北京市信息服务工程重点实验室,北京100101 2.北京联合大学 城市轨道交通与物流学院,北京100101

裂缝是铁路隧道施工和使用过程中不可避免的问题,对隧道的结构稳定和列车的安全运行有着重要的影响。目前,国内铁路隧道裂缝的检测主要依靠人工检测,难以满足铁路安全检测快速发展的要求。利用数字图像处理和计算机视觉技术来检测裂缝逐渐成为主流方法,常用的方法如Gabor滤波[1]、随机森林[2]、稀疏表示方法[3]、支持向量机(Support Vector Machine,SVM)[4-5]等,但是隧道图像存在水渍、划痕、光照不均匀、噪声大等复杂情况,影响传统图像处理方法的发展,因此应该采取更有效的方法及时检测隧道裂缝。

近年来,深度学习在结构健康监测领域得到了很大的应用,裂缝检测也不例外。文献[6]和文献[7]利用深度神经网络检测隧道裂缝,检测精度和速度都得到了有效提高。文献[8]在U-Net 网络结构上引入了一种基于距离变换的新代价函数对裂缝进行像素级的分割。文献[9]采用改进的U-Net网络实现了像素级、小样本的桥梁裂缝图像的检测。文献[10]在U-Net网络体系结构上对裂缝进行分割,利用预训练的ResNet34 作为预编码器来改进网络的性能。文献[11]在U-Net的基础上使用预训练的ResNet34 作为编码器,并添加注意力机制模块进一步提高了混凝土裂缝检测的精度。文献[12]采用U-Net 方法检测混凝土裂缝,与全卷积网络(Fully Convolutional Networks,FCN)相比,该方法显示出高效率、良好的鲁棒性和更好的准确性,但目前方法仍存在边缘平滑、细节丢失和误检的问题。文献[13]提出VGGU-Net网络的路面分割方法,将已训练好的VGG16迁移到经典的U-Net 网络中,在裂缝数据集上实现了优于FCN、Crack-FCN和经典U-Net模型的性能。文献[14]提出了一种以VGGNet 作为骨干网络的端到端的裂缝检测方法,提出的编码器和解码器框架不仅可以提高检测精度,还可以通过反向学习进行语义分析,以捕获裂缝的上下文信息,但是由于网络比较深,效率相对不高。文献[15]利用基于SegNet的分割方法,通过对视频中多个重叠帧的裂缝概率进行聚合来检测裂缝。文献[16]提出了一种改进的深度全卷积网络CrackSegNet,从复杂场景中提取隧道裂缝,有效地消除其他干扰的影响,并执行端到端的裂缝分割,提高了模型的鲁棒性,但该方法的计算效率略低于U-Net。

目前大多数裂缝分割都是在U-Net 网络结构上进行改进,虽然该网络对裂缝分割具有很好的效果,并且适合于小数据集的情况,但不能很好地恢复经过池化层之后的图像细节结构信息,易造成细小裂缝漏检的现象。针对U-Net 网络在裂缝图像分割时存在的问题以及隧道裂缝图像的特点,可对基础的网络结构进一步改进,主要改进方面为:首先将残差模块添加到U-Net 网络中,并且将批量归一化层(Batch Normalization,BN)添加到网络中,加快训练速度并防止过度拟合;其次引入SE 模块来提升重要特征,加强对裂缝特征的权重分配;最后设计交叉熵损失和Dice损失相结合的组合损失函数来解决裂缝分割网络训练过程中像素样本不均衡的问题,进一步获得更加精细的分割结果,从而更好地实现复杂背景下隧道裂缝的分割。

1 改进U-Net的隧道裂缝分割网络

1.1 U-Net网络

U-Net 是全卷积神经网络的一种变形,主要有编码器(Encoder)、解码器(Decoder)和跳跃连接(Skip Connection)[12]。Encoder 用于从图像中提取空间特征,卷积块有两个3×3卷积操作,然后是最大池操作。在每次下采样之后,卷积中的滤波器数量将增加一倍,最后两个3×3卷积运算将编码器连接到解码器。Decoder用于根据Encoder 特征构造分割图,并使用2×2 转置的卷积运算对特征图进行上采样,同时将特征通道缩小为一半,然后再次执行两个3×3 卷积运算的序列,最后再执行1×1卷积运算以生成最终的分割图。Skip Connection将输出从Encoder传输到Decoder,这些特征图与上采样操作的输出串联在一起,并将级联特征图传播到后续图层,以尽可能保留更多细节,提高最终分割结果的分辨率和边缘准确率。U-Net在医学分割领域应用广泛,并取得了很好的效果,而裂缝图像分割属于二值分割,与医学图像分割相似,因此本文使用U-Net作为裂缝分割模型的基础网络,U-Net网络结构如图1所示。

图1 U-Net网络结构Fig.1 U-Net network structure

1.2 残差模块

为了从隧道裂缝图像中提取出更多细节信息,缓解复杂背景下低对比度区域及细小裂缝欠分割的问题,可引入残差模块代替传统的卷积层。残差模块的引入是为了防止后续随着神经网络的加深使得在利用小批量随机梯度下降法训练网络时产生梯度消失,导致网络模型训练无法收敛的问题。其中,残差块定义为:

其中,x为输入;y为输出;F(x)是待学习的残差映射函数。

传统残差模块由两个卷积层和ReLU 激活函数组成,为提高网络的泛化能力,本文对残差模块进行了优化,在每个卷积层之前加入BN 层和ReLU 激活函数。优化后的残差模块结构如图2所示。

图2 优化后的残差模块Fig.2 Optimized residual module

1.3 SE模块

虽然残差模块强化了特征的传播能力,有效地提取出更多裂缝细节信息,但复杂背景下低层特征中缺少语义信息,亮度不均衡,对比度较低,仍会对隧道裂缝的分割造成干扰。通过引入注意力机制SE模块[17]来捕获高级语义信息,根据特征图像的值对各特征通道进行加权,提升重要特征的权重,降低不重要特征的权重,从而提升特征提取的效果,提高模型的分割精度。SE 结构示意图如图3所示。

在图3中,对于任何给定的将输入特征X映射到特征图U的变换,比如卷积,可以构造一个相应的SE 块来进行特征重新校准。首先特征X经过Ftr卷积将其通道数由C′变为C,将特征图U传递给挤压(Squeeze)操作,该操作通过在空间维度(H×W)上聚合特征图来生成通道描述符,允许来自全局接收域的信息被网络的各个层所使用。聚合之后的激励(Excitation)操作采用自选通机制将嵌入作为输入来生成每通道调制权重的集合,并将这些权重应用于特征图U,就形成了SE 模块的输出,可以将其直接馈送到网络的后续层中[17]。通道注意力机制SE模块相较于其他注意力机制实现起来比较简单,可以很容易加载到现有的网络模型框架中,易于集成。隧道裂缝图像背景复杂,利用该模块为输入特征图各特征通道赋予权重,增强任务相关像素权重,可以弱化背景和噪声影响,从而获得更精确的语义信息,通过引入极少参数可明显提升模型的分割精度,不会加大模型的计算复杂度。

图3 SE结构示意图Fig.3 SE structure diagram

1.4 改进的U-Net模型

为了更好地使用U-Net对隧道裂缝图像进行分割,鉴于残差网络和SE 模块的优点,设计出一种改进的隧道裂缝分割网络SE-RU-Net(Squeeze and Excitation Residual Network U-Net)模型,网络结构如图4 所示。

图4 SE-RU-Net网络结构Fig.4 SE-RU-Net network structure

编码器的每个网络层由两个残差模块组成,每个网络层之间通过步长为2,卷积核为2×2 的最大池化卷积方式进行连接,共有8个残差模块,每个残差模块由2个3×3卷积层及快捷连接构成,通过下采样从上下文中提取高像素特征。解码器的每个网络层由一个残差模块构成,每个网络层通过步长为2的3×3转置卷积进行层与层之间的连接,共有4个残差模块,每个残差模块由2个3×3卷积层组成,然后返回到像素的分类。编码和解码部分通过残差模块使得模型融合更多的浅层特征。该模型从图像数据中提取局部特征,残差模块的快捷连接操作将输入的全局信息与局部特征进行融合,使得模型能够获得更丰富全面的特征,同时网络不易退化。

为了获得更轻的网络模型,本文算法在每一层中使用了比U-Net更少的卷积核数,并在每个卷积层后加入BN 层和ReLU 激活函数用于防止过拟合现象的发生。为了满足分割任务中多层次特征学习的需求,在U-Net结构前面的跳跃连接部分添加注意力机制SE模块来学习编码器多尺度的特征,获取每个特征通道的重要程度,按照每个特征通道的重要程度来提升有用特征,将特征提取的权重分布到收缩路径的所有阶段,解决UNet在图像特征提取过程中依赖固定权重的问题。

2 实验内容

2.1 实验环境

本文使用Python 编程语言在Ubuntu 16.04 操作系统上进行相关实验,实验基于PyTorch的深度学习框架,硬件平台为Intel I7-9750H、Nvidia GTX1660Ti、16 GB内存。

2.2 损失函数

铁路隧道裂缝图像的语义分割问题是二分类问题,可采用二分类的交叉熵(Binary cross entropy,Bce)损失函数,定义如下:

其中,N为图像像素数目;yi为第i个像素点的标签值;pi为第i个像素点的预测概率值。

由于裂缝像素数量占被检测的隧道图片的比例很低,Bce 损失造成网络裂缝类别的学习和识别被抑制,网络更倾向预测为背景。相比于Bce损失来说,Dice损失可以很好地解决这种正负样本不均衡的问题,它的本质是评估两个轮廓区域的相似程度,表达式如下:

其中,yi为第i个像素点的标签值;pi为第i个像素点的预测概率值;ε根据实验设置,是为了减少过拟合,更快收敛。当yi和pi过小时,会导致梯度发生很大变化,使得训练出现大的波动,造成训练相对困难。

将Bce 损失函数和Dice 损失函数进行结合可以很好地适应于裂缝分割模型,并且发挥很好的效果[18],两者组成的组合损失函数在关注像素级别的同时也能关注图像级别的显著性,使得模型训练稳定且能有效处理裂缝像素正负样本不平衡的问题,如式(4)所示:

其中,L总为总损失;LBce为二分类交叉熵损失;LDice为Dice损失;λ为平衡Bce损失函数和Dice损失函数之间重要性的权重系数。

2.3 评价指标

为了定量评估隧道裂缝分割的性能,采用以下几个指标进行准确性评估,包括像素准确性(PA)、交并比(IoU)、精准率(Precision)、召回率(Recall)和F1 得分(F1-score)。比较分割结果时,考虑以下四个像素评价类别,如表1所示。

表1 像素评价类别Table 1 Pixel evaluation category

(1)像素准确性

(2)交并比

(3)精准率即查准率,突出显示误检的比例

(4)召回率即查全率,突出显示漏检的比例

(5)F1得分

F1-Score 综合考虑了精准率与召回率,F1-Score 值越大代表模型性能越好。

2.4 实验细节

为验证本文算法的有效性,在公共隧道裂缝数据集CrackSegNet[16]和自制数据集Tunnel Crack 上进行了实验,以4∶1 的比例将其分为训练集和测试集,并在同一运行环境下使用不同的分割模型进行对比分析。在组合损失函数的设计中,通过调参来确定合适的λ取值。实验结果显示将λ设置为0.2 时,模型的分割效果最好。这是由于模型的主要任务是分割,分类任务只是分割的辅助任务,二分类的交叉熵损失函数权重过大仍会让模型倾向于预测裂缝背景,影响分割的性能。模型使用Adam 优化器进行优化,初始学习率设定为0.001,批量大小设定为16,迭代次数200次。

3 实验结果与分析

3.1 CrackSegNet数据集实验

CrackSegNet[16]是带注释的隧道裂缝图像数据集,共有919张裂缝图像及其对应的Ground truth,文献[16]中采用CrackSegNet网络对该数据集的裂缝图像进行分割。该网络由编解码器、空洞卷积、空间金字塔池化和跳跃连接模块组成,这些模块可用于高效的多尺度特征提取,既保留了U-Net、FCN和PSPNet的优点,又根据隧道裂缝数据集的特点进行了改进,使其鲁棒性更强。利用U-Net、CrackSegNet 和本文方法对CrackSegNet 数据集进行裂缝识别,不同模型在隧道裂缝分割中的结果对比如表2所示。

从表2 中不同模型在隧道裂缝分割中的结果对比可以看出,本文方法的PA、IoU、Precision、Recall 和F1-Score 明显更高,F1 得分和IoU 分别达到了76.36%和61.76%,比基础的U-Net 网络分别提高了13.27 个百分点和14.12 个百分点,并且也加快了计算效率,相比文献[16]的CrackSegNet 方法来说也具有一定的先进性,不仅提高了分割的查准率和查全率,同时也提高了模型运行的速度。为更加直观地验证网络的性能,利用三种算法在CrackSegNet 数据集上进行测试,定性比较结果如图5所示。

表2 不同模型在隧道裂缝分割中的结果对比Table 2 Comparison of results of different models in tunnel crack segmentation

在图5 中,红色矩形框表示裂缝像素漏检的情况,绿色矩形框表示裂缝像素误检的情况,U-Net网络对细小的裂缝不能进行很好的分割,有较多的孤立散点,CrackSegNet 的分割效果较好,但是在背景下的障碍物影响算法的检测结果,分割的细节需加强,分割出的裂缝边界不够细腻。相较于其他方法,本文方法分割的裂缝边界较为明显,可以获得与分割标签相似的分割结果,对细小的裂缝能够进行很好的分割,漏检的情况相对比较少,对应的召回率也就有所提升,这为铁路隧道裂缝图像的分割提供了新思路。

图5 CrackSegNet数据集定性比较结果Fig.5 Qualitative comparison results of CrackSegNet dataset

3.2 Tunnel Crack数据集实验

通过实际采集和网络爬虫的方式来获取铁路隧道裂缝图像样本数据。将收集的图片严格挑选,把没有裂缝的隧道裂缝图像剔除。使用Labelme 软件对数据集中的图片进行人工标注,裂纹像素标记为0,背景像素标记为1。允许以二进制格式存储不同环境条件下的图像信息,图片统一输入尺寸为512×512,从而有助于多批同时进行网络输入的训练,并加入水平翻转、小角度旋转来扩充数据集。

3.2.1 不同损失函数的结果对比

为验证组合损失函数的性能,选取三种不同损失函数在SE-RU-Net网络进行实验比较,图6为不同损失函数的结果对比。

从图6 中可以看出,应用Bce 损失函数的Recall 值相对较小,这是由于交叉熵损失函数使得神经网络更倾向于识别多样本的类别而忽视少样本的类别造成的,即使像素准确率很高,召回率也会偏低。Dice损失的召回率相对较高,但是精准率并不是很高,使得模型不能很好地查准隧道内的裂缝。利用组合损失函数让模型训练更加稳定的同时还能解决像素类别不平衡的问题,提高了模型的召回率,并且F1得分比利用Bce损失函数和Dice损失函数的模型分别高出9.25个百分点和13.03个百分点,但是精准率比利用交叉熵损失函数的模型降低了0.66个百分点。从工程应用的角度来看,模型必须能最大程度有效地检测出所有的裂缝。因此,在隧道检测过程中,提高裂缝分割的召回率就显得尤为重要,甚至要牺牲检测的精度。根据实际需求,组合损失函数可以发挥更大的优势。

图6 不同损失函数的结果对比Fig.6 Comparison of results of different loss functions

3.2.2 消融实验

为了说明本文多种改进策略可以有效提高算法的分割性能,通过消融实验来验证加入残差模块和SE 模块的先进性,其中每种网络模型都采用组合损失函数。不同改进模块的分割算法比较如表3所示。

表3编程计算出了多种改进策略的分割算法结果,经比较得出添加残差模块的RU-Net网络避免了深层网络的退化问题,整体裂缝区域分割效果优于U-Net,精准率相比未改进的基准U-Net网络提高了5.09个百分点,IoU 和F1 得分也得到了很大的提升,运行时间约为65 ms,说明加入残差网络的U-Net 可以提取出更多的裂缝细节信息,并能提高计算效率;只在基准的U-Net网络中添加SE模块,加强了对裂缝边缘、图案和形状等特征的权重分配,网络性能也得到了改善。SE-RU-Net的IoU为60.59%,F1得分为75.46%,在各个指标上都很大程度地超过了U-Net,说明使用残差网络和SE模块改进的网络模型缓解了复杂背景下低对比度区域及细小裂缝漏检和误检的问题,每张图片的计算效率得到了很大的提升,网络的泛化能力也比较好。

表3 不同改进模块的分割算法比较Table 3 Comparison of segmentation algorithms of different improved modules

3.2.3 不同网络模型的结果对比

为体现模型及算法的先进性和鲁棒性,在自制的数据集上复现U-Net 和CrackSegNet 算法,并与本文算法进行对比,使用相同的实验参数分别训练不同的网络,确保对比结果的可信度,定性和定量地来验证改进模型的性能。不同方法的像素准确率和训练损失的变化曲线对比如图7和图8所示。

图7 准确率曲线Fig.7 Accuracy curve

图8 损失函数曲线Fig.8 Loss function curve

从图7 和图8 中可看出,每个模型在训练初始阶段的像素准确率PA 指标就很高,这是由于裂缝图像中裂缝所占的像素比很小,即便模型将整张图全部判定为裂缝图片的背景,像素准确率仍然能获得比较高的值,在第70 个Epoch 时均获得较高增长,随后缓慢增长,三者的增长趋势较为一致。本文所提方法的收敛情况优于U-Net 和CrackSegNet,并且像素准确率也是最高的,相较于其他方法,该网络性能得到了较大的改善,加入残差块和SE 模块的U-Net 加快了网络的收敛速度,提高了网络的分割性能。同样利用PA、IoU、Precision、Recall、F1-Score 和Running time 等指标来进一步验证模型的性能,不同模型在铁路隧道裂缝分割的性能对比如表4所示。

表4 不同模型在铁路隧道裂缝分割中的性能对比Table 4 Comparison of performance of different models in crack division of railway tunnels

从表4结果中可以看出,本文方法PA、IoU、Precision、Recall、F1-Score 的评估结果分别达到98.81%、60.59%、68.86%、83.46%、75.46%,运行时间约为65 ms,均优于其他方法,这说明本文提出的分割模型有利于隧道裂缝图像的分割。为了更直观地说明本文方法的准确性,本文随机选取了5 个样本在不同模型上的分割结果,如图9所示。

图9 Tunnel Crack数据集定性比较结果Fig.9 Qualitative comparison results of Tunnel Crack dataset

在图9 中,第一列为裂缝原始图,第二列为裂缝原始图的标签图,后面为三种方法对应的裂缝分割结果图,红色矩形框表示裂缝像素漏检的情况,绿色矩形框表示裂缝像素误检的情况。主观评价从分割结果图与标签对比判断,基于U-Net的隧道裂缝检测方法基本上可以检测出图像中出现的裂缝,可以完整地将裂缝呈现出来,但是在检测结果图中也可以看到会出现细小裂缝没有被分割,以及有噪声的裂缝背景被分割出来的情况,这样很难统计出裂缝的信息。CrackSegNet 可以对细小的裂缝进行很好的分割,但是裂缝的背景仍被分割了出来。基于改进U-Net 网络的隧道裂缝检测图的检测精度最高,且基本没有噪声像素,与CrackSegNet 相比,其裂缝分割结果有显著提升,裂缝的检测结果图与标签图更为接近,漏检和误检的情况也相对减少了很多,并具有更准确的位置和详细的形态信息,同时对背景中的污渍等干扰具有较好的鲁棒性。

4 结束语

本文针对铁路隧道裂缝图像的特点,提出一种改进U-Net的隧道裂缝分割模型。该模型以U-Net网络为基本框架,首先在U-Net 网络中引入残差块,加强特征的传播,减少信息损失;然后引入注意力机制SE模块来加强裂缝区域的权重,抑制无用特征的权重,减缓图像对比度低对模型的影响;最后结合Bce损失和Dice损失组成的组合损失函数处理裂缝像素类别不平衡的问题,提高模型的召回率,从而提高模型的性能。实验结果表明,改进的方法在两个数据集上都得到了很好的分割效果,并且在不同的评价指标上证明了该方法的有效性,在铁路隧道裂缝数据集上PA达到了98.81%,F1得分达到了75.46%,每张图片的测试运行时间约为65 ms,可以很好地满足隧道裂缝检测的实时要求。在后续的工作中可采集更多高质量的图片,训练性能更好的分割网络模型,对隧道裂缝进行有效及时的检测。

猜你喜欢
残差卷积损失
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
一般自由碰撞的最大动能损失
损失