当前位置:首页 期刊杂志

基于改进Faster R-CNN算法的扣件缺陷检测

时间:2024-05-04

黄午祥,江 南

(湖北工业大学 计算机学院,湖北 武汉 430068)

0 引言

高速铁路是关系我国经济发展、国民出行等民生问题的重大工程。截至2021 年底,我国铁路运营总里程突破15 万km,高速铁路运营里程突破4 万km。铁路轨道包含道床、钢轨、联接零件等主要组成部件[1],其中扣件是连接道床和钢轨的重要组件,作用是固定轨道在路基上的位置以保证钢轨不发生偏离,对确保高速铁路轨道正常使用的作用巨大[2-4],一旦扣件无法固定铁轨将导致脱轨等问题,从而影响列车运行安全。由于我国铁路轨道里程总数全球最长,采用大量扣件固定,因此需要更快速、准确的检测手段识别扣件缺陷[5]。

目前,国内主要依赖人工巡检铁路扣件缺陷,但该方式受人员工作状态、天气环境等因素影响,错误率较高,并且需要投入大量人力成本[6-7]。虽然少数线路配备了专门的列车搭载自动巡检装置[8],但检测时间和频率均受到了较大限制,只能作为人力巡检方式的补充形式,无法达到完全代替人工的效果[9]。

近年来,由于深度学习(Deep Learning,DL)、神经网络(Conventional Neural Network,CNN)的迅速发展,国内外相关专家学者提出大量先进的目标检测算法[10],例如基于卷积神经网络处理铁路图像的检测算法。目前,基于卷积神经网络识别铁路铁轨[11]、固定轨道道钉[12]等零件状态已取得了成效不错的检测效果。王海涛等[13]提出计算机视觉技术设计铁轨表面缺陷检测系统。韩江洪等[14]提出基于空间卷积神经网络检测井下轨道。王宪保等[15]提出一种分裂的快速区域卷积网络算法,以有效分开边界框的回归任务与分类任务,并应用于吸尘袋数据集的缺陷检测中。陈婉琴等[16]提出在Faster R-CNN 算法基础上增加CBAM 注意力网络,结合DIoU-NMS 建议筛选机制提升了算法在面板缺陷检测领域的精确率。刘雄祥[17]从特征提取网络、锚窗设定、输出结果调整、实验参数设置等方面优化与改进Faster R-CNN 网络模型,检测铁轨图像中较小尺寸的目标缺陷。徐守坤等[18]运用多尺度训练与增加锚点数量的方法增强Faster R-CNN 算法的鲁棒性,基于比例不均衡的样本挖掘策略剔除少量检查错误目标,并将算法应用于人员是否佩戴安全帽检测的过程中,以增强环境适应性。

目前,采用卷积神经网络的目标检测算法主要分为双阶段目标检测算法与单阶段目标检测算法。具体的,基于候选区域的目标检测算法[5]包含R-CNN[19](Region-Conventional Neural Network)、Fast R-CNN[20]、Faster RCNN[21]等,这类双阶段目标检测算法首先筛选可能包含的检测目标子区域,然后通过深度卷积神经网络进行目标类别检测和边框回归;基于回归的目标检测算法包含SSD[22](Single Shot Multibox Detector)、YOLO[23](You Only Look Once)等,这类单阶段目标检测算法无需提取候选区域,直接输入图像,利用算法检测目标类别及边框[5],检测速度相较于前者更快,但精度较低。

本文将采集到的断裂、移位和缺失3 类缺陷图像样本制作成扣件缺陷测试数据集,以Faster R-CNN 模型为基础将轨道扣件的各类缺陷作为训练、检测目标。Faster RCNN 检测相较于目前大多数目标检测算法精度更高,但通过区域候选网络(Region Proposal Network,RPN)提取region proposals 的计算量较大,计算速度无法达到实时检测目标要求。

因此,本文对Faster R-CNN 算法提出3 点改进:①将具有更深层次与表达能力更强的ResNet-101+FPN 网络代替Faster R-CNN 中用于提取图像特征的VGG-16 网络;②引入ROI Align 单元,采用双线性插值算法保留浮点数以提高边框检测精度;③利用Soft-NMS 算法取代原始的NMS 算法抑制非极大值。实验表明,本文算法的检测性能相较于传统Faster R-CNN 算法提升较大。

1 Faster R-CNN

