APP下载

基于改进YOLO V3的钢轨伤损B显图像识别研究

2022-02-01陈正兴王启航王晓明余天乐

铁道学报 2022年12期
关键词:伤损钢轨像素

何 庆,陈正兴,王启航,王晓明,王 平,余天乐

(1.西南交通大学 土木工程学院,四川 成都 610031;2.西南交通大学 高速铁路线路工程教育部重点实验室,四川 成都 610031;3.上海市东方海事工程技术有限公司,上海 200011)

目前钢轨探伤设备在国内普速铁路和高速铁路都得到了广泛应用。由于受探伤设备自身设置不合理、探伤灵敏度不足以及伤损数据分析方法单一、数据处理智能化程度不高等内外部因素影响,钢轨探伤设备陆续产生伤损漏报、误报问题[1-3]。同时,由于过去针对上述问题主要依靠改进探伤设备的探头、邀请专家系统培养工作人员、工作人员自学等方法,因此伤损识别主观性较强,无法得到推广。因此,通过机器学习的方法对伤损回波数据进行智能分析是提高伤损识别率的有效方法。

目前各国对于钢轨伤损的评判不再局限于伤损存在与否,还要对钢轨伤损检测数据进行评价,包括对钢轨的失效原因、安全可靠性、物理和力学性能的综合性检测及其评价[4]。虽然我国在超声检测领域的数字化、智能化研究也有很大程度的发展,但是伤损的检测判定、钢轨失效的原因分析依然需要依靠经验丰富的专家,智能化程度远不及工业发达国家;并且由于超声回波数据分析方法较为单一,我国在超声波探伤领域一度陷入僵局[5-6]。为提高钢轨伤损的识别率,降低误报、漏报率,目前的方法主要是人工提取分类特征,再设计分类器对钢轨伤损进行分类。目前,钢轨缺陷的检测方法主要有超声波[7]、声发射[8]、振动加速度[9]、图像处理[10]等。不同检测方法的特征提取方法也不尽相同,一般可以通过一些统计或信号处理方法来获得特征,包括小波包变换(WPT)[11]、核主成分分析(KPCA)[12]、自适应线增强器[13]等。现有的利用机器学习方法进行钢轨伤损检测的研究方法包括支持向量机[14]、感知机[15]、贝叶斯模型[16]、半监督模型[17]、最大熵法[18]等。以上方法大多通过人工处理分类特征的方式对钢轨伤损进行分类识别,这些方法中钢轨伤损判别效果依赖工作人员选取特征的准确性,对于经验不足或认识不够的伤损类型会有所遗漏。另一方面,由于伤损的尺寸较小,可提取的特征较少,同样会造成钢轨探伤的误报、漏报率高等问题。

本文的钢轨伤损B显图像数据集由双轨式钢轨超声波探伤仪采集。近年来,大数据分析技术已经广泛应用于轨道交通领域[19]。相关研究表明铁路现场最常出现的伤损类型主要包括核伤、轨底伤损、表面伤损(包含擦伤、鱼鳞纹、剥离掉块)、异常螺孔等[20]。基于此,本文选择上述四类伤损情况,结合断面、接头、螺孔、焊缝四类正常但在B显图像上出波情况,通过改进YOLO V3模型,将上述各类正常、异常出波点作为训练和检测目标,为钢轨超声波探伤设备提供快速高效的伤损智能检测功能。

1 改进的YOLO V3模型

在B显图像中各类伤损(包括核伤、轨底伤损)的尺寸较小,一般只有少于3个反射点。传统的YOLO V3模型很容易漏检这种尺度较小的对象。因此,如何扩展YOLO V3模型的感受野(特征图上的一点对应的输入图像的区域)从而确保较高的检测召回率是本文改进YOLO V3模型时关注的重点,主要包括四种方法:提升输入图像分辨率、增加极小尺度检测层、增加SPP模块以及增加SE模块。

1.1 提升输入图像分辨率

YOLO V3模型通过多个卷积层来不断修改输入层的大小和通道,从而获取被检测对象的更高层次信息。为了提升检测精度,本文将输入图片尺寸由416像素×416像素提升到608像素×608像素。

1.2 增加极小尺度检测层

