基于深度学习的铁路列车关键零部件图像故障检测
2020-01-18李萍吴斌方刘默耘张杨林凯孙国栋
李萍,吴斌方,刘默耘,3,张杨,2,林凯,孙国栋
(1.湖北工业大学 机械工程学院,湖北 武汉430068;2.南京大学 计算机科学与技术系,江苏 南京210023;3.华中科技大学 机械科学与工程学院,湖北 武汉430074)
近年来,我国铁路领域飞速发展,铁路运输作为物流与交通行业重要组成部分,在国民经济中处于中流砥柱的地位,随之而来的铁路交通安全问题也备受瞩目。长期以来,列车的车辆故障往往都是由列检人员来完成,存在着检测准确率低,效率低等诸多弊端[1-2]。随着计算机技术和人工智能理论的飞速发展,基于机器学习的自动故障检测系统已逐渐取代传统的人工方法[3]。由于列车中常见的故障主要是由微小零部件的破损和位置变化引起的,因而正常和故障图像之间的差异并不明显,这明显增加了故障视觉检测的难度。其次,由于故障的多样性和复杂性,常规方法很难实现对列车图像快速而准确的故障检测。对此,学者们对相关内容进行了深入研究。例如:孙国栋等[4]提出一种基于多特征融合和BP-AdaBoost 的自动故障识别算法,用于安全链锁紧螺栓和集尘器的故障检测。LIU 等[5]提出一种分层故障检测算法框架,可以快速、准确地实现轴承端盖检测,故障区域定位和挡键检测。赵大兴等[6]提出一种基于有向线段重构轮廓与成对几何直方图的图像匹配算法。但这些算法多是针对某一类甚至单个零件,通用性不强,难以满足实际检测的需求。目前,基于深度学习方法,尤其是卷积神经网络(CNN)在机器视觉领域中取得了较为显著的成功,在目标检测的任务中,基于区域的CNN[7],如Faster R-CNN(FRCNN)[8]和基于区域的全卷积网络(R-FCN)[9]是目前准确率越来越高的主要范例。而具体到列车图像故障检测任务,SUN 等[10]提出基于CNN 的列车典型故障识别系统,有效解决了低质量图像的故障识别问题。但该系统是由2 个复杂CNN组成,该方法的可移植性和通用性不足,难以满足实际检测的要求。为解决上述列车图像故障检测中遇到的实际问题,提出一个包含故障区域提议网络[8]和故障检测的算法,用以实现高效、快速的列车图像故障检测。该框架首先提出故障区域复合提议网络,以生成高质量的故障候选区域。随后,利用线性非极大值抑制[11]来删除冗余的故障候选区域。最后,引入多尺度的故障检测网络来实现快速而准确的故障检测。实验结果表明,该方法检测正确率高,检测速度快,能有效地应用于列车图像故障检测中。
图1 列车图像视觉检测样本Fig.1 Visual inspection samples of freight train images
1 列车图像故障检测
如图1所示,列车转向与空气制动系统包含许多重要部件,如:折角塞门、截断塞门、安全链螺栓、挡键和集尘器,其性能和稳定性直接关系到列车运行安全[12]。与利用传统机器学习技术进行目标检测相比,深度学习的引入可以处理更加复杂的问题,因为其特征的提取和表示是从大量的数据中学习的。卷积神经网络(CNN)使用多层结构,利用卷积核提取输入图像的特征,并对所得到的特征进行一系列的处理,最终自动发现检测所需的通用特征。列车图像故障检测统一框架如图2所示,本文主要提出2 种新型的神经网络模块:1)故障区域复合提议网络,该模块将锚点(anchor)在多尺度卷积层上进行特征提取,避免了丢失浅层卷积层潜在的有用信息;2)故障多尺度检测网络,该模块将多尺度特征进行拼接,使得收集利用的特征信息更加全面。
1.1 故障区域复合提议网络
一般来说,较浅的卷积层和较深的卷积层可以通过上采样高阶特征映射来互补。以这种方式,小的anchor 仍然能够捕捉到浅层中的重要细节。而在以前的工作中,所有anchor 都选自同一卷积层中,因此忽略了小的锚点。为此,针对性地提出一个新的故障区域复合提议网络(multi-region proposal generation,MRPN),在多尺度的卷积层上进行滑动提取一系列的anchor 当作候选的故障区域。
受卷积神经网络中的子采样和池化操作的影响,这些特征映射都是不同分辨率的。为了在VGG16 模型[13]中以相同的分辨率组合多层次的特征映射,针对不同的卷积层设计不同的采样策略:本文在浅层(Conv3_3)上添加了2 个2×2 大小的最大值池化(MP),对于中间层(Conv4_3),添加一个2×2 最大值池化进行二次采样;然后,采用1×1卷积层分别提取3 个卷积层(Conv3_3,Conv4_3 和Conv5_3)的局部特征;最后,将上述3 个特征映射联合在一起。如图2所示,图中上半部简要描述了MRPN 的结构,其具有以下优点:1)在故障检测任务中,深、中、浅的卷积层特征是互补的;2)所有局部特征都可以在MRPN 和多尺度检测网络之前预先计算好,无需引入多余的计算。
图2 列车图像故障检测框架Fig.2 Fault detection framework of freight train images
接着,使用3×3 卷积层将上述联合特征映射编码成512 维的特征向量。3×3 的卷积层运算不仅能够提取出更多的语义特征,而且将联合特征映射压缩成统一大小。最后,对512 维联合特征向量进行运算,并有2 个输出层:一个预测故障区域得分的分类层和一个细化每一种先验包围盒位置的回归层。此外,本文中的先验包围盒于类似Faster RCNN[8]中定义的anchor,它包含3 个尺度(128,256,512)和3 个纵横比(0.5,1,2),每个滑动位置上对应k=9 个anchor。
1.2 故障多尺度检测网络
目前,性能较优的目标检测模型,如Faster RCNN[8]和R-FCN[9],都只是简单地将RoI 池化应用在最后的卷积层上。然而,为了更好地利用多层次卷积特征并丰富每个anchor 的信息,本文对VGG16 上的Conv3_3,Conv4_3 和Conv5_3 卷积层进行合并,得到2 个512 维的H×W池化特征(H和W在本文中设置为7)。
接着,把每个池化特征联合在一起,并用512维的1×1 卷积层编码联合特征,将多层次池化特征合并,且与VGG16 的第1 个完全连接层相匹配。上述1×1 卷积层能够联合多层次池化特征,在学习训练过程中进行权重融合,并减小维度用以匹配VGG16 的第1 个完全连接层。然后,将多层次加权融合特征传递到后续故障区域分类和回归模型中。如图2的下半部分简要描述了故障多尺度检测网络。
上述MRPN 和故障检测网络都有2 个输出层:1 个分类层和1 个回归层。它们之间的差异如下:1)对于MRPN,每个先验包围盒独立地参数化,所以需要同时预测所有k=9 个先验包围盒。分类层输出2k置信度,评估每个提议区域是故障或非故障的概率,而回归层输出4k值,为包围盒的回归偏移。2)故障检测网络,对应于背景、故障的2 个输出置信度和每个故障区域的回归偏移。在此过程中,执行最小化多任务损失函数与文献[11]一致。
为了将MRPN 和多尺度检测网络相结合,通过反向传播和随机梯度下降(SGD)以端到端的方式进行训练。预训练模型是一个在ImageNet[14]预先训练的VGG16 模型。训练时所有卷积层的权重被初始化为零均值和0.01 的高斯分布标准偏差,基本学习率为0.001,训练使用的动量为0.9,0.000 5 的权值衰减,检测阶段的置信度为0.9。
2 实验与分析
为了验证该故障检测算法的有效性,首先,简要介绍用于实验的数据库和性能评价指标;然后,将目前主流的目标检测算法特别是深度学习算法与本文提出的算法进行检测精度和检测速度的对比分析。实验环境如下:Ubuntu 16.04 操作系统,CPU 为Intel Core i7-7700@3.60 GHz,内存16 G,以及单张K40 的GPU。所有实验均在Caffe[15]进行。
2.1 数据库与评价指标
为验证算法的有效性,实验所用的数据库包含4 种故障检测数据集:截断塞门,集尘器,安全链螺栓和挡键。数据库中图像样本数量见表1所示。所有图像的大小为700×512 像素,每个训练集图像都根据PASCAL VOC 数据集[16]的格式进行标记。如图1(a)所示,截断塞门和集尘器是列车空气制动系统的重要部件,其技术状态的良好和性能的稳定,是保证列车安全运行的主要环节。如图1(b)所示,制动梁安全链是列车制动系统中的关键零部件。从机械故障角度分析,制动梁安全链脱落属于非刚性机械结构形成的故障,脱落后的状态很难用简单而又精确的特征模型去描述,成为故障检测的首要难点。列车一般具有大约400 个转向架挡键,是列车中应用最广泛的部件之一。如图1(c)所示,挡键只占图像很小一部分,其主要功能是保持车轮组不与转向架相碰。实际上,利用机器视觉来检测小部件的状态(故障或非故障)是一项非常困难的工作。
表1 实验所用的数据库Table1 Databases using in the experiments
为了进一步验证故障检测算法的有效性,建立4 个评价指标[2,12]:故障正确检测率(Correct detection rate,CDR),故障漏检率(Missing detection rate,MDR),故障误检率(False detection rate,FDR)和检测速度。例如,测试集包含m个正样本和n个负样本,通过故障检测算法得到:在n个负样本中,x个图像被检错(检测结果为无故障);在m个正样本中,y个图像被检错(检测结果有故障)。因此,上述指标可以定义为:MDR=x/(m+n),FDR=y/(m+n),CDR=1-MDR-FDR。通常,在列车图像故障检测中,指标MDR 比FDR 更重要,这是由于非故障区域被错检为故障对列检的影响并不严重。
2.2 算法性能分析
为了验证和分析算法的检测性能,将本文提出的算法与目前主流故障检测算法特别是深度学习算法进行对比,如:基于局部二进制(LBP)特征的故障级联检测器[12],基于HOG 特征的Adaboost 与线性SVM 故障检测器[17],基于快速自适应马尔科夫随机场与精确高度函数(FAMRF+EHF)的层次特征匹配算法[10],基于VGG16 模型的SSD(Single shot multi-box detector)算法[18],基于ResNet50 网络模型的R-FCN 算法[9],基于不同网络模型(ZF,VGGM和VGG16)的Faster R-CNN[8],基于R-FCN 与soft NMS 以及Faster R-CNN 与soft NMS 联合算法[11]。以上算法均使用表1中所述的列车图像进行训练和测试,深度学习算法SSD,RFCN,Faster R-CNN,R-FCN+soft NMS,和Faster R-CNN+soft NMS 均借助单张K40 GPU 完成训练和测试。上述所有方法均调至最优,故障检测结果见表2。
表2 列车图像故障检测结果对比Table 2 Comparison results of fault detection for freight train image
对于集尘器,本算法具有98.54%的CDR,0%的MDR 和1.41%的FDR。对于安全链螺栓,该方法具有100%的CDR,0%的MDR 和FDR。对于挡键,本算法具有99.90%的CDR,0.10%的MDR 和0%的FDR。在上述3 个数据库中,本文所提出的方法均优于其他相关方法。对于截断塞门,本算法的检测性能稍逊于其他方法,但所提出的方法具有较低的FDR。利用本算法进行故障检测的检测结果如图3所示。
对于挡键,基于区域CNN(R-CNN)的方法尤其是Faster RCNN,其FDR 较高的主要原因是:挡键的面积太小,无法与列车上的其他部件进行比较。对于传统的Faster RCNN,是在最终特征映射层上执行采样,以生成故障区域提议。然而,这样的采样方式可能忽略一些重要的特征[19]。本文提出的方法使用MRPN 和多尺度RoI 池化,能让网络学习到更有效和更全面的特征,用以区分复杂的背景和故障。
2.3 算法检测速度比较
表3列出了上述方法的检测速度。对于一张大小为700×512 像素的列车图像,本文提出的方法检测速度为0.246 s。表3中基于局部二进制(LBP)特征的级联检测器和HOG+AdaBoost+SVM 方法的故障检测速度较快,但这2 种方法的检测精度最低。而FAMFR+EHF 方法的精度较高,但是由于马尔可夫随机场的计算复杂度较高,其检测速度太低。此外,SSD 和R-FCN 算法的性能与本文所提出的方法相媲美。但SSD 和R-FCN 算法对噪声敏感,其误检率较高。
本文提出的故障检测算法具有精度高、速度快等特点,其主要原因是:首先,MRPN 能够实现更为准确的故障区域提议;其次,使用线性NMS 算法能够筛选出最合适的anchors,并去除冗余;最后,将多尺度RoI 池化应用到故障检测网络中,有助于网络学习到更为有效的故障特征。
图3 列车图像故障检测结果示意图Fig.3 Fault detection results of freight train images
表3 列车图像故障检测速度比较Table 3 Testing speed of fault detection for freight train images
4 结论
1)列车图像故障检测算法中,MRPN 能够实现更为准确的故障区域提议,同时,使用线性NMS算法能够筛选出最合适的锚点;将多尺度RoI 池化应用到故障检测网络中,能使网络学习到更为有效的故障特征,提升算法的检测精度。
2)对于集尘器,98.54%的CDR,0%的MDR和1.41%的FDR。对于安全链螺栓,该方法具有100%的CDR,0%的MDR 和FDR。对于挡键,本算法具有99.90%的CDR,0.10%的MDR 和0%的FDR。检测精度均优于其他相关方法。对于截断塞门,本算法具有较低的FDR。
3)本文提出的方法对于一张大小为700×512像素的列车图像,检测速度为0.246 s,检测速度快。