基于改进YOLOv7的绝缘子缺陷检测算法

摘要

现有的检测方法面临着巨大的挑战,在识别绝缘子的微小缺陷时,针对输电线路图像与复杂的背景。为保证输电线路的安全运行,提出一种改进的YOLOv 7模型,以提高检测结果。

首先,基于K-means++对绝缘子数据集的目标盒进行聚类,以生成更适合检测绝缘子缺陷目标的锚盒。

其次,在网络中增加了CoordAttention(CoordAtt)模块和HorBlock模块。然后,在信道域和空间域,网络可以增强特征提取过程中的有效特征,削弱无效特征。

最后,利用SCYLLA-IoU(SIoU)和焦点损失函数加速模型的收敛,解决正负样本不平衡的问题。

此外,为了优化模型的整体性能,改进了非最大值抑制(NMS)方法,以减少误删除和错误检测的缺陷目标。

实验结果表明,我们的模型的平均精度为93.8%,比Faster R-CNN模型,YOLOv 7模型和YOLOv 5s模型分别高7.6%,3.7%和4%。所提出的YOLOv 7模型可以有效地实现复杂背景下小目标的精确检测

关键词: YOLOv7; insulator-defect detection; attention mechanism; HorBlock; SIoU

1. Introduction

绝缘子是一种特殊的绝缘控制器,是架空输电线路中必不可少的电气设备。早些年,绝缘子主要用于电力杆,逐渐发展为圆盘绝缘子,通常由玻璃或陶瓷制成,悬挂在高压电力线路的连接塔的一端。它们在输电线路中起到电气绝缘和机械固定的作用[1]。此外,通过在输电线路上悬挂绝缘子,可以增加输电距离,降低输电线路之间的容抗。但由于长期受强电场、恶劣环境等因素的影响,绝缘子存在许多缺陷,如自爆、损坏、污闪、漏电等[2,3]。

在这些缺陷中,最常见的故障是绝缘子损坏和污闪引起的表面缺陷。绝缘子的损坏主要是由绝缘子制造缺陷、各种应力的综合作用等原因造成的。污闪中的表面缺陷主要是由局部放电引起的。污闪是指污染物附着在绝缘表面,可溶性物质在潮湿条件下逐渐溶解于水中,在绝缘表面形成导电膜,降低绝缘强度,增加泄漏电流,从而产生局部放电[4]。根据研究,由绝缘子缺陷引起的电力系统瘫痪占电网系统故障的一半以上。因此,研究绝缘子及其缺陷的快速检测与识别技术,对维护检修人员具有很好的应用价值[5]

传统的绝缘子缺陷检测方法主要采用人工巡检、现场巡检或传统的检测算法来分析机器人或无人机拍摄的图片[6]。然而,我国输电线路结构复杂,采用传统的检测方法,效率不高,会导致巨大的财力和物力浪费。同时,无人驾驶飞行器拍摄的图像具有大视场的特性。在这种情况下,针对绝缘体缺陷存在一些问题,例如复杂的背景环境和小的缺陷目标,这会干扰缺陷检测[7]。因此,迫切需要提出一种适用于复杂背景下输电线路的小目标故障检测方法,以提高检测效率。

近年来,随着深度学习理论的发展和计算机性能的提高,基于深度学习的目标检测算法因其良好的泛化能力和跨场景能力而得到广泛研究[8]。Zheng等人。[9]提出了一种两阶段训练方法,从数据衰减的角度来正则化深度CNN。实验结果表明,该算法通过优化特征边界提高了深度CNN的泛化能力,对超参数的选择具有鲁棒性。Zhao等人。[10]提出了一种基于多通道卷积神经网络(CNN)和改进的帧差法(FDM)的气象光分类系统。该系统可以在计算资源有限的嵌入式系统中工作,并能对地面相机拍摄的云观测照片进行准确分类。Jin等人[11]实现了从人脸识别到人脸诊断的深度迁移学习。深度迁移学习在小数据集人脸诊断中的成功应用,可以为疾病筛查和检测提供一种低成本、非侵入性的方法。为了用生成的伪深度图取代深度传感器,Jin等人[12]还提出了一个伪RGB-D人脸识别框架,并提供了数据驱动的方法来从2D人脸图像生成深度图。Zhao等人[13]提出了一种更快的均值漂移算法,以解决基于余弦嵌入的细胞实例分割和跟踪的瓶颈。该算法提供了一个即插即用的模型,适用于任何基于像素嵌入的聚类推理。目前,智能电网的数字化建设提供了海量数据,而深度学习的发展为数据价值提取提供了有效手段。这也使得基于神经网络的绝缘子缺陷检测得到了广泛的应用。

