吴福培,谢晓扬,黄耿楠,吴 涛,李昇平
(1.汕头大学 工学院,广东 汕头 515063;2.广州特种机电设备检测研究院,广东 广州 510180)
铁路钢轨与列车接触并长期遭受列车的摩擦和冲击,易产生各种表面和内部伤损,极可能对列车的安全运行带来隐患[1-3]。当前常用的无损检测方法主要包括视觉检测、超声波检测和漏磁检测等[4]。超声波检测因具有穿透力强、指向性好和灵敏度高等特点已被广泛用于钢轨内部伤损检测[5]。
当前钢轨伤损检测方法分为两类:一类是利用高速摄像机获取钢轨表面图像,并采用纹理和灰度等方法检测钢轨表面伤损[6-7]。基于此类方法,闵永智等[8]设计了钢轨表面缺陷检测装置和提出了基于图像灰度梯度特征的钢轨表面缺陷检测方法,可检测不同环境的钢轨疤痕和裂纹伤损,但其缺陷漏检率和误检率分别为5.79%和6.84%。彭方进[9]提出一种高鲁棒性的钢轨表面缺陷检测算法,对不同拍摄条件下检测钢轨表面缺陷的准确率不低于93%,且具有较高的鲁棒性。此外,通过考虑钢轨的特定特征,文献[10]设计了一种面向背景的缺陷检测器以检测钢轨表面缺陷。试验结果表明,该方法具有客观的检测能力,且可避免外部因素对检测结果的干扰。尽管上述方法可取得较好的伤损检测效果,但总体上仍存在准确率较低和泛化能力较差等问题。另一类是利用超声波探伤仪采集的B型图像检测钢轨内部伤损。该方面研究的文献相对较少,其研究成果主要体现在一些单位开发的钢轨探伤系统中。如SPERRY公司的探伤车可对各种类型的钢轨缺陷进行检测和分类[11]。美国铁路协会的超声波探伤系统可检测整个钢轨部分,包括轨头、腹板和底座[12]。基于对B型图像中各伤损特征的研究,本文课题组提出一种伤损检测及其参数学习方法[13]。该方法的检测准确率高于97%,检测效果良好。此外,为进一步提高钢轨内部伤损的智能化检测,本文课题组曾提出一种基于伤损特征分析的钢轨伤损智能识别与分类方法[14]。该方法的检测准确率高于97%,平均检测时间为0.2 s/帧,可用于实时检测。尽管该类方法具有高效率和高自动化的特点,但仍存在鲁棒性差和受限于特定伤损特征等问题。
综上所述,准确率较低、泛化能力不足、鲁棒性不高和受限于特定伤损特征是当前钢轨伤损检测方法面临的主要问题。随着深度学习在目标检测和分类领域的快速发展,上述问题有望得以解决。目前已有基于深度学习的表面缺陷检测方法成功应用于工业场景中[15]。黄凤荣等[16]为提高发动机零件表面缺陷的检测准确率和效率,提出一种基于聚类算法生成Anchors的Faster R-CNN表面缺陷检测方法,可准确有效地检测零件的表面缺陷,满足智能制造的生产需求。为检测钢轨表面裂缝,文献[17]设计了一种基于深度迁移学习的检测算法,可有效降低图像噪声对检测结果的影响,召回率高,且可检测大、小尺寸的裂纹。Yang等[18]提出一种基于深度学习的铁路检测方法,其精确率和召回率分别可达70%和80%以上,可实现钢轨接头或缺陷的良好检测。此外,文献[19]提出一种基于贝叶斯CNN和注意力网络的钢轨表面缺陷检测算法,旨在复杂多样的钢轨场景下提高缺陷的检测精度和速度。试验结果表明,该算法的分割精度可达91.46%,运行时间为0.18 s/帧。
从上述分析可知,深度学习算法可自动获取图像中丰富的特征信息,具有检测准确率高、鲁棒性强和泛化能力好等优点,可有效检测钢轨伤损。因此,为准确地检测钢轨内部伤损,提出一种基于Anchors设计和模型迁移的钢轨内部伤损检测方法。首先,采用图像数据增强技术扩充现有的伤损图像数据集,避免所提模型发生过拟合。其次,采用K-means聚类算法设计新的Anchors多维度约束,提高伤损的检测精度。最后,在基于改进Faster R-CNN模型的迁移学习方法和扩充的样本数据集的基础上,训练并检验所提的钢轨伤损检测模型。
超声波钢轨探伤仪检测钢轨内部伤损时,其探头向钢轨内部发射一定频率的声波。声波在钢轨内部传播以检测内部伤损。当遇到不同阻抗的伤损时,声波会产生一次反射和二次反射[20]。然后,通过分析反射波的大小、数量和波形,可对各类钢轨伤损进行成像和显示[21],成像后的图像即为B型图像,见图1。
图1 钢轨内部伤损的B型图像
B型图像显示了伤损在钢轨内部的水平和深度信息。在使用探伤仪检测伤损时,不同角度的探头检测不同位置的伤损,并采用不同的颜色进行区分。此外,受检测位置和环境等因素的影响,检测过程产生的杂波也在B型图像中显示。
结合超声波成像方式、伤损位置、伤损特征和传统的钢轨伤损分类方法[22],将钢轨内部伤损归类为11种,见表1。
表1 钢轨内部伤损分类
图2为各种类型伤损的集合。图2中标识的伤损序号与表1对应,其中,黑色椭圆内的图像为各种类型杂波,黄色三角形内的图像为接头。由图2可知,轨头核伤的成像长短不一,且单独或成对出现。螺孔下裂图像位于正常螺孔图像下方。轨底横裂图像的粗细程度和长度均有差异,但以成对形式实现超声波成像。
图2 钢轨内部伤损集合
检测时,此类伤损图像主要存在以下检测难点:受钢轨表面平滑度和探伤车灵敏度等因素的影响,B型图像的噪声无明显规律,对伤损的检测带来干扰;在B型图像中,不同类型伤损分布在不同区域,易对B型图像的数据增强引入不确定因素,如使用旋转方式对B型图像进行数据增强时,检测效果可能适得其反;B型图像中伤损标注误差大。B型图像中,通常需要结合多个通道的图像来判断伤损的类别。然而,各个通道的图像形状并不固定,人工标注边界框时会产生比普通图像更大的标注误差。在深度学习的边界框回归阶段可能会发生边界框定位偏离的现象。为此,拟通过提出基于Anchors设计和改进Faster R-CNN模型的迁移学习伤损检测方法,解决B型图像中存在的噪声干扰、伤损分类困难和定位误差大的问题,提高伤损检测精度。
综合上述分析可知,钢轨内部伤损种类多、颜色组成和位置特征差异大。此外,伤损所在的区域仅为整幅图像极小的一部分。若采用经典Faster R-CNN架构检测钢轨伤损,可能存在以下问题:现有的Anchors约束针对原检测目标设置,无法满足和应用于复杂多样的钢轨内部伤损检测;仅使用最后一层特征图检测伤损,无法有效提取钢轨伤损的特征信息。由于最后一层特征图分辨率小且对应原图的视场范围较大,易丢失关键的细节信息,不利于检测钢轨伤损(小目标)。
针对上述问题,提出一种基于Anchors设计的改进Faster R-CNN架构,见图3,以检测钢轨内部伤损。该架构采用ResNet-50[23]为特征提取网络,并设计新的Anchors约束以检测钢轨伤损。首先,将钢轨内部伤损图像输入ResNet-50网络,结合特征金字塔结构提取不同大小的特征图并进行融合处理。其次,采用K-means聚类算法设计与钢轨内部伤损相关的Anchors多维度约束。然后,通过RPN(Region Proposal Network)网络得出候选区域,并将不同大小的特征图和候选区域输入到RoI (Region of Interest) Align中进行区域校准池化。最后,将得到的特征图送入两个全连接层进行分类和边框回归。
图3 基于Anchors设计的改进Faster R-CNN架构
现有的Anchors无法直接用于当前的钢轨内部伤损数据集,因此,需对Anchors进行重新设计,以适应检测目标的实时变化。由于人工设计Anchors需要进行大量的统计试验并进行验证,且设计不合理易对检测结果造成较大的标注误差。为解决上述问题,拟采用K-means聚类算法设计适用于检测钢轨内部伤损的Anchors多维度约束。
首先,以交并比为距离度量对数据集中各类型伤损进行聚类。然后,根据聚类结果重新设计Anchors,以更好地检测钢轨伤损。度量该距离为
D(x,y)=1-IOU(x,y)
(1)
当使用式(1)作为度量时,标注框与聚类中心越接近,交并比IOU越大,此时距离度量D(x,y)越小,越容易被归为一类,聚类结果越准确。
结合钢轨伤损特点和所提改进Faster R-CNN模型的结构特征,并通过试验测试结果分析,可得聚类中心为5。经过10次聚类分析,对聚类后的Anchors面积进行向上取整后可得图4。同时,对聚类后的Anchors宽高比进行统计和分析后可得图5。在此基础上,设计Anchors的面积取值分别为82、102、152、172和232,且每种面积的Anchor具有0.5∶1、1.8∶1、2.5∶1三种不同的宽高比。
图5 Anchors宽高比统计
由于ResNet-50特征提取网络在训练时需要大量的样本图像才能学习到合适的参数权重,而研究中钢轨内部伤损图像通常有限,在训练网络时参数权重容易过拟合,导致模型训练不理想。为此,论文拟采用基于改进Faster R-CNN模型的迁移学习方法实现小样本下钢轨内部伤损检测。与经典Faster R-CNN相比,改进Faster R-CNN模型重新设计了新的Anchors约束和分类器,结合了ResNet-50特征提取网络和特征金字塔,并采用ROI Align操作以最终实现钢轨伤损检测。
图6为基于改进Faster R-CNN模型的迁移学习方法示意。首先,在样本数据充足的源域上进行预训练,可得模型A的网络参数权重。然后,将该参数权重迁移至模型B中。最后,利用数据量有限的目标域对模型B进行训练。
基于上述分析,提出基于改进Faster R-CNN模型的迁移学习方法,见图7。首先,采用COCO数据集对模型进行训练,得到模型的预训练参数权重。其次,保留模型特征提取层的参数权重。然后,根据钢轨内部伤损的特点设计新的Anchors多维度约束和分类器。最后,在扩充的伤损图像数据集上继续进行训练,得到钢轨内部伤损检测模型。
图7 基于改进Faster R-CNN模型的迁移学习方法
2.3.1 损失函数
训练过程中,为使所提模型正确预测伤损类别和位置,使用多任务损失函数对模型进行训练,其表达式为
(2)
Lcls(pi,si)=-ln[pisi+(1-si)(1-pi)]
(3)
Lreg(ti,yi)=smoothL1(ti-yi)
(4)
(5)
式中:L({pi},{ti})为RPN的损失函数,用于衡量模型所作出的预测值与真实值之间的偏离程度;Lcls为分类损失,用于衡量模型所作出的类别预测与真实类别之间的偏离程度;Lreg为回归损失,用于衡量模型预测值与真实值之间距离的偏离程度;i为Anchors索引;pi为第i个Anchors 被预测为真实标签的概率;si为0或1,当Anchors为正样本时,si取1;当Anchors为负样本时,si取0;ti为预测第i个Anchor的边界框回归参数;yi为第i个Anchor对应的真实标注框的边界框回归参数;Ncls为一个mini-batch中的样本数量,其值为256;Nreg为Anchors位置的个数;λ为分类和回归的平衡参数。
2.3.2 评价指标
采用F1-Measure (F1)、召回率和精确率三个指标,以准确和全面地评价所提模型的伤损检测能力,其表达式为
(6)
(7)
(8)
式中:P为精确率;R为召回率;F1为P和R的调和平均值,F1值可验证模型对测试集中每个标签的分类效果,并进一步考虑分类结果中的假阳性和假阴性错误;TP(正阳性)为正确识别为伤损的数量;FP(假阳性)为被误识别为伤损的数量;FN(假阴性)为漏识别的伤损数量。
采用的硬件环境主要为:Intel i7-10700K八核处理器,GeForce RTX 2080Ti显卡。软件环境主要为:基于64位的Windows10操作系统,基于CUDA10.1和PyCharm的集成开发环境,基于PyTorch1.6的深度学习框架,运行环境为PyThon 3.7。
反复调试参数后,得到最终的超参数设置为:优化器采用随机梯度下降法(Stochastic Gradient Descent,SGD),优化器的初始学习率设置为0.005,动量为0.9,权值衰减为0.000 5。批量大小设置为4,Epoch设置为30。每次训练3个Epochs后,学习率将进行衰减,衰减因子为0.33。
在上述试验环境和超参数设置的基础上,建立钢轨内部伤损数据库。首先,通过数据增强技术使数据库图像扩充至1 500张(图像分辨率均为1 000×400),且每张图像至少含有一种类型的伤损。需要特别说明的是,本试验所用原始图像均基于课题组与合作单位共同研制的钢轨探伤仪于高速轨道现场和合作单位的试验线上采集。其次,将该数据库按照6∶2∶2的比例分别划分为训练集、验证集和测试集。然后,利用标注工具按PASCAL VOC数据集的标注格式对训练集和验证集图像进行标注,生成XML类型的标注文件。最后,将已标注的数据集按图7所示流程进行训练。
图8为训练时的总损失和学习率变化情况。由图8可知,训练共进行了30个Epochs。训练过程中,所提模型的网络总损失函数在第15个Epoch之前呈现下降趋势,15个Epochs之后基本趋于稳定,模型达到收敛。与此同时,模型学习率基本趋于0。
图8 总损失函数和学习率变化情况
利用已训练好的模型对测试集的伤损图像进行检测,以检验模型的性能。检测结果见图9。由图9可知,对于不同类型的钢轨伤损,模型均能达到良好的检测效果,可准确地识别出伤损的大小和位置,并具有较高的类别预测能力。进一步地,统计测试集中各类型伤损的检测结果和分析相关的评价指标,见表2和表3。
表2 各类型伤损的检测结果统计 个
表3 各类型伤损的评价指标分析 %
图9 所提模型的伤损检测结果
从表2可知,测试集中共含有2 660个伤损,其中,所提模型能正确检测出2 624个伤损,误将40个非伤损目标识别为伤损,未检测出36个伤损。基于上述分析,模型整体的平均预测概率可达97%,精确率、召回率和F1均达到99%。另一方面,在检测单一类型伤损时,精确率最低为97%,最高可达100%;召回率最低为94%,最高可达100%;F1最低为97%,最高可达100%,表明所提模型可有效检测钢轨内部各类型伤损,并为钢轨内部的伤损检测提供借鉴意义。
然而,所提模型仍存在不足之处。如检测个别伤损时,将非伤损目标误识别为伤损的次数较多(如表2中的Li和Hs等),其原因可能是非伤损目标在形状、位置和颜色等特征上与某类型伤损非常接近,导致在较高的概率上被识别为目标伤损。另一方面,所提模型仍存在伤损漏检问题,其原因可能是训练样本中相关类型伤损的数量不足,导致模型的泛化能力略差,未能识别所有伤损。
与本课题组前期研究所提的伤损检测方法比较,可得表4和表5。表4中,文献[13]和文献[14]所提方法检测的伤损类型较少,而本文所提方法可检测钢轨中常见的11种类型伤损。从表5可知,在检测更多类型伤损的基础上,本文方法的精确率和召回率均可达到99%,具备更好的伤损检测性能。
表4 不同方法的数据分析 个
表5 不同方法的性能对比 %
进一步地,将本文所提方法与文献[24]中的方法进行对比分析。文献[24]中的伤损类型与本文相比略有不同。因此,分析后可将伤损归纳为轨头核伤、螺孔裂纹和轨底裂纹三种类型进行对比,其结果见表6,其中,识别准确率Ts和误报率Fs的表达式为
表6 本文方法与文献[24]所提方法的对比 %
(9)
(10)
式中:N为伤损总数。
从表6可知,在同类型伤损中,文献[24]所提方法的识别准确率低于本文所提方法。本文方法在识别准确率方面优势明显。同时,本文所提方法的误报率低于文献[24]所提方法,伤损检测性能更优。
试验结果与文献对比分析表明,本文所提方法具有较高的精确率、召回率和F1,可有效检测钢轨内部伤损。同时,该方法的识别准确率高,误报率低,伤损检测性能更优。
为准确检测钢轨内部伤损,提出一种基于Anchors设计和模型迁移的伤损检测方法,得出以下主要结论:
(1)ResNet-50特征提取网络可从B型图像中提取丰富的特征信息,并能准确检测现有的钢轨内部伤损。
(2)采用K-means聚类算法设计Anchors的多维度约束,可有效解决经典Faster R-CNN对钢轨内部伤损定位不准确的问题。
(3)引入基于改进Faster R-CNN模型的迁移学习方法,旨在解决训练样本少和模型训练时间较长等问题。试验结果表明,以小样本数据集训练时,所提方法可在较短时间内达到收敛,且具有良好的伤损检测性能。
(4)试验结果表明,所提方法在测试集上获得的精确率、召回率和F1均可达99%,检验了该方法的有效性。同时,在检测单一类型伤损时,该方法的精确率、召回率和F1最高可达100%,具有较高的伤损检测性能。此外,所提方法的识别准确率高,误报率低,可为钢轨内部伤损的智能化检测提供借鉴。
本文所提方法仍存在伤损漏检问题,主要原因在于小样本下模型所学习到的伤损特征未能满足所有伤损的检测要求,导致其在工程应用方面仍有不足。如何避免伤损漏检和进一步提高所提方法的伤损检测性能,是后续的研究方向。