基于OSE-dResnet网络的列车底部零件检测算法*

2022-04-21 04:43:16李利荣王子炎杨荻椿巩朋成
计算机工程与科学 2022年4期
关键词:特征提取残差卷积

李利荣,王子炎,张 开,杨荻椿,熊 炜,巩朋成

(1.湖北工业大学电气与电子工程学院,湖北 武汉 430068;2.湖北工业大学太阳能高效利用湖北省协同创新中心,湖北 武汉 430068)

1 引言

经过多年的发展,目标检测技术有了广泛的应用,期间涌现出了许多经典的目标检测算法。目前针对列车部件的检测方法可分为基于传统的视觉检测方法和基于深度学习的检测方法。在传统检测方法中,Kilian等人[1]采用中值滤波对图像去噪,再通过边缘检测算法结合提取的部件特征对机车闸瓦等部位进行检测,取得了良好的检测效果。针对列车底部部件形状复杂难以检测这一问题,谢冠星[2]提出了一种改进的SIFT(Scale-Invariant Feature Transform)特征点检测算法,在增加了列车底部部件边缘梯度变化明显的特征点数量的同时减少了部件平坦区域检测的特征点数量,提高了特征点匹配的准确度,有效提升了部件识别精度。Zhang等人[3]提出了一种基于局部二值模式LBP(Local Binary Patterns)和Gabor-GA(Gabor Genetic Algorithm)的优化理论列车中心板螺栓检测方法,首先将不同尺度的多通道Gabor小波作用到图像上,再通过遗传算法对每个Gabor通道得到的权值进行优化,最后将加权后的特征进行串接并通过支持向量机进行分类。该方法提供了一种新的优化思路,在一定程度上提升了检测性能。Sun等人[4]基于图像金字塔模型和邻近传播理论提出了一种快速自适应马尔可夫随机场算法,实现了对列车空气制动系统、转向架和紧固螺栓的自动检测。上述方法虽具有一定的检测效果,但大多需要经过人工预处理提取相应的部件特征,有一定的局限性,且在列车底部这样的复杂场景中没有较好的泛化性能。

近几年,深度学习得到迅速发展,越来越多的研究者采用深度卷积神经网络CNN(Convolution Neural Network)进行目标检测。与传统检测方法相比,深度卷积神经网络可以通过增加卷积网络层数来获得更深层次的语义信息,同时可以通过引入更多高维特征和尺度信息来提高检测精度。目前,基于深度学习的目标检测大致可以分为一阶段检测网络和二阶段检测网络2个分支。Girshick等人[5]最先提出的R-CNN(Regions with Convolutional Neural Network feature)目标检测网络是最典型的二阶段检测网络,将分类模型运用到目标检测中,分类模型的部分网络层作为骨干网络进行特征提取。舒娟[6]提出了一种基于深度学习的车辆零部件检测方法。该方法以Faster R-CNN[7]为基础网络框架,并在此基础上采用多尺度和密集采样策略生成候选区域,在提升检测性能的同时降低了网络复杂度。吴建雄[8]提出了一种基于卷积神经网络的机车部件检测方法,在骨干网络基础上增加了一个角度距离分支网络,提高了网络对全局特征的提取能力。Kumar等人[9]提出将Resnet(Residual network)[10]残差网络嵌入Faster R-CNN中,有效提升了对遥感图像的检测精度,同时也提高了检测速度。相较于二阶段的检测网络,一阶段的检测网络没有候选区域生成步骤,而是直接预测具体类别,并进行边框回归,在速度上有明显的提升。针对一阶段检测器没有候选框生成导致的正负例样本和难易样本不平衡的问题,Lin等人[11]提出了Retinanet网络,引入Focal Loss损失函数抑制易分负样本梯度,有效平衡了正负样本数。Xin等人[12]改进了损失函数的计算方法,提出了XIoU Loss(X-Intersection over Union Loss)损失函数,并针对不同网络模型进行了实验对比。结果表明:引入新的损失函数对列车底部部件的检测效果有较大提升。Redmon等人[13]提出了YOLOv3(You Only Look Once v3)算法,在骨干网络中加入残差模块,以解决网络过深带来的梯度问题,并融入多尺度特征进行检测,在保证检测速度的同时,进一步提升检测精度。受启发于YOLO系列和残差网络的成功,郝旭政等人[14]在此基础上提出了一种改进的深度残差网络行人检测方法,有效地降低了定位误差。郝骏等人[15]针对低对比度下的运动目标提出了一种基于YOLO与残差网络算法的改进检测算法,有效提升了检测速度并大幅度降低了漏检率。上述文献是目前实际运用较多的检测网络,从中发现引入残差模块可以给网络性能带来极大的提升。