Faster R-CNN 是在Fast R-CNN 基础上使用RPN 代替选择性搜索(Selective Search,SS)的双阶段目标检测算法。RPN 与Fast R-CNN 在前几个卷积层共享参数,一方面提供更精确的候选区域,另一方面降低了网络计算冗余,大幅度提升了算法的检测速度与准确度[15]。

1.1 网络结构

图1 为Faster R-CNN 算法模型结构,主要分为特征提取网络(Backbone)、区域候选网络(Region Proposal Network,RPN)、感兴趣区域池化(ROI Pooling)及分类器(Classifier)。其中,特征提取网络一般采用VGG-16[24],通过一组Conv+ReLU+Pooling 层提取输入图像特征图,并被RPN 与全连接层共享。

Fig.1 Faster R-CNN model structure图1 Faster R-CNN模型结构

1.2 RPN

相较于R-CNN、Fast R-CNN算法采用SS方法生成候选框,Faster R-CNN不再使用传统的滑动窗口与SS方法,而通过RPN网络生成候选框[25]来加快生成检测框的速度。

图2 展示了RPN 网络模型的结构流程,特征图(feature map)经过3×3 卷积后分成上下层。上层通过SoftMax分类锚点(anchors)获得前景(Positive)和背景(Negative),其中检测目标为前景;下层则用于计算锚点(anchors)的边界回归(Bounding Box Regression)偏移量;Proposal 层负责综合positive anchors 和对应bounding box regression 偏移量获取候选区域,并筛除边界外的候选区域(proposals)。最终将得到的proposals 作为ROI pooling 层的输入。

Fig.2 RPN model structure图2 RPN模型结构

Fig.3 RPN structure图3 RPN结构

如图3 所示,anchors 是预训练网络卷积层最后一层feature map 上的一个像素,以该锚点为中心可生成k个锚框(anchor boxes),将生成的锚框每3 个分为1 组,锚框长宽比分别为1∶1、1∶2、2∶1,因此每次滑动框会得到3 组不同比例的锚框。分类层(cls layer)输出2k个scores 来表明该k个候选区域为前景和背景的概率。同时,边界回归层(reg layer)对应于k个锚框输出4k个坐标值,分别为该候选框左上角点的坐标x、y及该候选框的长、宽[26]。RPN 训练的损失函数为:

式中,λ表示权重,pi、分别表示 第i个anchor 为前景的概率和判定概率;ti、分别代表建议候选框和实际候选框的坐标,Lcls、Lreg分别代表分类损失函数和回归损失函数,Ncls、Nreg代表分类数量和回归的锚点数量[26]。

1.3 ROI Pooling感兴趣区域池化

对于AlexNet、VGG 这类传统卷积神经网络而言,网络训练好后要求固定输入的检测图像尺寸,同时网络输出也为固定大小的vector 或matrix。如果输入图像因尺寸不固定,一旦经过crop、warp 操作后就会破坏其完整结构或形状信息。因此,使用ROI Pooling 进行特征尺寸变换,既保证了网络对feature maps 的尺寸不受限制,还解决了无法更新权值的问题。

1.4 Classifier分类器

Classifier 部分利用池化输出的特征图(feature maps),通过bounding box regression 得到位置偏移量bbox_pred,以便准确回归目标检测框。同时,通过全连接层与SoftMax计算每个proposal 具体属于哪个类别(例如缺失、断裂、移位等),得到类别概率值cls_prob。Classifier 模型结构如图4所示。

2 改进Faster R-CNN算法

虽然,Faster R-CNN 相较于Fast R-CNN 检测性能具有大幅度提升,但仍存在改进的地方,例如特征提取网络、ROI Pooling 等均能替换为更优的模型或选择更好的策略,以提高算法检测精度与速度。为此,本文提出改进的Faster R-CNN 算法模型结构如图5所示。

2.1 改进特征提取网络

相较于传统Faster R-CNN 算法,本文针对特征提取模块与检测网络模块进行改进。由于VGG 卷积网络在网络深度达到一定程度后,容易出现梯度弥散或梯度爆炸问题[26]。本文提出使用深度更深、运算量更小的ResNet-101深度残差网络[27]替换VGG-16 卷积网络,以有效解决VGG网络存在的梯度弥散、梯度爆炸问题,ResNet-101+FPN 网络结构如图6所示。

Fig.4 Classifier model图4 分类器模型

Fig.5 Improved Faster R-CNN model图5 改进Faster R-CNN模型

Fig.6 ResNet101+FPN network structure图 6 ResNet101+FPN 网络结构

