弱监督细粒度分类在绝缘子故障识别中的应用
2020-09-14潘哲张兴忠杨罡卢志博吴庭栋李琳
潘哲,张兴忠*,杨罡,卢志博,吴庭栋,李琳
(1.太原理工大学 信息与计算机学院,山西 晋中 030600;2.国网山西省电力公司电力科学研究院,山西 太原 030001)
0 引言
在电力输电线路巡检的过程中,绝缘子是重要的元器件,是支持输电线路正常运行的重要保障。传统人工巡检效率低下、危险系数高,随着无人机的发展,越来越多的电力单位开始使用无人机对输电线路进行巡检。电力无人机的操作人员,根据电网出台的相关规定和要求,对输电线路上的不同元器件进行拍摄。在地面作业的电力工作人员,根据拍摄到的图像去评估电力元器件,尤其是绝缘子状态是否正常、是否正常工作、是否需要及时地替换和维修等。无人机的应用,一定程度上提高了电力巡检的效率,但是在评估绝缘子状态是否正常时,还需要电力巡检工作人员人工去判断。在电网要求自动化的大背景下,一种能检测绝缘子是否发生故障的自动化方法就显得特别重要。随着图像处理、计算机视觉和深度学习等相关技术的发展,利用这些技术对绝缘子进行故障检测成为可能。苗向鹏[1]使用图像处理和动态阈值二值化相结合的技术,判断绝缘子是否掉串。韩正新等[2]利用图像色彩转换、图像载入和预处理、最大类间方差法(OTSU)或最大熵值分割法等方法对绝缘子自爆故障进行检测。荀子扬[3]使用SIFT(Scale-invariant feature transform)和改进PCA(Principal Component Analysis) SIFT方法对绝缘子进行故障识别。刘轩驿[4]提出了一种改进的霍夫(Hough)变换的算法,检测绝缘子中的椭圆,根据椭圆数量,判断绝缘子是否掉串。高强等[5]使用卷积神经网络对绝缘子故障进行识别。商俊平等[6]使用计算绝缘子欧式距离的方法,计算绝缘子的自爆故障。阳武[7]一方面利用图像分割和模板匹配识别绝缘子掉串,另一方面使用卷积神经网络识别绝缘子放电痕迹。崔克彬[8]提出了基于稀疏表示的绝缘子掉串缺陷检测方法。Gao等[9]使用深度学习结合传统图像处理的算法去识别绝缘子的自爆故障。Zuo等[10]利用Haar特征结合图像分割对绝缘子进行故障识别。Zhao等[11]使用基于卷积神经网络的Mutil-patch特征对绝缘子状态进行分类。
近年来,有很多弱监督细粒度图像分类模型被提出来。Lin等[12]提出了基于双特征和双线性池化的Bilinear CNN网络。Xiao等[13]参考区域提取(region proposal)思想提出了Two Level Attention Model。Simon等[14]提出的Constellations网络利用卷积网络特征本身产生一些关键点,再利用这些关键点来提取局部区域信息。文献[15]的研究表明,在设计细粒度分类模型时,尽管面对的是不同的数据集和数据规模,但是模型背后的设计思路往往是通用的,在一个数据集上取得良好结果的分类算法,在另一个数据集也适用。
本文在研究过程中,只对绝缘子是否发生故障进行判断,并没有去分析绝缘子故障的具体类型。因此,在研究相关文献的基础上,考虑到传统算法计算复杂度高,算法泛化能力弱,往往只针对特定数据集和特定故障有效等缺陷。本文将绝缘子故障识别与基于弱监督细粒度图像分类的思想和方法相结合,提出了一个名为Multi Feature Insulator Fault Identification Net(多特征绝缘子故障识别网络,以下简称MFIFIN)的绝缘子故障识别模型。该模型使用多个网络提取图像特征,对特征进行有机融合,然后将融合后的抽象特征送到分类器中,最后通过分类器判断绝缘子是否发生故障。
1 细粒度分类介绍
细粒度图像分类在发展的过程中,有强监督和弱监督两种解决思路。所谓强监督,就是在训练模型时,提供更多的人工标注信息。在基于全图的图像类别标签之外,还包括图像的局部标注框、图像局部区域关键点等标注信息。更多的标注信息,就意味着更多的人力标注成本。当有海量的细粒度图像数据时,获取标注信息的花销十分高昂,往往不是普通的研究者可以承担起的。因此,强监督细粒度分类的方法发展受到了一定的限制。而弱监督细粒度图像分类方法在训练模型时,只需要使用全图的图像类别标签信息,在处理数据时,获取标签的成本可大幅度降低。因此,弱监督是细粒度图像分类的发展趋势,也是本文主要使用的方法。细粒度图像分类的两种方法如图1所示。
图1 细粒度图像分类Fig.1 Fine-grained image classification
2 方法介绍
针对绝缘子故障识别,本文参考通用弱监督细粒度分类模型的设计思想和方法,提出了更适合绝缘子故障识别MFIFIN网络。网络结构主要包括3个部分:多网络特征提取、特征融合与分类器训练,该网络结构如图2所示。MFIFIN网络由一个七元组构成,如式(1)所示。公式中M代表网络,f1,f2,f3,f4对应网络的4个特征提取结构,Con代表特征的两两拼接,P代表特征融合操作,C代表融合之后的特征送入分类器。
M=(f1,f2,f3,f4,Con,P,C) 。
(1)
2.1 多网络特征提取
子类间图像都比较相似,图像内容的差异通常都比较微小。具体到绝缘子故障数据中,往往只是局部区域的像素不同,就成为判断绝缘子是否发生故障的关键,如图3所示。与正常绝缘子相比,故障绝缘子仅在标注框的位置中缺失部分绝缘子子串。
左为正常,右为故障图3 正常和故障绝缘子对比图Fig.3 Comparison of normal and faulty insulators
因此,从图片中提取出有用的信息对提升细粒度分类模型的识别准确率有重要意义。而基于弱监督的细粒度分类网络在训练时,只有全图图像类别标签,因此就要求模型在提取特征时,能够充分的提取出具有代表性的图像的特征表示。细粒度分类模型在提取图像的特征时,分别从物体级别和部位级别提取特征。因此,在设计特征提取网络时,会分别设计整体特征提取网络和局部特征提取网络。特征提取的表达式如式(2)所示。I表示输入图像,L代表图像对应的标签,fobject代表物体级特征提取网络,fpart代表部位级特征提取网络。
(2)
本文在设计特征提取网络时,设计了两组特征提取结构:物体级特征提取是第一组,部位级特征提取是第二组。物体级特征提取结构如图2中上部所示。为避免单一网络因为模型结构和超参数的设置,造成提取特征时有效信息损失过多,本文使用互补的两个网络CNN1和CNN2从图像中提取特征。CNN1网络参数见表1。在设计模型时,为避免局部特征对整体特征的干扰,帮助网络专注于物体级别特征的提取,两个网络都使用小分辨率图像224×224作为输入。CNN1使用7×7和5×5较大的卷积核,提高感受野(receptive field)范围。同时,在网络结构中使用了Dense block[16]和Inception block[17]特征提取模块,进一步提升模型的特征提取能力。其中Input表示输入层,Conv表示卷积,ReLU激活函数,BN(Batch Normalization)层的运算组合,MP(MaxPooling)表示最大池化,GMP(Global Max Pooling)代表全局最大池化。在设计CNN2网络结构时,考虑到CNN1是重新设计的底层网络,在训练时间中拟合数据的时间长,具有一定的训练难度。为了避免CNN1网络提取的特征代表性不足,CNN2网络使用经典的Inception网络结构。在经典结构的基础上,为了使模型在绝缘子图像中提出更具有代表性全局特征,将模型中的卷积核统一修改为3×3,5×5和7×7的大小,并按照网络中张量维度匹配原则,在深度学习框架的帮助下,加载Inception网络基于ImageNet的预训练权重。
表1 物体级特征提取网络
在设计部位级特征提取网络时,同样基于网络特征互补的考虑,使用CNN3和CNN4作为部位特征提取网络,如图2下半部分所示。与物体级特征提取网络不同,为了让部位级网络从图像中提取局部特征,使用608×608大分辨率图像作为输入,扩充图像的细节信息。在模型结构中,主要使用3×3和5×5卷积核,使得卷积操作在大分辨率图像中做更多的运算,帮助模型获得的丰富的局部信息。此外,网络结构中使用Dense block模块,提高模型的特征抽象能力。CNN4在设计思路上与CNN2类似,适用Inception网络结构。因为小的卷积核能捕捉到更多的细节特征,所以在网络中的统一使用1×1和3×3卷积,并加载相应的预训练权重。
表2 部位级特征提取网络
2.2 特征融合
机器学习和细粒度图像分类的相关研究和工程实践表明,将模型提取的不同特征进行融合之后再送入分类器,往往会提高最终的预测效果。
本文使用4个卷积神经网络分别提取绝缘子的物体级特征和部位级特征。CNN1选择Conv7作为模型的特征输出,CNN2使用与CNN1输出维度相同的中间结果作为特征输出。CNN3使用MP5作为模型的输出结果,CNN4使用和CNN3输出维度匹配的中间特征。物体级网络和部位级网络特征图维度分别是28×28×128和19×19×128。因为卷积神经网络的每一个特征图都表示图像特征的抽象,不同特征图对应不同的激活区域。如果将不同的特征图结合起来,最终会得到更具有代表性的特征表示。特征融合方式见图4,图中以CNN1为例。
图4 特征融合Fig.4 Feature fusion
具体来讲,物体级别网络提取的特征图维度为28×28×128,然后沿着通道维度进行相加,最终得到28×28的特征图,部位级网络也做同样的操作。由于特征中不可避免地会有噪声,对求和之后的特征图,需要进行筛选,最大限度地去掉噪声和保留有效特征。本文在二维特征图的基础上,求特征图全局平均值和特征值分布直方图,根据融合之后特征值的分布范围和分布区间设定阈值,只保留阈值范围内的特征值,从而得到去噪保真的目的。阈值计算见式(3)。
选取2017年1月—2018年9月收治的60例带状疱疹后遗症神经痛患者,按照随机数字法分为两组。基础组30例,年龄43~73岁,平均(58.09±10.26)岁,男女比13∶17,神经痛部位:8例颈部、9例肋间、6例三叉神经、3例臂丛、4例腰骶;联合组44~73岁,平均(58.56±10.31)岁,男女比14∶16,神经痛部位:9例颈部、11例肋间、7例三叉神经、2例臂丛、1例腰骶。组间临床资料数据差异无统计学意义(P>0.05)。
(3)
化操作的本质就是对两个特征矩阵求外积操作,计算公式如式(4)所示。在双线性池化操作之后,将特征的维度拉平(flatten)为1×N的图像特征描述符,N代表特征矩阵的各个维度的乘积。得到特征描述之后,再送入分类器中进行训练。
F=F1⊗F2 。
(4)
2.3 分类器和损失函数
(5)
3 实验与分析
由于绝缘子图像涉及电网生产和安全,所以可用的开源绝缘子数据集较少。因此,本文在研究过程中与山西省电网下属的航拍公司合作,绝缘子数据集由航拍公司提供。在绝缘子数据集中,包括了各种材质和角度的绝缘子,尽可能代表真实电力巡检环境中的绝缘子情况。在无人机对绝缘子进行航拍时,通常会拍摄到复杂自然背景和其他的元器件,从这种复杂背景图片中判断绝缘子是否发生故障难度很大。所以,本文首先使用目标检测算法,定位图像中的绝缘子,然后根据坐标信息将绝缘子区域截取出来,从而得到训练模型时使用的绝缘子故障数据集。
3.1 数据预处理
在从原图中截取得到的图片中,绝缘子占据画面的主体。正常与故障绝缘子的差距很小,所以利用细粒度图像分类方法对绝缘子进行故障识别。经过统计,一共收集了8 435张绝缘子图像。为了精确地区分正常和故障绝缘子图像,本文邀请经验丰富的电力巡检人员,对绝缘子故障数据集中的数据进行图像级别的标注工作,将正常绝缘子标记为0,故障绝缘子标注为1。在标注完成之后,统计出正常绝缘子有6 123张,故障绝缘子有2 312张,正负样本的比例接近3∶1,符合实践经验,训练模型时不会出现正负样本分布差距过大的问题。从数据集中,随机挑选7 000张作为训练集,1 000张作为测试集,434张作为验证集。部分数据集如图5所示。
从图5可以看出,数据集中绝缘子长宽比例并不相同,而由于卷积神经网络的输入通常是正方形图片,如果直接对大小不一的绝缘子图像进行缩放(resize)操作,会导致绝缘子图像的长宽比发生变化,图像中的纹理、边缘等信息损失,降低图像质量。为了避免直接缩放操作带来的图像质量损失,保持绝缘子图像本身的长宽比在缩放的过程中不发生变化,本文根据公式(6)的方式对图像进行填充(padding)操作。
(6)
图5 标注之后的绝缘子数据集Fig.5 Insulator dataset after labeling
图6 绝缘子图像预处理Fig.6 Insulator image preprocessing
3.2 评价指标
本文研究中只判断绝缘子是否发生故障,并不去判断绝缘子的故障类型,因此,这是一个二分类问题。为了全方位评估MFIFIN网络的效果,在选择评价标准时,使用分类精确率(accuracy),准确率(precision),召回率(recall)和F1值(F1 score)作为模型的评价方法。下面介绍各指标的定义和计算方法。
分类精确率表示对于给定的数据集,分类器正确分类的数据量占总数据量的比值,计算公式见式(7),其中M代表分类器识别正确的数据样本数,N代表数据总量。
(7)
要计算准确率,召回率和F1值,需要先定义TP(true positive)、FN(false negative)、FP(false positive)、TN(true negative)四种情况。TP表示预测结果与真实结果都为正常,FP表示预测结果为正常,真实是故障,FN表示预测结果为故障,真实是正常,TN表示预测结果为故障,真实结果为故障。具体定义如表3所示。
得到表3的相关指标之后,就可以进一步计算准确率,召回率和F1值。准确率表示模型预测为正常,且预测结果正确的绝缘子个数,占模型预测为真所有数据的比例,换句换说,就是模型预测为真的结果中,有多少是预测对的。计算公式见式(8)。
表3 TP、FN、FP和TN的定义
(8)
召回率表示绝缘子测试数据集中正常的绝缘子,有多少被模型正确的找出来。计算公式见式(9)。
(9)
通常来说,准确率和召回率是一对相互矛盾的度量方法,当准确率较高时,召回率往往较低;而召回率高时,准确率往往较低。所以,在选择评价指标时,就需要考虑到不同的使用场景和适用范围。如果想要同时考虑准确率和召回率,就需要使用综合评价指标,常用的指标是F1值。F1值代表准确率和召回率的加权平均和,综合了准确率和召回率的结果。当模型有较高F1值时,意味着模型的效果通常比较鲁棒。计算方法如式(10)。
(10)
3.3 模型实现
本文的模型训练和测试工作,都在带有GPU的服务器中运行。服务器的具体硬件配置是:Linux 16.04 LTS系统,CPU:Inter Core i7 7800,GPU为NVDIDA GeForce GTX 1080×2,内存:64 GB。软件环境安装有cuda 9.0,cuDNN 7.1,python 3.7,numpy,opencv,sklearn和Pytorch。本文使用Pytorch深度学习框架,实现本文提出的MFIFIN网络,以及其他作为对比的单一骨干网络结构和细粒度分类网络。训练特征提取网络时,CNN1和CNN3网络使用Xavier方法初始化模型权重之后在绝缘子故障数据集上进行训练,CNN2和CNN4在预训练权重的基础上进行训练。训练完成之后,将特征提取网络的权重固定,在网络后面添加特征拼接融合结构和分类器,开始训练MFIFIN网络。网络是分步骤进行训练的,不可避免会受到噪声的影响,影响分类器的效果。为了减少噪声的影响,从数据角度,在训练分类器之前,对数据标签进行二次筛选,避免噪声标签对训练结果的影响。在特征层面,对融合之后的特征进行高斯滤波,去掉特征中的模糊噪声,然后将去噪之后的特征送入分类器进行训练。使用SGD[18]优化方法更新分类器的权重,网络的超参数设置见下表4。
表4 MFIFIN超参数设置
3.4 结果与分析
(1)普通分类与细粒度分类对比。本文提出的MFIFIN网络中利用了两组四个特征提取网络,这些网络都是经典的分类网络骨干框架。为了验证基于细粒度思想的MFIFIN网络的分类效果,本文比较了常见的经典分类网络与MFIFIN网络在绝缘子数据集上的分类效果,比较结果见表5。其中A代表精确率,P代表准确率,R代表召回率。
表5 普通分类与细粒度分类对比
从表5中可以看出,随着网络模型不断发展,对数据的拟合能力不断加强。在绝缘子故障数据集中,基于预训练权重重新训练的单一模型Densenet201能达到85.60%的分类精确率和0.82的F1值。本文提出的MFIFIN网络在测试集上的效果最好,可以到达88.32%的分类精确率,F1达到0.88。同时准确率和召回率也保持了较高的水平,表明该网络对绝缘子故障数据集有很好的拟合能力。
(2)通用弱监督细粒度分类模型与MFIFIN对比。常见的弱监督细粒度分类网络都是基于公开数据集上进行训练的,为了验证这些模型在绝缘子故障识别上的效果,参考文献中的参数设置,在本文构建的绝缘子故障数据集中进行训练,最后在测试集上进行试验,测试结果见表6。可见,MFIFIN在绝缘子故障数据集上的识别效果,要远远好于这些通用的弱监督细粒度分类模型。
表6 通用弱监督细粒度分类模型与MFIFIN比较
(3)MFIFIN网络有效性验证。MFIFIN网络在前向传播的过程中,图片会经过多网络特征提取,特征融合,然后再送入分类器去判断绝缘子是否发送故障。为了验证网络结构对提升绝缘子故障识别能力的有效性,在实验的过程中,从最基础的单网络结构开始(以CNN1为例),每增加一个结构,就去验证当前模型在测试集上的效果,实验结果如表7所示。
从表7可以看到,MFIFIN网络使用的相关结构对提升绝缘子故障识别有重要的作用。在实验2,3,4中,每一个网络提取特征之后,都直接进行预测,将网络预测的结果进行决策融合之后作为最终的输出。在这个过程中,并没有对特征进行有效的融合,导致特征并没有被充分利用起来,识别效果有所提升但并不明显。在此基础上,通过实验5,将所有特征有机融合之后,检测效果有了较大提升,各项指标均有5%左右的提升,最终达到最优的识别效果。
(4)同类研究比较。将本文提出的方法与同类研究方法进行对比,比较结果见表8。由于评价指标和方法的不同,部分文献提出的方法,并不能与MFIFIN在同一个评价下进行对比,所以只选择了文献5、7、9和11进行比较。所有模型均在本文收集的数据中进行训练和测试。在表8中,虽然在个别指标下,文献方法能取得不错的结果,如文献7在召回率上达到82.3%。但是总体来看,MFIFIN网络对绝缘子故障识别的效果更好。
表7 网络有效性验证
表8 同类研究比较
4 结论
基于弱监督的细粒度图像分类方法是图像分类领域新的研究方向,本文使用这种方法的解决思路,将绝缘子故障识别转换成一个二分类问题,提出绝缘子故障识别网络MFIFIN。网络在设计过程中,结合多网络特征提取和特征融合,使用交叉熵作为损失函数。此外,由于绝缘子数据是从原始图像中截取出来的,为了避免绝缘子数据集在缩放过程中长宽比发生变化,本文对数据集进行了填充黑边的处理,在一定程度上保持了图像的原始信息。本文从精确率、准确率、召回率和F1 值4个评价指标对所提出网络和其他方法进行对比。实验结果表明,MFIFIN网络对绝缘子故障数据集有很强的拟合能力,比常见的弱监督细粒度分类模型和同类研究的方法效果都好。但是,目前该网络训练较复杂,无法端到端进行训练。在未来的研究中,将实现网络的端到端训练,在保证识别精度的前提下,降低训练模型的难度。