APP下载

基于全卷积神经网络的单幅隧道图像裂纹提取算法*

2022-05-27仇静博燕雪峰郭延文魏明强

计算机工程与科学 2022年5期
关键词:裂纹像素卷积

仇静博,燕雪峰,汪 俊,郭延文,魏明强

(1.南京航空航天大学计算机科学与技术学院,江苏 南京 211106;2.南京航空航天大学模式分析与机器智能工业和信息化部重点实验室,江苏 南京 211106;3.南京大学计算机软件新技术国家重点实验室,江苏 南京 210023)

1 引言

隧道主要以混凝土为材质建造而成。由于材质、温差、腐蚀和外力等因素的影响,隧道管片会出现不可预测的收缩或膨胀,从而产生裂纹。裂纹不仅影响隧道整体美观性,而且一旦裂纹向深层发展,便有可能发展成对隧道具有破坏性的掉块或深层裂缝,影响隧道的安全和稳定。因此,对隧道进行定期裂纹检测,实时观察隧道中的裂纹变化尤为重要。

由于施工条件的局限性以及建筑材料的物理特性,获取的原始隧道裂纹图像往往包含许多非裂纹噪声纹理,如何最大限度地避免背景噪声的干扰是提取裂纹所面临的一大难题。

传统的隧道病害检测方法主要依托人工检测,但该手段耗时耗力,已不能满足现阶段对于隧道检测高效率、高准确性以及自动化的要求。当前裂纹识别研究的重心逐渐向基于图像处理的裂纹检测算法和基于机器学习的裂纹检测算法转移。

基于图像处理的裂纹检测算法[1 -7],一般包含滤波去噪、检测裂纹和分类3个步骤,对清晰的裂纹有较好的提取效果,但是在有较多非裂纹噪声污染的情况下,会出现较为严重的误检测问题。

基于机器学习的裂纹检测算法,如全卷积神经网络FCN (Fully Convolutional Network)[8]、SegNet[9]和Mask R-CNN[10]等,在背景噪声干扰下具有良好的裂纹检测效果,但是无法保留较多裂纹边缘的细节信息。

综上所述,如何在复杂噪声背景下提取出隧道裂纹并保留裂纹的细节边缘信息是一个亟待解决的问题。本文提出的基于全卷积神经网络的裂纹提取算法,不仅具有非接触性、高效率性与自动性,而且提取出的裂纹结果更加准确。该算法摒弃了传统裂纹检测与提取技术的局限,可以全自动检测图像中的裂纹,分割精度高,具有很高的实际应用价值。

2 相关工作

早期的裂纹检测及提取方法大多为实地测量与标记,专业勘察人员亲临现场测量和记录,或以超声波、传感器等辅助工具帮助测量人员进行测量。随着图像处理与机器学习技术的发展,裂纹识别研究的重心由传统的超声波检测法、冲击弹性波检测法、声发射检测法和光纤传感检测法逐渐向基于图像处理的裂纹检测算法转移。

在传统图像处理裂纹检测算法的研究中,马常霞等[1]提出了一种基于非下采样变换NSCT(NonsubSampled Contourlet Transform)和图像形态学的裂纹检测算法,由于NSCT具有平移不变性,图像失真在一定程度上得到缓解,能够更准确把握裂纹的线性特征;李刚等[2]针对受不均匀光照影响的裂纹图像,提出一种基于Sobel算子和最大熵法的图像裂纹分割算法,并采用长线段对原图进行操作、判断黑色像素占比来去除图像孤立噪声点,不仅能很好地提取裂纹边缘,且具有很强的抗噪能力;赵慧洁等[3]将简化脉冲耦合神经网络PCNN(Pulse Coupled Neural Network)模型用于裂纹图像的分割,以最小误差准则作为判断是否终止迭代的条件,由圆形度与扁度结合计算区域特征,消除分割后的干扰,实现对裂纹的有效检测;徐威等[4]通过计算粗尺度下的裂纹显著值,再经过局部邻域显著性增强和空间显著性增强后,采用自适应阈值分割提取裂纹;徐欢等[5]以形态学滤波改进滤波,使用最大类间方差 (Otsu)算法[6]实现双阈值的自适应获取,分析并改进了Canny算子,提高了裂纹检测的精度;杨莉等[7]对预处理后的图像进行多尺度的曲波变换表示,利用 Max-Mean融合算法对裂纹连通区域进行阈值判决,实现裂纹的精细融合。但是,基于图像处理的算法无法避免背景噪声的干扰,即使图像经过预处理,也很难从中成功提取有效裂纹,算法鲁棒性较差。