由图6 可见,ResNet-101 在卷积层后添加BN(Batch Normalization)层,将每层输入统一为正态分布(方差=1,均值=0)以避免梯度消失、爆炸问题,在缩短训练时间的同时,解决了在训练过程中中间层数据分布发生变化的问题。每层第n维输入如式(2)所示,归一化所有维的计算公式如式(3)所示。

FPN[28]的出现实现了feature maps 的深入融合,一般网络算法通常直接使用最后一层feature maps,虽然该层语义较强,但位置和分辨率较低,会导致模型难以检测细小目标。FPN 的提出能融合底层到高层的feature maps,充分利用各阶段提取到的特征。

为此,本文采用ResNet-101+FPN 作为特征提取网络来解决VGG 网络存在的梯度爆炸与小目标检测效果不理想问题。

2.2 ROI Align应用

ROI Pooling 的核心功能是根据候选框坐标信息在特征图中,将相应区域池化为统一尺寸的特征图,以便于后续特征分类和包围框的回归[29],但由于量化边界坐标的小数部分及回归位置的两次量化操作会产生不同程度的误差。因此,本文参考Mask R-CNN 算法[30],采用ROI Align单元保留浮点数以消除ROI Pooling 操作中两次量化造成的区域不匹配(mis-alignment)问题,最终得到了一个更精准的检测效果,ROI Align 模型流程图如图7所示。

由图7 可见,首先逐个遍历所有候选区域;然后将候选区域分割成规格为3×3 的单元,遍历与分割过程均不作任何量化;接下来采用双线性内插方法计算每个单元中固定的4 个坐标位置;最后进行最大池化操作[31]。ROI Align由于解决了mis-alignment 问题,因此即使遍历取样点的数量即使少于ROI Pooling 也能得到更优的性能。

2.3 改进NMS算法

Faster R-CNN 算法主要基于传统非极大值抑制NMS算法进行分类[26],原理是通过抑制非极大值得到局部极大值,具体计算公式为:

Fig.7 ROI Align model structure图7 ROI Align 模型结构

式中,Si为每个检测框的分数,IoU(M,bi)为第i个检测框bi与检测分数最高检测框M的最大交并比,Nt为NMS的预设阈值,IoU的计算公式为:

式中,A、B分别代表候选框和原标记框面积。

由式(4)可知,与检测框相邻且大于预设值的框Si会被设为0,当重叠度高的两个或多个图像被扫描时,将直接不检测大于预设阈值检测框中得分较低的相邻目标框,因此算法的检测性能将受到一定影响。为此,本文采用改进的Soft-NMS 算法[32]代替NMS 算法进行分类,具体计算公式如下:

Soft-NMS 算法通过设计一个衰减函数,根据当前得分递归地重新评分,取代直接抑制大于预设阈值检测框中得分较低的相邻目标框的做法,可有效保留价值更高的目标检测框。同时,在Soft-NMS 算法中引入的超参数仅在测试验证阶段使用,并未增加训练阶段参数与计算复杂度[29]。本文多次试验表明,当IoU=0.7时可取得最佳实验效果。

3 实验结果与分析

3.1 实验设计

为验证改进算法的检测性能,实验采集了343 张扣件断裂、402 张扣件缺失、488 张扣件移位及362 张正常扣件图像,共计1 595 张,图像规格均为120×80,各类样本图像如图8 所示,使用labelImg 制作成PASCAL-VOC2007 数据集可满足本文目标检测算法实验的需求。

Fig.8 Fastener status图 8 扣件状态

实验分为两大部分,算法分别为上述所介绍的改进前后的Faster R-CNN 目标检测算法。本文实验在Windows10 系统下进行,Intel i5-10300H 处理器、16G 内存、512 SSD 硬盘、GTX1650Ti 显卡;软件环境为Python3.7.0+CUDA10.1+CuDNN7.6,深度学习框架为Pytorch1.8.0。实验将训练学习率设为0.001,权重衰减系数设为0.000 1,批量大小为50,训练100 个epoch,采用均值平均精度(mean Average Precision,mAP)作为评价指标,具体计算公式为:

3.2 网络训练步骤

实验采用的样本数据训练验证集(训练集+验证集)与测试集的比例为9∶1,训练验证集中训练集与验证集的比例也为9∶1。改进后的Faster R-CNN 目标检测算法实验训练步骤为:

步骤1:以某张扣件图片A 为例,首先进行Normalize与Resize 处理得到统一尺寸图片B,将其送入特征提取网络。

