金 鑫,王 通,程园龙
(1.北京华为云计算技术有限公司 EI创新孵化Lab,北京 100080;2.华为技术有限公司 中国政企数字政府交通系统部,北京 100077;3.中国铁路郑州局集团有限公司 郑州北车辆段,河南 郑州 450052)
近年来中国铁路得到快速发展,截至2021年底,全国铁路营业里程已经达15万km[1]。为了保障铁路的运营安全,提高安全管控水平,中国铁路建立了安全运营技术体系和保障措施[2]。其中,车辆运行状况对安全运营十分重要,侧架、制动梁、钩缓、互钩差、中间部、中间部侧部等工位结构复杂,关键部件的脱落、折断、丢失、窜出、破损等故障将会严重影响行车安全。
“5T系统”以红外、力学、声学、图像等车辆运行安全监测设备为基础,通过数据自动采集、数据集成、联网评判和综合应用,为铁路车辆管理提供安全监控与管理服务。其中,TFDS即货车故障轨边图像检测系统,是通过高速摄像技术对运行中的货车车辆工位进行抓拍,将获取的图像提供给动态检车员进行分析,将影响行车安全的故障进行上报[3]。TFDS货车故障图像分析当前基本上仍依赖人工进行,工作强度大、分析效率低、运用成本高、且容易出现对于关键故障的漏报,也给车辆运行安全带来隐患。图1为TFDS系统的组成。
图1 TFDS系统组成
开展TFDS货车故障图像智能识别算法研究的意义重大,通过该算法可大幅降低动态检车员的工作负荷,在提升车辆故障的分析效率与故障检出准确率的同时,确保行车安全;全面消除不良货车存量,为实现货运增量稳收、运输畅通有序提供强有力的装备保障;通过科技创新,大力挖潜节流,加大生产领域节支降耗力度,在提高劳动生产率的同时实现节支降耗。
目前,基于图像的故障检测方法可分为基于特征值提取的传统图像处理方法和基于深度学习的智能识别算法。李静等[4]提出了一种基于方向梯度直方图特征和支持向量机的方法,实现了对关键螺栓的定位和识别。针对高速列车车轮踏面剥离、擦伤等损伤的动态检测,侯涛等[5]提出了使用改进Canny算子对车轮踏面损伤进行边缘检测,刘祖胜等[6]提出了一种自适应融合局部和全局匹配的图像故障识别算法。针对货车运行故障动态图像中车辆挡键、集尘器和安全链锁紧螺栓的故障检测,孙国栋等[7-8]提出了一种基于多特征融合和BP-AdaBoost的故障自动识别算法,实现针对集尘器和安全链锁紧螺栓的故障检测以及基于稀疏编码空间金字塔匹配和遗传算法优化的支持向量机相结合的通用故障自动识别算法。
传统图像处理算法大多基于浅层结构,在解决结构简单或者约束较多的问题上效果明显,但难以应对货车车辆图像的复杂场景,受缚于建模和表示能力,在实际应用中针对一些复杂应用进行处理时效果会大打折扣[9]。近年来随着硬件算力的提升、故障样本数据的累积和深度学习算法的发展,深层卷积神经网络在图像处理等领域的研究得到快速发展。
宋丫等[10]将传统图像算法与深度学习相结合,开展了货车心盘螺栓丢失故障检测的研究。曲志刚等[11]提出了一种基于深度信念网络的车辆故障诊断音频分析方法,通过小波包将车辆音频信号分解,将信号的特征向量作为网络的输入实现对车辆状态的监测。赵冰等[12]提出了基于Faster R-CNN模型的车辆缺陷双通道监测框架MCDDF(Multi-Channel Defect Detection Framework),采用两通道方式分别实现铁路车辆关键部件监测与缺陷分类任务。在文献[13-14]相关研究中,深度卷积神经网络已被用于货车车辆的故障自动检测,基于深度残差网络提取故障特征,实现故障的定位与识别。
当前,全国铁路货车保有量为96.6万辆,车型达到351种,货车车辆运行环境多样,工况复杂多变,并且,TFDS涉及到对行车安全的保障,不允许出现影响行车安全的故障漏报。虽然现有多个算法的研究已取得阶段性进展,但是,在故障误报率、漏报率等指标仍无法完全满足货车车辆的运用工作要求,无法在现有业务场景中规模性推广使用,TFDS货车故障图像智能识别的需求并没有得到很好的满足,各路局车辆段大多还是采用人工分析的作业方式。
本文针对上述问题提出了改进,提出了一种包含目标检测和图像分类的两阶段故障识别算法,锁紧板故障识别算法实现流程如图2所示。该算法经过在郑州局集团郑州北车辆段的长期测试,已经达到可以满足实际作业需求的性能与效果指标。
图2 锁紧板故障识别算法实现流程
对车辆运行安全影响大的故障通常集中出现在特定的关键部件上,锁紧板变形如图3所示,图中红色方框区域中的锁紧板发生变形。从图中可以发现,部件尺寸相比于原图的尺寸较小,故障的尺寸相比于部件的尺寸也较小。因此,为了更准确地定位故障区域、识别部件状态,首先需要实现对图像中锁紧板的定位。
图3 锁紧板变形
具体来说,本方法首先标注大量图像中待检测部件的位置,并通过标注的图像和标注信息训练Faster RCNN[14]目标检测模型。由于训练时为模型提供过大量的正常部件和故障部件的图像,所以,在训练完成后,得到的目标检测模型可较为准确地定位到TFDS图像中正常部件和故障部件的位置,以供后续处理流程继续使用。实验中也对比了Faster RCNN算法、YOLO算法,Faster RCNN算法精度稍高,速度稍低于YOLO算法,但目前给系统运行速度已经达到业务要求,目前还是采用Faster RCNN算法。
考虑到TFDS图像中的故障区域通常在全图中的占比极小,但是在部件区域的占比稍大,因此,将部件检测模型定位到的部件区域裁剪出来可以凸显故障区域,有助于判断部件区域是否存在故障。因此,本方法提出在裁剪出来的部件区域,通过训练深度学习分类器的方式,识别部件区域是否正常。具体来说,深度学习分类器可以看作一个映射函数:
p=fW(I)
(1)
式中:I为裁剪后的部件区域;fW(·)为一个由深度学习模型构成的映射函数,其中W为深度学习模型的参数;p为深度学习模型的输出,表示部件存在故障的概率。
模型训练过程中,对于正常的部件区域,要求深度学习模型输出的概率p尽量接近0;对于故障的部件区域,要求深度学习输出的概率p尽量接近1。通过不断地输入大量数据,对深度学习模型的参数W进行调整,使fW(·)逐渐满足约束条件。
TFDS探测站采集到的绝大多数车辆图像为正常情况,部件存在故障的图像相对较少。因此,正常部件的图像数量远远超过故障部件的图像数量。另一方面,由于部件的物理特性、几何结构、内外部环境等多种综合因素,在《铁路货车运用维修规程》中所规定的多种故障类型在实际环境中从未发生过。为了确保本系统可以准确地识别从未发生过的故障,避免影响行车安全的故障漏报,同时在正常部件和异常部件数量极不均衡的条件下得到预测结果无偏的模型,本方法提出:
(1) 通过进行少量人工参与的弱监督故障数据合成来增加故障样本数量;
(2) 通过对正常样本和故障样本施加自适应计算的权重,减少模型训练过程中的偏差。
对于车辆运行中未发生过的故障,本方法提出从其他类似故障数据迁移的方式合成更多故障数据。
具体来说,在车辆实际运行中,曾经出现过大量各类故障,但是某些特定类型的故障和特定部件的组合并没有出现过,因此可以从其他部件的同类故障迁移到特定部件,从而合成未出现过的故障。
以车轮裂损为例,该故障出现频率极低,但由于其严重性极高,一旦出现必须要求准确识别。另一方面,横梁裂损等其他部件上的裂损故障则相对较为常见。因此,可以将其他部件上的裂损区域迁移到车轮上,得到合成的车轮裂损数据,用来训练故障智能识别模型。
本方法中,在合成故障图像时,采用以下流程:
(1) 收集大量的正常图像作为待修改的底图;
(2) 收集待合成的故障类型的图像,如部件裂损图像等;
(3) 通过labelme标注工具[16],由人工在图中勾画出故障图像中故障区域的位置,同时勾画出正常图像中可能出现该故障的位置,以多边形掩膜的形式表示图中勾画出的区域;
(4) 程序将故障图像中的故障区域裁剪出来,经过旋转、扭曲、拉伸、亮度对比度调整等操作,与待修改底图中的待修改区域形状、亮度、对比度进行匹配后,拼接到正常图像中可能发生故障的区域,得到逼真的合成故障图像。图4为TFDS故障检测任务中裂损类图像的自动扩充展示。
图4 TFDS故障检测任务中裂损类图像的自动扩充
即使通过人工生成故障数据的方式,仍然不能解决故障样本数量远少于正常样本数量的问题。在训练分类模型时,通常采用交叉熵损失:
L=-y·log(p) - (1-y) log(1-p)
(2)
式中:L为损失函数;y为输入样本的标签,正常样本的标签为0,故障样本的标签为1。
在使用上述损失函数训练深度学习模型时,如果正常样本数量远多于故障样本数量,公式(2)中的第二项会起到支配性的作用,导致深度学习模型将所有样本预测为正常。为了解决这个问题,本文提出对正常样本和故障样本施加不同的权重,以此平衡公式(2)中的两项。图5为权重计算流程示意图。
图5 权重计算流程示意
具体来说,如图5所示,本文提出根据正常样本和故障样本的数量、变化模式的丰富程度,对每个样本分别进行加权。具体实现流程如下:
(1) 使用公开的深度学习模型分别提取正常样本和故障样本的特征;
(2) 通过K-means[17]聚类的方法,对正常样本的特征和故障样本的特征分别进行聚类,得到每个样本所属的聚类编号;
(3) 通过下列公式计算样本的权重:
茶园地:1974年左右在原坡度为10°的坡地上进行水平整地并起垄,开始种植茶树(Camellia sinensis(L.)O.Kuntze),行距150 cm,丛距30 cm,每年施用复合肥和饼肥各1次。
wp=Cn/nc/(Cp+Cn)
(3)
wn=Cp/nc/(Cp+Cn)
(4)
式中:wp为正常样本的权重;wn为故障样本的权重;Cp为正常样本的聚类数量;Cn为故障样本的聚类数量;nc为样本所在的聚类中,样本的数量。
相应地,定义加权的交叉熵损失函数:
L=-wn·y·log(p) -wp(1-y)log(1-p)
(5)
通过公式(5)中的损失函数对深度学习分类器进行训练,可以平衡损失函数中正常样本的项和故障样本的项,从而缓解模型偏差。
实验测试方案实现流程如图6所示。TFDS探测站完成数据采集后,经过本方法识别,将算法判断为正常和故障的数据分别提交给工作人员复核,统计算法的识别效果和性能。
图6 测试方案实现流程
所部署测试服务器采用Intel Xeon E7 CPU,nVidia Tesla T4 GPU。
实验阶段,将两条线路上的实时过车数据接入实验系统进行测试,每条线路每周测试图像约9万张。
在实验过程中,通过故障召回率、误报率、推理时间作为指标,评价算法的运行效果和处理性能。
(1) 故障召回率:假设检测的图像中故障总数为T,算法预测为故障且经过人工确认属实的故障数量为t,则故障召回率=t/T;
(3) 推理时间:算法分析一张图所用的时间,单位为秒(s)。
训练过程采用收集到的全路100万张图像,经过部件标注,故障分类模型标注后,进行训练。标注过程采用人工、以及半自动标注的方法。为了验证所提出方法的有效性,对提出的各种方法进行了对比测试。训练过程中测试集构造如下,通过在1万张图像中,混入100张故障图像,模拟真实使用过程中正常数据远大于故障数据的情况。测试结果如表1所示。
表1 训练过程故障发现测试结果
在实验周期中,前期先在线路1完成系统的部署并开始测试,后期为进一步验证效果,在线路2完成系统的部署和测试。因此,线路1的测试结果时间跨度为10周,线路2的测试结果时间跨度为3周。测试结果参见表2、表3、表4。
表2 线路1现场测试结果
表3 线路2现场测试结果
表4 算法在不同设备上的推理时间测试结果
(1) 误报率:从表2中可以看到,在测试前期,系统误报率较高,前四周平均误报率7.61%。之后经过进一步优化,误报率有所降低,在线路1上,后六周平均误报率4.20%;表3中,在线路2上,平均误报率4.42%。上述结果表明,本文提出的系统,可以过滤掉95%以上的正常图片,因此,可以明显降低人工审图的工作量,提升TFDS故障检测的效率。
(2) 故障召回率:表2和表3中,在现场实际测试阶段,本文提出的系统各漏检1个故障,经人工确认为不影响行车安全的轻微故障。该实验结果表明,本系统具有精准的故障发现能力,在实际使用中能够发现绝大多数的故障,已具备实用价值。
(3) 推理时间:实际部署系统中使用nVidia Tesla T4 GPU,该设备性能较高,但成本也较高,因此在实际部署中,出于成本考虑,可能需要部署其他型号的GPU设备。为了验证其他型号设备的推理时间是否可以满足实际使用的需求,在此实验中,补充测试算法在nVidia Tesla P4 GPU上的推理时间,实验结果见表4。从实验结果中可以看出:第一,T4型号的GPU速度远快于P4型号的GPU,推理时间可以节省约40%;第二,现场测试中,要求每列车的推理时间不超过10 min,两种型号的GPU都可以满足实际应用对速度的要求。
上述结果表明,不论是在故障识别效果还是在故障分析速度方面,本算法可以达到TFDS图像故障智能检测的需要,已经具备实际应用的能力。
(1) 通过自动识别算法进行TFDS图像的故障检测有助于提升故障召回率,对于提升TFDS故障图像的分析效率,保障行车安全,降低人工工作负荷,具有重要的实用价值;
(2) 算法部署初期,可作为动态检车员作业质量检查的辅助措施予以应用,避免人工分析可能存在的漏报,随着后续算法可用性的不断完善,可与现有作业流程完全结合,实现以智能分析为主,人工确认为辅的作业模式转变;
(3) 通过人工故障数据合成可以有效增加故障样本的数量和多样性,使本方法具备准确识别罕见故障、未出现过故障的能力;
(4) 本文提出的加权故障识别损失,极大程度上缓解了正常样本和故障样本数量不均衡的问题,使算法既能够达到极高的故障召回率,也能将误报率控制在可以接受的范围内,实现具有实用价值的故障图像智能识别功能;
(5) 当前系统的故障召回率和误报率已经初步达到可以实用的程度,为了更好地减轻检车员的工作负荷,算法误报率仍有进一步优化的必要和空间。