随着学者们对人工智能领域研究愈发深入,基于机器学习的裂纹检测算法逐渐出现。2015年,Long等[8]提出了全卷积神经网络FCN,进行端到端、像素到像素的训练,直接对任意大小的输入图像进行像素级分割,提高了图像分割的准确性与效率。Badrinarayanan等[9]在2015年提出SegNet算法,通过卷积下采样来保存像素之间的空间位置关系,弥补了池化操作丢失像素点的缺点,得到了更好的分割效果。Deep Lab系列的提出也使图像分割精度得到大幅度提升,为了使被分割目标的边缘更准确,Deep Labv1[11]在全卷积神经网络的基础上引入全连接条件随机场CRF(Fully Conditional Random Fields)。2016年,Deep Labv2使用空洞卷积进一步提高图像分割精度。Deep Labv3 在之前的基础上结合级联残差网络和空洞卷积,再一次提升了图像分割效果。Zhao等[12]在场景解析任务的研究中,构造了金字塔池化模块,并基于不同区域的上下文聚合提高了场景解析质量。Silva等[13]采用迁移学习方法,使用开源模型作为开发基础,提出了一个检测混凝土表面裂缝的算法。Kim等[14]提出了一种基于卷积神经网络的现场环境中混凝土表面裂纹形态自动检测技术。基于机器学习的算法可以框定出裂纹整体结构,抗干扰性强,且在负样本上表现较好,但是输出的裂纹图像边缘趋于平滑,裂纹细节难以较好保持。Zou等[15]在SegNet的基础上根据编码器-解码器网络结构的特性将每个尺度的卷积特征进行成对融合,最终将所有尺度的融合特征整合后作为网络输出结果,在细小裂纹提取和边缘检测任务中表现较好。Mei等[16]设计了一个稠密连接的深度神经网络,提出了一个综合裂缝像素周围信息的连续性损失函数,可以较好地保持提取裂缝的完整性。Ren等[17]提出结合空洞卷积、空间金字塔池化以及跳接模型来高效地获取多尺度特征,有效提升了网络的裂缝分割能力。

Figure 1 Structure of crack extraction network based on fully convolutional neural network图1 基于全卷积神经网络的单幅图像裂纹提取网络结构

随着科技的发展,对裂纹检测的准确度与精确度也进一步提升,现存的检测方法已不能满足人们的需求。为了解决上述算法的问题,本文提出了基于全卷积神经网络的单幅图像图像裂纹提取算法,可以在复杂噪声存在的情况下提取裂纹,并保留较完整的边缘细节。

3 基于全卷积神经网络的裂纹提取

针对裂纹完整提取和边缘细节保留问题,本文提出了基于全卷积神经网络的单幅图像裂纹提取算法,将深度残差特征提取网络与全卷积网络中的反卷积操作结合,实现了有噪声干扰下的裂纹提取与细节保留,具体结构如图1所示,其工作过程分为2步:(1)采用经典的深度残差网络,提取复杂背景下裂纹的特征信息。如图1所示,原始图像经过特征提取层后,在不同阶段输出了3个不同尺寸与深度的特征图s1、s2和s3,目的是更好地保留因下采样丢失的底层特征信息。这3个特征图将在上采样层中阶段性地结合在一起形成最终的结果。(2)采用全卷积神经网络中的上采样层,提出并加入图细节恢复模块对上采样层进行改进,在保留边缘细节的基础上对特征图进行尺寸恢复。

3.1 特征提取层