目前的研究主要分为两类:第一类是两阶段的目标检测模型,以基于区域的卷积神经网络(R-CNN)[14]、快速基于区域的卷积神经网络(Fast R-CNN)[15]和更快的基于区域的卷积神经网络(Faster R-CNN)[16]为代表,Lu等人。[17]提出了一种基于改进的锚框选择方法的Faster R-CNN来检测绝缘子。该方法具有较高的精度,并且获得最终结果所需的时间较少。然而,它每秒只能检测三个图像,这与实时检测相去甚远。Liao等人[18]提出了一种结合深度残差网络Resnet 101的Faster R-CNN算法来检测绝缘子缺陷,与传统检测算法相比,显著提高了绝缘子缺陷的检测精度,但该算法计算量大,无法满足绝缘子缺陷检测的实时性要求。另一类是由You Only Look Once(YOLO)[19]和Single Shoot MultiBox Detector [20]代表的用于直接位置回归的一阶段目标检测模型。Feng等人[21]提出了一种基于YOLOv 5目标检测模型的绝缘子自动检测方法。与4种不同版本的YOLOv 5相比,基于K-means聚类的YOLOv 5x模型能有效识别和定位输电线路绝缘子缺陷,但最高准确率仅为86.8%。Liu等人[22]提出了MTI-YOLO网络,该网络在网络中使用多尺度特征检测头、多尺度特征融合结构和空间金字塔池化模型,并提高了模型的准确性,但仅检测正常绝缘子。与上述两种研究方法不同,为了实现端到端的训练和推理,Wu等人[23]提出了一种基于Centernet的绝缘子缺陷检测方法,该方法简化了骨干网络,并使用注意力机制来抑制无用信息,提高网络检测的准确性。但是,检测速度不高当两种不同的对象共享同一个中心点时,CenterNet只能检测其中一个

与上述算法相比,Wang等人[24]在2022年提出的YOLOv7模型在COCO数据集上具有更快的速度和更高的精度。YOLOv7包括几个可训练的赠品包,因此实时检测器可以在不增加推理成本的情况下大大提高检测精度。研究了模块重新参数化如何有效地替换原模块,以及动态标签分配策略如何处理不同输出层的分配。**其速度和精度超过了所有已知的5 FPS至160 FPS范围内的目标检测器。**它还可以支持从边缘到云端的移动的GPU和GPU设备。该模型可用于实际工程应用,满足绝缘子缺陷检测的实时性要求。然而,目前关于YOLOv7模型在绝缘子缺陷检测中的应用研究还很少。同时,在检测绝缘子缺陷时,该模型的准确性还有改进的余地。检测的准确性也容易受到输电线路复杂背景和小缺陷目标的影响。

以上为本文的写作动机

针对上述问题,我们提出一种基于YOLOv 7算法的改进绝缘子缺陷检测方法。

方法论

首先,为了提高检测的准确性和效率,本文使用从K-means++聚类绝缘子数据集获得的锚框大小来代替YOLOv 7的默认锚框大小。

其次,架空输电线路覆盖范围广,采集的图像数据背景相对复杂。深度学习目标检测算法必须能够消除复杂背景的干扰。针对图像数据背景复杂的特点,在原有骨干网络中融入CoordAtt注意机制和HorBlock模块,增强网络提取图像特征的能力,提高网络对绝缘子小缺陷目标的检测精度。

引入SIoU回归损失函数和病灶损失分类函数,提高网络收敛速度和检测效率,解决数据集样本不平衡问题。

最后,SIoU-NMS被用来实现一个新的非最大值抑制过程,以减少绝缘子和绝缘子缺陷的错误检测的问题。实验结果表明,改进后的网络对复杂环境下的绝缘子缺陷具有较好的检测效果。

2. 数据与方法

2.1 数据集准备和预处理

2.1.1 图像采集

针对架空输电线路的绝缘子缺陷数据集很少,甚至在整个电力领域都很少。总共有1600张原始图像是从百度和谷歌捕获的,或者是从公共数据集中整理出来的[25]。该数据集中图像像素的分辨率宽度大于2000-5000,高度值大于2000-3000。绝缘子和绝缘子数据集是根据原始图片构建的,主要包括两种缺陷:污闪和损坏,如图1所示。

在这里插入图片描述

2.1.2 图像预处理

在深度学习模型中,需要大量数据样本进行模型训练,以减少过度拟合问题。在模型训练阶段,收集的数据越充分、越全面,模型识别效果越显著。因此,通过数据扩充来扩大样本数量。本文采用的数据增强策略包括角度旋转、饱和度调整、图像上下翻转和平移等形态学操作。同时,该模型在输入端采用了马赛克数据增强方法。通过随机缩放、随机裁剪和随机布局对四幅缺陷图像进行拼接,提高了模型的分类性能。采用混合数据增强方法,对两幅图像按比例插值,实现样本混合。均匀进行颜色空间转换,改变图片的色调、饱和度和曝光度,以最小化网络的过拟合,提高训练模型的泛化能力。经过一系列操作后的模型输入如图2所示。0表示污闪缺陷; 1表示损坏缺陷; 2表示绝缘子。

在这里插入图片描述

除了上述正则化技术外,本文还在训练阶段采用了早停法、权重正则化、dropout和批量归一化等标准方法来防止模型的过拟合。

