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

news2024/11/24 16:09:25

摘要

现有的检测方法面临着巨大的挑战,在识别绝缘子的微小缺陷时,针对输电线路图像与复杂的背景。为保证输电线路的安全运行,提出一种改进的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,可以满足实时高精度的需求。与其他模型相比,该方法具有明显的优势。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis“垃圾”过期死键管理与优化

【作者】付磊 Redis死键的定义不尽相同,通常有两种: 写到Redis里后,由于过期时间过长或者压根没有过期时间,加之长期不访问,这类key可以被称为死键。 明明已经过了过期时间,但还占用Redis内存&#xff08…

利用tf-idf对特征进行提取

TF-IDF是一种文本特征提取的方法,用于评估一个词在一组文档中的重要性。 一、代码 from sklearn.feature_extraction.text import TfidfVectorizer import numpy as npdef print_tfidf_words(documents):"""打印TF-IDF矩阵中每个文档中非零值对应…

Nacos-服务发现与配置管理v1.0

Nacos - 服务发现和配置管理 教学目标 1)能够理解微服务架构的特点 2)能够理解服务发现的流程 3)能够说出Nacos的功能 4)掌握Nacos的安装方法 5)掌握RESTful服务发现开发方法 6)掌握Dubbo服务发现开…

AIGC绘画关键词 - 神兽类(一)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

JNI学习(二)

静态注册 接着上篇博客学习 JNI函数 JNIEXPORT void JNICALL Java_com_example_jnidemo_TextDemo_setText(JNIEnv *env, jobject this, jstring string){ __android_log_print(ANDROID_LOG_ERROR, "test", "invoke set from C\n");char* str (char*)(*e…

每日一题——链表的回文结构

链表的回文结构 1. 题目描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。 测试…

SpringBoot集成swagger-ui

1.引入依赖&#xff1a; <!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><dependency><groupId>io.sprin…

回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 &#xff08;多指标&#xff0c;多图&#…

查找算法——二分查找

笔记&#xff1a;二分查找算法 | 数据结构与算法 系列教程&#xff08;笔记&#xff09; 题目描述 请对一个 有序数组 进行二分查找 {1,8, 10, 89, 1000, 1234}&#xff0c;输入一个数看看该数组是否存在此数&#xff0c;并且求出下 标&#xff0c;如果没有就提示「没有这个数…

前端ICON库

前端ICON库 1.mingcute mingcute 2.lordicon lordicon 3.字节iconpark&#xff08;推荐&#xff09; 字节iconpark 4.iconbuddy iconbuddy.app/ 5.商标寻找youicons 免费下载数百万个徽标以获得设计灵感 | YouIcons.com 还有一堆工具

一键转换,将HTML智能转换为PDF,轻松解决文档转换需求

在数字时代&#xff0c;HTML网页是我们获取信息的主要来源之一。然而&#xff0c;有时候我们可能需要将网页内容以PDF格式保存&#xff0c;以便于离线阅读、打印或分享。这时&#xff0c;将HTML转换为PDF就变得尤为重要。 首先&#xff0c;我们要进入首助编辑高手主页面&#x…

华为数通方向HCIP-DataCom H12-831题库(多选题:181-200)

第181题 如图所示,R1、R2、R3、R4都部署为SPF区域0,链路的cost值如图中标识。R1、R2R3、R4的Loopback0通告入OSPF。R1、R2、R3与R4使用Loopback0作为连接接口,建立BGP对等体关系,其中R4为RR设备,R1、R2、R3是R4的客户端。当R4的直连地址172.20,1,4/32通告入BGP后,以下关R…

单细胞转录组揭示杨树维管组织结构与发育

之前我们有一篇PC的文章&#xff0c;专门介绍了通过单细胞转录组分析杨树茎中初生和次生生长组织中形成层细胞分化的分子轨迹&#xff08;文章回顾&#xff1a;植物单细胞转录组 | 杨树初生生长和次生生长中形成层细胞分化的分子轨迹&#xff09;。2023年发表于《Molecular Pla…

mysql区分度不高的字段建索引一定没用吗?

建立索引的目的是提高数据库查询的性能&#xff0c;通过索引可以快速定位到符合查询条件的数据。然而&#xff0c;对于区分度不高的字段来说&#xff0c;建立索引可能会带来一些问题。 当字段的区分度很低时&#xff0c;即字段中的唯一值或不同值的数量相对较少&#xff0c;建立…

AI代码翻译神器,用AI翻译代码,轻松学习不同编程语言,已开源!

体验地址&#xff0c;github地址和部署地址在文章底部 AI代码翻译器的优势 近年来&#xff0c;随着技术的快速进步&#xff0c;人工智能技术展现出了在各个领域发挥作用的巨大潜力。AI代码翻译器作为一项创新技术&#xff0c;为开发者带来了全新的可能性。这项技术运用人工智…

FreeSWITCH 1.10 源码阅读(7)-uuid_bridge 命令原理解析

文章目录 1. uuid_bridge 命令执行2. 源码分析3. uuid_bridge 问题处理 1. uuid_bridge 命令执行 uuid_bridge 命令用于将两条腿桥接在一起&#xff0c;以实现双方的通话。下图是该命令在 FreeSWITCH 中的处理流程&#xff0c;大致的流程可以分成以下几个步骤&#xff1a; uui…

图像分割与修复

图像分割的方法 &#xff08;1&#xff09;传统的图像分割方法 &#xff08;2&#xff09;基于深度学习的图像分割方法 传统的图像分割方法 &#xff08;1&#xff09;分水岭法 &#xff08;2&#xff09;GrabCut法 &#xff08;3&#xff09;MeanShift法 &#xff08;4…

Linux调试器gdb的用法

Linux调试器gdb的用法 1. debug/release版本之间的比较2. gdb调试器的基本指令3. 使用展示 1. debug/release版本之间的比较 在之前学习C语言的的时候出过一期vs的调试技巧。 而对于现在的Linux下的调试器gdb其实也是换汤不换药的&#xff0c;基本上的调试思路是不会改变的&am…

Electron Vite打包后,部分图标未显示的解决方案

背景 这个问题&#xff0c;弄了一晚上&#xff0c;头都大了&#xff0c;找了一堆博客也没解决。主要参考这个&#xff1a;https://blog.csdn.net/m0_73845616/article/details/129741099。 下面讲一下我的解决方案。 解决方案 上面链接里的方法&#xff0c;我采用第二、三个都…

鸿蒙-arkTs:访问控制授权申请

module.json5文件中 requestPermissions 进行配置&#xff08;值为数组&#xff0c;可配置多个&#xff09; ohos.permission.INTERNET {"name": "ohos.permission.INTERNET" }