VGGNet[18]、GoogLeNet[19]和残差网络ResNet(Residual Network)[20]等模型都是成熟且常用的卷积神经网络模型,其中ResNet使用深度残差学习框架可以有效地消除卷积层数增加带来的梯度弥散或梯度爆炸问题,因此本文算法采用了ResNet-34模型中的特征提取部分。

ResNet-34特征提取层中的主要组成结构是building block结构,如图2所示。这些卷积层之间的连接方式称为“shortcut connection”,building block结构很好地诠释了这种连接方式。如图2所示,相较于传统的卷积结构,building block结构中多了一个short-cut支路,可以直接传递低层信息,使得网络能够适应深度训练。多个building block组成了深度残差学习结构,即本文算法中的特征提取部分,具体组成如表1所示,其中,Conv2_x,Conv3_x,Conv4_x和Conv5_x为由building block组成的层。

Figure 2 Building block structure图2 building block结构

Table 1 Structure of convolutional layers表1 卷积层结构

输入图像首先经过7×7×64的卷积层提取信息,而后通过3×3的池化层缩小空间尺度,最后通过3+4+6+3=16个building block得到高维抽象特征,其中每个block为2层,因此16个building block中包含了32层网络。

Figure 3 Upsampling layer图3 上采样层

3.2 上采样层

在经过前面多次卷积操作后,特征图尺寸急剧缩小到原图的1/32,因此需要对特征图进行上采样处理。本文算法中,上采样借鉴了FCN中反卷积来实现。为了更好地利用底层特征,本文采用层跨越结构,将底层特征图与高层特征图相加再进行上采样。图3中的s1,s2,s3即为通过特征提取层得到的不同尺寸与深度的特征图,在后续上采样过程中与高维特征逐步结合,可以更好地恢复裂纹的细节特征与位置信息。同时为了加速训练过程,反卷积层核函数使用双线性差值法初始化。然而,全卷积网络缺乏精细化能力,随着网络深度的增加,图像分辨率降低,提取的特征信息更加抽象,但是是以丢失重要的位置信息作为代价的。原始全卷积网络的上采样层使用了2个2×反卷积与1个8×反卷积,由于卷积层数少且最后一层卷积跨步大,最终的输出结果趋于模糊,提取的裂缝图像较为粗糙,不符合精细化分割的要求。为了解决这个问题,本文将3次反卷积操作增至4次,并在每次反卷积操作后都加入一个卷积核大小为3的卷积操作进行特征增强。具体反卷积操作如图3所示。

Figure 4 Structure of detail refine module图4 细节修复模块结构

为了提高裂纹提取图像的精细程度,保留裂纹的边缘细节,本文提出一个细节修复模块,其结构如图4所示。输入特征连接到4个支路进行处理。第1支路为类似残差结构的跳接操作,即输入特征直接与最后的处理结果逐元素相加,防止训练结果退化。第2、3支路均为2个卷积核大小分别为1×1和3×3的卷积层,各串联一个批归一化层BN(Batch Normalization)和修正线性单元ReLU(Rectified Linear Unit)。为了增强裂纹特征,同时增加像素间的关联性,本文采用不同大小卷积核的卷积操作,整合多尺度感受野的信息。由于此模块应用于上采样层,本身就作用于已包含丰富信息的高维抽象特征,因此采用1×1和3×3的卷积核就可以实现目标效果。第4支路为整体的压缩激活SE(Squeeze and Extraction)[21]操作,使用输入特征图计算特征权重,对第2、3支路的结果进行加权。SE操作学习特征图每个通道的重要程度,并据此对最后的输出结果进行加权,来加强重要特征,抑制无效特征。SE操作主要分为2步:第1步是压缩操作,将每个通道的二维特征图压缩为一个实数,该数在一定程度上可以代表整个通道的全局特征,具有全局感受野,本文采用全局平均池化方式;第2步是激发操作,得到全局特征后,通过多个全连接层,使用学习的方法为每一个特征通道学习一个权重。此权重可以理解为每个通道的重要程度,最后使用乘法操作与原始特征图进行逐通道加权,得到最后的输出结果。

如图1所示,将细节修复模块放置在第3、4个上采样操作之后,实验表明,加入此模块可以提升算法对精细裂纹的处理效果,在保持裂纹提取掩码的连续性与精确性方面有较好的表现。