本文根据机车底部零件分布的复杂性,以残差网络Resnet50为基础,提出了一种基于OSE-dResnet网络的列车底部零件检测算法,设计了一种改进后的d-Resnet(detection Residual Network)网络,并在该网络中嵌入OSEnet(Odd Squeeze-and-Excitation networks)模块,增强特征提取性能;同时采用特征金字塔结构[16]进行不同维度的特征融合,使网络能够学到更加丰富的低维特征和高维特征,更加精确地检测到车底零件。实验结果显示,本文算法对车底部件的检测效果有较大的提升。

2 算法整体框架

目前大多数基于深度学习的目标检测模型都是采用Resnet50作为特征提取网络。原始的Resnet50网络主要由卷积模块(conv block)和恒等模块(identity block)组成,其中conv block用于改变特征维度和增大感受野;identity block则用于加深网络,整个网络共有50层。本文所提出的列车底部零件检测算法整体结构如图1所示,主要由特征提取模块(P1~P7)、特征融合模块(C3~C7)以及分类和回归模块组成。其中,特征提取模块为残差模块,起到提取图像特征的作用;特征融合模块中使用的是经过上采样与特征拼接后的特征。本文在Resnet50结构基础上,对特征提取模块做了一些改进设计,在原始的Resnet50的结构上增加了2层额外的特征层,同时在此基础上引入了注意力机制,并在特定的模块上引入了2条传输通道,这些改进大大提高了目标检测的性能。

Figure 1 Overall structure of the proposed algorithm

2.1 特征提取模块

本文采用在Resnet50基础上改进后的d-Resnet结合OSEnet作为特征提取网络,称其为OSE-dResnet网络。原始的Resnet50网络共有4个阶段,每个阶段包含的残差模块数量分别为3,4,6,3,每个残差模块由1个conv block和若干identity block组成,conv block和identity block结构如图2所示。

Figure 2 Unit module of Resnet50

为了增加特征提取的丰富性和提高准确度,本文在Resnet50的基础上增加了P6和P7阶段(见图1),网络一共有56层,并且在每个模块的identity block中引入了2条传输通道。如图3所示,原始的identity block由2个大小为1×1的卷积块和1个大小为3×3的卷积块组成,改进后的identity block将第1个1×1卷积块的输入和输出同3×3卷积块的输出进行拼接操作(Concatenate,见图3中C连接),然后将拼接后的结果作为第2个1×1卷积块的输入,再进行卷积操作,将不同特征层进行了拼接,实现了不同特征的强化多重提取,提升了整体效果。另外,为了充分考虑特征通道之间的关联性,使网络能够提取到更有价值的特征,在每个改进后的identity block中嵌入OSEnet模块,二者的组合方式如图3所示。

Figure 3 Unit module of OSE-dResnet

OSEnet模块是在SEnet[17]基础上改进而来的,与SEnet一样,OSEnet分为压缩和激励2个部分,采用特征重标定的方式融合特征通道,压缩部分采用自适应全局池化,将维度为C大小为W×H的输入压缩到维度为C大小为1×1的输出,这个输出特征融合了全局信息。SEnet通过2个全连接层对特征维度进行缩放,第1个全连接层使用参数r将维度为C的输入变成维度为C/r的输出,然后通过第2个全连接层还原到初始维度,期间会进行降维,这将导致信息损失;OSEnet将激励部分原有的2层全连接层替换成1个卷积核大小为1的卷积,在一定程度上减少了信息丢失,同时减少了计算量,使得网络运行效率得到提升。OSEnet结构如图4所示。

Figure 4 Structure of OSEnet

2.2 特征融合模块

