基于YOLOv5s 的绝缘子故障检测仿真研究
2024-03-11张长乐
张长乐,金 钧
(大连交通大学自动化与电气工程学院,辽宁大连 116028)
智能巡检取代人工巡查,是必然的发展趋势[1]。绝缘子在野外工作时,很容易出现各类故障。因此研究基于图像识别的绝缘子故障检测算法对于智能巡检工作具有重要意义[2-3]。
针对绝缘子的故障检测,目前已有一定的研究。如文献[4]将水平投影法用于定位绝缘子破损位置;文献[5]采用双向GRU(Gated Recurrent Unit)和PCNN(Pulse Coupled Neural Network)相结合抽取人物关系的方法;文献[6]将YOLOv2 网络结合垂直投影等方法进行检测;文献[7]通过图片的深度特征来训练SVM(Support Vector Machine)分类器。
该文算法在YOLOv5s[8]基础上进行优化,成功检测出破损(damage)、闪络(flash)、脏污(dirt)三种故障,且速度、大小、精度都优于原算法,仿真验证了该算法对于原始算法的提升。
1 改进YOLOv5s算法
1.1 运用K-means++算法进行先验框优化
YOLOv5[9-10]的初始先验框尺寸来源于K 均值(K-Means)聚类算法,而改进后先验框尺寸来源于K-Means++[11]算法。改进后的先验框大小和默认的先验框大小如表1 所示。
表1 默认先验框和改进先验框大小比较表
1.2 在骨干网络中添加SE注意力模块
该文算法在骨干网络中添加了SE注意力模块[12],即把骨干网络中的C3 模块都修改为添加了SE 模块的SEC3 模块,有效提升了算法的特征提取能力。
为了验证SE 注意力模块的有效性,对带有破损故障的绝缘子进行热力图仿真,效果如图1 所示。
图1 热力仿真对比图
从图1可以看出,未使用SE 注意力模块的网络未侧重故障处聚焦,甚至对于环境的关注更强;当加入SE注意力模块后,对故障处的关注明显有了一定的侧重。
1.3 在颈部网络中引入双向特征金字塔模块
因为绝缘子的故障痕迹通常为扁平状且大小较小,所以加强算法对中小目标的针对性、对多尺度特征的融合能力很有必要。
该算法在颈部网络中引入了BiFPN[13]双向特征金字塔,有效提升了算法的特征融合利用能力。
修改颈部网络的concat 模块即可引入BiFPN,原网络的颈部中共有四处concat 模块,为了将BiFPN的作用发挥到最大,该文将所有concat 全部修改为了BiFPN_Add。
1.4 完成所有改进后的总体网络结构
改进后网络整体结构如表2 所示,表中输入为-1 时在,表示输入来自上一层;为中括号时,表示同时来自好几层,数字代表具体层数,如[-1,4]代表来自上一层和第四层,张量信息代表该模块的输入通道数、输出通道数、卷积核大小、步长等参数。
表2 改进后YOLOv5s网络结构示意表
2 仿真分析
2.1 数据准备
该文的数据集来自于无人机拍摄故障绝缘子图像共1 600 张;共有1 228 处破损故障,1 385 处闪络故障,806 处脏污故障。
该文使用LabelImage 标注工具对所有绝缘子故障进行标注,共以三种故障为识别目标,分别将破损标注为damage、闪络标注为flash、脏污标注为dirt。
对于1 600 张原始图片首先采用随机矩形遮挡、翻转、调整色调等方式将图像扩充至4 640 余张,从而提高模型的泛化能力和训练效率。该文随机将训练集、验证集、测试集的比例划分为10∶1∶1。部分图像数据增强效果如图2 所示。
图2 部分图像增强示例图
2.2 仿真环境与网络训练
2.2.1 仿真环境
具体仿真环境如表3 所示。
表3 仿真运行环境
2.2.2 网络训练
在YOLOv5s 模型训练中,模型结构的损失函数Loss 值越小越好。为了实现模型的最佳性能,该文将迭代次数设置为250,权重衰减系数设置为0.000 1,学习率动量设置为0.937,图片尺寸为640×640,最大训练批次设置为16。
Loss 曲线在0 到100 次时损失函数值急剧下降;在100 到200 次时损失数缓慢下降;在经过200 次迭代后,损失值在0.06 附近趋于稳定,模型达到最优状态。总计Loss 曲线变化如图3 所示。
图3 该文算法的总计Loss曲线
2.3 模型评估指标
在目标检测领域,精度(Precision)、召回率(Recall)和mAP 是评估训练算法性能和可靠性的常用指标。由于平均精度的概括性、代表性强于前两个指标,故该文使用平均精度对绝缘子故障检测算法性能进行评估。
精确率的公式为:
召回率的公式为:
式中,TP 表示被模型预测为正类的正样本数量,FP 则表示被模型预测为负类的正样本数量,而FN 则表示被模型预测为正类的负样本数量。
平均精度的计算式为:
平均精度AP 是指在所有召回值的可能取值前提下,求得的所有精度的平均数。即mAP 的AP 值在所有类别下的平均值,计算公式为:
式中,Q为总类别数量。
2.4 模型性能评估
通过训练得到权重文件,使用权重文件对目标图像进行检测,部分结果如图4 所示。示例结果中有两处破损故障,七处闪络故障,四处脏污故障,全部识别正确。
图4 部分仿真结果示例图
为验证算法性能,在同一数据集中,对几种常见目标检测算法的评估指标进行了对比,具体情况如表4 所示。
表4 分类准确度比较表
由表4 可知,该文算法能够有效提高对破损、脏污、闪络的检测精度。该文算法对三种故障的平均检测精度均远高于Faster R-CNN 和SSD。该文算法与YOLOv2 以 及原始YOLOv5s 相比,在FPS 和mAP上都有一定提升。除此之外,模型的参数量仅有13.8 MB,显著优于其他算法,比原有的YOLOv5s 进一步缩减了3.5%。
2.5 消融实验
该文共有三处改进模块,将改进后的模型中的改进模块逐个添加并进行训练,验证模型的改进模块是否具有正面影响。消融实验具体结果由表5所示。
表5 消融实验结果表
实验结果表明,每个模块单独应用均能对最终结果产生正向作用,mAP 和FPS 都是伴随着改进增多逐渐提升。单个模块中BiFPN 对于评估指标的提升最大;三个模块同时使用对于速度和准确度的提升效果最明显。
3 结论
该文提出了一种基于YOLOv5s 的绝缘子故障检测算法,该算法利用K-means++算法重新设计先验框大小,在骨干网络中融合SE 注意力模块,在颈部网络融合BiFPN 双向特征金字塔。通过以上操作,使得绝缘子故障检测的总体mAP 相比于原网络提升了3.6%,达到91.4%,速度提升了5 FPS,达到30 FPS,且文件大小比原YOLOv5s小了0.5 MB,仅为13.8 MB。
该算法具有较强的深度学习能力,能高速准确检测绝缘子故障、脏污、闪络三类故障缺陷位置,且保持了轻量化的优点。未来将继续探索如何减少算法参数量以及如何提升算法对小目标的识别能力。