基于YOLOv4和AlexNet的吊弦尼龙套缺失检测方法
2022-07-08张慧源孙木兰
张慧源,孙木兰,陈 豪
(株洲中车时代电气股份有限公司, 湖南 株洲 412001)
0 引言
吊弦是高速铁路弓网的重要组成部分之一,它连接着承力索和接触线,通过调节吊弦可以保证接触线与轨面间距离的一致性,改善接触悬挂的弹性,使得接触线与受电弓良好滑擦,从而提高电力机车的取流质量[1]。目前国内的吊弦主要分为可调式整体吊弦和整体吊弦(刚性/柔性)两大种类。刚性整体吊弦由尼龙套、铜棒(吊弦本体)和吊弦线夹等构成,其中尼龙套有着防止承力索载流的作用,这种类型的吊弦被广泛应用于广佛肇、广深港高铁线路。在高铁运行过程中,吊弦既要承受列车高速运行时的冲击、振动和电流的热侵蚀,又要经受日晒、酸碱环境等恶劣条件的考验,导致吊弦尼龙套有时会出现破损和缺失的现象,致使吊弦与承力索载流而形成电位差,存在重大安全隐患,甚至可能导致承力索烧损[2]。
刚性整体吊弦的故障模式主要分为3种:刚性吊弦断裂、刚性吊弦脱落和绝缘套磨损丢失[3]。长期以来,吊弦异常都是通过人工巡视的方法进行检测,存在巡检周期长、效率低下、容易漏检等问题[4]。随着列车摄像头应用的普及,基于图像处理技术的非接触巡检方法也应运而生[5]。文献[6]从时频分析角度提取统计特征,再利用分类算法对接触网吊弦进行故障检测。文献[7]以接触网系统图像为研究对象,提出了一种将深度可分卷积与目标检测网络相结合的吊弦故障检测方法。文献[8]提出一种长短时记忆卷积神经网络(convolutional neural network-long short-term memory, CNN-LSTM) 和CNN-LSTM-Attention相融合的网络模型,并在网络训练过程中使用贝叶斯优化方法进行超参数选择,从而实现对吊弦断裂和松弛故障的检测。文献[9]提出通过Faster R-CNN方法定位吊弦位置后再利用传统图像识别算法对吊弦状态进行检测。文献[10]利用胶囊网络模型和Chan-Vese(简称“CV”)模型对吊弦和绝缘子进行识别定位和故障分类。文献[11-12]利用YOLOv3定位吊弦并通过SqueezeNet对吊弦松弛、断裂的异常状态进行判断。文献[13]通过基于卷积神经网络的端点定位算法对吊弦两端进行定位,然后利用直线检测算法实现吊弦断裂故障的检测。
随着检测数据暴发式增长以及计算机硬件和卷积神经网络技术的发展,基于深度学习的计算机视觉技术逐渐受到铁路科研工作者的关注,也被广泛地应用到弓网智能检测系统中,如吊弦松脱检测和定位器检测[14]。然而大多数关注点都侧重于吊弦整体,对吊弦尼龙套的关注甚少。这一方面主要是因为“尼龙套缺失”这种小目标往往依赖于精妙的算子,需要开发者具有丰富的技术积累以及大量的开发时间来进行尝试,而且高速列车上镜头抖动造成的图像模糊以及接触网所处的复杂背景也会引起算法鲁棒性不够的问题;另一方面,由于尼龙套缺失样本较少、单一深度学习的卷积神经网络推理的局限性等原因,采用深度学习方法同样没能很好地解决类似尼龙套这样的小目标检测问题。为此,本文采用“先检测,再分类”的方法构建了一种吊弦尼龙套缺失检测模型,介绍了尼龙套缺失检测方案框架,详细描述方案中所述吊弦定位、小目标尼龙套区域检测以及尼龙套状态识别算法原理和检测过程,并采用真实样本验证方案的可行性和准确性。通过这种方法,可以避免单一目标检测算法对小目标检测识别率低的缺陷,并且通过简单的分类网络,在避免人工提取分类算子复杂性的同时也能保证算法的计算效率,满足实际运用中的实时性要求。
1 吊弦定位及尼龙套状态检测
为了实现尼龙套区域定位,本文首先使用YOLOv4目标检测网络对吊弦这一较大目标进行检测,然后利用吊弦与尼龙套物理位置固定这一特点计算出尼龙套区域,再将裁剪出的尼龙套区域使用数据增强方法提高数据质量,最后利用AlexNet分类算法来判断尼龙套状态,从而实现尼龙套的缺失检测(图1)。
图1 尼龙套缺失检测流程Fig.1 Flow chart of missing nylon bush detection
1.1 基于YOLOv4的吊弦检测
YOLO算法由Joseph Redmon于2015年提出,2020年4月已发展到v4版本,其网络模型结构如图2所示。
图2 YOLOv4 网络结构[15]Fig.2 Structure of YOLOv4[15]
YOLOv4[15]由 Alexey Bochkovskiy 提出,其使用跨阶段部分链接网络CSPDarknet53[16]作为骨架网络(backbone),“SSP+PAN”作为特征增强器(neck),并沿用YOLOv3[17]的头部网络(head)。其中,CSPDarknet53是具有更大感受野、更大参数的模型,可以更好地提取目标特征;而“SSP+PAN”特征增强器可以更好地放大由backbone提取出的特征;YOLOv3的head可以精确地对目标进行种类分类和区域回归。除了使用更加先进的整体网络,YOLOv4中还添加了许多小技巧来增加目标检测的准确率,如CutMix和马赛克数据增强的外在引入技巧,Mish激活函数、跨阶段部分链接(cross stage partial,CSP)等网络改进技巧,CIoU损失函数、DropBlock正则化等外在检测器引入技巧,空间金字塔池化(spatial pyramid pooling,SPP)模板等检测器网络改进技巧。
吊弦检测过程包括视频抽帧、图像预处理、图像标注以及基于YOLOv4的模型训练和目标检测,如图3所示。
图3 吊弦检测流程Fig.3 Flow chart of dropper detection
1.2 基于YOLOv4的尼龙套区域定位
根据吊弦检测模型,检测吊弦位置以及吊弦和尼龙套的几何关系,定位尼龙套位置,由此得到尼龙套区域的左上(L,U)和右下(D,R)两个对角坐标。为提高数据的多样性,在感兴趣区域(region of interest,ROI)提取过程中进行随机裁剪,如式(1)~式(4)所示。图4为随机截取的尼龙套区域示意图。
图4 尼龙套区域示意图Fig.4 Illustration of nylon brush
式中:(L,U)——尼龙套区域的左上角位置坐标;(D,R)——尼龙套区域的右下角位置坐标;(x,y)——吊弦矩形框的中心点坐标;h和w——吊弦矩形框的长和宽;γ——在一定范围内随机生成的浮点数。
1.3 基于AlexNet的尼龙套分类模型
在深度学习技术发展过程中,出现了很多经典的分类网络,如首个卷积神经网络LeNet[18]、标志现代图像分类技术开始的AlexNet[19]以及通过将网络之间前面所有层与后面层密集连接来提高分类性能的DenseNet[20]等。本文根据吊弦与尼龙套的几何关系定位尼龙套区域,通过随机截取、旋转和缩放等方法进行数据增强,以此提高数据量和数据多元性,解决数据不平衡和单一性问题,然后利用AlexNet网络建立二分类模型,判断尼龙套是否缺失。
AlexNet是2012年由Alex Krizhevsky和Ilya Sutskever等人提出的一种卷积神经网络。AlexNet网络共有5层卷积层及3层全连接层,网络结构如图5所示。该算法创新地在第一层优化了传统的卷积神经网络,使用11×11大卷积核代替了5×5小卷积核,这样可以更快地缩小图像尺寸和获得尺度合适的特征图;在激励函数上首次使用了ReLU函数,其收敛速度会比Sigmoid/tanh函数的快很多;使用了重叠池化技术,有效避免了过拟合。
图5 AlexNet结构图[19]Fig.5 Structure of AlexNet[19]
2 实验过程及实验结果
本实验首先对吊弦尼龙套正、负样本进行清洗和标注,然后选取不同的网络参数对YOLOv4网络进行训练和测试,得到最佳的吊弦尼龙套区域定位模型。除此之外,还详细描述了数据增强的过程及其对分类效果的提升程度,并对经典分类网络LeNet、DenseNet与AlexNet的实验结果进行了分析比对,从而得到最有效的分类模型。
本文应用GeForce RTX 2080Ti显卡进行加速计算,YOLOv4及AlexNet依赖的软件环境中跨平台计算机视觉和机器学习软件库OpenCV[21]的版本为3.4.0,运算平台CUDA版本为10.0,深度神经网络库CUDNN[22]的版本为7.5.0。
2.1 吊弦检测
2.1.1 吊弦检测图像预处理及标注
本次实验数据来自2017年到2020年的CRH车型的3C弓网检测视频,共750 000帧图像,其中尼龙套缺失的负样本13帧。
由于图像存在着冗余性高、环境复杂甚至多余的因素,需要对图像进行预处理。本文采用感知哈希值来对图片进行去重处理,具体如下:
(1)缩小尺寸。将图片尺寸缩小到8×8,总共64个像素;去除细节信息,只保留结构、明暗等基本信息。
(2)简化色彩。将缩小后的图片转为64级灰度。
(3)计算平均值并比较像素的灰度。计算所有像素(64个)的灰度平均值,将每个像素的灰度与平均值进行比较,大于或等于平均值记为1,否则记为0。
(4)计算哈希值。将第三步的比较结果组合在一起,就构成了一个64位、由0和1组成的整数。这串64位的整数就是图片的哈希值。
(5)筛选图片。根据哈希值开始筛选图片,具体方法是看64位中有多少位是不一样的。在理论上,这等同于计算汉明距离[23]。不相同数据位的数量如果未超过阈值,说明两张图片很相似;如果大于阈值的两倍,则判断为两张不同的图片。阈值在一般情况下设定为5。
(6)剔除遮挡场景。为了保证训练图片具有足够的弓网信息量,训练集和测试集还需要剔除列车经过隧道、站台等地方时接触网被遮挡的场景。
经筛选,最终得到10 000帧有效数据。本次实验从有效数据中随机选取8 000帧作为训练集,2 000帧为测试集。
2.1.2 吊弦检测模型训练
本实验YOLOv4网络的总训练次数为8 000次。随着训练次数的增加,损失函数逐渐变小,如图6所示。大约训练到1 600次时,下降速率减少并开始逐渐收敛。损失函数平均值在0.309 0,训练时间为7.92 h。
图6 YOLOv4训练损失函数Fig.6 Loss function of train based on YOLOv4
2.1.3 吊弦检测测试结果
随着置信度的提高,接触网吊弦检测准确率逐渐提高,召回率逐渐降低,基于YOLOv4的吊弦检测效果见表1。考虑到精确度和召回率的均衡,选择0.1作为模型的置信度阈值,网络训练模型的超参数batch,width,height,channels,momentum,decay,learning_rate,max_batches分别为64,416,416,3,0.949,0.000 5,0.001,12 000。
表1 基于YOLOv4的吊弦检测效果Tab.1 Results of the dropper detection based on YOLOv4
平均精度(average precision,AP)是反映吊弦坐标检测值与真实值之间差距的评价指标。由表2可以看到,在交并比(intersection over union,IoU)阈值为0.5时,AP为0.82,这说明吊弦坐标的位置准确率较高。如图7所示,该模型能较精确地识别出图像中所有未被遮挡的吊弦,保证了尼龙套区域分类模块输入的准确性。
表2 基于YOLOv4的吊弦检测AP指标Tab.2 AP of the YOLOv4 based dropper detection
图7 吊弦检测结果示意图Fig.7 Illustration of dropper detection
2.2 尼龙套缺失检测
由于正、负样本数量严重不均衡,为提高模型的准确度和鲁棒性,需要进行数据增强处理。本文使用的数据增强方法包括几何变换、旋转变换、缩放变换、翻转变换和注入噪声等,效果如图8所示。可以看出,数据增强后,尼龙套缺失区域的形状、尺寸和清晰度的多样性有所增强,有效模拟了实际故障的形态。经过数据增强后样本量的变化如图9所示。
图8 数据增强示意Fig.8 Illustration of data augmentation
图9 数据增强前后样本数量对比Fig.9 Comparison of sample size before and after data augmentation
为检验数据增强的效果,基于AlexNet分类网络对样本增强前后的分类结果进行了比较。同时,还对经典网络LeNet、DenseNet与AlexNet的分类结果进行了分析比对。表3示出数据增强前后的AlexNet分类网络性能的变化。经对比分析发现,数据增强后AlexNet分类准确率为84.1%,准确率提高了约21%,而尼龙套缺失检测准确率更是提高了约55%。
表3 数据增强前后性能对比Tab.3 Characteristic comparison before and after data augmentation
本文还对LeNet,DenseNet与AlexNet分类网络在尼龙套缺失检测中的性能进行了比较。在相同参数下,3种分类网络的测试结果如表4所示,其中batch_size,input_size,max_epoch,GPU,weight_decay,learning_rate参数分别设为32,64,80,1,0.000 5,0.01。可以看出,相比之下AlexNet有着更高的准确率和更为简单的网络结构。
表4 AlexNet,LeNet与DenseNet分类网络的性能对比Tab.4 Characteristic comparison among AlexNet,LeNet and DenseNet
3 结语
为解决3C弓网检测中尼龙套缺失这种小目标检测难度过大、精度不高的问题,本文提出一种将YOLOv4目标检测算法和AlexNet图像分类算法相结合的接触网吊弦尼龙套缺失检测方案。其通过3C弓网检测装置获取视频数据并训练YOLOv4模型,以识别出图像中吊弦的位置,之后通过AlexNet算法对尼龙套是否缺失进行分类。实验结果显示,采用这种先检测再分类的方法,能有效解决尼龙套缺失检测过程中存在的误判、漏判问题。
目前可以用来训练和测试模型的负样本都过少,在实际运用中可能会遇到训练模型中没有的复杂情况,由此导致误报的发生。后续,一方面希望可以通过扩充负样本的数量,探索出更好的数据增强方法来提高算法的鲁棒性和稳定性;另一方面希望样本多元化,以此提高识别场景的广泛性,使模型可以识别如夜间道路、隧道等更加复杂的场景。