特征融合模块对特征提取模块的结果进行融合,通过将拥有不同分辨率和不同语义信息的特征通道相加来提高网络对不同大小物体的检测效果。首先对P7阶段的计算结果进行一次降维,得到C7,将特征维度由8×4×2 048变成8×4×256;再对C7采取特征上采样操作,将C7由8×4×256维变为16×8×256维度;最后对P6进行降维,并将运算结果与C7上采样的结果相加得到C6。同理,将P5~P3的特征层数分别进行降维,再与上一层上采样的结果相加,对应得到C5~C3的结果。特征融合只是在特征提取网络的基础上引入传输通道,在提升模型效果的同时不会增加参数量,且计算量的少量增加也可忽略。

2.3 分类和回归

经过特征融合后会得到大小不同但维度相同的5类特征,这5类特征经过分类网络及回归网络处理后将得到检测结果。分类网络包括4个维度为256的卷积核和1个维度为N×K的卷积核,这里的K为输入特征层所拥有的先验框的数量,N为所要检测目标的种类个数,特征经过N×K的卷积核处理后输出分类结果。回归网络包括4个维度为256的卷积核和1个维度为4×K的卷积核,输出结果是每个先验框坐标的变化情况,将先验框与其变化情况相结合得到预测框位置信息。经过分类和回归网络处理后会得到多个预测框,最后筛选出得分大于给定阈值的预测框,利用这些框的位置信息和得分进行非极大值抑制处理得到最终检测结果。

2.4 先验框

为了提升检测性能,在训练网络之前使用K-means[18]聚类算法得到适合本文数据集的4种不同大小的先验框,并根据不同特征层进行尺寸调整,每个特征层都可以将输入图像分切为与该特征层长宽对应的网格。

对特征融合模块的5层输出特征图,由于其他特征层尺寸过大,本文只列举了最后2层特征层,如图5所示。其中,图5a表示输入图像,图5b和图5c分别表示特征层C6和C7中先验框的分布情况,特征层C7的尺度为8×4,所以整个图像会被分为8×4个网格,然后以每个框的中心建立4个通过聚类得出的形状不同的先验框,其他特征层同理。

Figure 5 Structure of prior box

2.5 损失函数

模型训练阶段需要通过最小化损失函数来提升模型整体性能。本文所采用的损失函数包括分类损失部分和回归损失部分,本文将二者结合作为总的损失计量。

本文设计的检测模型属于一阶段检测模型,利用先验框来提升检测性能,但同样会出现正负样本以及难易样本比例失衡的现象,故本文采用Retinanet网络所使用的Focal Loss作为模型的分类损失函数。与交叉熵损失函数相比,Focal Loss在它的基础上引入了权重系数αt,通过调整αt的大小来降低负样本对训练造成的影响。同时,引入系数(1-pt)γ来调整易分类样本和难分类样本间的权重,增加了难分类样本对损失值的贡献。损失函数定义如式(1)所示:

FL(pt)=-αt(1-pt)γln(pt)

(1)

其中,pt表示样本预测为正的概率,当γ取值为2,αt取值为0.25时的实验结果为最优。

回归损失函数采用Smooth Loss损失函数,其定义如式(2)所示,其导数形式如式(3)所示:

(2)

(3)

其中,x表示预测值与真实值之间的差距。Smooth Loss损失函数能够限制梯度大小,结合了L1Loss和L2Loss的优势,使得损失函数在0点处也存在导数,网络更具鲁棒性。从式(3)中可以看出,当预测框与实际框的差距过大时,不会导致梯度过大,当二者差距变小时,也能保证足够小的梯度。

总的损失函数如式(4)所示:

Loss=FL(pt)+SmoothL1(x)

(4)

3 数据处理及实验分析

3.1 数据处理

本文所使用的数据集由武昌铁路局提供。原始的数据集通过架设在铁轨边的高清线阵相机拍摄获得,每幅图像的宽为2 048个像素,而高则为29 956~39 956个像素不等,无法直接输入网络进行训练,需要对原始数据进行裁剪修正。裁剪方式如式(5)所示:

h=(w-h1)n+(n-1)h1

(5)

其中,h和w分别表示原始图像的总长度和宽度,h1表示裁剪出n幅图像后多余矩形的高。这样的裁剪方式十分简单,适合运用在长宽比很大的图像上。裁剪原则是保持图像宽度不变,对不同图像进行高度上的裁剪。为了使计算方便,本文首先将输入图像统一裁剪为2 048×4 096尺寸大小,由于整体数据集的限制,裁剪后的数据量不够且含有部分无目标图像,需要对数据集进行扩充,经过平移、转置、镜像和旋转等几何变换将数据集由原来的5 123幅扩充到了11 747幅;然后将处理后的数据按比例划分,其中8 037幅图像组成训练集,3 710幅图像组成测试集;最后利用标注工具对每幅图像中的5类目标进行标注。