3.3 损失函数

常见的二分类任务所使用的损失函数是交叉熵损失函数[22]。交叉熵可以衡量一个随机变量的2个不同概率分布的差异程度,即预测值与真实值之间的差异,交叉熵值越小,预测结果就越准确。交叉熵的计算方法如式(1)所示:

(1)

其中,p(·)为真实概率分布,q(·)为预测概率分布,n为图像像素总数,xi为第i个像素的预测结果。

交叉熵损失函数的应用非常广泛,但是同时也存在一些非常明显的缺点。对于二分类任务,当前景像素数量与背景像素数量的比值非常小时,算法会严重偏向背景,导致训练效果大大下降。很显然,裂纹提取任务符合这一特征,因此采用此损失函数会使算法倾向于训练背景而不是裂纹本身,降低了算法的高效性。

为了避免上述情况,本文算法采用带权重的交叉熵损失函数Loss Function[21],具体计算方法如式(2)所示:

(2)

带权重的交叉熵损失函数是在交叉熵损失函数每一个类别前添加了一个权重参数w(·),以此来调节样本不均衡的问题。

4 实验与分析

4.1 实验图像数据

由于目前并没有公开的隧道裂纹数据集,需要在裂纹提取前采集足够的样本数据。本文的实验图像是使用自主研发的移动式隧道病害检测设备拍摄,选取了2 000幅混凝土材质上的裂纹图像,其中用于训练集的一共有1 400幅(1 044幅作为正样本,356幅作为负样本),用于测试集的有600幅(481幅作为正样本,119幅作为负样本),图像大小为512×375像素,命名为NUAACrack-2000,该数据集即将公开用于学术研究。

数据集的制作过程如下:一线技术人员和施工人员区分正负样本,使用Github上开源的分割任务标注软件Labelme对正样本进行裂纹标注。与目标检测任务只需要框定出目标位置给出类别不同,分割任务的标注需要根据目标形态逐点标注。由于裂纹形状各异且大小不一,需要手动标注几十甚至上百个标注点才可以覆盖到完整的裂纹,因此数据集的标注工作耗费了大量时间和精力。完成框定的裂纹文件被保存为.json文件格式,最后将.json文件转化为掩码位图,图5为裂纹标注过程。

Figure 5 Crack labeling based on ‘Labelme’图5 基于Labelme的裂纹标注

4.2 性能评估方法

评价基于全卷积神经网络进行图像分割的性能指标有:像素精度PA(Pixel Accuracy)、类别像素准确率CPA(Category Pixel Accuracy)和交并比IoU(Intersection over Union)等,本次实验用于测试网络性能的指标有:平均像素精度MPA(Mean Pixel Accuracy)和平均交并比MIoU(Mean Intersection over Union)。选择这2个指标的原因如下:(1)在裂纹提取任务中,裂纹所占整体比例较小,模型预测效果较差也可能取得很高的PA,导致不同模型指标差距不明显;(2)CPA与IoU是主要针对某一类别的量化指标,在本文研究中,背景与前景的正确分割都至关重要,采用MPA和MIoU可以同时衡量2个指标。

算法对像素样本分类有4种可能的结果:TP(true positives)表示正样本被正确判定;TN(true negatives)表示负样本被正确判定;FP(false positives)表示负样本被误判为正样本;FN(false negatives)表示正样本被误判为负样本。假设原始样本中包含正样本与负样本,且共有k+1种分类,那么,Pij表示类别为i的像素被预测为类别为j的数目,Pii表示分类结果正确(即为TP或TN)的像素数目,Pij表示分类结果错误(即为FP)的像素数目,Pji表示分类结果错误(即为FN)的像素数目。

(1)平均像素精度:对每个类别分类正确的像素数与对应类别像素总数的比率求和,然后除以类别数得到的均值,如式(3)所示:

(3)

(2)平均交并比:交并比是算法对某一类别预测结果和真实值的交集与并集的比值,而平均交并比则是在每个类别上分别计算交并比的值再求和取平均值,如式(4)所示:

