彭建盛,李涛涛,侯雅茹,许恒铭
(1.广西科技大学电气与信息工程学院,广西柳州 545000; 2.河池学院人工智能与制造学院,广西宜州 546300)
裂纹是指材料在应力和/或环境作用下产生的裂隙,它存在于道路、机械、建筑等各种结构中。裂纹是引起大型复杂结构被破坏的主要原因之一。早期初始的裂纹通常微小,隐匿而不易被发现,容易被人们忽略,但裂纹的深入扩展往往会导致重大灾难性事故的发生,如航空灾难、桥梁坍塌和油气管线爆裂等,给国家和社会造成巨大的损失。因此,对早期初始微小裂纹的准确检测至关重要。传统裂纹识别主要依赖人工,存在成本高、耗时长和可靠性偏低等问题,而实现裂纹自动化、智能化检测是目前裂纹识别领域的研究热点。
裂纹的自动检测主要分为两个步骤,一是裂纹图像的采集,二是裂纹图像的识别。前者依赖于无人机、激光扫描和卫星等多种手段获取,目前已有较多文献对裂纹图像采集进行介绍;针对后者,自动检测算法通过对数据的处理,实现对裂纹图像的自动识别。近年来机器学习技术飞速发展,并已被广泛应用于自动检测领域。传统机器学习方法需要提前对特征进行定义,但不同的特征定义将影响着模型的准确性;与之相反,深度学习方法通过自动学习来获取特征,不需要对特征提前定义,是当今裂纹识别的主流技术。目前,已有许多研究人员对裂纹识别领域的方法进行综述。例如,Czimmermann等[1]从特征提取方法和分类网络方面对近年来的裂纹识别技术进行综述,但对深度学习技术介绍较少。Hsieh等[2]主要介绍机器学习中的深度学习方法,详细对比了各种网络的检测性能,但对机器学习的其他算法介绍很少。Byunghyun等[3]对各种深度学习方法进行分析,选取具有代表性的网络进行测试,但是仅对混凝土裂纹进行了研究。冉蓉等[4]对裂纹识别领域的机器学习方法和深度学习方法进行梳理,详细介绍了基于深度卷积神经网络的裂纹识别方法,同时也对传统机器学习方法进行了描述,但是未对具体算法进行梳理分析。鉴于此,有必要梳理近年来机器学习方法在裂纹识别领域的研究进展。
本文主要从以下几个方面进行阐述:首先,介绍机器学习和裂纹识别的背景知识;然后,从特征提取技术和分类器方面介绍传统机器学习方法在裂纹识别方面的应用,分析近年来机器学习在裂纹识别领域的发展趋势;其次,从数据集、应用对象和网络结构方面介绍深度学习方法在裂纹识别中的应用及其性能,并结合文献分析深度学习方法在裂纹识别领域的发展趋势;最后,分析不同机器学习方法的优缺点,并对全文进行总结,以及对未来的研究方向进行展望。本文旨在综述基于机器学习的裂纹识别算法的最新研究动态,确定机器学习在裂纹识别应用上的发展趋势,并对不同模型性能进行评估,从而为科研人员提供潜在的研究焦点、发展方向及其研究思路。
机器学习尚未发展之前,研究人员利用图像的像素特征和空间特征识别裂纹。李先冲[5]针对铝合金机械铰链中存在的裂纹,分析了图像灰度直方图,对图像进行线性拉伸和去除噪声,构建一阶微分算子模板在图像上移动,通过检测异常值来确定是否存在裂纹。Tolba等[6]提出一种基于多尺度结构相似性指数(MS-SSIM)的识别方法,该方法识别裂纹的成功率为99.1%。Yuan等[7]针对Otsu算法在表面裂纹识别中阈值选择效果不好的问题,提出一种加权目标方差的改进方法,该方法的检测率为94%,误报率为8.4%,准确率高于Otsu算法。这些识别方法不依赖任何先验知识,不需要任何数据的支撑,通过去噪、滤波、边缘检测、形态学等一系列图像处理中的基本操作,实现对裂纹图像的识别。
随着机器学习的发展,机器学习方法被广泛应用于图像识别。裂纹识别任务主要分为3类:裂纹分类、裂纹检测和裂纹分割。裂纹分类的任务是将图像分为裂纹图像和非裂纹图像;裂纹检测则是在裂纹周围产生包围框;裂纹分割是将图像中的像素分为裂纹和非裂纹。传统机器学习方法的任务一般是对裂纹进行分类识别。
传统的机器学习分类技术通过对图像的预处理得到图像的特征,之后通过分类器来完成图像的分类。特征的提取与分类器的选择将直接影响分类的准确性,可以选择颜色、纹理、形状等作为特征。应用比较广泛的分类器有支持向量机(Support Vector Machine,SVM)、K最近邻(K-Nearest Neighbor,KNN)、决策树、随机森林、神经网络等。
为评价算法性能优劣需要确定一套评价指标,对比预测图像和真实图像可以得到以下4个参数:
TP:准确预测裂纹图像;
FP:非裂纹图像预测为裂纹图像;
FN:裂纹图像预测为非裂纹图像;
TN:准确预测非裂纹图像。
根据以上4个参数可以得到下面几个评价指标[1]。
Accuracy:对整个样本空间中的样本分类准确的比例,
(1)
Precision:被认为准确的样本中,实际上有多少是正的,
(2)
Recall:原本为正的样本中,有多少被准确识别,
(3)
F1:衡量二分类模型精确度的一种指标,兼顾分类模型的精确率和召回率,
(4)
支持向量机是一种监督学习的分类器,已被广泛应用于裂纹分类过程[8-11]。SVM在计算上更容易训练,而且没有局部极小问题,具有良好的图像分类效果。但是,在处理大规模样本时,SVM难以训练,计算机会消耗大量的内存和运行时间。在特征选择上,Zhang等[12]以RGB波段值作为特征值,使用SVM作为分类器对地表裂纹进行分类,但RGB波段值只能描述裂纹的像素信息,容易受到噪声的干扰。Sindagi等[13]提出一种改进的局部二值方法,它通过提取裂纹的纹理特征来训练SVM分类器,在148 905个样本上进行裂纹检测,取得93%的准确率。针对SVM在样本有限的情况下识别效果不佳的问题,Dong等[14]提出一种半监督学习方法LapSVM,该方法将有监督的核方法和无监督的聚类方法相结合,既拥有SVM非线性处理能力,又能利用聚类解决数据量有限的问题,但是无监督的聚类方法的加入会增加算法的时间成本。
K最近邻算法是一种监督学习算法,常被应用于裂纹识别领域[15]。KNN算法通过不同特征之间的距离进行分类,即如果一个样本在特征空间中的K个最相似(特征空间中最邻近)样本大多数属于某一个类别,则该样本也属于这个类别。其中K值是分类的邻居数量,K值的大小会影响分类的效果,但K值在选择时只能依靠经验。K值较小时,不同类之间的边界比较清楚,但会出现分类噪声,K值较大时正好相反。特征的选择同样重要,不同的特征会对分类的准确率造成影响。Mandriota等[16]使用Gabor滤波器提取特征并利用KNN算法检查铁轨表面的裂纹,讨论K值大小对准确率的影响。López等[17,18]提取瓷砖碎块的RGB信息和质地作为特征,通过KNN算法实现分类,准确率达到90%以上。单一算法提取到的特征有时无法满足识别任务的要求,多种算法的混合可以很好地对特征进行提取。为从图像特征的角度捕获钢材表面的纹理属性,Wiltschi等[19]应用数学形态学、多通道Gabor滤波,通过线性比例空间中的自动比例选择进行纹理测量的计算。Latif-Amet等[20]使用小波变换和灰度共生矩阵的混合算法进行特征提取,通过参数距离分类图像取得不错的效果。这些算法通过不同的特征提取方法完成对裂纹的识别,但都只能通过实验法对K值进行选择,这也是KNN算法的局限。
决策树算法是一种逼近离散函数值的方法,其本质上是通过一系列规则对数据进行分类。作为一种典型的分类方法,决策树算法首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策树对数据进行分析。针对在裂纹特征提取中存在特征单一的问题,Kim等[21]使用一种基于空间自相关方法,提出广义不确定决策树模型,对不确定特征的芯片缺陷进行分类,该算法性能优于其他算法,但是仅能用于芯片缺陷,无法推广。Chang等[22]提取图像的几何特征和强度特征构造决策树,从而对木材表面裂纹进行分类,准确率达到94.1%,但是由于木材本身纹理的干扰,几何特征无法很好地描述裂纹特征。此外,Sumesh等[23]和钟映春[24]对焊缝裂纹使用决策树算法进行分类识别,获得了较高的正确率。
由于决策树容易陷入过拟合,有学者提出了一种基于决策树的随机森林算法,即用多棵决策树投票来改善决策树过拟合问题。随机森林算法具有训练速度快、泛化能力强和分类准确率高等优点,因而被广泛应用在裂纹识别领域[25,26]。Patel等[27]研究表明随机森林算法能对钢材表面裂纹进行有效检测,但是单一算法在提取裂纹特征和分类时效果较差,精度无法满足工业要求。Kwon等[28]使用图像方差的方差(Variance of Variance,VOV)结合随机森林算法实现了对表面裂纹的有效识别。Wang等[29]提出一种改进的最佳多特征融合(OMFF-RF)的混合算法并应用于钢材表面裂纹检测,结果显示相较于支持向量机和随机森林算法,混合算法的性能显著提高(表1),同时混合特征相较于单一特征表现出更高的准确率,但是会增加时间成本。针对样本量较少的裂纹,何嘉林[30]使用随机森林算法和贝叶斯结合的混合算法,实现了较高的识别率。因此,与单一算法相比,多种算法混合使用可以有效提升裂纹识别的检测效果。
表1 不同方法的性能比较[29]
人工神经网络也是常见的分类器之一[31,32],它是一种模仿人类神经元网络行为特征,进行分布式并行信息处理的算法数学模型。Guo等[33]将提取到的特征输入到神经网络中,实现铝合金裂纹的智能识别,但对噪声敏感度和识别精度均偏低。为提高裂纹图像的识别精度,姚楠等[34]对提取到的特征进行无量纲化处理,并使用人工神经网络建立图像识别模型,识别精度和速度均能满足工作要求。张颖等[35]利用BP神经网络对焊接冷裂纹进行识别,杨绍普等[36]使用概率神经网络判断桥梁的裂纹损伤位置,由于他们均只使用神经网络对裂纹进行识别,因而识别精度较差。邱忠超等[37]针对铁磁材料的微裂纹识别,采用主成分分析和神经网络结合的混合方法进行检测,取得较高的精度。谭卫雄等[38]使用人工蜂群(ABC)优化BP神经网络权值和阈值,提出一种道路裂纹检测的混合神经网络,结果如表2所示,改进的混合算法在准确率、精确率、召回率和F1分数上均优于普通BP神经网络和基本的ABC-BP算法。
表2 不同算法的结果对比[38]
针对在裂纹识别领域几种常用的机器学习方法,前文已从特征提取和分类器方面进行介绍,现对文献进行综合分析。以近20年为时间范围(2000-2020年),本文共搜索到31篇内容相关性较高的文献。基于不同分类器进行统计(图1),关于KNN、SVM、决策树、随机森林和神经网络等各种分类器研究的文献数量相差不多。但从时间进程上看(图2),对于KNN算法的研究主要集中在十年以前,近些年来对此研究越来越少;另外,涉及KNN算法的文献中,多数是使用KNN算法进行对比分析,而不是对KNN算法进行研究。其他分类器SVM、决策树、随机森林和神经网络,最近几年依旧是研究的热门。
图1 文献中所使用方法的占比
图2 不同方法每五年发表的论文数量
如图3所示,关于在裂纹识别领域的机器学习方法,十年之前的研究热点为单一算法。但近年来,单一算法已经无法满足对裂纹高精度识别的要求,混合算法的研究已逐渐占据主流地位。例如,针对特征选择和分类器优化,研究人员使用遗传算法、人工蜂群算法和最佳特征选择算法等多种算法进行研究,可以有效提升识别效果。
图3 单一算法和混合算法在文献中的比较
从特征提取方法来看,常用的特征提取方法有颜色直方图、共生矩阵、局部二值模式、自相关和空间滤波等,他们的优缺点见表3。当单一特征无法准确描述裂纹特征,就需要用多个特征进行描述以增加识别率,同时特征选择还应考虑不同的应用对象。
表3 常见的特征提取方法及其优缺点
图4展示了裂纹识别中不同的应用对象。目前针对金属裂纹研究最多,占比为65%,而金属裂纹中,钢铁材料的裂纹识别占比最多。
图4 裂纹识别中不同的应用对象
对于传统机器学习中的裂纹识别任务,在特征提取的方法上存在通用性,无论是图像的空间特征还是像素特征,都可以作为分类器的输入进行识别,最终识别效果依赖于分类器学习的结果。与其他算法相比,KNN算法通过特征空间内不同样本的距离进行分类,对简单特征可以进行有效的分类,但对较为复杂的特征效果较差。同样是通过特征之间的距离进行分类,SVM算法通过将样本特征映射到高维空间进行计算,在处理裂纹识别任务时的效果要优于KNN算法。不同于KNN算法和SVM算法,决策树算法通过对特征的归纳生成规则和决策树,再利用决策树对特征进行分类。随机森林算法通过构造多棵决策树进行分类,本质上同决策树算法一样,只是利用多棵决策树处理数据。神经网络有别于前面几种分类器,通过模仿人类神经元的工作方式进行分类,神经元之间的加权连接由激活函数相关联的输入值进行调整。人工神经网络中最常用的模型是BP神经网络,其通过反向传播和误差校正学习算法进行学习。
深度学习是机器学习的一个研究方向,可以解决传统机器学习方法无法解决的问题。前文主要综述了几种传统机器学习方法在裂纹识别方面的应用,其重点在于对特征的提取,但传统机器学习面对复杂对象时特征提取显得较为困难。与传统机器学习相比,深度学习可以通过学习获取特征,这种能力解决了裂纹识别中复杂特征提取困难的问题。深度学习需要大量数据的支持,人类通过不断地优化网络模型提升网络的学习能力,选择不同的卷积核和优化参数来配置执行特征学习、模型构建和模型训练,提升网络性能。
卷积神经网络(CNN)是一种前馈神经网络,是深度学习中最常用的网络,其根据仿生学原理模仿动物视觉组织,将图片作为网络输入并使用神经网络的分类结果作为输出,因此CNN具有自动学习特征的优点。CNN网络在训练时通过特征提取器提取特征代替人为提取,其特征提取器由神经网络组成,通过训练不断更新找到最优权重。图5展示了CNN的网络结构图,它由一个特征提取网络和一个图像分类网络组成,特征提取网络由卷积层和池化层组成。卷积层通过卷积对图像上的像素点进行运算,经过卷积层产生的新图像包含了原本图像的特征,被称为特征图。池化层可以缩小图像尺寸,减少数据量。
图5 CNN网络结构示意图
在训练和评估学习网络时,需要大量数据的支撑,而原始数据的获取是一个问题。对于大裂纹,可以通过拍摄直接获取;对于微裂纹,可以通过激光扫描的方法来获取原始图像[39-41]。随着传感器技术的进步,三维激光技术已经成为获取高分辨率、全覆盖三维数据的方法[42]。表4展示了几种常用的裂纹数据库。
表4 裂纹数据集
金属裂纹的识别一直备受人们关注[57]。针对轻量级裂纹识别,杨晶晶等[58]基于深度学习方法和Single Shot MultiBox Detector (SSD)模型提出一种裂纹自动检测算法。该算法通过扩充训练模型空间分辨率,极大地提高了检测效率,但是召回率较低。为寻找更适合裂纹识别的网络,刘建红[59]比较了各种深度学习方法,发现Faster_R-CNN-ResNet50-FPN相较于其他算法有较好的识别结果。范晨亮等[60]选取ResNeXt-101并添加金字塔网络对Region-based CNN (RCNN)网络进行改进,获得更高的精度,但是识别速率有待提升。Manjurul等[61]提出一种基于遗传算法与深度学习的方法,在遗传算法中引入类内距离与类间距离之比的适应度函数和多通道异质特征模型,作为选择判别特征集,然后结合Deep Neural Network (DNN)对裂纹进行分类并取得了很好的效果。
在自然环境中,由于风吹日晒,混凝土建筑极易开裂,对这些裂纹进行及时检测可以减少事故的发生[62-64]。Cha等[65]提出一种Deep Convolutional Neural Networks (DCNN)结构用于识别混凝土裂纹,使用滑动窗口对图像patch进行裁剪并作为分类器的输入,实验表明该方法优于传统的边缘检测方法。Zhang等[66]提出一种基于DCNN的裂纹自动检测方法,经过训练的网络能够判断输入的图像patch是否含有裂纹,而且该方法比传统机器学习方法具有更高的分类精度。Islam等[67]提出了一种由全卷积神经网络(FCN)和用于语义分割的编码器和解码器框架组成的网络执行像素级分类,实验验证该方法对混凝土裂纹识别非常有效。Dung等[68]针对混凝土裂纹图像的语义分割,提出一种基于全卷积网络(FCN)的裂纹识别方法;在40 000幅227 × 227像素的混凝土裂纹图像上,对FCN编码器作为主干的3种预训练网络架构的性能进行评估,平均精度达到90%。Feng等[69]提出一种利用深度卷积网络检测大坝表面裂纹的方法(CDDS),使用裂纹数据集对CDDS网络进行训练、验证和测试;将预测结果与基于ResNet152、FCN、UNet和SegNet模型的结果进行比较,结果显示CDDS网络对坝面裂纹识别具有较好的性能,具体如表5所示。
表5 不同网络对混凝土结构识别的性能对比[69]
掌握道路裂纹情况可为道路养护工作提供数据支持[70-74]。为将裂纹和背景进行区分,Li等[75]提出一种基于U-Net和交替更新团的卷积神经网络的深度学习方法,对隧道图像中裂纹与背景进行分离,虽然该方法在测试集中表现不错,但是在实践中效果并不好。Zhang等[76]提出一种基于迁移学习的路面裂纹识别方法,可区分裂纹与背景,即对预先训练好的AlexNet中的kernel的权重和偏置进行转移,将图像patch分类为裂纹、封闭裂纹和背景区域。Liu等[77]为精确提取路面裂纹,提出一种基于卷积神经网络的两步检测方法,在提取到路面裂纹后使用改进U-Net网络对裂纹进一步分割,裂纹识别和分割准确率均达到90%以上。表6列举了几种有关道路裂纹的检测模型,使用不同数据对这些检测模型进行评估,评估中使用3种不同的评价指标:数据集上固定阈值的最佳f测度(ODS)、数据集上每个图像最佳阈值的聚集f测度(OIS)和平均精度(AP),其值越大代表性能越好。评估结果如表7所示,基于深度网络裂纹识别网络DeepCrack的效果优于其他网络,表明更深的网络可以更好地提取裂纹的深度特征。
表6 道路裂纹检测模型
表7 不同方法在不同数据集上的性能对比
除此之外,许多学者使用深度学习方法对裂纹识别的其他问题进行研究[86-90]。Alipour等[91]利用深度全卷积模型(CrackPix)进行裂纹检测,将网络的全连接层转换成卷积滤波器,从而实现像素级识别。Ren等[92]提出一种改进的深度全卷积神经网络,称为CrackSegNet,用于像素级裂纹分割:网络由主干网络、扩展卷积、空间金字塔池和跳过连接模块组成,这些模块可用于高效的多尺度特征提取、聚集和分辨率重建,并极大地增强网络的整体裂纹分割能力。Wang等[93]针对训练CNN网络样本过少的问题,使用一种两阶段的数据增强方法构造了一个裂纹检测器,取得了96%召回率。Xu等[94]提出一种基于卷积神经网络的裂纹识别模型,该模型利用传统卷积、Atrous空间金字塔池(ASPP)模型和深度可分卷积的优点,在没有预训练的情况下实现了96.37%的检测精度。王森等[95]针对裂纹识别实验中FCN模型存在丢失局部信息和丧失部分精细化区分能力的问题,构建了Crack FCN网络模型,该模型在提高检测精度的同时可以有效地降低错误标记。
前述从网络结构、数据集、应用对象等方面分析了深度学习在裂纹识别领域的应用,本节对相关文献进行综合分析。如图6所示,近20年来在裂纹识别领域的相关文献共81篇,其中机器学习31篇,深度学习50篇。随着深度学习的发展,其在裂纹识别方面逐渐占据主流地位,尤其是最近五年,越来越多的人倾向使用深度学习方法进行裂纹识别的研究。
图6 不同时段有关深度学习和机器学习的文献数量对比
如图7所示,基于深度学习的裂纹识别大都集中在道路、混凝土建筑和金属上,他们的文献数量占比分别为55%、26%和15%。深度学习需要大量数据的支撑,目前公开的建筑裂纹数据集多为道路裂纹和混凝土结构裂纹,而路面裂纹数据集较少,因其属于常见的裂纹,数据采集比较容易。
图7 深度学习应用对象
基于网络选择角度,裂纹识别使用了深度学习中常见的网络,包括RCNN、DCNN、VGG、AlexNet和U-Net等。在本文综述的50篇深度学习文献中,使用单一网络、混合网络分别有21篇和29篇,可见目前深度学习网络的研究以混合网络为主。相比于单一网络,混合网络在裂纹识别上的效果更加出众。在深度学习中引入遗传算法、金字塔网络等,或者将两种或多种深度学习网络进行融合,能有效提高网络的识别精度。
在传统机器学习方法中,需要人为地对裂纹图像进行特征提取,特征的选择需要人为把握。但是,深度学习方法在神经网络中引入卷积操作,通过大小不同的卷积核学习图像特征,使自动学习裂纹图像特征成为现实,省去人为选择特征步骤,而且往往比人为选择的特征更加准确。深度学习方法中有众多网络,广泛应用于裂纹识别领域的有RCNN、DCNN、VGG、AlexNet和U-Net等。这些网络在本质上都是通过不断地卷积学习裂纹特征,以便用于最后的分类,但他们的网络深度和结构有差异。DCNN网络学习深度最高,能更加准确地识别裂纹特征,因此其应用范围也最广。
本文分别介绍了支持向量机、KNN、随机森林、决策树和人工神经网络等多种机器学习方法,以及深度学习在裂纹识别的研究。由于机器学习方法的发展,近年来对KNN算法的研究越来越少,但KNN算法简单易操作,精度依赖于对K值的选择,因此研究自适应K值选择方法依旧有意义。支持向量机作为一种常见的分类器被广泛应用,可以很好地应对学习过程中过拟合问题和线性不可分的问题。决策树算法简单易懂,且不受数据缩放的影响,但是存在过拟合和泛化性能差的问题。随机森林是由大量随机初始化决策树组成的分类器,可以判断特征的重要程度及不同特征之间的相互影响,还具有不易过拟合、训练速度快等优点,缺点是在某些噪音较大的分类或回归问题上存在过拟合。与其他分类器相比,神经网络的分类准确度有很大的优势,但其对数据和算力的依赖性极大,而且训练过程如同“黑匣子”,这意味着难以知晓如何产出结果及其原因。
基于本文的回顾,我们认为未来的研究方向有以下5点:
①传统的机器学习方法依赖于特征的选取,其研究主要集中在如何获得更准确的特征进行分类。未来可以针对某类的裂纹识别,比如金属裂纹、道路裂纹等,建立统一特征提取模型和评估模型,为人工选择裂纹特征提供参考。
②深度学习不需要人为选取特征,它会通过输入的数据学习图像特征。因此,构建优秀的学习模型,提高神经网络的训练效率和收敛能力一直是研究的重要内容。深度学习会消耗大量的计算资源,如何在减少资源消耗的同时,获得良好的性能是一个需要解决的问题。
③无论是机器学习还是深度学习,两者都依赖大量数据的支持,裂纹图像的获取相较于其他图像更加困难。减少网络对数据的依赖性或者对数据进行增广也是一个研究方向,目前基于对抗神经网络的数据增广技术正在被研究[96],未来可以应用于裂纹图像。
④无论是机器学习还是深度学习,单一算法/网络难以满足裂纹识别任务的要求,越来越多的人使用混合算法/网络,混合方法将是以后发展的方向。
⑤由于深度学习的发展,人们越来越热衷于使用深度学习方法进行研究,传统机器学习方法面临巨大的挑战。深度学习方法有诸多优势,而传统算法也有着不可忽视的作用,传统算法与深度学习方法相互结合才是未来的发展趋势。