胡 祥, 李英娜
(1昆明理工大学 信息工程与自动化学院, 云南 昆明 650500;2云南电网有限责任公司 研究生工作站, 云南 昆明 650217)
绝缘子是当前阶段高压输变电领域应用非常广泛的一种器件,在导体和绝缘体结合方面所发挥的重要作用值得我们给予应有的重视。随着技术的进步,无人飞行器已经在电力巡检方面得到广泛运用,巨大数量的航拍图片较容易获取,但是由于人工标注效率低、成本高、容错率低等弊端,因此对绝缘子图像的智能定位,故障检测研究具有重要意义。
目前国内关于复杂背景下分割绝缘子故障检测方面的研究日益增多,其中黄化入等[1]提出在绝缘子图像上采取某种改进的可能性,利用C-均值聚类方法(PCM)对其进行分割,在该方式下提取到的绝缘子区域误差相对小一些,不会因图像背景复杂而受到过多影响;黄新波等[2]在关于绝缘子分类识别方法的研究中提出了基于红蓝色差和改进K-means算法的识别方式。以往传统分割技术下的特征提取的方式离不开分类器的参与,存在一定的弊端,尤其是识别度差且运行速度慢。近年来,深度学习已广泛运用于图像处理领域。王万国等[3]把Faster R-CNN系列框架运用在对绝缘子的检测方面,把精度推到了新的高度;易继禹等[4]引进对手生成策略机制以及微调RPN候选区域比例,提高改进后的Faster R-CNN检测精度,但平均检测时间有所增加,未能达到实时检测的要求;Redmon J等[5-6]提出的YOLO(You Only Look Once)系列模型能够满足航拍下自爆绝缘子在实时检测过程中高检测速度的要求;赖秋频等[7]提出了一种基于YOLOv2网络图像识别的输电线路绝缘子在线识别与缺陷诊断模型,绝缘子识别平均精度为90%,每秒处理帧数为30 f;董召杰[8]使用 YOLOv3模型对电力关键部件检测,绝缘子识别平均精度为90.2%,模型每秒处理帧数为57.6 f。可见YOLOv2、YOLOv3模型在识别实时性方面有较大提高,但识别精度仍然较低。汪权等[9]提出了一种结合Gaussian分布策略来提升YOLOv3检测绝缘子精度的方法,但是该方法依然存在大目标检测精度一般且抗干扰能力弱的问题。
关于绝缘子自爆检测方面的研究中,陈文浩等[10]在传统目标检测算法的基础上,实现图像从原始RGB的颜色空间向LAB的颜色空间变换,并研究光照对其造成的影响,采用最大类间方差法实现阈值分割,随后在绝缘子自爆点坐标的获取上,采用形态学的运算方式来完成。王梦[11]在深度学习的相关研究中,利用vgg16和Resnet-101的Faster R-CNN模型,采用连通区域、直线拟合、形态学图像处理方法进行绝缘子定位和自爆检测等方面的问题,最终得出的缺陷检出率为0.89,该检测精度相对来说还需要进一步提高。
研究精度更高的绝缘子故障检测方法显得尤有必要。要在保证实时性的前提下提高精度,因此本文采用YOLOv5模型用于第一阶段:定位绝缘子。U-Net++[12]模型最先被用于医学方面的细胞图像分割,有较为精确的小目标分割和小数据量训练效果好的优势,且比U-Net灵活,背景复杂的绝缘子图片和细胞图片有一定的相似性,绝缘子自爆位置在图片中的占比也十分微小,加上有缺陷的图片量小,因此U-Net++适合用于第二阶段:绝缘子缺陷位置识别。整体结构如图1所示。
图1 模型整体结构图
作为目前广受各界关注的一款轻量化快速检测模型,YOLOv5[13]在检测精度方面和YOLOv4[14]同样出众,而且更加灵活,可用性更高。按照网络深度和宽度上的差异,可以将其进一步划分为YOLOv5m、YOLOv5s、YOLOv5x和YOLOv5l这4个不同的版本。网络的深度直接影响着检测器的检测精度和速度。本文的检测任务为绝缘子缺陷定位识别,缺陷目标较小。为了在满足精度要求的基础上,有效提升检测速度,所以最终选择YOLOv5为研究对象。具体的算法框架如下。
(1)骨干网络部分:首先通过Mosaic强化样本,然后通过裁剪、缩放、排布等多种方式实现样本的拼接,最终通过Focus进入骨干网络中。将640×640×3的样本切片拼接为320×320×12,随后通过64个卷积核进而生成所需要的特征图,然后再通过多次池化、卷积,形成最终的特征提取任务,为后续操作提供基础。
(2)特征融合层部分:在实际操作过程中,借助FPN(Feature Pyramid Networks)[15]和 PAN(Perceptual Adversarial Network)[16]构建这一层。具体来说,首先进行自上而下的融合,从而为强语义特征的传递提供支持;然后再进行从下而上的强定位特征的融合。
(3)检测层部分:在这一部分中,分别输出80×80、40×40和20×20的网络,分别对应小型物体、中型物体及大型物体的检测。所有网络内都预设3个预测框架,以此为基础记录其位置信息及物品置信度信息。然后通过用非极大值抑制NMS的方法来将重复的预测框进行筛选,并将置信度较高的预测框信息保存,以此来实现目标的检测任务。
如前文中所强调的那样,绝缘子故障的位置在整个图的占比普遍较小,因此标准YOLOv5模型在实际应用过程中存在效果不理想的问题,漏检频繁。针对上述问题,本文对该模型加以改进和优化,首先对骨干网络做修改,并引入注意力机制模块,为模型检测精度的提升提供支持;然后以自爆缺陷检测目标占比小的特点为基础,对特征尺度加以优化,进而使得该模型在低占比的目标检测中整体适应能力提升,并有效地提升了模型的实时性。
在骨干网络中,需要通过Focus切片、CSP[17]、SPP等多种操作来完成特征的提取,而特征图之间信息高度相似冗余则是卷积神经网络具有出色的特征提取能力的重要前提。为了避免过多参数影响模型的效率,在本文中将原有的Bottleneck模块替换为Ghost Bottleneck模块,没用该模型替换之前,所有的特征图都通过卷积来生成,占用计算量很大。但是,这其中有些图并不需要卷积生成的,只需要通过一些简单的线性变换就可以。所以利用Ghost Bottleneck能够实现生成特征图时该卷积的卷积,该线性的线性,用更少的计算来得到同样数量的特征图。除此之外,本研究还尝试引进注意力机制相关的3个SE模块,有效抑制了无关信息通道特征,提升了重要信息通道特征,极大地强化了模型的整体效果。
添加的Ghost Bottleneck模块由两个Ghost模块组成,通过某一内在特征将其呈现,随后通过线性变换的方式获取特征,最终可按照如下公式体现特征信息:
Y′=X*f+b,
(1)
式中X表示输入的特征图,*表示卷积操作,f表示卷积核,Y′表示m个通道的特征图,公式中的偏置项用b表示。对Y′线性运算输出通道为n的特征图,可以有
(2)
SENet网络的设计基础为注意力机制,不仅效果出色,而且操作也非常简单,特别是有效拓展了特征提取层的感受野,更是为整体性能的强化奠定了坚实的基础。这套网络借助全局信息,为信息功能的针对性强化提供了有效的支持,并且同步抑制非重要功能,将权重分配给所有要素图。
首先,全局平均池化,通过归并特征图的方式,将特征图转化为M个1×1实数序列,从而保证所有特征图都能够使用到相应上下文信息,所以在实际的应用过程中可以为低层次、小规模网络提供较为完整的全局信息;此后两个全连接层中提供一个有效数字,进行降维处理,进而生成所需要的1×1×(M/r),使得ReLU后升维,在利用Sigmoid函数获得1×1×M,将其当做通道的权重,分别和各个通道相乘,生成一系列新的通道。因为存在池化层等,所以在一定程度上增加了算法的复杂度。信息更新后的输出特征图用Y表示,输入特征图用X表示。SENet结构的注意力机制中,挤压和激励是必不可少的操作,此外将输入作为固有动态特性,从而提高其分辨效能,该结构可以和几乎所有的标准体系结构共用,性能不受影响。YOLOv5改进后的基本结构通过Focus切片、卷积等,样本输出尺寸为160×160×128的特征图,在3层开始连续调用Ghost Bottleneck模块进行3次处理,提供尺寸为256×256×80的特征图。将上文中所构建的SE模块引入第5层,然后继续调用Ghost Bottleneck模块进行3次特征下采样,使得通道数倍增,分别在第8层、11层重复上述操作,得出所需要的绝缘子缺陷部分的特征提取操作。改进的特征融合层与检测层结构可以借助所引入的FPN+PAN结构,有效提升YOLOv5模型的定位传递性,并为结构增强特征的强化提供支持,输出80×80、40×40和20×20的网络,分别于对小型物体、中型物体以及大型物体的检测。而针对绝缘子表面缺陷非常小这一问题,在本文的研究中仅保留80×80这一尺寸的检测层,并且重新在特征融合层上进行采样。
定位损失函数、分类损失函数及目标置信度损失函数等,都是较为经典的模型损失函数。而本文重点研究的YOLOv5模型中,目标置信度损失和类别概率损失的计算是使用二元交叉熵损失函数完成的。经过实验,CIOULoss相比GIOULoss更适合于bounding box,所以本文最终选择了CIOULoss作为其回归的损失函数,其公式可以简化为
(3)
以U-Net为基础,通过嵌套及高强度的跳跃连接,可有效减少解码器和编码器之间的语义差距,这种新型的网络称为U-Net++网络。该网络连接了不同网络层跳跃,并且将采样后的深层特征添加到浅层特征中,或是在深层特征中加入采样后的浅层特征,以此弥补编码器与解码器之间的语义丢失,剪枝使原本刻板的网络结构在测试时变得十分灵活,网络在测试时的可变性大大增加。U-Net++在图像语义分割中表现出良好的性能。
2.2.1 绝缘子分割评价指标
利用Dice系数对绝缘子串分割后的精度进行评价。所谓的Dice系数,即一种具有较高集合相似度的度量函数,若最终得到的评价结果趋近于1,那么可以判定其结果与专家标注的结果基本相符。假设A为专业人士标注的区域,B为算法分割所得到的区域,则有
(4)
2.2.2 模型训练优化
由于本次实验利用航拍的方式来获取绝缘子图像,最终其图像目标过小,同时背景相对复杂,边界不明确,因此想要获取相对清晰、高分辨率的图像,那么需要对图像进行以下优化调整:
(1) 通过批规范化(Batch Normalization)的方式对每次卷积计算后的结果进行优化,从而避免出现梯度弥散的现象,以此来提高模型的泛化能力,同时提高网络的学习速度与收敛速度。
(2) 利用二元交叉熵损失函数( BCEWithLogitsLoss)来保证高损失函数的稳定性,具体公式为
(5)
Ln=-Wn[ynlgσn+(1-yn)·lg(1-σn)],
(6)
其中n为批量大小,xn为输入矩阵,yn为目标矩阵,Wn为权重矩阵,Ln为损失输出值。
(3) 在摆动幅度问题上可以利用RMSprop优化器进行简单的修正,从而使网络函数的收敛速度得到进一步提高。
2.2.3 “过拟合”问题的改进
(1)通过归一化处理的方式对输入图像进行整理。在对图像变换造成影响的某一函数上,图影响能够被矩阵中的某一参数消除并转化为标准形式,为仿射变换的有效抵抗提供支持,并将样本进行统一归纳分布。
(2)将丢弃机制(dropout)加入到神经网络中。丢弃机制,即利用某一概率将网络训练期间存在的神经单元暂时分离出网络,使其发挥不出作用。在经过多次实验后表示,丢弃机制概率在0.5时,呈现的拟合效果最优。
(3)将负样本加入到数据集中,用来保证模型具有较高的纠错能力,并对是否在数据集中存在负样本为单一变量,观察其模型训练的结果。
优化前后对比如图2所示。
(a)原图 (b)优化前 (c)优化后
在本文的研究中,实验采用了标准版的Windows10系统,处理器为Intel(R) Core(TM)i5-10400F CPU 2.90 GHz,GPU为NVIDIA GeForce GTX 1080Ti,显存为8 GB,使用Pytorch 1.4框架。
利用国内某电网下属电科院提供的绝缘子航拍图,复合图像1500张,通过随机翻转等方式扩充到2500张,按照随即原则,分为训练集2000张(含爆裂150张),测试集500张(含爆裂150张)。按照Labelme格式标注绝缘子数据,将故障位置标注本文采取“工”字形标注法。相比传统“〇”形或者“囗”形标注法,该方法可以容纳更多特征,同时更大程度的将故障位置与背景噪声等干扰项区别开。绝缘子串定位在训练之前,首先对模型的超参数进行配置,训练批尺寸为64,学习率为1e-3,最大迭代次数为4000。同时在训练时引入与正样本相当的负样本,这在一定程度提高了模型的鲁棒性,训练过程的损失值和平均精度如图3所示,在迭代2000次左右开始收敛,随着训练量的增加,精度也在不断上升。
图3 YOLOv5损失值和平均精度曲线
用训练好的模型对测试集进行绝缘子定位测试,设定IOU大于0.5则为预测成功,部分实验测试效果图如图4所示。由测试集的测试效果来看,在4种复杂背景下,改进的YOLOv5均可以准确定位绝缘子的位置。用相同数据集对Faster-RCNN和YOLOv5进行训练,用其测试集结果作为本文提出模型的对比,实验结果见表1。YOLOv5+GhostBottleneck检测速度明显提升,比YOLOv5提高了10 fps,但是平均精度(Average Precision,AP)下降了1%,IOU下降了0.02;YOLOv5+GhostBottleneck+SENet比YOLOv5+GhostBottleneck降低2 fps,AP得到了4.7%的提升,IOU提高了0.05;本文方法AP比YOLOv5+GhostBottleneck+SENet提高了1.6%,IOU提高了0.03。通过结果分析显示本文方法的检测速度可以满足实时检测要求,并且在极为复杂背景的图片下,可以精确地定位绝缘子自爆位置,且47 fps的检测速度完全可以满足实际作业要求。
图4 优化的YOLOv5在复杂背景下的绝缘子定位结果
表1 优化前后的性能对比
U-Net++输入选择的是边界框裁剪图像。为了有效解决消失梯度问题,需要在卷积层之后增加批归一化层,而且这对于网络训练速度的提升也有一定的积极意义。本文U-Net++采用GPU训练,网络训练参数设置:类别数为2,其中缺陷类别为1,背景类别数为1;冻结阶段训练Freeze_Epoch=50,Freeze_batch=4,Freeze_lr=1e-4;解冻阶段训练参数设置为Epoch=150,batch=2,学习率为1e-5。通过翻转和旋转增强数据,图5为经过200次训练后的损失收敛情况和这一过程中的Dice值变化情况。
图5 U-Net++损失曲线和Dice训练曲线
用相同的数据集训练U-Net++但不添加负样本,实验对比结果如表2所示,本文方法与传统U-Net++相比,检测速度不相上下,AP高出0.04,Dice高出0.1。
表2 U-Net++ 优化前后对比
为了能够进一步呈现出评估优化后U-Net++模型的性能,在本次研究中将分别利用优化完成与未优化完成的U-Net++模型分别测试包含缺陷自爆区与复杂场景的图像结果进行对比,如图6所示,在背景噪点干扰极强的情况下,改进后的U-Net++依然可以准确的定位出绝缘子缺失的位置。
(a)未优化漏检、错检结果图
本文提出了基于YOLOv5和U-Net++改进的绝缘子故障定位模型,训练测试影像数据集绝缘子爆裂故障识别模型并与其他方法进行对比实验。实验结果表明:基于YOLOv5改进的绝缘子定位模型,平均精度为96.3%,高于YOLOv5,且实时性与YOLOv5相当;基于U-Net++改进的绝缘子故障识别模型,平均精度为95%,Dice为93%,均高于U-Net++;随着训练样本数量的增加,该方法的效果会变得更好。结果证明本文方法可以在可见光复杂背景下完成对绝缘子的定位及故障的识别,符合巡检智能化的要求。但是本文模型的先后两个框架独立,需要二次标注和训练,本团队接下来将致力于研究改进该框架连贯性问题。