为了提升小目标的检测精度,YOLO V3模型引进了特征金字塔的概念并且使用三种不同大小的特征图进行多尺度预测。以本文的输入分辨率为例,第一个尺度将输入图片划分为19×19的网格,每个网格的尺寸为32像素×32像素。第二个尺度以第一个尺度为基础进行2倍采样,输入图片划分为38×38的网格,每个网格的尺寸为16像素×16像素。同样地,第三尺度以第二尺度为基础再进行2倍采样,输入图片划分为76×76的网格,每个网格的尺寸为8像素×8像素。然而,由于各类伤损的尺寸非常小,即使是第三尺度检测层也难以很好地检测到非常小的伤损。因此,为了获取更为细小的信息,我们继续对第三尺度进行2倍采样,将输入图片划分为152×152的网格,最终得到第四尺度的极小尺度检测层,网络结构如图1所示。

图1 改进的YOLO V3网络结构

1.3 增加SPP模块

SPP模块全称为空间金字塔池化模块,是由文献[21]提出的,其优点在于不论输入图像的尺寸是多少,都能产生固定尺寸的输出图片。试验表明输入图像尺寸多样比图像单一尺寸更容易使网络收敛,但是全连接层在处理不同尺度图像时会导致精度下降。因此,可以通过数据增强方式任意改变输入图像的尺寸和纵横比,之后通过SPP模块输出固定尺寸的特征图到YOLO检测层,从而提高图像的尺度不变性并降低过拟合。SPP模块的另一个特点在于其相较于原网络的设计和结构是独立的,因此可以用在网络层之后而对原网络结构没有影响。为保证输入YOLO检测层的特征图尺寸固定,本文在每个YOLO检测层前都加入了SPP模块,如图1所示。

1.4 增加SE模块

SE模块属于注意力机制模块[22],是Squeeze-and-Excitation模块的简称,该模块学习了特征图通道之间的相关性,筛选出针对通道的注意力权重,从而使网络更加关注存在检测对象的通道。模块分为两个部分:第一个部分为压缩(Squeeze),即对特征图进行全局平均池化,得到通道数与原特征图一致的一维张量,该张量可以理解为全局感受野;第二个部分为激活(Excitation),即对压缩后的一维张量采用激活函数进行非线性变换。最后将激活后的一维张量作为权重与输入特征图相乘。本文在第一个SPP模块之后加入了SE模块(图1)进而提升了网络检测性能。

2 数据集分析与预处理

2.1 B显数据介绍

本文的钢轨伤损B显图像数据集由双轨式钢轨超声波探伤仪采集。数据来源多样,主要有朔黄线、怀化工务段、开远工务段、广州地铁、武汉地铁等,采集的B显图像皆来自现场实际伤损。数据集类型主要包括:核伤、轨底伤损、表面伤损、异常螺孔四类异常数据集和断面、接头、螺孔、焊缝四类正常数据集。

本文所用的双轨式探伤仪在每侧钢轨处设置有1个超声波探轮,每个超声波探轮有9个超声波探头,共18个超声波通道。每个超声波通道输出一个B显数据组,每个通道的名称由“左轮/右轮+前/后/纵+内/外/直+角度”组成。各通道在B显图像中的出波示意如图2所示。图2中虚线分割开来的区域分别用70°探头检测轨头外侧、轨头中间、轨头内侧,用0°和37°探头检测轨头、轨腰、轨底,最终每张B显图片可以看作由18个通道的出波叠加而成。

图2 各通道在B显图像中的出波示意

2.2 数据增强

本文关注的重点是小尺寸的伤损检测。数据集中检测对象目标框的面积分布如图3所示。从图3可以看出,大多数目标框的面积聚集在500~2 000像素,而小目标大多聚集在面积为100像素处。因此小目标所能提取的特征非常少,不利于检测。各类B显检测对象数量占比见表1。由表1可以看出,核伤、轨底伤损两类小目标伤损的占比较小,因此数据集中数据不平衡的问题较为突出,而这会进一步导致YOLO V3模型更加关注中、大目标的检测,而忽略了小目标。

图3 B显数据集检测对象尺寸直方图

表1 各类B显检测对象数量占比 %

基于以上原因,为了解决本文出现的数据不平衡问题,提升小尺寸目标的占比,采用在图片指定区域内的任意位置粘贴小目标的数据增强方法[23]。其具体实现思路是:先将每一类中所有的小目标根据其边界框的中心点坐标和尺寸抠出来保存在文件夹中备用;然后随机选取n个小目标进行缩放(范围在0.9~1.1),在图像上对应区域粘贴小目标,要求两两之间不能重合(即两两之间计算的IoU必须为0)并且粘贴位置不能超出图片。需要注意的是,本数据集中各类小目标有特定的出现区域,核伤只会出现在B显图像中的轨头区域,轨底伤损只会出现在轨底区域,因此还需限制两类小目标伤损的出现区域。以核伤为例,图4展示了随机粘贴3个小目标后的效果,除上方红框内的核伤外,其他3个蓝框内的核伤是经过随机粘贴生成的。本文将经上述处理后的图片添加到训练集中与原始数据一起训练,从而达到提升检测精度的目的。