(4)

4.3 训练细节

本文实验在自制数据集NUAACrack-2000上进行,训练集共有1 400幅隧道裂纹图像,测试集有600幅。在带权重的交叉熵损失函数中,将前景裂纹权重设置为0.85,背景权重设置为0.15。实验代码使用PyTorch机器学习框架编写,运行于NVIDIA 2080Ti GPU上。

4.4 实验结果对比

4.4.1 消融实验

为了验证改进的上采样层与细节修复模块在算法中的有效性,本节选用ResNet-34结合原始全卷积神经网络的上采样结构为基础算法,在NUAACrack-2000数据集上进行对比。实验对比结果如表2所示,表中第1行为去除改进上采样层和所有细节修复层的基准算法,√表示在基准算法上加入对应模块,对应的指标为最终预测结果。

从表2中可以看出,改进的上采样层很大地提升了算法效果,对比原始的上采样层MPA提升了10.7%,MIoU提升了13.2%。适当添加卷积层、调整上采样的尺度大小,可以恢复大量因卷积丢失的特征细节,大幅改善预测结果。

Table 2 Results of ablation experiment表2 消融实验结果对比

从表2还可以看到,采用多尺度的卷积层结合通道注意力机制加权特征图各个通道的方法,可以有效提升算法效果,如果将细节修复模块重复添加至第1层与第2层反卷积层后面,将会增加过多的参数且效果提升有限。具体可视化效果如图6所示,针对难以分辨的细小裂缝,细节修复模块使算法在复杂噪声背景下有更好的鲁棒性,可以保持裂缝的连续性与几何形态的完整性。

Figure 6 Visualization of ablation experiment results图6 消融实验结果可视化

4.4.2 与常见算法实验结果对比

本节将本文算法与常见的图像分割算法在NUAACrack-2000数据集上进行对比。在对比算法中,Otsu属于传统裂纹识别算法,FCN、DeepCrack[15]、U2-Net[23]和ITSD[24]属于机器学习算法。U2-Net主要应用于显著目标检测任务,其使用嵌套的U型结构来增加网络深度,提升对显著物体的检测效果,并且采用深监督学习[25]加快模型收敛速度。ITSD算法在训练阶段与损失回归阶段都利用了显著图的边界信息,在许多显著性物体检测数据集上显示出了卓越的性能。各算法均在NVIDIA 2080Ti GPU 上训练至损失函数收敛。

与机器学习算法的对比结果如表3所示,本文算法在MPA与MIoU的评价指标上大体均优于其他算法,仅在MPA指标上略低于ITSD的。根据图8~图13的可视化结果可知,ITSD提取的裂缝分割结果Pij较大,导致MPA较大。图7展示了ITSD算法与本文算法分割结果的局部对比图,可以看到ITSD的结果边界呈锯齿状,无法准确描述裂缝的曲折外形,相比之下,本文算法得到的裂缝分割图更加准确。同时,表4列出了各个算法的参数规模Params和乘积累加计算复杂度MAdd(Multiply Add),通过对比可知,本文算法在分割效果最优的情况下,参数量与计复杂度也维持在低水平。

Table 3 Comparison of quantitative results of machine learning algorithms and the improved algorithm on NUAACrack-2000 dataset表3 本文算法与机器学习算法在数据集NUAACrack-2000上的性能指标对比

图7~图11展示了在不同情况下裂缝提取的效果对比图。

Figure 7 Local comparison between ours and ITSD图7 本文算法与ITSD结果局部对比

Figure 8 Comparison of fine crack extraction results图8 不同算法细小裂纹提取结果对比

Figure 9 Comparison of low contrast crack extraction results图9 不同算法低对比度裂纹提取结果对比

Figure 10 Comparison of crack extraction results with strong noise interference图10 不同算法强噪声干扰下的裂纹提取结果对比

在与传统的Otsu阈值分割算法的效果图对比中可以看到,该算法在进行图像分割的过程中会较大程度地受到噪声点与照明情况的影响,产生很多非裂纹的提取图像,这是传统算法的一大弊端。