2.1.3 图像数据库和标签数据库

同时,使用Labelme工具对图像的地面实况框进行标注,标注类别分为污闪、损坏和绝缘子。最后,将标记的绝缘子数据集划分为训练集、验证集和测试集。在这个实验中有1600个图片样本,数据集以7:2:1的比例划分。对数据集中标签的数量和分布进行计数;结果如图3所示。

在这里插入图片描述

在图3a中,纵坐标轴是标签的数量,横坐标轴是标签的名称。数据集中有足够的缺陷样本,可以包含日常生活中绝缘子的大多数缺陷场景。

图3b示出了标签的分布。横坐标x是标签中心的横坐标与图像宽度的比率,纵坐标y是标签中心的横坐标与图像高度的比率。从图中可以看出,数据分布广泛,集中在图像的中间。在图3c中,横坐标宽度是标签宽度与图像宽度的比率,纵坐标高度是标签高度与图像高度的比率。数据集包含各种大小的数据,主要是中小目标数据,更适合实际情况。

2.2 提出的方法

本文中提出的方法的检测框架如图4所示。

首先,绝缘体数据集被标记为地面实况框。基于数据集中的所有地面实况框,通过聚类算法生成不同尺寸的锚框,使模型的初始锚框尺寸与绝缘子缺陷的目标尺寸相匹配。

其次,改变了YOLOv7的网络结构。在骨干网络中加入CoordAtt注意机制和HorBlock模块,集中提取图像中有用的特征信息,同时弱化无关特征。

第三,采用改进的损失函数来加速模型的收敛。

最后,采用SIoU NMS方法对非最大值抑制过程进行改进,减少缺陷目标的多检测现象,使模型输出结果更加准确。

在这里插入图片描述

2.3 锚框优化

YOLOv 7默认使用K-means算法对从COCO数据集获得的锚框进行聚类,并在训练过程中使用遗传算法对锚框进行调整。然而,K-means聚类算法的收敛在很大程度上取决于聚类中心的初始化[26]。因此,本文使用K-means++算法[27]来缓解这个问题,提高检测的准确性和效率。

传统的K-means算法一次选择多个聚类中心,而K-Means++算法一次只选择一个聚类中心。改进后的方法不仅使随机选取的中心点趋于局部最优解,而且使其尽可能接近全局最优解。

具体步骤如下:

(1)从数据集中随机选择一个样本目标框作为初始聚类中心,计算剩余样本框与当前聚类中心之间的最小交集比距离A(x)。

在这里插入图片描述

(2)其中IoU表示两个矩形框之间的交叉平行比,x为子目标标记样本框,c表示聚类中心; 计算每个绝缘子样本框被选为下一个聚类中心的概率O(x),并使用蒙特卡洛技巧中的roulette method选择下一个聚类中心。

在这里插入图片描述

其中X是目标标记帧的总样本;

(3)重复步骤1和2,直到所有聚类中心都被选中。

(4)计算数据集中每个样本到聚类中心的距离,将样本划分到距离最小的聚类中心对应的类中,重新计算每个类别的聚类中心ci。重复更新分类和聚类中心,直到锚框大小保持不变。

在这里插入图片描述

其中i = 1,…,K,K是不同大小的锚框的数量,其值由检测模型的锚框的数量决定。由于本文中的检测模型包含三个检测特征图,并且每个特征图对应三个锚框,因此k = 9。三个特征图的尺寸和相应的优化锚框如表1所示。

在这里插入图片描述

小尺寸锚框对应于80 × 80特征图的最终输出,负责检测小尺寸物体。中等大小的锚框对应的是一个大小为40 × 40的特征图,负责检测中等大小的物体。大尺寸的锚框对应的是一个大小为20 × 20的特征图,负责检测图像中的大物体。

2.4 Backbone 网络

本文绝缘子缺陷的检测模型如图5所示。整个网络模型结构分为四个部分:输入、骨干网络、neck网络和head网络。

在这里插入图片描述

首先,输入端对图像执行数据增强操作,如马赛克、随机裁剪和缩放,以避免过拟合。主干部分包括CBS、MP和ELAN模块。MP模块由maxpooling和CBS模块组成。CBS模块由常规卷积、批量归一化和激活函数组成。CBS模块与传统CNN网络的区别在于Leaky ReLU函数用SiLU函数取代了激活函数。ELAN模块可以控制最短和最长的梯度路径,更深的网络可以有效地学习和收敛。ELAN模块也由多个CBS模块组成。输入的特征图在经过ELAN模块后并不改变特征图的大小,只是在最后改变输出通道的数量。

改进后的网络在骨干段的第三和第四个CBS模块之间增加了HorBlock模块。它在原始主干和颈部部分之间添加了CoordAtt注意力机制。改进后的网络可以使模型更加关注输入图像样本中有价值的内容和位置。对于小目标和复杂背景的目标,可以有效地提取特征信息,提高检测精度。

