唐 靓, 余明慧, 武明虎, 杨成健
(1.湖北工业大学电气与电子工程学院, 武汉 430072;2.湖北工业大学太阳能高效利用及储能运行控制湖北省重点实验室, 武汉 430068)
在社会生产的用电量需求不断增长的情况下,电网安全、稳定、可靠的运行是非常重要的.据统计,由绝缘子缺陷引起的事故在电力系统故障中所占比例最高.这是由于在电力传输过程中,采用绝缘子来支撑和分离电导,而通常情况下,绝缘子都是暴露在强电场环境以及各种恶劣的天气条件中,如烈日、台风或飓风、雷暴、冻雨、暴风雪等.这些恶劣的条件会使绝缘子易损坏,从而威胁电网系统的安全及电力的使用[1].传统的绝缘子缺陷检测主要依赖于人工巡检,这往往需要耗费大量的人力和时间,并且存在一定的危险性.因此,智能化和及时地检测绝缘子缺陷显得尤为重要.
目前的绝缘子自动缺陷检测方法主要有传统图像处理方法、基于机器视觉的方法和基于深度学习的方法三类.
其中,传统图像处理方法主要通过对绝缘子图像进行分割和特征提取进行检测和分类.一般来说,绝缘子图像中的绝缘子特征包括纹理、形状、颜色、梯度、边缘等.因此,通常采用边缘检测、形态学、尺度不变特征和小波变换来提取特征和从复杂背景中分离绝缘子[3-4].张晓春等[2]采用尺度不变特征变换算法和欧氏距离函数实现绝缘子串的特征提取,并将其与标准绝缘子串图像进行匹配,进而判断绝缘子是否存在缺陷.Anjum等[3]对捕获的射频脉冲进行小波包特征提取,对提取的特征进行缩减和选择,最终得到分类的结果.传统的图像处理方法在进行目标检测时依靠多种特征提取算法,对背景干扰非常敏感.同时,在实际的探测环境中,无人机拍摄的航拍图像往往存在不同的拍摄角度、拍摄距离和发光条件.因此,不可能设计一个模型来同时检测多个绝缘子.
在基于视觉的绝缘子缺陷检测方法中,最常用的是HOG+SVM[5]和Haar+AdaBoost[6].传统的检测算法主要是利用滑动窗口选择感兴趣的区域,提取每个窗口的特征,然后对特征样本进行分类,得到检测结果.此外,还有基于轮廓特征对绝缘子进行分类的算法.Tan等[7]将轮廓特征和灰度相似度匹配相结合,先提取绝缘子的轮廓,再计算绝缘子的灰度相似度,从而检测出有缺陷的绝缘子.翟永杰等[8]利用数学形态学算法对复杂背景下的绝缘子进行分割.并引入Ada-Boost分类器检测杂波背景下航拍图像中的绝缘子.然而,这些方法通常是基于积累的经验来提取图像特征,算法复杂,计算量大,效率低,精度有限,耗时长.但与传统图像处理方法相比,机器学习方法对航拍图像特定特征的依赖较少.
随着计算机性能的不断提高,基于深度学习的检测方法被广泛应用于电气设备检测领域.深度学习架构充分利用卷积神经网络(Convolutional Neural Network,CNN)逐层自动学习图像的深度特征,并通过训练大规模数据优化网络模型参数,提高检测精度.目前已经提出了许多有效的目标检测算法,如YOLO(you only look once)[9]、Faster R-CNN(faster region-based convolutional neural network)[10]、Mask R-CNN、SSD(single shot multibox detector)[11]等.其中,Faster R-CNN和Mask R-CNN 是经典的双阶段检测网络,YOLO系列网络和SSD网络是经典的单阶段检测网络.双阶段检测网络通过两个步骤实现目标的检测,首先生成特征候选框,然后再对生成的候选框进行分类和回归.单阶段检测算法则是直接进行分类和回归,省去了生成候选框这一步骤.由于网络结构的不同,所以检测速度和检测精度也有所不同,单阶段检测算法速度较快但精度较低,相应的,双阶段检测算法的精度较高但速度较慢.由于深度学习检测方法具有学习能力强、覆盖范围广等优点,被广泛用于电气设备检测等领域.Rahman等[12]首先通过无人机航拍获取数量足够且画质清晰的绝缘子图像,然后利用深度学习的方法对所收集的数据集进行缺陷检测.解决了以往利用深度学习的方法对绝缘子进行缺陷检测时数据集不足的问题,并且检测精度也有所提升.Wen等[13]采用RoI Align代替RoI pooling来解决对齐错位问题,并引入深度可分离卷积和线性瓶颈来减少计算量,同时利用编码器-解码器掩模提取网络生成绝缘子掩模图像以消除复杂背景.有效地提升了绝缘子缺陷检测的检测精度.Liu等[14]在YOLOv3网络中加入密集模块、多尺度特征融合结构和多级特征映射模块以增强特征重用、传播和提高对不同尺寸绝缘子的检测精度以及获取上下两层的丰富语义信息.然而,由于无人机拍摄的绝缘子图像中大都包含了许多无关的背景信息,因此在图像中绝缘子的有用信息并不多.此外,绝缘子的细长形状特性和不同的缺陷变化导致缺陷在图像中的表现形式多样而复杂.因此,现有的绝缘子检测方法的准确性还有待提高.
由于巡检图像的数据量大,以及电网对输电线路绝缘子缺陷检测有速度快,便于及时排除故障保证电网安全稳定运行的要求.所以在要求准确地识别检测出绝缘子的同时还需要在尽可能短的时间内完成检测任务.因此,本文在网络深度较小、检测速度较快的轻量级深度学习网络YOLOv5[15-16]的基础上提出了一种改进的绝缘子缺陷检测方法——YOLOv5t.为了在保证网络运行速度的条件下更加关注所检测目标的信息,将三重注意力机制[17]添加到网络中用于提取不同维度之间的语义依赖,消除通道与权值之间的间接对应,从而以较小的计算开销达到了提高准确率的效果.同时,修改网络的损失函数以及非极大值抑制算法,以提高模型预测框架的精确定位能力,增强模型的收敛效果并且减少漏检.
由于绝缘子缺陷检测对算法的实时性和准确性要求较高,YOLO系列网络的检测速度和检测精度在单阶段检测网络中是较为优秀的,相较于其他检测网络而言,它在检测速度和检测精度之间取得了一个较好的平衡[9].YOLOv5作为YOLO系列网络最新版本,相较于之前的几个版本,YOLOv5在网络结构、损失函数和数据增强等方面都进行了优化.并且在Pascal VOC(visual object classes)[18]和Microsoft COCO(common objects in context)[19]两个官方的对象检测数据集上取得了较好的结果.YOLOv5网络有s、m、l、x 4个版本,它们的网络的深度和宽度是依次提升的,也就是说,YOLOv5s网络的深度和宽度最小,即网络模型最小,YOLOv5x网络的深度和宽度最大,即网络模型最大.与此同时,网络的检测精度和检测速度依次降低和增加.为考虑绝缘子检测的实时性,本文对YOLOv5s网络进行改进,在保证检测速度的条件下提升网络的检测精度.YOLOv5s的网络结构如图1所示.
数据增强方面,YOLOv5采用自适应图像缩放通过在缩放图像时增加最小的黑边来提高目标检测的速度;Mosaic数据增强用于提高网络对于较小目标的检测能力;自适应锚盒计算对于不同的训练数据集能够计算出最佳锚盒值.
损失函数方面,YOLOv5的损失主要包括回归、分类和置信三个损失部分.网络用二元交叉熵函数计算计算类别概率和目标置信分数,也就是分类和置信损失;采用GIoU Loss[20]作为回归损失的损失函数.
在网络结构方面,如图1所示,YOLOv5在Backbone部分增加了一个Focus模块,对图像进行切片操作,在减少参数量的同时保留了更为完整的图像信息,用于后续的特征提取;CBL模块用于提图像的特征信息;同时,将跨阶段局部网络CSPNet(cross stage partial network)[21]整合到Darknet网络框架中,解决了大型骨干网络中梯度信息重复的问题,并将梯度变化整合到特征图中,从而降低了模型的参数和每秒浮点运算次数,既保证了推理速度和准确性,又减小了模型的尺寸;空间金字塔池化SPP(spatial pyramid pooling)模块用于实现局部特征与全局特征的融合,从而提高特征图的表示能力.Neck部分采用的路径聚合网络PANet(path aggregation network)[22]改进了原特征金字塔网络(feature pyramid networks, FPN)[23]低层次特征传播困难的问题,增加了自底向上的路径,提高了底层特征的传播.预测部分通过生成3种不同尺寸的特征图,实现多尺度的预测,使模型能够处理不同大小的目标.
图1 YOLOv5网络结构[15]Fig.1 Structure of YOLOv5
总体而言,Backbone部分用于从图像中提取特征,并对目标进行定位和分类来捕获特征;Neck部分用于融合来自通过Backbone的初始输出特征,适应大小,从而提高体系结构的整体性能;预测部分网络用于接收Neck的三个输出,最后输出每个特征映射输出层的包围盒位置、对象置信度和对象类别的预测.
YOLOv5网络4个版本的网络基本结构基本相同,主要区别在于CSP1_X模块中的残差组件(Res unit)、CSP2_X模块中的卷积(CBL)数量不同,以及CBL模块中的卷积核数量不同.前两个不同数量的模块用于控制网络的深度,深度越深,特征提取和融合能力越强;CBL模块中的卷积核数量用于控制网络的宽度,宽度越宽,提取特征的能力越强.但随着网络深度和宽度的增加,网络的检测速度就会有所下降,本文采用最轻量的YOLOv5s网络结构为基本结构进行改进.
针对输电线路绝缘子缺陷检测对于检测速度,检测精度的要求,本文采用网络深度较小的轻量级深度学习网络进行训练,这种轻量级网络能够大幅提升网络的检测速度.并在此基础上添加注意力机制、修改损失函数和预测结果处理方法以提高网络的准确率.最终在尽可能短的时间内准确地完成检测任务.YOLOv5t的基本结构如图2所示.
图2 YOLOv5t的基本结构Fig.2 The basic structure of YOLOv5t
由于注意力机制具有能够建立通道或者空间位置之间的相互依赖关系,在各种信息中将注意力集中在对当前任务目标更为重要的信息上.因此,近年来各种计算机视觉任务中都有注意力机制的身影.
针对网络对待每一个通道特征是平等的,导致网络不能在有效的通道特征上给予较大的权重,而导致的网络检测精度不高的问题,将注意力机制添加到原始网络中,以增强网络的特征提取能力,从而提升网络的检测精度.
为保证在提高检测精度的同时网络的运行速度不会受到影响,本文选择基于如何构建计算量小但有效的注意力,但同时保持相似或提供更好的性能而提出的三重注意力机制(triplet attention,TA)[17].相较于其他注意力机制,三重注意力机制有以下优点:1) 空间信息和通道信息不会大量丢失;2) 能够实现跨维度交互;3) 计算量较小.
三重注意力机制可以同时在通道和空间注意力上建模,实现跨维度的信息交互,给予有效的特征通道更大的权重,让网络更多的关注重要的通道特征,降低无用信息对网络的影响,以微弱的内存代价,增强网络Backbone部分对特征的提取能力.三重注意力机制的基本结构如图3所示.
三重注意力机制采用三个平行分支的结构,其中前两个分支用于提取空间维度与通道维度C之间的相互依赖关系,最后一个分支用于提取空间特征依赖关系.在前两个分支中,先将输入的张量χ分别沿H轴和W轴逆时针旋转90°,将张量的形状转变为W×H×C和H×C×W,记为χ1和χ2.在第三个分支中,输入张量的形状不变.然后,分别通过Z-pool层将维度上的最大池化和平均池化特征相连接,从而将张量维度缩减为2维,这使该层能够在保留实际张量丰富表示的同时缩小其深度,并且计算量不会大幅上升.Z-pool定义为式1:
Z-Pool(χ)=[MaxPool(χ),AvgPool(χ)],
(1)
(2)
三重注意力机制在网络中通过旋转操作和残差变换建立不同维度间的依赖关系,消除了通道与权值之间的间接对应,以较小的计算开销达到了提高准确率的效果[24].
图3 三重注意力机制的基本结构Fig.3 The basic structure of triplet attention
本文网络模型的损失分为三种,分别是回归损失,置信损失和分类损失.损失函数是用于计算网络损失值的函数,主要是在网络运行的过程中不断地计算预测值和真实值之间的差值.网络根据损失函数计算的差值不断地更新优化各个参数,从而使模型的检测效果更好.因此,损失函数的选择对于检测网络而言是非常重要的,合适的损失函数能够加速模型的收敛并且最小化预测值和真实值之间的差值.本文对网络的回归损失的损失函数进行改进,网络最初使用GIoU Loss作为回归损失函数,然而,由于GIoU Loss仅考虑了边界盒的重叠面积以及预测框和真实框的中心点距离,因此在网络训练的过程中会存在预测框回归不稳定、容易发散等问题[20].为了最小化预测框与真实框之间的距离,提高网络的收敛速度,本文使用CIoU Loss[25]作为网络的回归损失函数.CIoU Loss在GIoU Loss的基础上把预测框与真实框之间的宽高比(w/h)也考虑在计算中,进一步提高了网络的收敛速度和回归精度.CIoU Loss的公式为:
(3)
NMS(non-maximum suppression)是用于网络对每个目标进行检测时生成的所有预测框筛选,选出最优的预测框作为最终的结果.而原网络采用的传统的非极大值抑制算法在检测目标距离比较近以及被遮挡时容易产生漏检,这是由于非极大值抑制算法在对两个近距离目标的预测框进行筛选时,只保留得分最高且交并比较低的预测框.由于绝缘子间的距离往往都比较近,航拍图像中也存在被遮挡的情况,如果采用传统的非极大值抑制算法对预测框进行处理,会产生大量的漏检.因此,为了降低网络漏检率,本文引入了Soft-NMS算法[26].Soft-NMS算法流程如图4所示.
图4 Soft-NMS算法流程图Fig.4 The flow chart of Soft-NMS
首先,根据置信度对列表中的所有预测框进行排序;其次,将得分最高的预测框BM移至最终检测列表D,其余预测框分配唯一标识Bi;第三,当使用NMS算法时,去除与BM重叠面积大于一定阈值Nt的任何预测框Bi;而使用Soft-NMS算法时,当某个预测框Bi与BM的重叠面积大于一定阈值Nt时,并不是将该预测框删除,而是将重新计算该预测框的得分Si,并将其与一定置信阈值Ot相比较,当该预测框的得分Si大于一定置信阈值Ot时,将该预测框移到最终检测列表D中,反之,则删除该预测框;对其余的框Bi重复此过程,直到初始列表为空.由于在NMS中,设置了一个确定的阈值来决定哪些检测框应该保留,哪些检测框应该删除.然而,如果一个对象确实存在,但与BM的重叠率大于Nt时,则其预测框将被删除,从而导致漏检.而Soft-NMS的核心思想则是使用惩罚函数来衰减与BM重叠的预测框的分数,而不是将这些分数设置为零.使用Soft-NMS算法时与BM重叠较大的预测框得分会大大降低,而距离BM较远的预测框则不会受到影响.因此,可以大大降低网络的漏检率[26].NMS和Soft-NMS算法的得分函数分别表示为式4、5:
(4)
(5)
实验在Intel Xeon Gold 5218 @2.3GHz CPU、TITAN RTX GPU、12GB显存、Win10,64位操作系统和PyTorch 1.9深度学习框架上进行.此外,实验环境是Python 3.7,GPU加速软件 CUDA 10.2和CUDNN 7.6.5.
由于目前还没有针对绝缘子故障训练和测试的标准数据集并且绝缘子故障航拍图像稀少且不易采集,为了获得尽可能多的绝缘子故障图像,本文在中国电力线绝缘子数据集(CPLID)[27]的基础上进行了图像增强处理.利用图像处理软件擦除正常的绝缘体串,并用它们附近的像素替换它们创建了模拟绝缘子故障样本,同时通过自适应对比度、旋转、随机灰度变化、平移、裁剪、颜色通道标准化、随机遮挡等方法对数据集进行图像增强,增加样本的数量以及多样性,提升模型的鲁棒性.最终的数据集包含2 500张图像.在COCO数据集上预训练网络的权重,使用随机梯度下降优化器对网络参数进行更新.在训练过程中,输入图像尺度为640×640,动量参数设为0.9,批大小设为32,批尺寸为16,学习率设置为0.001,重量衰减为0.000 5,每次训练执行300个epoch.
评价指标是用于衡量网络模型性能的一些计算参数.本文将准确率P(precision)、召回率R(recall)、交并比IoU(intersection over union)和平均精度均值mAP(mean average precision)等作为网络的评价指标.准确率用来评估网络检测的准确程度,召回率用来评估网络检测到目标的能力,交并比是检测框和真实框的交集和并集之间的比值,AP(average precision)为单类别的平均精度值,也就是P-R曲线和坐标轴包围部分的面积.mAP为所有类别的平均精度值之和与所有类别数目的比值.一般以IoU=0.5时计算mAP值,即mAP@.5.准确率、召回率和平均精度的具体计算公式如下:
(6)
(7)
(8)
(9)
其中,TP(ture positive)表示真阳性,即网络检测分类后的样本与标记的样本相符合.FP(false positive)表示假阳性,网络检测分类后的样本不在标记的样本之中,即误检.FN(false negative)表示假阴性,标记的样本在网络检测分类之后没有完全被检测分类,即漏检.P(R)表示召回率为R时,准确率P的值,S表示一共有s个类别.
图5是根据YOLOv5t和YOLOv5s在本文绝缘子数据集上进行训练得到的实验结果绘制的loss对比图.由图5(a)可知YOLOv5t的网络的收敛速度较快且回归损失的损失值更小.图(b)和图(c)分别是网络的置信损失和分类损失,二者分别用二元交叉熵函数计算所得,由图可知,二者都是趋近于0的数值,并且收敛效果较好,所以本文没有对二元交叉熵函数进行优化,因此,置信损失和分类损失的变化不大.
图5 损失对比图Fig.5 Loss comparison chart
进一步将YOLOv5t网络模型与YOLOv3、SSD、YOLOv5s以及YOLOv5x等网络模型进行检测性能比较.各网络模型训练后的各个性能指标、模型大小以及检测速度如表1所示.其中,Precision、Recall以及mAP@.5的值是当预测框与真实框的交并比大于0.5时记为TP,小于0.5则记为FP计算出来的.具体分析,YOLOv5t网络模型的准确率比YOLOv3高1.3%,比YOLO5s高0.9%,比YOLOv5x低1.6%;召回率相较于YOLOv3低了0.6%,相较于YOLOv5s和YOLOv5x分别高5.1%和1.7%.由于准确率和召回率是相互影响的,准确率上升,召回率就会下降,由表1可知,YOLOv5t在准确率和召回率上取得了一个较好的平衡,在保证召回率的情况下,准确率也较高.与此同时,YOLOv5t网络训练得到的mAP@.5的值达到了99.1%,比YOLOv3、SSD、YOLOv5s和YOLOv5x分别高1.3%、8.0%、2.1%、和0.9%;并且,虽然YOLOv5t的网络参数量比YOLOv5s大,但是计算量(FLOPs)稍小于YOLOv5s,只有16.1GFLOPs.由于,参数量影响网络模型的大小,计算量影响网络模型的运行速度,因此,YOLOv5t的网络模型比最小的YOLOv5s模型大0.9MB,但检测速度却与最快的YOLOv5s相仿.这说明YOLOv5t在不损失检测速度的条件下对绝缘子的缺损检测的精确度更高.
表1 几种检测算法对比Tab.1 Comparison of several methods
图6是各网络的检测结果对比.通过观察图片可以得到,SSD检测方法在进行绝缘子缺损检测时,并不能很好的检测出绝缘子的缺损;其他几种检测方法都能较为准确的检测到绝缘子和绝缘子的缺损,但YOLOv3、YOLOv5s和YOLOv5x都存在误检和漏检的情况,而YOLOv5t更够准确的检测出绝缘子的缺损,并且没有误检和漏检.
本文以YOLOv5s网络模型为基础进行改进得到本文的检测算法,针对网络对待每一个通道特征是平等的,导致网络不能在有效的通道特征上给予较大的权重问题,本文将三重注意力机制添加到模型的骨干网络中,以微小的内存代价提升了网络的检测精度.同时,对网络的损失函数和非极大值抑制算法进行改进,提升了网络的收敛速度和回归精度,降低了网络的漏检率.实验结果表明,本文提出的YOLOv5t检测算法的平均精度均值比原YOLOv5s网络高2.1%,较YOLOv3、SSD和YOLOv5x分别高1.3%、8.0%和0.9%,并且检测速度没有受到影响.