图4 数据增强后的B显图片

2.3 杂波滤除

与普通图像数据一样,B显图像数据也存在很多杂波噪声干扰,而检测中的噪声主要由探伤时探轮调整不良、通道灵敏度在不同轨面状态时修正不及时、钢轨材质噪声不同等因素造成,没有规律可循。杂波滤除前后对比见图5。由图5(a)可以看到,B显图像中存在一些少于3个反射点的小回波点(黄色框标出)以及与超声波传感器检测角度及通道颜色不符的连续长条波形(红色框标出),这些杂波会对检测过程造成一定的干扰。因此本文采用8邻域降噪法将上述的杂波滤除。

8邻域指的是中心点周围的8个像素点,如果这8个点中像素值大于0的个数小于某个阈值k就判断这个点处为杂波点。经过试验,本文将阈值k设定为3。降噪后的图像如图5(b)所示,可以看到原图像中过小的杂波点和连续的白色长条波形皆被滤除。

图5 杂波滤除前后对比

2.4 B显数据集边界框聚类分析

YOLO V3开始引入Faster R-CNN中锚框(Anchor Boxes)的概念。初始锚框是一组具有固定高度和宽度的先验框,而先验框的选择将会直接影响检测的精度和速度。与Faster R-CNN的手动选择锚框不同,YOLO V3通过在数据集标签上运行K-means聚类算法自动找到合适尺寸的锚框。通过K-means生成的聚类可以反映数据集中样本的分布,使YOLO网络能够更容易做出良好的预测。另一方面,如果直接采用标准的K-means聚类算法,在边界框尺寸比较大时其产生的误差也更大,而聚类分析时希望误差和边界框的尺寸没有太大关系。因此,通过IoU定义了距离函数,使误差与边界框的尺寸无关。距离函数d为

d(box,centroid)=1-IoU(box,centroid)

( 1 )

式中:box为目标对象的实际边界框;centroid为聚类中心框。

3 试验验证与结果分析

3.1 试验运行环境

本文的试验硬件环境配置,采用NVIDIA Tesla系列计算显卡,适用于深度学习大规模数据计算。系统配置主要包括Windows10、CUDA10.2、cuDNN7.6.5、Python3.7等常用环境,深度学习框架使用PyTorch框架。

3.2 改进的YOLO模型训练参数确定

本文的数据集共有17 601张B显图片,其中核伤1 363张,表面伤损7 208张、异常螺孔1 320张、轨底伤损584张、螺孔2 496张、焊缝1 310张、断面1 656张、接头1 664张。采用LabelImg工具对数据集进行标注,并保存为VOC数据集格式,在训练前根据VOC数据集的格式与结构转换为YOLO数据集格式。本文将总数据集的90%作为训练集,将10%的数据集作为测试集。

使用本文改进的YOLO V3网络训练前需要先配置网络参数。为提高网络分辨率,本文将输入的416像素×416像素的原始数据集重新调整为608像素×608像素。考虑到高网络分辨率会占用大量显存,导致显存溢出情况发生,因此本文将每次输入的批量大小(batch)设置为12。深度学习模型可以通过数据增强的方式提升模型的泛化能力和鲁棒性,而YOLO算法内置了通过修改初始超参数的方法进行数据增强。本文设置色调为0.013 8,色饱和度为0.678,明度值为0.36,旋转角度为1.98,平移值为0.05,缩放值为0.05,剪切值为0.05。本文将初始学习率设置为0.000 579,优化器选用SGD优化器,设置动量为0.937,权重衰减系数为0.000 484。

3.3 数据增强参数确定

2.2节介绍了在指定区域内粘贴多个检测对象的数据增强方法。然而,同一张图内检测对象的粘贴个数和加入训练集的增强图片数量并不是越多越好,最终的检测效果需要通过评价指标来确定。

( 2 )

( 3 )

( 4 )

( 5 )

( 6 )

