基于自监督学习的输电线路螺栓螺母异常检测技术
2023-06-02杨景嵛刘晓华孙忠慧张治国刘文超王沐东付思诗
杨景嵛,辛 巍,刘 全,刘晓华,孙忠慧,张治国,刘文超,王沐东,付思诗
(1.国网湖北省电力有限公司 超高压公司,武汉 430050;2.浙江大学 滨江研究院,杭州 310000)
0 引言
电力供应是生产生活的重要保障。我国输电线线路众多,覆盖广泛,因此基层巡检、运维成本都面临着极大的挑战,迫切需要一种自动化与智能化检测技术来改变这一现状[1-2]。近年来,越来越多的研究尝试将人工智能应用于电力设备的运维以期达到高通量检测、自动化筛选故障点用以提高检测效率、降低运维成本[3]。主要使用计算机视觉算法来分析输电线路航拍图像,以识别图像中关键部件的缺陷类型并进行准确定位作为目标。目前,如何对输电线路关键部件视觉缺陷进行准确检测仍是关键问题之一[4-5]。其中,在输电线路中用于固定、连接的螺栓部件在人为或者环境的影响下经常会出现螺栓损坏故障,轻则引发输电线路部分组件脱落的故障,重则引发重大电网事故[6-7],因此对输电线路中螺栓检测对于输电线路运维具有重大意义。
输电线路螺栓故障检测技术主要是将计算机视觉算法做为技术基础,输电线路无人机巡检图像作为待检测对象,以识别图像中螺栓缺陷目标[8]。基于深度学习的目标检测模型目前是处理输电线路巡检图像的最优选择[9]。为了将深度学习模型用于输电线路关键部件缺陷检测,首先需要构建完备的关键部件缺陷数据集用于训练和测试。在无人机将航拍图像传回之后,使用数据集训练搭建好的深度学习模型即可完成各类缺陷检测任务[10]。
对于输电线路螺栓检测方法,主要依靠无人机巡检技术、图像处理、深度学习的图像识别技术实现螺栓检测。检测流程通过无人机对输电线路巡检,获得输电线路的高清图像,再通过人工或图像处理等方式对无人机巡检图像中的螺栓进行检查[11-14]。近几年,随着深度学习技术和无人机技术的快速发展。有监督学习的目标检测被广泛应用到螺栓检测任务中。通过SSD[15]和YOLOv3[16]目标检测模型对螺栓进行有监督学习,先对关键挂点部位进行有监督学习,再对挂点中的螺栓目标进行有监督学习,同时依靠数据增强方法,提高了螺栓检测的准确率。利用AdaBoost和与或图基于Haar特征建立螺栓开口销分类器,但是这方法对螺栓角度和亮度变化鲁棒性差[17]。通过有监督学习训练两次特征金字塔分别提取可能螺栓缺失开口销的区域和螺栓缺失开口销的区域,再通过DBSCAN[18]对螺栓销钉缺失进行目标检测。使用基于注意机制的弱监督螺栓检测模型[19],提升了螺栓检测的精度。应用知识图谱和知识特征融合方法提升螺栓和螺母分类任务的准确率和召回率[20]。
但是,由于目前螺栓故障检测技术仍不能保证具有较高的识别准确率,故该工作主要采用计算机视觉螺栓故障检测技术辅助加人工复检,人工复检工作量仍然很大。目前在所有关于输电线路螺栓检测的研究主要中存在三点问题。第一,所有研究均使用少量的有标签的自建数据集进行螺栓检测相关任务的有监督学习和验证。第二,少量的标注数据导致了大量的巡检原始数据没有被模型学习,造成了训练数据集资源的浪费。第三,若对大量的原始数据进行标注,需要花费极大的时间和人力成本才能完成这一项漫长而又艰巨的标注任务[19]。
针对以上输电线路螺栓检测有监督学习通常依赖大量标注数据以达到较好的性能的问题。本文采用自监督学习方法从大量的无标签螺栓数据中获取螺栓信息有很大价值。自监督学习通过学习大量无标签数据的内存在特征,SimCLR[21]和MoCo[22-24]自监督学习通过拉大不同样本的之间的距离实现和缩小同一样本内的距离,学习数据集的内在特征实现自监督学习。该方法需要需要保证数据集中不同类别数据量的均衡,但是对于螺栓异常检测负样本是极少的。直到BYOL[25]自监督学习方法的出现,不再需要数据均衡,可以学习数据分布及内在特征。该方法对于螺栓检测样本及不均衡的场景十分适用。最近,最先进的自监督学习框架DINO[26]基于BYOL方法和先进的视觉Transformer[27]主干网络在大模型预训练任务中展现出了很好的表现。
本文针对数据集资源浪费的问题,为了充分利用无标签的螺栓数据集资源,首次提出使用自监督学习进行螺栓检测大模型预训练方法,并验证自监督学习在螺栓检测预训练的效果。首先通过有监督学习目标检测方法获得115万张无标签螺栓数据。然后使用无监督学习的方式预训练螺栓检测大模型。最后通过预训练大模型生成螺栓注意图,验证了自监督学习在螺栓大模型预训练中可以学习并关注到有效的螺栓特征。
为了验证预训练大模型在螺栓检测任务中的效果,建立了螺栓分类任务数据集和螺栓图像检索数据集。通过下游任务的有监督学习,验证了自监督螺栓预训练大模型,在螺栓分类任务和螺栓图像检索任务中效果优于传统的有监督学习。
总之,本文在螺栓检测领域主要有4个方面的贡献:1)证明了使用大量无标注螺栓图像数据集的自监督学习在输电线路螺栓、螺母异常检测中是有效的。2)实验结果表明该方法在下游螺栓状态分类任务和螺栓图像检索任务中都有很好的表现。3)实验结果对比了各种计算机视觉结构,显示了ViT在螺栓异常检测中的优越性,ViT-B/8在分类任务中表现最好,ViT-S/8在检索任务中由于ResNet50。4)展示了模型在自监督学习过程中学习到的螺栓特征。
1 研究思路
该研究根据输电线路原始数据特点和自监督学习方法对输电线路螺栓螺母检测方法进行设计。首先获取螺栓数据集,包括螺栓原始数据集、单图无标签螺栓数据螺栓分类数据集、螺栓图像检索数据集。然后使用自监督学习DINO训练螺栓预训练大模型。最后验证该算法在螺栓迁移学习和螺栓图像检索任务中的有效性。
螺栓数据集获取包括原始数据的采集,为了使自监督模型学习到更广泛的螺栓场景,充分利用所能获取的输电线路螺栓数据,通过标注少量的螺栓目标检测数据集,使用Yolo训练螺栓目标检测模型,用于提取单图无标签螺栓数据。使用Yolo模型推理出大量单图无标签螺栓数据用于自监督学习大模型训练。螺栓分类数据集、螺栓图像检索数据集分别用于验证自监督预训练模型在螺栓分类任务中和螺栓检索任务的有效性。DINO是目前表现最好的自监督学习方法,首次获取无标签螺栓数据集在自监督模型上训练螺栓预训练大模型。
因此本文的研究思路是基于自监督学习的输电线路螺栓螺母检测算法,实现螺栓检测大模型的训练,并提升算法的准确率。
图1 算法整体研究流程
2 螺栓检测自监督学习算法
2.1 螺栓数据集获取
2.1.1 原始数据集来源
本文采用的原始数据集有3个来源,分别为中国电网公司提供的真实输电线路无人机巡检图像、输电线路人工采集图像和输电线路零件图像。输电线路无人机巡检图像是使用像素为2 000 W、焦距为8.8 mm、光圈为f/3.2的高清摄像机在距离输电线路塔1.5~3 m的距离上拍摄的像素大小为547 236 48的输电塔图像。采用无人机定点巡航或人工飞行无人机进行拍摄。每个输电塔用固定拍摄位置,主要对地线挂点、绝缘子上挂点、绝缘子下挂点进行拍摄。拍摄距离在1.5~3 m之间。输电线路人工采集图像是将输电线路各部件组装,人工制造模拟不同的螺栓状态进行拍摄的图像。拍摄相机参数与无人机巡检图像保持一致。首先将绝缘子下挂点和底线挂点悬挂在空中,模拟实现螺栓状态多种状态,包括螺栓松动、螺栓平扣、螺栓欠扣、缺螺母等状态。然后由人工手持无人机模拟无人机飞行。最后在一组固定点位进行拍摄,点位分别为间隔角度为30度,和上、中、下3个视角进行拍摄。一组螺栓图像为36张图像。拍摄时间包括造成、中午、傍晚,模拟了不同光照角度的信息。拍摄天气为自然天气,包括晴天、阴天、小雨天气,增加了天气对检测数据信息。输电线路零件图像是将多个包含螺栓的输电线路零部件摆放在一起进行拍摄的图像。拍摄方法与输电线路人工采集图像方法相同。
图2 输电线路螺栓原始数据,真实的输电线路无人机巡检图像(左)、输电线路人工采集图像(中)、输电线路零部件图像(右)
真实的输电线路无人机巡检图像可以保留数据的实际应用场景信息,输电线路人工采集图像和输电线路零部件图像通过模型不同的螺栓状态、拍摄角度、自然环境的光照强度丰富了螺栓的数据信息,并添了一定的噪音,可以适当的环境模型学习过程的过拟合现象。
从原始图像中获得单独的螺栓图像用于自监督学习,本文使用目标检测模型从原始数据集检测螺栓图像。首先通过人工标注的方式,在原始图像为3通道的RGB图像i∈R3×H0×W0中使用矩形框将螺栓标注。然后训练一个螺栓的目标检测模型,本文采用Yolo[28-30]进行训练。最后对原始数据进行推理,从原始数据中裁剪出所有检测到的螺栓。Yolo的网络结构主要由4个部分构成,分别为输入端、骨干网络 Backbone、强特征提取网络 Neck 以及预测网络 Prediction 这4个部分构成。输入端采用 Mosaic 数据增强方法的同时,融合了 Mixup 数据增强方法,通过随机缩放、随机裁剪、随机排布、不同图片加权融合等方式对图片进行拼接,丰富了数据的多样性,可提升小目标的检测效果。
bboxn=yolo(i)n=0,1,…,N
(1)
ib=crop(i,bboxn,ratio)
(2)
其中:yolo为螺栓目标检测模型,bboxn为识别到的螺栓框其形状为N×4,N为识别到的螺栓数量,4为[x1,y1,x2,y2]表示识别螺栓框的坐标,x1,y1为原始图像i的左上角坐标,x2,y2为原始图像i的右下角坐标,crop为从图像i裁剪螺栓方法,ratio为在1到1.1之间随机取值的螺栓图像坐标放大比率。ib为无标签的螺栓数据集。
2.1.2 螺栓状态分类数据集
螺栓状态分类数据集用于预训练模型的迁移学习和有监督学习。螺栓的状态由开口销、单螺母和双螺母的状态组成,状态有3种形式分别为存在、不存在、未知。通过人工识别对螺栓的状态进行标注。
2.1.3 螺栓图像检索数据集
通过对输电线路巡检的图像中的螺栓进行分析,将螺栓按照不同位置和不同作用划分为6种螺栓类型。6种螺栓分别为:塔身垂直螺栓、塔身U型螺栓、活动件水平螺栓、活动件垂直螺栓,地线挂点线夹螺栓、绝缘子下挂点线夹螺栓。每种类别的螺栓按照图片清晰度又分为清晰螺栓和模糊螺栓。
2.2 基于DINO的自监督模型
2.2.1 DINO自监督框架
DINO自监督学习框架是目前最先进的自监督学习框架,本文首次将DINO自监督学习框架应用输电线路螺栓检测任务中。DINO[31],该方式的网络结构包含两个结构完全相同的网络结构,一个作为学生网络一个作为教师网络。
图3 DINO螺栓自监督框架结构图
知识蒸馏的学习方法通过训练学生网络g(θs),将训练结果匹配给教师网络g(θt),分别用θs和θt参数化。给定一个无标签的螺栓图像数据集ib作为输入,学生网络教师网络分别输出K维向量,通过softmax函数进行归一化得到学生网络输出的概率向量和老师网络输出的概率向量,分别用Ps和Pt表示。
(3)
(4)
其中:τs和τt分别为学生网络的温度参数和教师网络的温度参数。
损失函数为:
loss=-Pt(i)logPs(i)
(5)
通过模型不断学习,得到使loss最小的θs作为螺栓自监督与训练模型参数。
2.2.2 ViT主干网络
ViT[32]主干网络是DINO自监督框架中教师网络和学生学生网络常用的结构。该研究主要对比了不同规格的ViT和ResNet50的在螺栓螺母检测任务中的精度表现。ViT将Transformer模型从自然语言处理NLP成功应用计算机视觉领域,并取得非常优秀的成绩。该网络参考文本处理方法,将图片分割成非重叠连续N个图像块,每个图像小块的分辨率为 或。将每个图像块通过一个线性层映射成N个向量,并和一个可学习的向量组成一个(N+1)D的向量,同时在向量中添加图像块位置信息后,将向量序列输入到Transformer中进行计算输出图像编码。
2.3 迁移学习
迁移学习将DINO得到的螺栓预训练大模型后添加一个可学习的多层感知机MLP用来学习一个特定的螺栓分类任务。螺栓分类任务通过标注少量的螺栓分类数据集,在螺栓预训练大模型的基础上训练。经过迁移学习后,得到螺栓图像的特征向量fi。
fi=MLP(gθs(i)),fi∈RN*M
(6)
其中:M为分类任务的类别数量,fi经过softmax函数得到分类的概率Pi。
(7)
损失函数采用CE(Cross Entropy)[34]进行计算。具体而言,每一类的预测标签与标注标签计算CE损失。
2.4 螺栓图像检索方法
图像特征向量的高效表示是图像检索的一个重要基础,使用DINO得到的螺栓预训练大模型得到螺栓图像特征向量进行图像检索。采用K最近邻(K-Nearest Neighbor,KNN)KNN[33]方法进行图像检索。将螺栓图像检索数据集中的图像经过螺栓预训练大模型得到螺栓图像的特征向量。K最近邻检索通过在螺栓图像检索数据集中查找与查询螺栓特征向量距离最近的向量来获得相同类型的螺栓图像。螺栓图像特征向量之间的距离采用余弦相似度方法计算。
3 实验结果与分析
本研究将自监督学习应用到输电线路螺栓检测任务中,并验证自监督学习在输电线路螺栓检测任务中的效果。首先完成数据集的建立,包括螺栓无监督学习数据集、迁移学习数据集、螺栓检索数据集。然后通过自监督学的视觉表征特征验证自监督学习在输电线路中螺栓特征的学习效果。最后使用自监督学的螺栓预训练大模型在螺栓分类任务和螺栓检索任务中进行对比实验。
3.1 数据集建立
3.1.1 自监督无标签数据集
为了从原始数据获得大量的自监督无标签的螺栓数据集,使用少量标注数据进行有监督训练目标检测模型,再使用模型对原始图像推理,最后获得大量的无标注螺栓图像。人工标注12 302张原始图像中的螺栓,使用yolo模型进行训练。batch size设置为240,使用CSPResNeXt50主干网络在单机8个A100 GPU上进行训练。优化器使用Adam。学习率采用cosine衰减策略。训练100个epoch。训练环境配置及参数,本实验使用Python 3.7、PyTorch 1.7.1、 CUDA 11.0、 torchvision 0.8.1环境进行有监督学习训练。
图4 原始图像螺栓检测结果
对检测到的螺栓进行抠图,获得115万输电线路单螺栓图像,用于DINO框架下的自监督学习。在螺栓抠图的过程中,将螺栓图像长和宽各放大1.1倍,使螺栓位于图像中央。通过该方式获的数据数量多,螺栓类型多样,螺栓数据与真实数据一致。
3.1.2 螺栓状态有标签数据集
为了减少人工标注成本,仅挑选出小部分螺栓图像进行人工标注,将标注的图像用于有监督学习和迁移学习任务。第一行到第六行分别标注为单螺母存在、开口销存在、双螺母存在、单螺母未知、开口销未知、双螺母未知。
图5 螺栓状态分类数据集
3.1.3 螺栓图像检索验证集
为了验证自监督螺栓预训练大模型在检索任务中的效果,建立螺栓图像检索数据集。通过人工筛选了6类螺栓数据用于图像检索任务,每类螺栓数据分为清晰和模糊两个类别。清晰和模糊的标准按照是否可以看清螺栓中每个部件的边缘轮廓进行区分。6类螺栓为输电线路中常见的螺栓图像,包括双螺母螺栓、单螺母螺栓、开口销螺栓,其中双螺母螺栓包括塔身垂直螺栓、塔身U型螺栓,单螺母螺栓包括地线挂点线夹螺栓、绝缘子下挂点线夹螺栓,开口销螺栓包括活动件螺栓(水平方向),活动件螺栓(竖直方向)。每个类别螺栓数据分布如表2,清晰螺栓每个类别为数量为1 332张2 632张图像,模糊类别的螺栓数数量为63到1 344张图像。如图6,数据集中包含6个类别螺栓的查询图像(左侧第一列)和清晰图像(中间部分)与模糊图像(右侧部分),图中从上到下6列分别为地线挂点线夹螺栓、活动件螺栓(竖直方向)、绝缘子下挂点线夹螺栓、塔身U型螺栓、活动件螺栓(水平方向)、塔身垂直螺栓。通过每类螺栓的查询图像检索该类别螺栓图像。
表1 螺栓状态分类数据集标签分布
表2 螺栓图像检索数据集标签分布
表3 不同backbone和不同迁移学习任务的acc结果
图6 螺栓检索数据集
图7 螺栓自监督学习注意力图
3.2 自注意力视觉表征
使用没有标签的螺栓数据集对模型进行预训练。batch size设置为1 024,分别使用resnet50和ViT-S/8主干网络在单机8个A100 GPU上进行训练。优化器使用Adamw。学习率在前10个epochs使用线性上升策略从0至0.002。其中0.002使用Lr = 0.000 5 * batchsize/256计算方法获得,在10个epochs后采用cosine衰减策略,权重衰减采用从0.04到0.4的cosine 衰减策略。学生网络的温度参数设置为0.1,教师网络的温度参数前30个epochs采用0.04到0.07的线性变化。训练环境配置及参数,本实验使用Python 3.6、PyTorch 1.7.1、 CUDA 11.0、 torchvision 0.8.2环境进行系监督学习训练。
使用螺栓自监督预训练大模型,对双螺母螺栓、水平视角螺栓、垂直视角螺栓图片进行推理获得螺栓图片注意力图。从注意力图中可以看出,基于DINO的自监督螺栓预训练大模型可以学习到螺栓的特征。图6中上层结果为双螺母螺栓结果,中间层结果为水平视角的螺栓、底层为竖直方向的螺栓。观察实验结果可知,模型能很好的学习到两个螺母、螺栓杆、螺帽、连接件的特征。说明DINO对于螺栓自监督学习具有很好的效果。
3.3 自监督预训练迁移学习实验
为了验证自监督预训练的效果,采用5种backbone进行自监督预训练实验。5种backbone分别为Resnet50[36]、ViT-S/16、ViT-S/8、ViT-B/16、ViT-B/8。迁移学习任务分别为开口销状态分类、单螺母状态分类、双螺母状态分类。在表中比较了5中主干网络在自监督预训练迁移学习和有监督学习条件下开口销状态、单螺母状态、双螺母状态的准确率。准确率使用acc表示,单位%。
(8)
其中:TP、TV、FP、FN分别为正例预测正确的数量、负例预测错误的数量、负例预测正确的数量、正例预测错误的数量。
可以看出基于Dino的自监督螺栓预训练大模型的迁移学习在螺栓状态分类任务中表现优于有监督学习。螺栓预训练大模型在在分类任务中相对于监督学习准确率提升了2%到7%,在ViT-B/8的主干网络上的自监督预训练迁移学习表现最好。
3.4 螺栓图像检索
将DINO自监督预训练模型应用到螺栓图像检索任务中,将DINO自监督预训练模型参数冻结,并提取训练数据集的螺栓图像特征。使用KNN方法验证DINO自监督预训练模型获得的螺栓图像特征的在检索任务中的效果。
为了评估性能,使用平均精度(AP)度量作为查询的精度-召回曲线下的面积计算。精度定义为检索到的正图像与检索到的总图像数量之比。召回率定义为检索到的正例图像数量与数据集中正例图像总数的比值。理想的精度-召回曲线在所有召回级别上的精度为100%,这对应于平均精度为100%。计算6类螺栓的每类AP分数,将它们平均起来以获得 (mAP)分数来评估整体表现。
在自建的螺栓数据集中的检索结果如表4,通过实验结果可知DINO的mAP在ResNet50和ViT-S/8主干网络上均比有监督学习高,清晰图像检索任务比模糊的效果要好。DINO自监督预训练模型在螺栓图像检索任务效果较好,平均精度提升了8%。
表4 螺栓自监督大模型检索任务结果
4 结束语
本文提出了一种基于自监督学习的输电线路螺栓检测技术,首次将DINO自监督学习应用到输电线路螺栓检测任务中。从原始输电线路数据中生成无标签螺栓数据集、螺栓状态分类数据集、螺栓图像检索验证集。分别在3个数据上完成自监督训练、有监督螺栓分类迁移学习和螺栓图像检索任务实验。实验结果表明,自监督螺栓预训练大模型可以学习到螺栓的组成特征,并且可以提升下游的分类任务准确率,在螺栓检索任务效果也有明显提升。无标签的螺栓数据集获取成本相对较低,可以获得更的螺栓数据集,通过自监督的学习方式训练一个关于螺栓检测任务更通用的螺栓预训练大模型,为输电线路的螺栓缺陷检测提供更实用的模型基础。