Table 4 Comparison of Params and MAdd of machine learning algorithms and the improved algorithm表4 本文算法与机器学习算法的Params和MAdd对比

Figure 12 Comparison of clear crack extraction results图12 不同算法较清晰裂纹提取结果对比

Figure 13 Comparison of crack extraction results with complex background图13 不同算法复杂背景下裂纹提取结果对比

由于机器学习算法是通过抽象出目标的高维特征来进行裂纹提取,受原图非目标像素影响较小,故本文提出算法可以较大程度地避免噪声点的干扰。

机器学习算法均可以较好地摆脱非裂纹噪声的影响。在图8中,对于细小且形状极其扭曲的裂纹,FCN、ITSD、DeepCrack与U2-Net均未能提取出完整的裂纹,出现了断裂的现象。在图10中,裂缝的背景包含强烈的噪声,FCN与U2-Net均出现了误提现象,对于噪声影响的鲁棒性较差;而ITSD提取出的裂缝附近包含了背景噪声,且提取出的分割图像的宽度比真实裂缝宽,精细度不高;DeepCrack则是无法完整地提取出全部的裂纹图像。本文算法可以较为完整地识别出最上方受阴影影响的部分。

综上,本文算法可对测试集图像中的裂纹进行较为精确的分割,不仅可以分割出裂纹的大体形状与走向,保证裂缝的完整性,也能够较为细致地处理裂纹边界。图10~图13展示了更多可视化结果。

4.4.3 在其他裂缝数据集上的结果对比

为了验证算法的鲁棒性,本节还使用DeepCrack[15]数据集,增添了一组对比实验。该数据集中裂缝形态与本文公开的数据集的隧道裂缝图像差异较大,多拍摄自混凝土墙壁和地面等地点,裂缝的平均宽度较宽,大部分裂缝和背景之间的差异较为清晰。图14展示了数据集中的部分图像。各个算法均采用NUAACrack-2000训练集上训练得到的权重,直接对DeepCrack数据集的训练集进行预测,得到最终的裂缝分割结果。实验结果如表5所示,本文算法在该数据集上也取得了最优的评价指标。

Figure 14 Samples of the DeepCrack dataset图14 DeepCrack数据集部分图像

4.5 本文算法限制与讨论

实验表明,本文算法在裂纹提取方面较为鲁棒,在有背景噪声干扰的情况下可以有效地分割出裂纹的完整边界,并且保留细节特征。但是,本文算法也存在一定的改进空间。首先,裂纹数据主要采集于地铁隧道,在NUAACrack-2000上训练的模型可能不适用于其他裂纹图像提取,例如飞机表面的裂纹、钢铁表面的裂纹,还需要进行迁移学习。其次,针对移动采集与处理设备内存不足、算力有限等特点,设计较为轻量化的网络结构用以提取隧道图像裂纹是当务之急。因此,将来的改进思路是如何进一步精简网络结构以提高提取裂纹的效率。

Table 5 Comparison of quantitative results of machine learning algorithm and the improved algorithm on DeepCrack dataset表5 本文算法与机器学习算法在数据集DeepCrack上的性能指标对比

5 结束语

针对裂纹提取,本文提出了一种基于全卷积神经网络的单幅隧道图像裂纹提取算法,提出并添加的细节修复模块,可以保持裂缝提取形状的完整性,并保留清晰的边缘细节。实验表明,本文算法能有效提取隧道裂纹形状信息,并且很大程度上避免了类裂纹噪声的干扰,鲁棒性强,保留了裂纹边缘的细节。另外,本文还公开了一个隧道裂纹数据集NUAACrack-2000,共包含2 000幅隧道裂纹的采集图像与对应的掩码位图,供广大学者学术研究。

猜你喜欢

裂纹像素卷积
基于扩展有限元的疲劳裂纹扩展分析
像素前线之“幻影”2000
一种基于微带天线的金属表面裂纹的检测
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
“像素”仙人掌
Epidermal growth factor receptor rs17337023 polymorphism in hypertensive gestational diabetic women: A pilot study
从滤波器理解卷积
心生裂纹
基于傅里叶域卷积表示的目标跟踪算法