3.2 参数设置

本文所有实验均在Ubuntu 16.04和Pytorch深度学习框架环境中进行,显卡选用NVIDIA RTX 2080ti,处理器为英特尔i7-8700(3.2 GHz),内存大小为16 GB。训练过程中,对数据进行50轮训练,由于图像尺寸太大,受内存限制,每次输入网络训练的图像数为4,迭代次数为20万次,网络采用Adam优化器,网络初始学习率设为1×10-4。

3.3 实验结果分析

实验对列车底部总共5类零件做检测分析,共选用8 037幅图像作为训练集,其中包括2 044个ZDL1(I型车轴)、2 132个Label(车标)、2 162个Hook(挂钩)、2 304个Lift-rod(活塞杆)和3 283个ZDL2(II型车轴)。随机挑选了3 710幅图像作为实验的测试集,其中包括625个ZDL1、702个Label、867个Hook、916个Lift-rod和1 075个ZDL2。

为了验证本文设计的特征拼接融合的有效性,进行了3组消融对比实验,采用3种不同的网络框架,第1个是本文提出的结合d-Resnet和OSEnet的网络框架(OSE-dResnet),第2个在第1个的基础上去掉特征拼接后的网络框架(OSEnet),第3个是原始的Resnet50网络框架,表1展示了这3种网络框架对上述5类不同零件的检测结果。

从表1的检测结果可以看出,嵌入特征拼接和OSEnet模块的网络框架在不同类别以及平均精度上均达到最优。在同时嵌入OSEnet模块的基础上,有特征拼接网络的平均精度要高于没有特征拼接的,嵌入OSEnet模块后的网络要比原始Resnet50网络的准确度高。

Table1 Result of melt expriment

另一方面,为了更明显地体现本文算法的性能,将本文算法与目前工业运用较多的几种算法进行性能比较,采用平均准确度均值mAP(mean Average Precision)和FPS(Frames Per Second)指标来衡量各算法性能,表2展示了不同算法的比较结果。

Table 2 Performance comparison of different algorithms

表2展示了SSD(Single Shot multibox Detector) 、YOLOv3、Faster R-CNN、RPDet(point set RePresentation for object Detection)[19]、FCOS(Fully Convolutional One-Stage object detection)[20]和本文算法的测试结果。从表2中可以看出,本文提出的检测算法准确度最高。这6类算法的骨干网络均以残差模块为基础,其中,本文算法在检测速度和检测准确度上均高于Faster R-CNN二阶段检测算法的,检测精度要高于FCOS的,总体性能良好。但是,本文提出的检测算法在检测速度上还有待提高,这也是后续继续研究的目标。

3.4 可视化结果对比

为体现网络的检测性能,同时对本文算法和FCOS的检测结果做可视化处理,可视化结果如图6所示,图6a为本文算法的检测结果,图6b为FCOS检测的结果。左上角有检测类别和置信度值的矩形框为检测结果,其它矩形框为实际标注结果。由检测结果可见,FCOS检测存在漏检和错检,且检测框与实际框的重合度不高,而在同样的图像条件下,本文算法的检测框与实际标注框高度吻合。

Figure 6 The visualized results

4 结束语

本文提出一种基于OSE-dResnet网络的列车底部零件检测算法,在残差网络基础上通过引入特征拼接实现了特征信息互补,同时引入注意力机制,通过融合各个特征通道,获知各通道的重要程度,再进行权重分配,从而提升了重要特征层的权重。实验结果表明,本文所提出的算法针对列车底部零件取得了更高的检测精度。未来的工作将进一步研究如何优化网络,降低网络复杂度,提升特征提取效率,提高整体检测性能。

猜你喜欢
特征提取残差卷积
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
自动化学报(2019年6期)2019-07-23 01:18:32
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
基于Daubechies(dbN)的飞行器音频特征提取
电子制作(2018年19期)2018-11-14 02:37:08
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法
平稳自相关过程的残差累积和控制图
河南科技(2015年8期)2015-03-11 16:23:52
基于MED和循环域解调的多故障特征提取