neck部由路径聚合网络PAN(路径聚合网络)和特征金字塔网络FPN(特征金字塔网络)组成。骨干网输出的32倍下采样特征图经过SPPCSP模块后,通道数从1024变为512。然后,特征映射按照自顶向下策略和自底向上方法进行特征融合。PA-FPN的结构有效地融合了不同层次的特征图。与YOLOv 5相比,YOLOv 7用EANC模块取代了CSP模块,下采样变成了MP2层。在PAFPN网络之后,网络的输出是三层不同大小的特征图。最后,网络通过head部的RepC和Conv模块输出预测结果。

2.4.1 HorBlock模块

网络经过骨干网的第三CBS模块后,特征图的尺寸进一步缩小一半,特征信息大大减少。保留非线性能力,建立长程注意力,减少梯度分散现象,提高绝缘子缺陷检测能力。由gnConv [28]递归门控卷积和层范数归一化组成的HorBlock块被添加到第三和第四CBS模块之间。HorBlock块结构的示意图如图6所示。

在这里插入图片描述

gnConv模块使用标准卷积、线性映射和元素乘法构建,但具有类似于自注意的输入自适应空间混合功能。层范数计算所有通道中所有参数的均值和方差,然后对其进行归一化。门控卷积的主要结构与标准CNN没有太大区别,但在卷积层中引入了门控机制。首先,通过两个卷积层来调整特征通道的数量。接下来,将具有可分离卷积的输出特征图分成多个部分,并且将每个部分逐个元素相乘以获得输出特征图。这里的递归是元素的常数乘法,通过它可以保存高阶信息。

2.4.2 CoordAtt模块

由于绝缘子所处的环境复杂多变,为提高模型对绝缘子和缺陷件的特征表达能力,在YOLOv7骨干网末端增加了关注机制模块。

注意机制一般可分为通道注意机制、空间注意机制以及两种注意机制的组合。传统的注意力机制模块,如挤压和激发注意力(SE)[29]和卷积块注意力模块(CBAM)[30],在建模通道到通道关系方面取得了良好的效果,但容易受到空间位置信息的影响。其他没有这个问题的注意模块虽然效果不错,但参数数量太多,不适合应用部署。

协调注意机制[31]不仅捕获跨通道信息,还捕获方向感知和位置感知,这有助于模型更准确地定位和识别感兴趣的目标。其次,CoordAtt模块非常灵活,可以添加到现有模型的多个位置。

CoordAtt注意机制框架图如图7所示。

在这里插入图片描述

水平和垂直地汇集输入,以保持两个方向的长距离依赖性。然后将两个方向上的信息缝合。接下来,特征图被分割和卷积,以集中在水平和垂直方向上。该模块输出的两部分特征图可以精确定位到我们感兴趣的目标对象的行和列。

2.5 Loss Function

YOLOv7模型的损失函数由三部分组成:局部化损失(Lbox)、置信度损失(Lobj)和分类损失(Lcls)。总损失是三项损失的加权和。其中,置信损失和分类损失函数使用二进制交叉熵损失,定位损失使用CIoU损失函数。

在这里插入图片描述

其中W1、W2和W3分别是三个损失函数的权重值。本文优化的损失函数包括回归损失函数和分类损失函数,用SIoU回归损失函数代替传统的CIoU损失函数,用焦点损失分类损失函数代替标准的交叉熵损失函数。

2.5.1 SIoU损失

传统的回归损失,如GIoU [32],DIoU[33]和CIoU [34],只考虑预测框和ground-truth框的距离,重叠面积和纵横比,而不考虑ground-truth框和预测框之间的角度,导致收敛速度较慢。然而,Gevorgyan [35]提出了SIoU损失函数。SIoU回归损失函数通过考虑期望回归之间的向量角度来重新定义惩罚度量。这种考虑可以大大加快训练收敛过程,使得预测框首先移动到最近的轴(x轴或y轴)。然后,预测框沿该轴沿着进行回归。

SIoU回归损失函数由四部分组成:角度成本、距离成本、形状成本和IoU成本。SIoU定义如下:

在这里插入图片描述

在这里插入图片描述

其中,IoU、△、IoU和Ω分别是交并损耗、距离损耗和形状损耗。同时,距离损失的计算考虑了两个box的角度损失。

如图8a所示,Cw和Ch是通过连接两个框的中心点对角构造的矩形的宽度和高度,Cw1和Ch1是两个框的最小边界矩形的宽度和高度,wgt和hgt是ground-truth框的宽度和高度,w和h是预测框的宽度和高度。α是两个盒子中心点连线与x轴的夹角,β是两个盒子中心点对角线与y轴的夹角。θ是一个可调变量,表示网络对形状损失的权重。IoU计算的示意图如图8b所示,它计算ground-truth框和预测框的交集和并集的比率。

在这里插入图片描述

增加到SIoU的角度损失主要是针对两个盒子之间的距离损失计算的。通常,在模型训练的早期阶段,预测框和地面实况框不相交。加入角度损失可以加快两个盒子之间距离的计算速度,并使两个盒子之间的距离快速收敛。