式中:TP为真正例;FP为假正例;FN为假负例;n为最大精度的数量;i为检测类别的数量;根据VOC2007数据集格式[24],用最大精度的平均值求得平均精度AP,其中最大精度pinterp(Rn+1)为

( 7 )

以核伤为例,本文首先使用YOLO原网络对同一张图内小目标的粘贴个数进行试验对比,见表2。由于平均精度可以较好地考虑精度和召回率的综合关系,因此本节将平均精度作为主要评价指标。从表2可以明显看到,同一张图内粘贴2个小目标所得到的平均精度是最高的。随后,本文对粘贴2个小目标的增强图片进行试验,分别取增强后的图片数量50、100、200、300张加入原始训练集进行对比试验,观察其测试效果,见表3。从表3看出,取100张增强图片加入训练集中进行试验最终得到的测试效果最好。因此,本文最终确定取100张随机粘贴2个小目标的增强图片加入训练集中进行模型训练。

表2 同一张图内不同小目标粘贴个数对应的测试结果

表3 不同增强图片数量对应的测试结果

3.4 B显数据集边界框聚类结果

根据2.4节提出的K-means聚类算法,本文首先设定需要聚类的锚框数量为1~20,对所使用的数据集进行K-means聚类分析,结果如图6所示。

图6 锚框K-means 聚类分析结果

从图6可以看出,随着锚框数量的增加,平均交并比也在提升。因为锚框数量增加,计算量也会增加,损失函数的收敛速度也会减慢,所以综合考虑误差与计算量,本文选择的聚类锚框数量为12个。因此所聚类出来的12个先验框的宽和高为(573,218)、(582,34)、(582,26)、(302,25)、(203,26)、(127,22)、(428,26)、(38,186)、(13,18)、(77,45)、(57,29)、(66,35)。

3.5 试验结果分析

模型训练完成后,对测试集中的17 601张B显图像中的8类目标进行检测,各B显图像检测对象识别效果评价见表4,各B显图像检测对象识别效果如图7所示。

表4 各B显图像检测对象识别效果评价

图7 各B显图像检测对象识别效果

从表4可以看出基于改进YOLO V3模型的B显图像检测方法的总体平均精度为92.3%,总体上具有较高的识别精度。对于正常数据集,检测对象的识别精度均在90%以上,说明该模型误检率很低;而在召回率方面,除了断面,其他类型均在0.95以上,因此除断面可能存在少许的漏检情况外,其他类型均能保证较高的检测全面性。对于异常数据集,核伤和轨底伤损尺寸很小,检测难度较大,即便如此平均精度也达到88%以上;另一方面,表面伤损和异常螺孔的平均精度均在90%以上,基本可以保证较低的漏检、误检率。同时,可以看出该模型的检测速度达到44 ms/张,基本满足实时检测的要求。由此可见,基于改进YOLO V3的钢轨伤损B显图像识别算法保证了检测准确性和实时性,能够较好地完成钢轨伤损检测任务。

4 结论

(1)本文详细介绍了YOLO V3模型的网络结构改进方法,包括提升输入图像分辨率、增加极小尺度网络检测层、增加SPP模块和增加SE模块等,从而提升了网络对小尺度目标的检测能力。

(2)本文介绍了B显数据预处理方法,包括数据增强和杂波滤除方法;提出了通过边界框K-means聚类算法获取12个先验框,从而优化了检测的精度和速度。

(3)本文通过网络参数调整等方法优化了改进的YOLO V3算法,并用核伤、轨底伤损、表面伤损(包含擦伤、鱼鳞纹、剥离掉块)、异常螺孔四类异常数据集和断面、接头、螺孔、焊缝四类正常数据集进行检测试验。

(4)试验结果表明,本文提出的改进算法检测平均精度达到92.3%,检测速度达到44 ms/张,该模型具有较好的检测效果。不足之处在于小目标数据集检测精度还有一定的提升空间,如何继续提升小尺度伤损的检测精度将是未来的主要研究方向。

未来,我们可以将该算法进一步完善并将其打包为软件安装到双轨式探伤系统中,为现场智能探伤提供辅助。

猜你喜欢

伤损钢轨像素
像素前线之“幻影”2000
单元板式轨道脱空伤损识别的柔度曲率特征值法
普速铁路钢轨伤损的分布规律
普速铁路钢轨服役状态评估方法及应用效果
“像素”仙人掌
钢轨探伤车检出可疑伤损的综合分析方法
钢轨焊后双中频感应加热工艺研究
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部
高速铁路钢轨疲劳过程的超声非线性系数表征