冉 蓉,徐兴华,邱少华,崔小鹏,欧阳斌
海军工程大学 舰船综合电力技术国防科技重点实验室,武汉430033
随着社会经济的发展,建筑物、桥梁、道路和铁路等民用基础设施的规模越来越庞大,保持良好的运行状态对于公共安全至关重要。而裂纹是威胁民用基础设施安全运行的重要因素之一,见图1[1]和图2。及时准确地检测出裂纹的萌生及扩展情况,可以有效避免重大灾难性事故的发生[2]。因此,裂纹检测在经济、交通、建筑、船舶等领域均有重要的应用价值。
图1 混凝土表面裂纹
裂纹根据其出现材料位置的不同,可分为表面裂纹和内部裂纹,本文主要聚焦表面裂纹的检测方法。早期表面裂纹检测的主要手段是靠人眼识别,该方法受视觉分辨力的限制,受外界环境影响较大,容易因视觉疲劳导致效率低、精度低的问题;此外,由于检测人员个人主观经验存在差异性,很难形成一个客观统一的检测标准。随后,类似于声学、光学、射线等传统无损检测方法的应用和各种检测器件的更新升级推动了检测精度和检测速度的相对提高[3]。这些检测方法虽然涉及了民用基础设施的各个领域,并在各自的待检测对象上具备独特的优势,但大多数检测方法的应用还是符合特定检测条件的前提下所进行的人为操作。这些方法均只能判断裂纹的有无,无法对裂纹进行定性地分类以及测量[4]。计算机视觉技术通过相机等传感器设备非接触式地采集物体表面的图像并进行自动化地分析处理,具有精确性高、非接触性、灵活性、成本低等优点,在裂纹检测领域得到越来越广泛的应用[5]。王凡等人[6]采用基于数学形态学与图像融合的方法解决了板带钢裂纹检测的问题;Chambon 等人[7]利用计算机视觉的方法解决了道路裂纹的自动检测与评估问题;2017年,同济大学研制出一套隧道检测系统MTI-100[8],此系统使用图像处理技术实现了在移动中对裂纹的定位与检测,但其还需要一定的人工辅助。上述方法虽然在裂纹检测方面取得了显著的效果,但是设计特征提取器依赖于丰富的先验知识,针对特定的裂纹检测问题需要进行特定的处理与设计,具有特征构造复杂和通用性差等问题。一旦检测的图像与环境发生变化,其检测效果亦会随之下降[9]。
自2006年Hinton等人[10]在Science上发表深度学习相关论文以来,深度学习技术得到了深入的研究,为解决上述问题提供了新的思路。相较于传统机器学习算法而言,深度学习具有更强大的特征学习和特征表达能力,在计算机视觉领域的大规模复杂识别任务中表现更为出色[11]。在过去几年中,许多国内外学者已经将深度学习,特别是深度卷积神经网络(Deep Convolutional Neural Networks,DCNN)的方法应用于裂纹检测领域中。Soukup 等人[12]将卷积神经网络应用于金属表面裂纹检测;郭亚萍等人[13]利用SegNet网络实现了对工件表面裂纹的检测;Deng 等人[14]提出了CNN 与基于变分模式相结合的裂纹检测方法,解决了电缆早期裂纹检测问题。本文对裂纹检测方法进行了综述,着重探讨了基于深度学习,特别是DCNN 的裂纹检测方法,分析了现存问题及未来可能的研究方向。
图2 钢材表面裂纹
由于裂纹通常是因外界应力或环境作用导致材料内部疲劳,进而在表面产生的细缝、裂隙、断裂等。根据其产生本质的不同,可分为热裂纹、冷裂纹、层状撕裂及应力腐蚀裂纹等。在实际应用场景中,根据裂纹产生部位和宏观特征的不同,采用的物理检测手段也多种多样,例如:超声波、涡流检测、散斑干涉和射线检测等[15-24],如表1所示。
苏忠高[25]等人利用超声波时距检测法实现了对混凝土结构内部深度单一的裂纹的检测,并发现传感器与被检测物表面耦合情况、检测人员对传感器按压力度等因素会影响检测结果;与此同时,一种用于检测钢板结合处的不可见裂纹的超声波钢板裂纹检测方法被Li等人[26]提出,此法解决了检测范围受到限制的问题。2015年,Liu 等人[27]利用了双光束空间载波数字散斑干涉技术实现了零件表面和内部形变的同时测量,但由于粗糙表面的条纹图案会产生与裂纹相似的散斑噪声的原因,导致粗糙表面裂纹的检测精度较低;为此2018 年Vincitorio 等人[28]提出了一种无透镜傅里叶数字全息干涉技术的光学裂纹检测方法,利用非均匀热载荷代替均匀热载荷作为激励源,克服了在展开相位图中无法观察到干涉条纹位移的问题,有效改善了粗糙表面裂纹检测的检测精度。而在电磁学中,Priewald 等人[29]利用基于有限元件非线性正向模型和高斯-牛顿优化算法的闭环伪逆法,实现了对任意形状裂纹的二维重构,但此法的实现效果依赖于高精度的漏磁检测器;随后Cheng 等人[30]提供了脉冲涡流热成像的表面裂纹检测方法,能使用简单设备在短时间内检测相对较宽区域的裂纹。2020年,眭霄翔等人[23]提出了基于镜面反射的红外无损检测技术,通过镜面反射扩大检测范围,解决了实际工程中因红外无损检测设备而导致的检测不可达问题,但相比于红外直接检测,利用镜面反射的间接检测因热激励能量传播路径较远和两次反射的特点,导致热激励能量和红外辐射损失,使得其检测精度低于常规的红外无损检测技术。
上述方法均是利用物质的物理性质进行表面裂纹检测,其中大部分方法已经发展成熟,能实现较好的检测效果,但同时也存在各自的缺点。由表1 可以看出,人工目视的方法适用范围广,但其检测完全依赖于检测人员的主观判断,没有客观统一的检测标准;电磁涡流法、微波检测、渗透检测、磁感应法属于静态检测法,需要被检测物处于相对静止状态,并且对检测环境要求比较苛刻,实时性较差,这些缺点导致静态检测在工业生产中不易得到推广;射线检测利用射线的穿透能力检测物体的缺陷,其对面积型的缺陷(具有二维尺寸或第三维尺寸极小的缺陷,例如裂纹)检测效果不佳,且射线本身对人体有害,不宜频繁使用;红外检测、超声检测的检测设备体积较大,操作过程繁杂,在实际应用过程中易出现无法接近被检测物的情况,导致检测无法进行。
表1 裂纹检测物理手段
近年来,随着计算机视觉技术的深入研究,其设备成本低、检测速度快、检测精度高、适用范围广等优势日益突出,应用于裂纹检测领域可大幅度减少设备成本、提高检测精度、加快检测速度。国内外许多企业、科研机构和高校也已将计算机视觉技术应用到表面裂纹检测领域中,例如路面的裂纹检测[31]、铁轨的日常检测[32]、航空行业中飞机板件的裂纹检测[19]等。目前在计算机视觉技术领域,主要的方法有基于图像处理的方法、基于机器学习的方法以及基于深度卷积神经网络的方法三大类。基于图像处理的裂纹检测方法主要是对图像进行阈值分割、特征提取等操作实现裂纹的识别、分割与检测[31]。基于机器学习的裂纹检测方法则是使用算法使计算机能够自动学习或发现图像数据中裂纹特征实现裂纹的检测[33]。基于深度卷积神经网络的裂纹检测方法是利用卷积神经网络构建适合于裂纹检测的深度模型[34],此类方法是本综述的重点方法,故在第4 章对其单独进行详细介绍。下面对计算机视觉技术中基于图像处理和基于机器学习的方法进行介绍与分析。
基于图像处理的方法可分为阈值分割、边缘检测和区域生长等。基于图像处理的裂纹检测方法通常可以分为三步[35]。第一步是图像的获取与预处理部分。所谓预处理,就是为了消除图像其本身存在的缺陷对检测结果的影响而采取的图像增强、去噪、滤波、复原、直方图分析等操作;第二步是边缘检测和阈值分割,提取图像的特征信息,这也是整个检测算法的关键,其处理效果直接影响算法最后的检测精度;第三步就是图像后处理部分,确定裂纹位置和形态,如图3所示。
图3 基于图像处理的裂纹检测方法步骤
2018 年,李慧娴[36]提出的双重阈值法,使用了双边滤波平滑图像背景噪声和保留部分边界信息,同时利用局部灰度差突出细节部分的边界信息,实现了对微小类陶瓷元件端面裂纹的检测,在一定程度上解决了传统阈值方法无法将细小且灰度不均匀裂纹与背景有效分离的问题。针对道路裂纹检测中因道路标记在灰度图像中的值较大而影响阈值选择的问题,Peng等人[37]提出小于等于阈值T 的灰度值不改变的改进Otsu阈值分割算法去除道路图像中的标记,再利用自适应迭代法对去除标记后的图像进行分割,得到裂纹图像。Xu 等人[38]对经典Canny迭代法中的滤波参数选择进行改进,利用最小方差作为测量滤波参数的常数因子,并结合各窗口均值的倒数,提高信噪比,消除噪声,有效提高了混凝土桥梁裂纹的检测精度。Oliveri等人[39]提出了将3D矩量法与贝叶斯压缩感测求解器结合使用的检测方法,用于检测各向异性材料的裂纹,但此法因涉及相关逆的离散化问题,给检测带来了巨大的计算量。而Yang等人[40]提出了一种新的混凝土裂纹检测图像分析方法,此法能检测出比暗线更细的裂纹,减少了手工标记裂纹的需要,但此法是对基于边缘的裂纹检测方法的补充,不宜单独使用。
将图像处理技术融合到裂纹检测中具有诸多优势:
(1)完全非接触,也就是图像传感器无需与被检测工件发生接触就可获取到检测所需的图像,完全解决了因工件位置的原因而无法检测的问题。
(2)检测速度快,容易实现实时检测,在确定最优检测算法之后,剩下大部分操作均可由计算机实现自动化控制,减少了检测过程中所需花费的人力。
(3)成本低廉,随着科技的高速发展,相机和计算机已经实现大范围的普及,对于一般的裂纹检测,家用照相机和计算机即可实现,无需另外准备其他仪器。
但基于图像处理技术的裂纹检测方法也存在缺点:
(1)可移植性不强。基于图像处理技术的表面裂纹检测方法需要对图像进行预处理、分析理解等操作,提取特征并最终实现对表面裂纹的识别与分类。被检测物体不同,其图像特征亦不同,因而在实现表面裂纹检测过程中,往往需要针对特定的图像特点设计专门的裂纹检测算法。在实际应用中,基于图像处理的表面裂纹检测方法可移植性不高。
(2)提取的特征信息有限。传统图像处理技术只能够提取较为底层的视觉特征,如梯度等信息,对裂纹本身结构的高层语义特征提取能力较差,因为也难以有效应对不同类型、不同纹理背景下的裂纹对象。
传统机器学习的主要任务[41]是从已有的大量数据中通过学习找出其内含的规律和模式,然后对新数据做出预测。一般根据处理的数据是否存在标注,将机器学习分为监督学习和无监督学习两大类。
2.2.1 监督学习方法
监督学习是从已标注好的数据集中学习得到一个参数模型,当输入一个新的数据时,可以根据得到的参数模型预测其结果。因为裂纹特征和形式的多样性,大部分国内外学者将裂纹检测的重点放在监督学习上,而理论研究和算法研究都集中于监督学习的特征提取、特征选择和分类器设计三个方面[3]。目前在裂纹检测领域中应用最为广泛的监督学习方法主要是支持向量机[42](Support Vector Machine,SVM)、人工神经网络[43](Artificial Neural Network,ANN)和决策树[44]等。
Hittawe 等人[45]提出的木材裂纹检测方法使用了纹理特征与梯度特征相结合的方法创建了基于词袋模型的字典,利用字典对特征进行量化,统计图像中视觉单词出现的频率,得到图像视觉单词直方图,将该直方图作为输入特征向量,用于后续SVM的分类操作。Martins等人[46]提出了一种基于人工神经网络的轧钢裂纹检测系统,其检测精度达到了98%左右,但是此法的普适性较低,其人工神经网络中的参数是根据轧钢裂纹的特点而进行设置,在应用于其他类型裂纹时,需对参数进行调试;Fernandez等人[47]采用了决策树启发式算法对裂纹图像进行分类,实现了在模拟高速情况下对裂纹进行检测,但此项工作均是在模拟环境中进行,尚未集成到真实系统中;而Shi等[48]人提出的CrackForest模型,采用随机森林对包含来自多层次的颜色、梯度信息的整合通道特征重新定义的标记进行处理,同时将利用标记的统计特征提出的裂纹描述子与分类算法相结合,从而减少噪声对裂纹检测精度的影响。
监督学习方法根据设定的监督模型,利用数据集对模型参数不断进行调整以达到更优的裂纹检测精度。总体来说,优点可以总结如下:(1)有效解决了非线性情况下检测精度不高的问题;(2)对样本数量的需求不高。其存在的缺点可以概括为以下两个方面。
(1)最终模型效果很大部分依赖于样本质量。此法最终分类器显示的分类效果取决于训练所选取的样本。
(2)模型容易出现过拟合的现象,尤其是在样本特征比较多的情况下。
2.2.2 无监督学习方法
无监督学习是直接利用没有标注的样本数据,从中学习样本之间的相似性并对其进行分类。在缺乏足够先验知识或人工标注数据所需成本过高时,无监督学习的方法能够产生很好的效果[3]。其中比较常用的Kmeans 算法主要是通过设定不同类别的核心或初始类核,依据样本与核心间的相似性度量将样本组划分为不同类别;而类似于人工种群算法则是根据设定的阈值将图像中框有目标信息局部窗口的中心像素不断地与连通邻域内的像素进行比较,直至满足设定的亮度、尺寸等条件。
Zou 等人[49]提出了一种基于无监督分类的Crack-Tree自动路面裂纹检测方法,利用张量投票技术和构造最小生成树的方法解决了裂纹强度不匀的问题,但仍存在部分与阴影强度相似的裂纹会被作为阴影处理的情况;为了消除阴影对检测的影响,Ju等人[50]提出了基于光照补偿模型和K-means聚类算法的路面裂纹检测方法,实现了阴影部分的准确去除,使得其检测精度达到了93.5%,但此法中K 值(所期望的聚类簇个数)的选取直接影响检测结果的好坏,导致其更换被检测工件后可能会出现检测精度大幅度下降的情况。Li 等人[51]于2017年提出了一种基于改进的C-V 模型与Canny 迭代算子相结合的混凝土表面裂纹检测方法,能准确测量出裂纹大小及位置,具有良好的检测效果,但由于每次迭代后符号距离函数需重新初始化,导致其运算复杂耗时。
对于基于无监督学习的裂纹检测方法,其显著优势在于无需大量人力制作样本标签,可直接从无标签的样本中进行学习,但其精确度和有效性劣于监督学习,而且此类方法也存在一些不足:
(1)漏检和误检现象比较严重。无监督学习中最典型的方法是聚类,其通常采取的聚类方法属于非概率模型的硬分类方法,例如K-means 聚类和层次聚类,此类方法相当于决策函数,输入数据后得到唯一判决结果。将其应用于裂纹检测问题,结果只有是和不是裂纹两类结果。但事实上,在裂纹检测中,这种硬分类方法,对于一些在边角处的裂纹和一些不清楚的裂纹,易出现漏检情况;对于一些类似于裂纹的污渍等噪声易误检为裂纹,将会导致大量漏检和误检情况的出现[52]。针对这种情况,可以通过采用基于概率模型的高斯混合模型聚类方法对裂纹存在与否进行判断[53]。应用于裂纹检测问题中,输出的概率值对应的是有裂纹和无裂纹的概率大小,若两者概率相差较大,可直接确定大概率的作为判决对象,反之则将其视为候选裂纹块,可对其采取进一步分析判断。
(2)参数的选择直接影响其性能。在采用了Kmeans 聚类算法的裂纹检测方法[50,54]中,最为核心的两个参数K 值(所期望的聚类簇个数)和means(每个聚类簇的质心),其中means的值是随机初始化,然后通过最小范数原则调整直至质心收敛;而K 值为事先设定,其值的选定与数据集本身和所选取的特征有关,会直接影响算法的聚类效果,目前针对于K 值的选取使用较多的方法就是肘部法则和间隔统计量法。
深度学习(Deep Learning)是机器学习的分支,由于深度学习领域近十年来发展迅速,也相继提出一些特有的具有代表性的算法,例如卷积神经网络等,因此本文将深度学习看成一种与传统机器学习不同的学习方法。因为深度学习具有很强的特征学习能力和特征表达能力,使其已经逐渐取代机器学习算法成为裂纹检测领域的主流方法[55]。由于在裂纹检测领域中使用深度学习的方法大部分都是基于深度卷积神经网络,故本文只讨论深度卷积神经网络,其他方法不加赘述。
深度卷积神经网络是一种专门用来处理类似网络结构的数据神经网络[56],例如在时间轴上有规律地采样的一维时间序列网络和可以看作二维像素网格的图像数据。CNN 由多层神经网络组成,每层又由拥有多个独立神经元的众多二维平面所组成,其本质就是一种从输入到输出的映射,它依靠网络自身学习大量输入与输出之间的映射关系,不需要任何精确的数学表达式。CNN 可以自动地提取图像中不同层次的特征,再根据这些特征进行分类或者识别等任务,具有高度的抽象性和概括性,可以更好地反映数据的本质。
DCNN 采用了稀疏连接和参数共享的思想。与传统每一个输出特征图与每一个输入特征图都产生连接的神经网络不同,稀疏连接使得每一个输出特征图只与上一层特征图的邻近区域相关。而参数共享是指在一个模型的多个函数中使用相同的参数,即每次遍历整幅输入图像仅需一个卷积核,这样不仅大大减少了存储的参数数目,提高了运算效率,也使得卷积神经网络具有了平移不变性的特点。
DCNN一般由输入层、卷积层、池化层、全连接层和输出层构成。经典卷积神经网络LeNet 结构如图4 所示。其中,卷积层进行卷积运算,相当于图像处理中的“滤波器运算”,主要负责特征提取操作;而池化层是缩小长、高方向上的空间的运算,根据图像局部相关性的原理,选取输入特征图的一个小区域,对图像进行特征池化(以最大值或平均值的方式),减少模型的计算量,使网络具有一定的抗噪能力。最后全连接层的作用是对提取的特征进行分类,根据任务的不同输出最终结果(概率)。
2012 年,Krizhevsky 等人[57]提出了包含5 个卷积层(卷积+非线性激活+最大池化层)与3 个全连接层的AlexNet 网络模型,此网络首次使用线性整流函数(Rectified Linear Unit,ReLU)解决了梯度发散问题,并提出在全连接层中使用Dropout 方法避免模型过拟合。2014 年,VGGNet[58]出现,其包含了深度从11 层到19 层不等的网络模型,比较常用的是VGG16 和VGG19,所有模型结构均采用5 组卷积层和3 个全连接层以及softmax输出层,所不同的是5组卷积层中包含的级联卷积层越来越多,此模型的提出验证了深度的增加有利于分类准确度的提升。同年,GoogLeNet[59]基于“网络中网络”[60]的思想提出了Inception 结构,此结构实现了使用稠密组件近似替代最优局部系数结构。在Inception 结构中使用大量1×1 的卷积核,大大减少了参数数目,提高了模型的训练速度和推广能力。此外,模型中加入2个辅助分类器用于向前传导梯度,有效减轻了梯度消失现象。2015年,ResNet[61]引入了直接将输入信息绕道传到输出的思想,将直接学习目标值转变为学习输入值与输出值的残差。此模型采用这种skip connection 结构在某种程度上解决了信息丢失和耗损的问题,也简化了学习目标与难度。
近年来,随着计算机硬件和深度学习算法的不断发展,深度卷积神经网络在图像分类、目标检测、图像分割等计算机视觉任务中取得了巨大的成功。以深度卷积神经网络为代表的许多方法均已应用于表面裂纹检测领域,根据这些方法处理表面裂纹检测问题方式的不同,可分为三类:基于图像分类的方法(image classificationbased methods)、基于目标检测的方法(object detectionbased methods)、基于像素级分割的方法(pixel-level segmentation-based methods)。
图4 经典卷积神经网络LeNet结构示意图
图像分类的任务就是对输入图像进行分析后返回一个将输入图像分类好的标签,其大致流程如图5所示。
图5 图像分类流程
将此类方法应用于裂纹检测中,实质是将裂纹检测问题当作二分类问题,输出图像是否包含裂纹的标签,具体过程是将输入图像划分为很多块,对块图像进行分类,如果块图像中包含一定数量的裂纹像素,则会返回是裂纹图像的标签,如图6所示[55]。
图6 基于分类的裂纹检测方法
2016 年,Zhang 等人[62]提出了一种使用4 个CONV层和2 个全连接层的卷积神经网络结构的道路裂纹两分类方法,此法对大尺寸的裂纹分类效果明显,但小尺寸裂纹容易被消除。在文献[63]中,一种基于GoogLeNet的深度卷积神经网络被用于混凝土表面裂纹的检测,此网络能够自动从输入图像中提取特征而不受噪声的影响,具有较高的准确性和鲁棒性,解决了对小尺寸裂纹不敏感的问题。为了排除路面上树叶、标记线、污渍等物体的影响,Qu 等人[64]提出一种基于改进后的VGG16网络模型的路面检测方法,此模型主要采用了VGG16的前两层模型,并结合Inception 模块重置部分卷积和参数值,克服了VGG16 提取裂纹位置不准确的缺点,使其准确度比原先的模型提高了近30%。2019 年,王丽苹等人[65]发表了一种基于AlexNet 网络架构的裂纹检测方法,此模型与原始AlexNet模型相比,在第一、二层进行池化操作后分别增添一次局部归一化操作,并对超参数进行了重新设置,使得优化模型对彩色图像的识别准确率高达98.5%,大幅度提高了裂纹检测的工作效率。
基于图像分类的方法应用于裂纹检测领域,很好地解决了识别精度不高,图像质量不好影响效果的问题。但此类方法只能做到有无裂纹的分类,无法对裂纹的形状、大小及其位置等进行判断,这在需要确定详细裂纹的情况下无法使用。
目标检测的任务是给定一幅图像,判断出图像中是否包含目标,若包含则给出输入图像中目标的位置,通常使用矩形框表示。现主流的目标检测算法可分为两类:第一类是基于两阶段思想的检测算法,即算法由两阶段完成,首先是提取候选区域,再对候选区域进行分类和更进一步的精确定位,例如fast R-CNN[66]、faster R-CNN[67]等;而基于单阶段思想的检测算法不需要提取候选区域阶段,直接产生物体的类别概率和位置坐标值,只需要一次检测就可得到最终的检测结果,其检测速度快,例如SSD[68](Single Shot MultiBox Detector)、YOLO[69](You Only Look Once)等。基于目标检测的表面裂纹检测方法是将裂纹作为目标对象,使用边界框在图像中对裂纹进行定位,示意图如图7[70]。
图7 基于目标检测的裂纹检测方法
当前基于目标检测的表面裂纹检测方法中,效果最为突出的是基于Faster-RCNN 的方法和基于YOLO 的方法。Faster R-CNN算法应用于目标检测主要分3步:(1)使用类似于VGGNet 的深度CNN 网络模型提取特征;(2)提出目标的候选区域(RPN 层);(3)对目标类型进行分类并确定边界框的坐标位置。而SSD 算法是直接利用具有不同分辨率卷积层的多个特征图,对输入图像进行检测,并将分类结果和坐标位置封装在一个网络中。YOLO 系列算法则是利用一个大小合适的M×N的网格覆盖在输入图像中,再分别对每个小网格中的内容进行标注。此算法是单次卷积实现,小网格之间共享了大部分计算步骤,使得此算法的检测效率高且运行速度快。
Suh和Cha[71]于2018年提出了一种基于faster R-CNN的多类型裂纹检测方法,使用ZF-net[72]替代了faster R-CNN 原始结构中的VGGNet,加快了特征提取的速度,并对此进行测试,结果表明,鲁棒性更佳的faster R-CNN 基本可实现多种类型裂纹的实时检测与定位。2019 年,文献[73]从实际应用出发,介绍了一种更加有效且相对便宜的检测方法,使用改进后的faster R-CNN模型对6 种裂纹实现了平均精度高到96.3%的实时检测。而Mandal等人[74]在2018年提出了一种基于YOLO V2 网络架构的自动路面检测分析系统,但此法的检测精度有待提高。针对裂纹检测实时性差以及精度不高的问题,文献[70]中提出了一种基于YOLO V3 网络架构的裂纹检测方法,此法在多尺度预测、基本分类网络和分类器上做出了改进,使得其准确度达到了88%,基本达到了民用基础设施监控的要求。除此之外,YOLO网络架构模型还可以应用于铁路轨道此类小目标裂纹的检测中,Li等人[75]利用改进后的YOLO有效提高了轨道裂纹的检测精度和实时检测速度,解决了轨道裂纹难以定位的难题。
相较于基于图像分类的方法,基于目标检测的表面裂纹检测方法的识别精度和粒度大幅度提高。但裂纹的大小及纹理等重要信息仍然无法从生成的边界框中得到。
像素级分割是对输入图像中的每个像素点都划分相对应的类别,此法既可对目标进行分类,又可得到目标的精确位置和结构。将此法应用于裂纹检测领域中,是对输入图像中的每个像素点分配标签,既可判断有无裂纹,又可获得重要的裂纹特征,如图像中裂纹的位置、大小、形状等信息。类似于FCN[76]、U-Net[77]、Seg-Net[78]模型均可用于像素级的分割,相比于传统图像分割方法无需任何的预处理操作,其检测效果示例图如图8所示[79]。
图8 基于像素级的裂纹检测方法
FCN能接受任意尺寸的输入图像,并且通过反卷积层输出与原始图像尺寸一致的图像,在保留了输入图像空间信息的同时,也对每一个像素点都进行了预测和分类。U-Net是一种改进的全卷积神经网络模型,一开始应用于医学图像处理领域,近些年,在桥梁裂纹[80]、道路裂纹[81]上也被广泛使用。Seg-Net模型采用的是编码器和解码器组成的对称结构,此结构对细节特征更加敏感,降低了误分类的概率,提高了裂纹的检测精度。此类方法的特点是网络架构由卷积层组成,实现了像素级的分割且对输入图像尺寸无要求。
2018 年,Cheng 等人[81]提出了一种基于深度卷积神经网络U-Net的自动道路裂纹检测方法,在两个道路裂纹数据集中测试该方法,像素级分割精度达到92%。文献[82]对比了用于自动路面裂纹检测系统的三种不同深度的U-Net算法,其目的是验证深度越大的模型架构是否一定能获得更好的检测精度。实验证明,选择深度合适的网络架构既可保证检测精度又能提高检测速度。在Islam等人[83]的文章中提出了一种使用深度卷积神经网络的混凝土裂纹检测方法,它由具有编码器和解码器框架的全卷积神经网络组成,其在混凝土公开数据集中的测试结果表明,此方法对混凝土裂纹检测非常有效。文献[84]中也设计了一种带有基于VGG16 的编码器的整个编码器-解码器FCN 网络,此法能够更加准确地检测出裂纹并评估出裂纹密度。
基于像素级分割的裂纹检测方法能够预测原始图像中每个像素的类别。由于其通常不采用全连接层,因此对输入图像尺寸没有任何要求。此类方法会预先设定一个固定尺寸的感受野,当小于感受野尺寸的目标裂纹出现时,会产生误分类和错误标记的现象,从而使得小目标裂纹的局部信息丢失。在复杂背景下,与裂纹相似的伪目标会被误分类为裂纹也是一个不可避免的问题。此外,该类方法需要大量像素级标注的样本,因此需要耗费大量人力物力完成收集样本和标注工作。
在背景纹理较复杂,噪声干扰大且分布无规律的表面裂纹检测情况下,基于图像分类的检测方法和基于目标检测的方法由于存在全连接层,容易出现卷积层与全连接层之间存在的维度跨越过大导致局部细节特征丢失[3];针对背景纹理较复杂,噪声干扰大且分布无规律的裂纹图像,李良福等人[85]提出的与滑动窗口算法相结合的基于卷积神经网络的DBCC(Deep Bridge Crack Classify)模型,用于桥梁背景面元和桥梁裂纹面元的识别,通过添加局部响应值归一层和概率区分阈值,在一定程度上减小了图像亮度不均匀和噪声所带来的误检与漏检问题。此外,充分利用深度残差网络加深网络结构有利于辅助基于目标检测的卷积神经网络模型检测具有强噪声干扰的裂纹图像。孙朝云等人[86]提出通过使用深度残差网络对SSD 卷积神经网络模型的特征提取网络结构VGG16 进行改进并加深网络层次的方式,引入拟合残差映射代替原始映射,相比于原始模型,通过使用深度残差网络后的模型对噪声干扰大的路面裂纹图像的检测效果有所提升,裂纹检测准确率上升了10%。
在基于深度卷积神经网络的表面裂纹检测算法设计及验证过程中,数据集的数量及质量起着至关重要的作用。目前,在表面裂纹检测领域中,被广泛使用的公开数据集较少,大部分是由一些大型算法比赛中组委会、部分研究人员提供,表2 总结了部分研究中使用较多的公开数据集。
随着深度卷积神经网络在表面裂纹检测领域的广泛应用,其在实际应用中存在的一些问题也逐渐突显出来。
表2 表面裂纹检测常用公开数据集简介
(1)缺少有标记的、数量庞大的数据集。深度卷积神经网络利用大体量数据集以监督的方式通过卷积运算提取和学习图像特征,再利用反向传播最小化训练集上的分类误差,共同优化网络参数,最终实现裂纹的提取[98]。故深度卷积神经网络的性能与数据集的大小有直接关系。在裂纹检测算法的实际工业应用中,由于部分场景本身存在的裂纹数目少、裂纹数据标注工作量极大的原因,导致已有数据集数量偏少,很难有效支撑深度卷积神经网络的训练。
(2)对细微裂纹的检测能力还有待提高。早期细微裂纹尺寸很小,视觉特征较弱,与背景之间对比度低,导致收集到的裂纹图像信息少。然而早期表面裂纹检测的实际应用意义更加重大,常规的深度卷积神经网络算法很难有效地将所有细微裂纹及时检出,容易出现误检和漏检的情况。
(3)实际应用中的实时检测问题。在应用中裂纹检测的实时性更关注于模型推理这一环节。相比于传统图像处理或机器学习算法,现有深度卷积神经网络的方法大多采用全卷积操作,计算量较大,需要足够的硬件资源作为支撑,难以适应内存小、计算能力弱、通信宽带低的实际应用场景对实时性的要求。
针对基于深度卷积神经网络的表面裂纹检测方法所存在的问题,可以从以下几个角度进行突破:
(1)样本量不足的问题。可从以下三方面解决。第一,利用传统图像处理方法对已存在的裂纹图像进行数据扩增。对原始裂纹图像采用镜像、旋转、平移、扭曲、滤波、对比度调整等图像处理的方法来获取更多的样本,还可通过将单独裂纹融合叠加到正常无裂纹图像样本中生成全新的裂纹图像样本。第二,利用迁移学习(Transfer Learning)[99]弥补样本不足所带来的局部最优解和过拟合等缺点。在裂纹检测领域中,由于大多数图像特征具有相关性,迁移学习可将深度卷积神经网络在海量数据集上训练得到的模型进行迁移,使用在具有一定相关性的具体裂纹检测任务中,从而减少对样本量的依赖,加快模型的学习效率。第三,使用自监督学习(self-supervised learning)的方法训练样本数据。其核心思想是输入没有人工标注的样本数据,通过数据本身的结构或特性,由机器构造监督信息对网络模型进行训练。因此此法可以自动从无标记的裂纹样本数据中产生标签进行学习,完全无需人工参与,有效解决了样本标记耗时和样本量缺乏的问题。例如利用生成式对抗网络模型[100-102](Generative Adversarial Networks,GAN)生成与训练样本数据分布类似的新数据,达到扩充数据集的目的。
(2)细微裂纹检测能力不足的问题。细微裂纹检测能力不足的问题。细微裂纹本身固有的低分辨率、所占像素比少的特性使其在检测中能够提取到的有效信息数量有限,这是造成细微裂纹检测精度低的根本原因。对于目前常用的裂纹检测模型而言,通常采用下采样操作增大感受野并对特征进行降维以便缩小特征图[72],但由于细微裂纹边缘信息模糊且语义信息少,易导致细微裂纹信息丢失而不利于细微裂纹的定位。针对此问题,可采取多尺度特征融合的方法,将浅层网络的细节信息与深层网络的语义信息相结合,对细微裂纹进行准确地定位,以此提高细微裂纹的检测精度。针对细微裂纹拓扑连接的特点,可通过有针对性地设计裂纹检测模型结构和损失函数设计,增强对低对比度细微裂纹的检测能力。
(3)实时检测的问题。对民用基础设施进行实时检测能及早发现裂纹,达到预警效果,避免造成经济损失和人员伤亡,故实时检测是裂纹检测领域发展的必然趋势。以后的研究可从网络结构轻量化设计、模型压缩、量化编码等方面出发,设计体积小、计算资源要求低、检测精度高的网络模型,满足手机或者嵌入式边缘终端设备的实时裂纹检测。一般地,可以采取模型压缩的方法,使网络在减少参数的同时降低网络的计算复杂度,模型压缩可通过模型剪枝、低秩分解等方法实现;也可采取将浮点型运算转化为低比特的运算,减少计算复杂度。此外,还可以通过设计效率更高的轻量化卷积神经网络计算方式实现在保持较高的检测精度的同时,大幅度减少参数量、提升检测速度。目前常用的轻量化模型主要有SqueezeNet[103]、MobileNet[104]和ShuffleNet[105],它们通过特殊的模型设计方法(如fire module、深度可分离卷积模块等)达到减少特征图的通道数和权值参数的目的。
深度卷积神经网络已经成为表面裂纹检测领域的主流技术。本文总结了裂纹检测领域中常见的物理检测方法,讨论了这几类检测方法各自的应用领域、基本原理及其优缺点,并由此引出了基于计算机视觉的检测方法,其中包含基于图像处理技术、基于传统机器学习和基于深度卷积神经网络三类方法,阐述了它们各自的应用及优缺点,详细介绍了基于深度卷积神经网络的裂纹检测方法,其中包括了基于图像分类的方法、基于目标检测的方法和基于像素级分割的方法。最后阐明了此法所存在的问题及其未来的发展方向。