当α的角度大于45度时,公式中用β的度数代替α的角度。此时,考虑从x轴到y轴的角度。网络模型将首先尝试使预测框的中心点平行于ground-truth的中心点,然后让预测框继续沿着相关轴沿着接近ground-truth框。

传统的CIoU损失函数收敛于两个box的整体形状,而SIoU回归损失函数收敛于两个边缘,以达到全局形状收敛的效果。

2.5.2 焦点损失

样本中的绝缘体和绝缘体缺陷是前景,而其他部分称为背景。绝缘体图像在前景和背景复杂度方面存在不平衡,如图9所示。图9a中的绝缘体数量较少,背景也很简单。然而,图9b中的绝缘体数量很大,背景也很复杂。与此同时,各个类别的阳性样本和阴性样本数量也存在不平衡。原始网络直接使用交叉熵作为损失函数来评估模型。然而,作为一级目标检测器,YOLO系列存在样本复杂度和正负样本数量不平衡的问题[36],这会影响网络的梯度更新方向,导致最终检测的准确性低于两级检测器。

在这里插入图片描述

针对上述问题,对交叉熵函数进行了改进。焦点损失函数可以解决目标检测中正负样本不平衡的问题。可以根据样本区分的难易程度,对样本对应的损失增加权重,即对容易区分的样本增加较少的权重,对复杂的可区分样本增加较大的重要性。

分类损失函数的公式如下:

在这里插入图片描述

其中Lcls是分类损失值,p是模型预测的样本属于前景的概率。为了解决样本类别不均衡的问题,引入了权重参数λ。调整因子δ被添加到交叉熵损失函数。

2.6 非极大值抑制

传统的NMS [37]方法在计算IOU时存在一定的缺陷。传统的NMS用于筛选两个相邻物体的预测框时,会出现漏检。

本文的改进之处在于将目标尺度和距离引入到IOU的考虑中,利用SIoU计算置信度最高的候选框和所有其他框的IOU值,以确定删除哪个框。解决了绝缘子屏蔽罩与绝缘子距离过近的问题。

采用改进的SIoU-NMS非最大值抑制算法对待识别图像输出的初步预测框进行滤波,最终预测框通过以下步骤得到:

(1)设置置信阈值和SIoU阈值;

(2)计算网络模型输出的所有初步预测框的置信度,将置信度高于置信度阈值的初步预测框放入候选列表中,并在候选列表中按置信度从高到低的降序排列;

(3)从候选列表中取出置信度最高的初始预测框,保存到输出列表中,并从候选列表中删除初始预测框;

(4)计算上一步得到的置信度最高的初始预测框与候选列表中所有其他初始预测框的交叉合并损失,将交叉合并损失高于设定的SIoU阈值的初始预测框从候选列表中删除;

(5)重复步骤3和4,直到候选列表为空;

(6)使用输出列表中的初步预测框作为最终预测框。

3. 结果与讨论

3.1 实验环境

为了验证我们的模型的有效性,我们使用以下计算机配置参数和超级参数设置(如表2所示)进行神经网络训练和测试。

在这里插入图片描述

3.2 模型可视化分析

在训练模型之后,我们可视化了训练模型的特征图[38]。网络模型感兴趣的信息可以从可视化的特征图中看到。此外,我们进一步研究了模型是否有助于注意力机制。图10显示了由模型、主干模块和三个检测器的输出可视化的第一个卷积模块的特征图。

从第一个卷积层之后的视觉特征图中,我们可以看到从模型中提取的特征有侧重;一些侧重于边缘特征,一些侧重于整体特征。当然,这只是第一个卷积层之后的特征图。与更深层次的特征相比,浅层特征大多是完整的,而更深层次的网络特征会更少。从主干之后输出的特征图可以看出,加入注意力机制会起到很好的强化特征图的作用,抑制一些不必要的特征。最后三层对应的特征图分别用于大、中、小目标的检测,显著提高了模型的多尺度检测能力。

在这里插入图片描述

在目标被检测到之后,模型还需要执行分类任务。图11显示了模型的类激活图,可以进一步可视化神经网络在预测某个类别时会关注图像的哪些像素。可以看出,改进后的算法能够更好地从绝缘子图像中提取目标特征信息。

在这里插入图片描述

3.3 评价指标

为了全面客观地评估本文模型的性能,我们使用混淆矩阵(如表3所示)进行综合评估。

在这里插入图片描述

TP表示正确检测-模型的预测为正,实际值也为正。FN表示检测误差-模型的预测值为负值,实际值为正值。FP表示检测误差-模型的预测值为正,但实际值为负。TN表示正确检测-模型预测为负,实际值也为负。

查准率和查全率的表达式如下:

在这里插入图片描述

依赖于查准率和查全率的平均查准率(mAP)用于衡量模型的准确性。

3.4 实验结果及分析

为了验证本文提出的改进方法的有效性,我们对锚盒超参数的设置、损失函数的选取和注意机制的选取进行了对比实验。每个实验的基线是YOLOv7模型。由于本文的主要目标是提高检测准确率,因此我们在这里的实验主要使用召回率,精确率和mAP来评估效果。