步骤2:图片B 经过ResNet-101 网络+FPN 提取得到特征融合图C。

步骤3:将图C 与target 传入RPN 中,通过RPN 后将输出区域建议网络D 与其损失proposal_losses。

步骤4:将特征融合图C 与网络D 作为ROI 输入,通过ROI Align 进行遍历、池化得到特征图与建议框的映射关系E。

步骤5:将E 进行展平和两次全连接处理后输出分类器和回归器,通过分类器分类E、回归器修正目标边框,对网络预测结果进行后处理,将bboxes 还原到原图像尺度,最终完成目标分类和定位。

3.3 结果分析

本文部分实验检测结果如表1 所示,从左到右分别为原图像、初始Faster R-CNN、单独加入ResNet101 与FPN、单独加入ROI Align、单独加入Soft-NMS 与本文所提改进算法的预测结果。由此可见,初始FasterR-CNN 算法无论是检测扣件缺失、断裂还是移位缺陷的效果相较于其他模型较差,单独替换改进模型的某一部分均能提升检测准确度,同时采用本文所提的3 个改进方案能最大程度提升模型检测精度。

表2 为初始Faster R-CNN 算法优化选中内容后得到的mAP 值。由此可见,相较于原始Faster R-CNN 模型,加入ResNet101+FPN 后检测精度提升了7.53%,在此基础上再加入ROI Align 或Soft-NMS 后精度分别提升8.07%、8%,结合本文所提3种改进方案后算法的精度提升10.58%。

由表3 可知,改进后算法的训练与测试时间相较于改进前的模型增加较少。具体为,训练时间增加了76min,测试时间由0.063s/张增加至0.067s/张,测试时间开销与原算法几乎保持一致。

为直观有效地观察改进后训练模型迭代过程,本文改进前后算法的训练与验证loss 曲线如图9 所示。由此可见,当迭代至80 个epoch 后各算法开始逐渐趋于稳定,初始Faster R-CNN 算法与改进后的算法训练和验证loss 分别降至0.48、0.31,通过分析损失函数收敛程度可确定改进后算法具有更好的网络训练效果。

Table 1 Comparison of partial prediction accuracy before and after algorithm improvement表1 算法改进前后部分预测精度比较

Table 2 mAP of models with different improvement schemes表2 不同改进方案模型mAP

图10 为3 类目标检测的平均准确率均值mAP。由此可见,根据本文方法改进后算法的mAP 值相较于改进前提升10.58%。

Table 3 Comparison of time consumption before and after algorithm improvement表3 算法改进前后用时比较

Fig.9 Loss function curve of the algorithm before and after improvement图9 改进前后算法损失函数曲线

Fig.10 mAPs of algorithm before and after improvement图10 改进前后算法mAPs

此外,由图11 可见基于本文改进算法的检测断裂扣件检测AP 值提升10.76%,移位扣件检测AP 值提升10.2%,脱落扣件检测AP 值提升10.79%,对3 类缺陷的检测准确率较高。

Fig.11 AP for all types of defective fasteners图11 各类缺陷扣件AP

本文通过比较Faster R-CNN 算法改进前后的检测效果,与YOLO 系列、SSD 算法的检测性能,根据mAP、检测速度这两个指标评价算法检测的优劣,具体结果如表4 所示。由此可见,本文算法相较于Faster R-CNN 算法在检测速度上减少0.72fps,但平均检测精度提升10.58%,虽然相较于SSD、YOLO 算法在检测速度方面存在一定的差距,但检测精度得到了显著提升。综上,根据本文方案改进后的Faster R-CNN 算法在检测扣件缺陷需求方面具有显著优势。

Tab.4 Comparison of detection results of different algorithms表 4 不同算法检测结果比较

4 结语

本文提出一种改进Faster R-CNN 方法应用于高速铁路铁轨弹条扣件的缺陷检测与提取,通过改良骨干网络、非极大值抑制算法及优化ROI Pooling 改进Faster R-CNN算法。实践表明,在时间开销相差不大的情况下算法的平均检测精度提升10.58%。

然而,由于试验样本多样性较少,样本并未被垃圾、石块、雨雪等遮挡,通过数据集缺陷增强手段难以达到类似效果。因此,下一步将采集更多带遮挡物或存在其他干扰条件的样本来检测算法的鲁棒性和效能。此外,本文所提方法相较于YOLO 系列、SSD 算法的检测速度仍存在进一步提升的空间。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!