基于改进YOLOv4 算法的动车库接地杆状态检测
2022-06-02刘强李鹏邹一鸣熊歆斌陈金源郑衡
刘强,李鹏,邹一鸣,熊歆斌,陈金源,郑衡
(1.五邑大学 轨道交通学院,广东 江门 529020;2.北京铁道工程机电技术研究所股份有限公司,北京 100071)
目前,动车组检修作业多采用人工登顶列车作业的方式. 在动车检修作业前,需对检修库内对应作业股道接触网断电,并且在检修库两端手动挂接接地杆、在重连端(股道中部)电动挂接接地杆[1];作业完成后,需摘除已挂接的接地杆为接触网供电. 在工人申请登顶作业前以及检修作业完成后,均需要调度人员在调度室通过摄像头一一确认各接地杆的挂摘状态并记录,不仅耗时费力,而且存在人为不确定因素. 据合作动车段统计,自动车所运营以来,已多次发生因人员确认重连端接地杆挂接状态错误而导致接触网通过接地杆大电流对地放电或带负载断电而损坏供电设施的事故,造成了巨大的损失.
目标检测技术通过图像处理算法对目标进行特征提取,再根据提取的特征区分出目标. 传统的图像处理技术识别速度很快,但是,该类算法受环境干扰大,对于背景复杂目标的特征提取非常困难,而且目标发生形态变换、光照变化等情况时,其识别精度就会大大降低甚至需要重新设计检测算法. 与传统方法相比,深度学习算法不需要人工提取目标特征,神经网络会独立地学习相关属性,对于以不同形式出现的目标或特征,以及目标背景、环境的变换都有很强的适应能力,不需要针对每个可能的特性进行专门的训练,提高了检测算法的鲁棒性. 现阶段提出的基于深度学习的目标检测方法主要分为两类,一类为 Two-stage 方法,该方法将目标检测分为定位和分类两个步骤,代表算法有R-CNN、Fast R-CNN、Faster R-CNN 等. 另一类为One-stage 方法,该方法直接将定位和分类融合在一起,实现端到端计算,代表算法有YOLO、SSD、Retina-Net 等[2]. Two-stage 方法会对每一个可能包含目标的区域进行检测,其识别准确度较高,但大量的计算会影响网络的检测速度,在实际工程运用中达不到实时检测的要求. One-stage 方法牺牲了少量的检测准确度,但大大提高了检测速度,检测效率良好[3]. 鉴于检修库内接地杆所处背景环境比较复杂,接地杆状态也会发生改变,传统的图像处理方法不能很好地对接地杆进行检测,本文采用改进的深度学习YOLOv4 算法作为重连端接地杆的状态检测算法,以期对检修库内重连端接地杆接地状态进行准确检测,从而保证工人施工以及动车段内设备的安全.
1 YOLOv4 算法原理
YOLOv4 算法是对YOLOv3 算法改进优化而来的,其网络模型结构如图1 所示. YOLOv4 算法的主干特征提取网络(Backbone)部分将CSPNet 网络结构与Darknet53 中的残差模块结合在一起,以增强网络的学习效率、减少计算参数量,故检测精度比YOLOv3 网络有很大的提升[4]. Neck 部分采用空间金字塔池化(Spatial Pyramid Pooling,SPP)[5]、特征金字塔(Feature Pyramid Net-works,FPN)[6]和路径聚合网络(Path Aggregation Network,PAN)方式[7]. SPP 模块的加入提高了图像的尺度不变性,降低了过拟合,使得主干特征的接收范围增大,显著分离了重要的上下文信息.FPN+PAN 结构,是通过FPN 将高层的强语义特征传递下来,以增强了整个特征金字塔;在后面添加一个自底向上的金字塔,将低层次的强定位特征传递上去,弥补了金字塔仅增强语义信息、缺失定位信息的短板. YOLO-head 部分采用CIOU_Loss 和DIOU_nms 算法,提升了检测框的检测精度与速度.
图1 YOLOv4 网络结构模型图
YOLOv4 的主干特征提取网络采用Mish 激活函数,其公式如下:
如图2 所示,Mish 函数有效避免了边界值过高封顶而导致饱和,能获得可靠的准确性和泛化性[8].
图2 Mish 激活函数
YOLOv4 网络的损失函数采用CIOU-Loss 损失函数,公式如下:
2 YOLOv4 算法改进
2.1 K-means 算法
原YOLOv4 算法的锚框值是基于VOC 数据集生成的,与本文的接地杆没有良好的匹配度,并且 K-means 算法本身存在一定的局限性,其聚类结果受初始值选取的影响. 因此,本文采用K-means++算法对初始值进行重新聚类[10],步骤如下:
1)在接地杆数据集中随机初始化一个聚类中心;
2)计算数据集中的每个点和与之相近的聚类中心的距离;
3)选择一个新的数据点作为新的聚类中心,距离越大,被选中的概率就越高;
4)重复上述2)、3)步,直到选出K 个聚类中心;
5)得出的K 个聚类中心再运用K-means 算法进行计算,获得想要的结果.
2.2 CBAM 注意力模块
注意力模块模仿了人在学习时专注自己感兴趣的事物而忽视无关事物的特性. 如图 3 所示,它由通道注意力与空间注意力串联组合而成,其中,通道注意力关注输入特征,空间注意力关注最具信息量的特征部分[11]. 输入特征先与通道优化权重进行乘积,获得的特征再与空间优化权重进行乘积,最终获得新特征,极大地节约了参数和计算量,提高了特征提取效率.
图3 CBAM 注意力模块
如图4 所示,通道注意力模块将输入的特征F 分别进行平均池化和最大池化,将两种池化后的特征送入多层感知机(MutiLayer Perception,MLP)[12]网络进行计算,分别获得平均池化特征最大池化特征相加并使用sigmoid 函数处理,获得通道优化权重
图4 通道注意力模块
如图5 所示,空间注意力模块对输入特征进行最大池化和平均池化,将得到的特征在空间方向上堆叠(Concat)并进行卷积操作,输出特征再用sigmoid 函数处理,最后获得空间优化权重
图5 空间注意力模块
2.3 改进 SPP 结构
在 YOLOv4 网络中,Neck 部分采用空间池化金字塔结构(SPP),分别使用 1×1、5×5、9×9、13×13等4 个尺度的卷积核对输入的特征图进行最大池化操作,然后把已池化的特征图与未池化前的特征图堆叠在一起,最终获取特征图局部与全局的感受野信息[13]. 根据本文实验背景,检修库内背景比较复杂且被检测目标与背景的相似程度较高,采用最大池化会损失接地杆部分信息,进而影响识别精度. 针对该问题,本文对SPP 结构进行修改,改进的SPP 结构在池化部分采用平均池化的方法,能够有效保留接地杆信息,同时适度减小卷积核的大小以减少计算量.
3 实验与结果分析
3.1 图像数据与网络训练
本实验所需数据集通过现场安装的边缘计算模块进行自动采集,在合作动车运用所内获取接地杆视频文件. 逐帧提取获取的视频形成大量包含接地杆的图片,对这些图片进行筛选,去掉模糊、缺失信息重复率高的,最后生成1 000 张接地杆图片集. 对比正负样本数量,对数据集进行扩充,分别对图片采用镜像对称、添加噪声、色彩变换等操作,最终形成5 000 张可用图片集. 采用LabelImg对图片集进行标注,生成YOLOv4 算法所需的txt 文件格式数据:其中4 000 张图片作为训练集,1 000张图片作为测试集.
实验采用的硬件配置为Intel(R) Xeon(R) CPU、NVIDIA Geforce RTX 2080 Ti 显卡、Linux 操作系统;软件环境为CUDA 11.0、Cudnn 8.0、Tensorflow 深度学习框架. 选取Adam 优化器,采用Mosaic数据增强方式,余弦退火学习率,Batchsize 设置为8.
3.2 评价指标
在模型评估中,需要选取评价指标对模型性能进行评估,通常需要计算精确度(Precision)、召回率(Recall)、平均精度 AP(Average Precision)以及均值平均精度(Mean Average Precision,mAP).在实际开发中,对网络的检测速度也有一定的要求,检测速度由每秒传输帧数(Frames Per Second,FPS)决定[14],FPS 值越大网络检测速度越快.
3.3 实验结果与分析
采用改进的 K-means 算法筛选出适用于本数据集的锚框,共生成 9 个框,分别是(15,121),(32,347),(37,347),(44,124),(94,325),(108,55),(111,59),(192,264),(269,152). 由于新的锚框值根据既有数据集生成,可以与数据集中目标大小快速匹配,故能提高模型的训练速度. 算法改进前后的实验结果如表1 所示.
表1 算法改进前后对比
由表1 可知,本文改进算法在精度上比原YOLOv4 算法分别提高了3.36%(close 检测)和1.67%(open 检测),mAP 值提高了2.51%,说明本文改进算法在提高检测精度上是有效的;在速度上,与原YOLOv4 算法相比提高了大约5 f/s,检测速度有一定提升. 本文改进算法不论是在精度上还是检测速度上都要优于原YOLOv4 算法,证实了本文算法有一定的鲁棒性.
为了进一步验证本文算法的检测性能,我们用相同的数据集对Faster R-CNN 算法、SSD 算法进行网络训练,其训练结果与本文方法的对比如表2 所示. 由表2 可知,在检测精度上,本文算法比Faster R-CNN 算法、SSD 算法分别高出了7.23%和11.13%;在检测速度上,比Faster R-CNN、SSD算法分别提高了12.9 f/s 和4.4 f/s. 证明了本文改进算法的有效性和优势.
表2 不同算法对比结果
用测试集对改进后网络模型进行测试的结果如图6 所示:图中接地杆均能被正确检测识别;对于和背景相似的接地杆,如较远处的接地杆,用肉眼很难分辨,但本文算法也能很好地识别出来. 证明了本文提出的改进的YOLOv4 算法对接地杆识别方法是可靠的.
图6 测试集图片测试结果
将改进算法部署在合作动车段内边缘计算模块中进行实际测试,部分测试结果如图7 所示.
图7 实际检测结果
从图7 可以看出,本文算法在实际检测中能够正确识别接地杆目标,且识别置信度也比较高. 对比测试集测试结果,实际检测结果会损失部分目标置信度,一方面是由于在实际部署中对模型进行了剪枝操作;另一方面检测图像与训练图像有差异也会产生一定的干扰,但总体上对检测结果准确度影响不大. 统计两周检测结果,总共发起检测 200 余次,每次均能正确检测接地杆状态,检测效果良好.
4 总结
本文提出了一种基于改进YOLOv4 算法的动车库接地杆状态检测方法,运用该算法对动车库内接地杆的挂摘状态进行检测验证实验,结果表明该改进方法对接地杆有不错的识别效果,检测准确度达到100%. 对于库内与背景相似的接地杆能够准确识别,且识别速度也快. 不足之处是该算法暂时无法识别电动接地杆是否损坏,以及判断电动接地杆是处于由闭到开还是由开到闭的状态,后续会针对这些不足继续完善算法模型.