首先,我们确定了锚框的九个参数值。对于锚框的生成,我们使用K-means算法对COCO数据集的锚框进行聚类,并使用K-means++聚类对参数进行比较。从结果(如表4所示)可以看出,使用K-means++聚类后得到的9个锚框参数,所有评价指标都有明显提高,验证了用合适的方法选择锚框初始中心的思路。

在这里插入图片描述

然后,我们对不同的损失函数进行了比较。YOLOv 7使用CIoU作为其损失函数。我们比较了三种方法的性能:GIoU,CIoU和SIoU(我们的);结果如表5所示。

在这里插入图片描述

从表5可以看出,与其他方法相比,使用SIoU可以提高约1.4%和1.1%的精确度和召回率。这些实验结果表明,SIoU损失函数可以获得良好的性能在绝缘子缺陷检测。

为了在网络中加入合适的注意机制,本文在模型的骨干层和特征融合层分别加入SE、CBAM和CoordAtt注意机制进行训练和比较。结果示于表6中。

在这里插入图片描述

不同的注意机制对模型检测的影响是不同的。并不是每一种关注都会在加入网络后提高模型的性能。虽然SE注意忽略了位置信息,但它也考虑了信道注意。从结果来看,在骨干网中加入SE注意力后,模型的性能影响有所降低。CBAM试图通过减少输入张量的通道维度来使用位置信息,然后通过卷积计算空间注意力。然而,卷积只能捕获局部关系;它不能对视觉任务至关重要的长期依赖关系进行建模。在骨干网中加入CBAM注意力后,模型的性能有所提高,但效果并不明显。CoordAtt注意机制将位置信息嵌入到通道注意中,在一个空间方向上捕获远程依赖关系,并在另一个空间方向上保持准确的位置信息。根据结果,在将CoordAtt添加到主链之后,mAP增加了1%。这证明使用CoordAtt注意机制可以使网络模型在更广的范围内注意到目标,提高网络的检测能力。

通过消融实验验证了本文提出的改进策略对网络的积极影响。本文提出的改进策略在绝缘子数据集上进行了训练。实验消融结果示于下表7中。“√”表示采用相应的改进方法,“×”表示不采用改进方法。
在这里插入图片描述

表中的第一行是原始YOLOv 7网络的检测结果。从上表可以看出,在原有网络中加入HorBlock模块和CoordAtt模块后,mAP@0.5和准确度分别比没有任何改进策略的原有YOLOv 7提高了1.3%和1.1%。当YOLOv 7使用K-means++算法对绝缘子数据集生成的锚框进行聚类时,定位精度比原YOLOv 7算法提高了3.6%。此外,由于K-means++算法不增加网络的层数和参数,因此不会降低模型的速度。而且K-means++不存在显著影响初值选择的问题,可以提高模型边界回归的速度。采用SIoU+NMS的改进策略,精密度提高了2.4%,mAP@0.5提高了1%。

综合以上三组改进方法,发现组合改进算法效果最好,检测准确率可达94.9%,mAP@0.5可达93.8%,能够满足对绝缘子图像检测精度的要求。

表8显示了该模型在每个类别中的检测。该绝缘子精度高,泄漏率低。然而,由于污闪和绝缘子破损等缺陷的复杂环境和微小目标的特点,其准确率和召回率不如绝缘子。

在这里插入图片描述

准确率和召回率不能作为衡量模型性能的唯一指标,因为它们可能会导致我们误解模型的性能。因此,我们进一步使用PR曲线来衡量模型的性能。PR曲线综合考虑了模型检测到的每个类别的准确率和召回率。

该模型的PR曲线如图12a所示。PR曲线的水平轴是召回率,垂直轴是精度。你可以直观地看到查全率随着查全率的增加而变化的速度。如果图中的曲线靠近右上角,则表示随着召回率的提高,精度下降不明显,模型的整体性能更好。图12 b为混淆矩阵图,0表示污闪缺陷,1表示损坏缺陷,2表示绝缘子,3表示背景。图中的行方向表示真实的标签,列方向表示预测的类别。从各条线路的测试值来看,损伤闪络和污闪的正确检测率分别为95%和91%。混淆矩阵是分类问题预测结果的总结。由此可见,绝缘子缺陷的分类是准确的。

消融实验只能证明本文改进策略与原算法相比是有效的,但能否达到先进水平还有待证明。因此,在相同的实验条件下,对改进后的方法与当前主流的目标检测方法在绝缘子数据集上进行了一系列对比实验。

不同模型的训练结果比较如图13所示。从图中可以看出,本文改进算法的mAP@0.5和召回率明显高于其他三种模型。

图14显示了不同模型的训练损失曲线的比较。经过20次迭代,不同模型的损失曲线是稳定的,训练结果可以收敛。可以看出,在回归损失和分类损失方面,YOLOv5s远不如YOLOv7有效。由于本文的改进模型加入了网络结构,图中改进模型的收敛速度比YOLOv7略慢。但是,在大约20次迭代中,本文的模型表现出比YOLOv7更好的下降速度和收敛能力。证明了损失函数的调整提高了网络的收敛能力。

