铁路接触网主要部件检测方法
2022-10-17侯泽铭
闵 锋,侯泽铭+
(1.武汉工程大学 计算机科学与工程学院,湖北 武汉 430205; 2.武汉工程大学 智能机器人湖北省重点实验室,湖北 武汉 430205)
0 引 言
随着铁路相关技术的快速发展,我国的铁路总里程一跃成为世界第一。为保证铁路系统的安全运行,需要对接触网上主要部件的状态进行检测,其中需要检测的铁路接触网主要零部件有绝缘子、双耳抱箍、套管双耳、定位器底座、定位线夹、承力索底座。过去,主要依靠人工沿铁路线通过肉眼观察的方式来判断零部件的状态,在4C(接触网悬挂状态检测监测装置)装置推广应用后,将4C装置搭载在接触网检测车上,利用安装在接触网检测车车顶的28个角度不同的工业相机分别对接触网的不同角度拍摄高清图片,然后依靠人工对4C装置拍摄到的高清照片进行观察,从而进一步分析部件的正常与否。但依靠人工对图片进行分析,不仅需要多次反复缩放图片观察部件,而且由于长时间肉眼观察,容易造成视觉疲劳,导致损坏部件的漏检。因此需要一种准确的接触网主要部件的定位检测算法替代人工缩放查看图片。
随着深度学习技术的快速发展[1],各种目标检测算法不断被提出。目前主流的目标检测算法主要分为两种,一种是两阶段目标检测算法,如Fast RCNN[2]、Faster RCNN[3]等。这类算法特点是准确率较高,但是检测速度慢。另一种是单阶段目标检测算法,如SSD[4]、YOLOv3[5]、YOLOv4[6]等。单阶段算法将目标检测看作是回归问题,算法将整张图片作为输入,然后直接在图片的多个区域回归出目标的位置和类别信息。相比较两阶段算法,单阶段算法速度较快,但准确率稍低,尤其是对于小目标,漏检率较大。
本文针对4C装置拍摄的铁路接触网图像数量多,分辨率高,需要较快检测速度的实际情况,改进了YOLOv4-tiny算法。一方面,针对接触网图片尺寸大、冗余信息多的问题,本文采用图像预处理的方式裁减掉部分无用的背景信息。另一方面,通过改进YOLOv4-tiny的主干特征提取网络、特征融合层及输出特征图,达到一个准确率高、定位准确的铁路接触网目标检测算法。实验结果表明,本文改进的YOLOv4-tiny相比原算法,准确率大大提升,与单阶段最先进的目标检测算法之一YOLOv4相差不到1%,在模型大小和速度方面,相比YOLOv4有着较大的提升。
1 相关算法和网络结构
1.1 图片预处理
4C装置拍摄到的接触网图片尺寸为6600*4400,对于14号镜头得到的接触网全景图片,如图1(a)所示,其存在大量的黑色背景,一些主要部件,如双耳抱箍、套管双耳等,仅有图片的1%左右,由于图片大,目标小,在网络前向传播经过池化层的时候易导致小目标信息的丢失,最后致使目标的漏检。因此按照下列步骤,去除冗余的黑色背景,提高主要部件的相对大小[7,8],以解决小目标漏检率较大的问题。
(1)缩小图片至660*440,减少后期二值化、形态学运算和灰度投影的计算量。
(2)同一镜头所拍的图片中接触网大小、角度、明暗程度基本一致,对于14号镜头拍摄的图片而言,可以选择一个合适的阈值统一进行二值化。为保证接触网平腕臂和斜腕臂轮廓的完整性,尽可能不引入接触网支柱区域,最终选取90作为二值化阈值,二值化结果如图1(b)所示。
(3)对二值化后的图片进行开、闭运算。开运算可以消除噪音干扰,去除孤立的小点、毛刺,而使形状轮廓大体不变。闭运算能够填平前景物体内的小裂缝、间断和小孔,而使总的位置和形状不变。从二值化结果图可以看出,接触网的右侧是黑色背景,接触网左侧存在很多的类似噪声的区域,而上方则是输电线。这些小区域的存在会对下一步灰度投影造成干扰影响,从而导致边界位置分割不准确。因此对二值化的图片进行一次开、闭预算,尽可能去除这些区域。形态学处理结果如图1(c)所示。
(4)将上一步得到的图片进行垂直投影和水平投影,结果如图1(d)、图1(e)所示。根据垂直投影图,可以得到接触网的左右边界。根据水平投影图,可以得到接触网的下边界。在获取接触网的上边界时,由于接触网上方的输电线存在,左上方接触网支柱区域因材质和类型不同,形态学处理后的结果不统一,不能以0作为阈值截取上方边界,本文采用接触网右半部分的水平投影结果图,以投影结果平均值的1/3作为阈值自中而上遍历投影图截取上边界。在获得上下左右边界后,为保证截取到完整的接触网,在以上基础上边界扩大30像素。
(5)根据缩放倍数和上一步得到的边界值截取图片,结果如图1(f)所示。
1.2 YOLOv4-tiny算法
YOLO是继Fast RCNN和Faster RCNN两阶段检测算法之后一种新的端到端的单阶段的目标检测算法,其使用一个完整的卷积神经网络提取图像特征,并在网络的输出层对目标的位置和类别统一进行回归预测。算法将图片分成S*S个小网格,每个网格对于中心落在网格内的目标负责检测,最终预测出该目标的位置和置信度。相对于两阶段目标检测算法,YOLO并没有提前生成建议框,所以速度快。
YOLOv4-tiny是YOLOv4简化版,相比于之前任何简化的YOLO网络,YOLOv4-tiny无论是在准确率和运行速度上都有巨大的提升。其网络结构采用简化版的CSPDarknet53[9],主要由CBL结构和CSP结构组成,CBL层主要由卷积层、批归一化层和激活函数层组成,在主干网络中,CBL结构主要负责提取特征图信息和下采样,CSP结构将上一阶段输出的特征图分成两组,只用其中一组送入后续的卷积层,同时通过跨通道合并连接,进一步增加模型的鲁棒性和学习能力。简化版的YOLOv4网络结构层数少,在提取图像的特征时,提取能力不足,提取的高层语义信息稍差。在特征融合阶段,YOLOv4采用SPP[10](spatial pyramid pooling)和PAN(path aggregation network)[10]结构,对高层的语义信息和底层的颜色、纹理等特征进行充分融合。相比于此,YOLOv4-tiny为了保证算法的速度,舍弃了SPP结构,使用参数量少的FPN(feature pyramid networks)[12]融合结构,最终保留YOLOv4中两个较小的输出特征图,这就导致YOLOv4-tiny的参数量少,速度快,容易导致一些小目标的漏检和定位不准确。
1.3 修改特征融合网络和输出
在YOLOv4-tiny中,算法最后输出下采样32倍和16倍的13*13,26*26大小的两个特征图,其中小的特征图用来预测大的目标,大的特征图下采样倍数小,用来预测小的目标。但由于26*26的特征图仍是下采样16倍的结果,对于接触网中存在的一些小目标,如双耳抱箍而言,特征图中由于前面的多层池化和卷积,语义信息存在量大大减少,致使漏检率和误差率较大,因此本文改进YOLOv4-tiny的输出,在此基础上,增加一个下采样为8倍的52*52的输出特征图,以此改进原算法对于接触网中的小目标漏检误差大的情况。
SPP即为空间金字塔池化,算法最初提出是为了解决CNN输入图片大小固定的问题,从而避免图片的放大缩小及裁剪变形问题。SPP通过不同尺度的最大池化,可以增大感受野,获得图片的不同尺度的特征,可以提升模型对于空间布局和物体变形的鲁棒性,提高后期检测的准确率。在主干网络的最后,分别用1*1、5*5、9*9和13*13这4个尺度的最大池化核对主干网络输出的特征图进行池化,然后将池化特征图在通道维度拼接并经过1*1卷积降维、特征融合后,再送入后续结构。加入SPP结构可以获得接触网不同大小部件的特征,避免小目标信息的丢失,提高小部件的检测准确率。
在目标检测算法中,Neck部分最主要的作用是融合不同特征图的信息,最常用的就是FPN[13]。而YOLOv4-tiny4采用的就是FPN结构,FPN是自上而下逐步上采样并与下层的特征图进行相加融合,与FPN结构相比,PAN在上采样之后并不是输出相应的特征图,而是又增加了一步下采样操作与高层的特征图再次融合,这样通过上采样和下采样及两步特征融合,可以使不同尺度的特征融合更充分,使得网络模型更有表达力。
通过增加第3个尺度输出,可以减少小目标信息丢失,降低定位不准确,漏检问题[13,14]。通过增加SPP和PAN结构,提高低层的位置、形状等信息和高层语义信息之间的融合,可以使不同尺度的特征和不同层次的特征充分进行融合,提高模型的准确率、鲁棒性。与YOLOv4中的SPP和PAN结构不同的是,此处的SPP和PAN在卷积层通道数目上进行压缩,仅为前者的一半,尽可能降低结构的参数量。改进的网络结构如图2所示。
1.4 修改主干特征提取网络结构
简化版的CSPDarknet53主要由卷积层和池化层组成,与融入了残差结构和CSPNet[15]思想的CSPDarknet53相比,简化版的CSPDarknet53没有采用shortcut连接,而是使用了跨层的Concat操作替代原来的shortcut连接,同时舍弃计算量较大的Mish激活函数,使用计算量较小的Leaky Relu。在网络的深度上,前者38层,后者包含了162层。因此YOLOv4-tiny不需要占用大量的内存,计算速度快,对硬件的要求低。但由于网络结构简单,深度不足,对输入图像的特征无法充分提取,致使其准确率低。
在CSPDarknet53网络结构中,所有的卷积大小都为3*3,随着网络层数的增加,其提取到的特征越来越抽象,特征图中的每个位置对应的感受野也越来越大。为了避免一些小目标的特征随着感受野的增大而降低在特征图上的占比和丢失问题,本文将堆叠的残差结构中的3*3卷积改进为并列的卷积核分别为1*1,3*3和5*5这3个卷积,同时保留原结构中的Concat连接。3*3和5*5可进一步提取输入图像中较大目标的高级语义特征。1*1的卷积可以解决小目标信息在特征图上的丢失减少问题,同时实现信息的跨通道融合,提取更高的语义信息,通过Concat连接,可以进一步融合上一层特征,同时又可以提高小目标在特征图上的占比。由于5*5卷积和两个3*3卷积的感受野相同,但参数量大,导致运算速度慢,本文将5*5卷积改进为两个连续的3*3卷积,通过此连续结构,既能够保证感受野范围不减小,同时又减少了参数量,改进的结构如图3所示。
1.5 损失函数
本文改进的算法损失主要分为3个部分:置信度损失、分类损失和位置损失。其置信度损失和分类损失采用二元交叉熵损失,位置损失采用CIoU 损失。
其置信度损失如式(1)所示
(1)
分类损失如式(2)所示
(2)
位置损失如式(3)~式(5)所示
(3)
(4)
(5)
其中,RIoU是真实框和预测框的交并比,b和bgt代表预测框和真实框的中心点,p代表欧氏距离,C为同时可以覆盖真实框和预测框的最小包围框的对角线长度,w和h是预测框的宽高,wgt和hgt是真实框的宽高。
2 实验结果与分析
2.1 数据集及实验环境
针对目前国内没有公开的铁路接触网数据集,本文选取了1387张4C装置的14号相机拍摄的铁路接触网全景图片。在经过1.1节的预处理之后,使用LABELIMG程序对主要部件进行画框标记,制作VOC格式数据集。在画框标记时,为了避免中文标签,我们将图4中主要部件的中文名称转变为英文形式的标签,对应关系分别如下:平腕臂绝缘子(JYZ1)、平腕臂双耳抱箍(SEBG1)、承力索底座(CLSDZ)、斜腕臂绝缘子(JYZ2)、斜腕臂双耳抱箍(SEBG2)、斜腕臂套管双耳(TGSE1)、定位器底座(DWQDZ)、定位线夹(DWXJ)、定位区域套管双耳(TGSE2)。
为了验证算法的鲁棒性,本文采用225张5号相机,225张6号相机,225张8号相机和325张14号相机拍摄得到的总计1000张铁路接触网图片经过预处理后作为测试集,在测试时,为了加以区分,对不同部件用不同颜色的框进行识别标记,并在框的左上角给出部件的标签名称。
对于5号、6号相机分别拍摄的是接触网平腕臂区域和斜腕臂区域,角度差异小,且存在更多的冗余背景信息,采用预处理方式会进一步增加预处理时长,因此经过统计分析,采用直接切除的方式裁减掉多余区域,以提高部件的相对大小。
8号相机拍摄的是接触网支撑区域、定位区域,14号相机拍摄的是接触网全景区域,二者都是在接触网的上方、下方和右侧存在一定的黑色背景,因此采用1.1节的预处理方式裁去多余背景信息,以提高部件的相对大小。其中8号相机拍摄的图片二值化阈值为80。预处理结果如图5所示。
实验平台如下:操作系统Ubuntu 18.04,深度学习框架pytorch 1.2,CPU为i9-9900K,内存为32 GB,GPU为NVIDIA GeForce 2080S,显存为8 G,CUDA 10.0,cuDNN 7.6.5。
2.2 重新聚类Anchor框和数据增强
k-Means算法的评价标准是聚类簇中心与真实框的平均交并比,平均交并比越高,表明聚类的效果越好,为了使算法在先验框回归时达到最高的准确率,在训练开始前,使用k-Means算法针对此数据集重新聚类生成9个先验框,以对应输出的3个特征图。通过在此数据集上进行维度聚类,相比于人为预设的先验框,可以得到最为理想的先验框,使模型在训练时更加容易产生准确的预测框。其先验框分为[15,33],[19,39],[23,46],[29,36],[32,50],[63,54],[68,90],[68,67],[74,109]。
为了使模型泛化性能和鲁棒性更好,算法对归一化的图像做实时数据增强的随机预处理,包括随机改变图片大小、随机翻转、改变图片亮度等,同时,算法采用了Mosaic数据增强。Mosaic数据增强是在训练时随机读取4张图片,然后进行旋转和翻转等操作,最后将这4张图片按照一定比例组合成一张图片,通过此数据增强,可以降低模型对于目标出现位置的依赖性,进一步提高模型的泛化能力,提高模型对目标位置随机性的适应能力。
2.3 训练结果与分析
设置训练的初始学习率为0.001,迭代次数为300,批次大小为16,优化器选择自适应学习率参数更新算法(Adam),每次更新后的学习率衰减值设为0.0005,为了加快网络的训练速度,减少训练时长,在前150个epoch,本文采取对特征提取主干网络的参数进行冻结的训练方式,之后解冻参数训练至结束。训练损失曲线如图6所示。
本文改进了YOLOv4-tiny,为了验证改进算法的效果,对改进后的算法与单阶段目标检测算法YOLOv4、YOLOv4-tiny和两阶段经典目标检测算法Faster RCNN作对比实验。单阶段算法和两阶段算法统一采用416*416的输入大小。在目标检测算法中,为了定量分析改进网络的性能,本文采用平均检测精确度(mAP),模型大小,单张检测时间3个指标进行分析。结果见表1。为了体现本文算法在小部件上检测上的优势,对于图中的双耳抱箍、套管双耳等小部件,单独采用单类平均检测精确度(AP)进行分析,其结果见表2。
表1 实验结果对比
从表1可以看出,对比原算法YOLOv4-tiny,虽然速度有所下降,但改进的算法在准确率上提高了32.11%。由表2可以看出,针对接触网中的小部件,如双耳抱箍和套管双耳等小部件,其平均精确度大大提高,小目标漏检、定位不准确的问题得到改善,同时双耳抱箍的检测精确度超过YOLOv4。
表2 小部件结果对比
从表1可以看出,本文改进的YOLOv4-tiny准确率是96.56%,单张检测时间是0.006 s,模型大小为52 M。YOLOv4的准确率是97.06%,单张检测时间为0.012 s,模型大小为256 M。虽然改进的模型大小和速度较原算法略有下降,但是在准确率取得了大幅度提升。在模型的准确率上,本文改进的算法与单阶段最先进的算法之一YOLOv4相差不到1%,而在模型大小和运算速度上,都远远优于YOLOv4算法。相比较于两阶段目标检测算法Faster RCNN,本文改进的算法在准确率上高出9.75%,模型大小不到前者的1/2,在单张检测时间上不到前者的1/4。
综合以上实验结果可以看出,本文改进的算法不仅准确率相比原算法大大提高,而且和YOLOv4相差不到1%,同时在模型大小和检测速度上都优于YOLOv4,降低了硬件需求,基本满足实际运用中的高精度,高速度和低硬件成本的条件,为算法运用到实际提供了可能。
本算法仅仅在14号相机拍摄的铁路网全景图片上进行训练,但仍然可以检测出存在一定角度偏差的其它相机拍摄的接触网图片中的主要部件,部分实验结果如图7所示,从实验结果图可以看出,本文改进的算法不仅可以准确检测出各个主要部件,并且有着相当高的置信度,对于8号相机拍摄的图片而言,存在不完整的绝缘子部件,本算法依然可以检测。由此可以看出,在特征融合层通过高层的语义信息和低层的颜色、形状和纹理信息的融合,模型可以学习到部件的高级语义信息,不仅可以精确定位主要部件,而且对一些不完整的部件也可以识别检测。因此,本文改进的算法可以做到一个角度的图片训练,多个角度的图片检测识别,节约训练时长,同时又满足算法的鲁棒性要求。
测试图片在送入模型检测之前,还需要一定的预处理,相比较于模型在检测时用GPU加速而言,预处理是在CPU上计算,因此速度较慢。经过计算,测试集的1000张图片的预处理总时长为489 s,平均每张图片耗时0.48 s,因此在实际应用中,每张图片所需的平均时间为0.5 s左右,对比传统的人工手动缩放查看高清图片中部件的状态,本实验可以精确定位出铁路接触网主要部件,避免了人工缩放操作,为后序分析各主要部件的状态打下基础,同时又基本满足了铁路接触网检测的速度快,准确率高的要求。
3 结束语
综上所述,本文结合YOLOv4-tiny算法,利用图像预处理缩小图片尺寸,提高小部件在图中的占比和相对大小,避免网络前向传播时的信息丢失,增加输出特征图和改进主干特征提取网络结构,以促进网络低层和高层信息之间的融合。实验结果表明本文方法有效解决了原算法中目标漏检、定位不准确的问题,基本满足接触网检测的高精度、快速度的要求,且模型大小满足实际部署的硬件条件,同时模型具有较高的鲁棒性和泛化性。在接下来的研究工作中,将对定位检测到的各个部件进行缺陷识别研究。