在这里插入图片描述
在这里插入图片描述

比较模型训练期间的损失函数曲线;图15显示了测试集上的损失。损失是模型回归、置信度和分类损失的总和。从图中可以看出,我们的模型的效果比其他模型更好。

在这里插入图片描述

最后,表9列出了不同车型评价指标的对比结果。从表中可以看出,与YOLOv7相比,该模型的召回率提高了6.3%,mAP@0.5提高了3.7%。虽然模型的速度有所下降,但速度仍为95 FPS,比两相模型的速度快得多。

在这里插入图片描述

通过以上一系列实验的对比分析,可以得出本文提出的改进YOLOv7算法在检测精度上具有明显的优势。虽然速度有所下降,但仍能满足实际工程中绝缘子缺陷检测的实时性要求。

为了更好地验证本文模型的泛化能力和鲁棒性,我们在测试集中专门选取了小目标和复杂环境下的目标进行测试。在对比检测实验中,为了验证本文模型更适合于绝缘子缺陷检测,我们还特意加入了YOLOX模型检测结果的对比。检测结果如图16-18所示。通过对比分析,改进后的算法能更好地识别绝缘子的微小缺陷,并能在复杂环境下准确识别部分绝缘子目标。消融试验和对比试验结果表明,本文提出的方法显著提高了绝缘子缺陷检测的准确性。进行测试,在对比检测实验中,为了验证本文模型更适合于绝缘子缺陷检测,我们还特意加入了YOLOX模型检测结果的对比。检测结果如图16-18所示。通过对比分析,改进后的算法能更好地识别绝缘子的微小缺陷,并能在复杂环境下准确识别部分绝缘子目标。

消融试验和对比试验结果表明,本文提出的方法显著提高了绝缘子缺陷检测的准确性。

Dian等人[39]之前提出了一种用于空中绝缘子检测的快速R-变压器算法。该算法还结合了自注意机制,平均准确率为97.31%。但FPS只有12个,不符合项目的实际应用要求。本文的研究结果可以提高精度,而FPS仍为95。Ding等人[40]通过改进经典的YOLOv 5模型来检测绝缘体缺陷。该模型还改进了回归损失函数、锚框生成方法和NMS方法,提高了模型检测精度。然而,召回率仅为90.4%,而本文的召回率为93.4%。

本文提出的改进策略为绝缘子缺陷等小目标的检测提供了更多的可能性。未来,该模型还可以应用于农业和工业中的各种小目标检测场景。最后,本文的改进主要是在骨干网方面。检测头对于模型融合特征也很重要。我们计划在未来扩大我们的研究,以更全面地了解网络模型。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. Conclusions

我们提出了一种改进的YOLOv 7绝缘子缺陷检测方法,该方法能够在复杂背景的输电线路图像中准确识别绝缘子及其缺陷。实验分析证明,利用K-means++对绝缘子数据集的目标盒进行聚类生成的锚盒,可以提高检测精度和效果。在网络中结合CoordAtt注意机制和HorBlock模块,增加了特征图的表达能力,优化了绝缘子缺陷目标的特征表示,提高了绝缘子缺陷目标的检测效果。最后,损失函数SIoU引入了真实的盒子和预测盒子之间的角度的概念,以帮助计算两个盒子之间的距离,加速网络的收敛。通过添加上述策略,改进后的模型与原网络相比,召回率和mAP@0.5分别提高了2.5%和2.7%。此外,该模型的检测速度仍为91 fps,可以满足实时高精度的需求。与其他模型相比,该方法具有明显的优势。

模型仍有一些需要改进的地方。目前,数据集中的绝缘子缺陷为外部轮廓损伤,没有绝缘材料内部裂纹缺陷的图像数据集。假设绝缘材料中的内部裂纹缺陷在绝缘子的外表面上显示出某些特征。在这种情况下,我们将进一步改进数据集以检测绝缘子缺陷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/263862.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python并行编程详解:发挥多核优势的艺术

更多资料获取 📚 个人网站:ipengtao.com 在当今计算机时代,充分发挥多核处理器的性能是提高程序运行效率的关键。Python作为一门强大的编程语言,提供了多种并行编程工具和库。本文将深入介绍Python中的并行编程,探讨如…

Python命名规范中的[单/双][前导/后缀]下划线小结

如图所示 出处 Single and Double Underscores in Python Names

泽攸科技SEM台式扫描电子显微镜

泽攸科技是一家国产的科学仪器公司,专注于研发、生产和销售原位电镜解决方案、扫描电镜整机、台阶仪、探针台等仪器。目前台式扫描电镜分为三个系列:ZEM15、ZEM18、ZEM20。 ZEM15台式扫描电镜: ZEM18台式扫描电镜: ZEM20台式扫描…

Rust报错:the msvc targets depend on the msvc linker but `link.exe` was not found

当我在我的 windows 电脑上安装 rust,然后用 cargo 新建了一个项目后,cargo run 会报错: error: linker link.exe not found| note: program not foundnote: the msvc targets depend on the msvc linker but link.exe was not foundnote: p…

H5页面这样测试,让Bug无处可逃!

部门最近的H5相关项目挺多的,由于团队之前接触的大多是Web项目,很少涉及H5,想着给团队成员培训下,减少漏测率,于是整理了一个文档。 别说,效果还挺不错的,连着上线6个版本,都没有收…

自动化边坡监测设备是什么?

随着科技的不断进步,我们的生活和环境也在不断地发生变化。然而,自然灾害仍然是我们无法完全避免的风险。其中,边坡滑坡就是一种常见的自然灾害。为了保护人民的生命财产安全,科学家们研发出了自动化边坡监测设备。 WX-WY1 自动化…

Pytorch-RealSR超分模型

1.前言 RealSR 是一种基于学习的单图像超分辨率(SISR)模型,专门针对真实世界的图像。它由腾讯 AI 实验室于 2020 年提出。 RealSR 的核心创新是提出了一种新的退化模型,该模型能够更好地模拟真实世界的退化过程。该模型考虑了真实…

多臂老虎机算法步骤

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

毅速:3D打印随形冷却水路助力模具行业降本、提质、增效

随着模具行业的不断发展,模具制造的精度和效率已经成为企业核心竞争力的重要组成部分。为了满足市场需求,模具行业一直在寻求新的制造技术和方法。3D打印技术的出现,为模具行业带来了革命性的变革。其中,3D打印随形冷却水路的应用…

Ubuntu 常用命令之 clear 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 clear命令在Ubuntu系统下用于清除终端屏幕的内容。这个命令没有任何参数,它的主要作用就是清理终端屏幕上的所有信息,使得屏幕看起来像是新打开的一样。 使用clear命令非常简单,只需要在终端中…

Day68力扣打卡

打卡记录 得到山形数组的最少删除次数&#xff08;线性DP 前后缀分解&#xff09; 链接 class Solution:def minimumMountainRemovals(self, nums: List[int]) -> int:n len(nums)pre, suf [1] * n, [1] * nfor i in range(n):for j in range(i):if nums[j] < nums[…

Liteos移植_STM32_HAL库

0 开发环境 STM32CubeMX(HAL库)keil 5正点原子探索者STM32F4ZET6LiteOS-develop分支 1 STM32CubeMX创建工程 如果有自己的工程&#xff0c;直接从LiteOS源码获取开始 关于STM32CubeMX的安装&#xff0c;看我另一篇博客STM32CubeMX安装 工程配置 创建新工程 选择芯片【STM32F…

16 寻找特定高度的地点

搜索二维数组 #include <iostream> using namespace::std; using std::cout; using std::cin; int main() {int n,m,target;cin >> n >> m;int matrix[n][m];for(int i0; i<n; i){for(int j0; j<m; j){cin >> matrix[i][j];}}cin >> tar…

求职方略-倒金字塔型自我介绍

第一步,开头第一句话提纲挈领,点出你的主要“卖点” 自我介绍的第一句话很重要,要有足够的吸引力,有足够的信息量,还要有足够的说服力,能产生先声夺人的效果。 一般的自我介绍喜欢按照时间线索依次介绍自己的经历,例如:“我大学毕业后就进入一家大公司的研发中心,工…

Ubuntu环境下使用Livox mid 360

参考文章&#xff1a; Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO-CSDN博客 一&#xff1a;Livox mid 360驱动安装与测试 前言&#xff1a; Livox mid360需要使用Livox-SDK2&#xff0c;而非Livox-SDK&#xff0c;以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部…

「Verilog学习笔记」自动售卖机

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule sale(input clk ,input rst_n ,input sel ,//sel0,5$dranks,sel1,10&$drinksinput …

PostgreSQL PG的多版本并发控制

本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。【PostgreSQL】PG的缓存管理器原理 - 课程体系 - 云贝教育 并发是一种当多个事务在数据库中并发运行时维护原子性和隔离性的机制&#x…

基于vue-advanced-chat组件自义定聊天(socket.io+vue2)

通过上一篇文章https://blog.csdn.net/beekim/article/details/134176752?spm=1001.2014.3001.5501, 我们已经在vue-advanced-chat中替换掉原有的firebase,用socket.io简单的实现了聊天功能。 现在需要自义定该组件,改造成我们想要的样子: 先将比较重要的几块提取出来 …

【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Linux》…

[微服务 ]微服务集成中的3个常见缺陷,以及如何避免它们

微服务风靡一时。他们有一个有趣的价值主张&#xff0c;即在与多个软件开发团队共同开发的同时&#xff0c;将软件快速推向市场。因此&#xff0c;微服务是在扩展您的开发力量的同时保持高敏捷性和快速的开发速度。 简而言之&#xff0c;您将系统分解为微服务。分解并不是什么新…