重庆代还信用卡网站建设,北京市建设工程造价管理协会网站,网站群建设的目的,横店建设网站基于 YOLOv8 的输电线路异物识别算法应用 输电线路作为电力系统的重要一环#xff0c;保证其安全稳定运行是十分必要的。由于长期暴露于室外#xff0c;线路所面临的不安全因素繁多#xff0c;异物入侵便是其中之一。异物可能会引起线路短路甚至诱发火灾#xff0c;因此要加…基于 YOLOv8 的输电线路异物识别算法应用 输电线路作为电力系统的重要一环保证其安全稳定运行是十分必要的。由于长期暴露于室外线路所面临的不安全因素繁多异物入侵便是其中之一。异物可能会引起线路短路甚至诱发火灾因此要加强输电线路的日常运维工作。然而受地理、环境等诸多条件限制传统的人工巡检方式存在效率低、准确性差、覆盖面小等问题。 常见的输电线路入侵异物包含鸟巢、风筝和悬挂的气球等。输电线路的巡检是排除异物干扰、保证线路稳定运行的重要手段因此对巡检质量提出了较高要求。 目前我国大多数地区的巡检主要依靠人工但人工巡检存在着不小的隐患。首先传统的巡检方式主要是依靠运维人员凭借肉眼或者借助望远镜等工具进行观察并排查输电线路是否有异常要求运维人员有较高的经验水平增加了巡检质量的不确定性。 无人机巡检的覆盖面更广。其搭载的飞行模块、GPS 技术、数字地球等融合技术更为高效较于人工拥有着无可比拟的优势。在一些偏远险峻、人工难以到达的危险性较高的地区或是由于突发状况人员不便巡检时无人机便可代替人工快速准确地捕获数据并进行智能处理及分析提升数十倍的效率。并且无人机还可以依靠网络将数据实时传回有利于数据整合使数据的管理更为高效。其次无人机巡检的准确性更高。传统的地面巡检主要依托肉眼但高压输电线往往距人较远有时异物会由于遮挡或角度问题处在视线盲区不易被发现此类问题通过无人机便可轻而易举地解决。无人机可以飞至线路上空近距离多角度对线路进行拍摄一定程度上可以实现全方位无死角的排查监测提高识别的准确率。最重要的是无人机具有较高的安全性。传统的巡检有时需要人员爬杆走线进行高空作业存在着较高的危险性。常因环境干扰、运维人员操作不规范、劳动强度过高等问题发生伤害应用无人机便可规避这一风险使得巡检工作更加安全。 在进行边缘检测时便设计出 Sobel、Prewitt、Canny 等算子用于检测。但这种方式比较依赖分类器的设计且针对具体任务所开发的算法往往不具有普适性。一阶导数的边缘算子通过模板作为核与图像的每个像素点做卷积和运算然后选取合适的阈值来提取图像的边缘。常见的有Roberts算子、Sobel算子和Prewitt算子。二阶导数的边缘算子依据于二阶导数过零点常见的有Laplacian 算子此类算子对噪声敏感。Roberts算子的模板分为水平方向和垂直方向从其模板可以看出Roberts算子能较好的增强正负45度的图像边缘。 Prewitt算子是一种图像边缘检测的微分算子其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 3×3 模板对区域内的像素值进行计算而Robert算子的模板为 2×2故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像 Sobel算子是一种用于边缘检测的离散微分算子它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了权重的概念认为相邻点的距离远近对当前像素点的影响是不同的距离越近的像素点对应当前像素的影响越大从而实现图像锐化并突出边缘轮廓。Sobel算子根据像素点上下、左右邻点灰度加权差在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用提供较为精确的边缘方向信息。因为Sobel算子结合了高斯平滑和微分求导分化因此结果会具有更多的抗噪性当对精度要求不是很高时Sobel算子是一种较为常用的边缘检测方法。 拉普拉斯(Laplacian) 算子是 n 维欧几里德空间中的一个二阶微分算子常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素。Laplacian算子分为四邻域和八邻域四邻域是对邻域中心像素的四个方向求梯度八邻域是对八个方向求梯度。当邻域内像素灰度相同时模板的卷积运算结果为0当中心像素灰度高于邻域内其他像素的平均灰度时模板的卷积运算结果为正数当中心像素的灰度低于邻域内其他像素的平均灰度时模板的卷积为负数。对卷积运算的结果用适当的衰弱因子处理并加在原中心像素上就可以实现图像的锐化处理。 边缘检测算法主要是基于图像强度的一阶导数和二阶导数但导数通常对噪声很敏感因此需要采用滤波器来过滤噪声并调用图像增强或阈值化算法进行处理最后再进行边缘检测。下面是采用高斯滤波去噪和阈值化处理之后再进行边缘检测的过程并对比了四种常见的边缘提取算法。 # -*- coding: utf-8 -*-
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图像
img cv2.imread(zxp.jpg)
img_RGB cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #转成RGB 方便后面显示
#灰度化处理图像
grayImage cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#高斯滤波
gaussianBlur cv2.GaussianBlur(grayImage, (3,3), 0)
#阈值处理
ret, binary cv2.threshold(gaussianBlur, 127, 255, cv2.THRESH_BINARY)
#Roberts算子
kernelx np.array([[-1,0],[0,1]], dtypeint)
kernely np.array([[0,-1],[1,0]], dtypeint)
x cv2.filter2D(binary, cv2.CV_16S, kernelx)
y cv2.filter2D(binary, cv2.CV_16S, kernely)
absX cv2.convertScaleAbs(x)
absY cv2.convertScaleAbs(y)
Roberts cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
#Prewitt算子
kernelx np.array([[1,1,1],[0,0,0],[-1,-1,-1]], dtypeint)
kernely np.array([[-1,0,1],[-1,0,1],[-1,0,1]], dtypeint)
x cv2.filter2D(binary, cv2.CV_16S, kernelx)
y cv2.filter2D(binary, cv2.CV_16S, kernely)
absX cv2.convertScaleAbs(x)
absY cv2.convertScaleAbs(y)
Prewitt cv2.addWeighted(absX,0.5,absY,0.5,0)
#Sobel算子
x cv2.Sobel(binary, cv2.CV_16S, 1, 0)
y cv2.Sobel(binary, cv2.CV_16S, 0, 1)
absX cv2.convertScaleAbs(x)
absY cv2.convertScaleAbs(y)
Sobel cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
#Laplacian算子
dst cv2.Laplacian(binary, cv2.CV_16S, ksize 3)
Laplacian cv2.convertScaleAbs(dst)
# #效果图
# titles [Source Image, Binary Image, Roberts Image,
# Prewitt Image,Sobel Image, Laplacian Image]
# images [lenna_img, binary, Roberts, Prewitt, Sobel, Laplacian]
# for i in np.arange(6):
# plt.subplot(2,3,i1),plt.imshow(images[i],gray)
# plt.title(titles[i])
# plt.xticks([]),plt.yticks([])
# plt.show()
# 用来正常显示中文标签
plt.rcParams[font.sans-serif] [SimHei]
# # 显示图形
plt.subplot(231),plt.imshow(img_RGB),plt.title(原始图像), plt.axis(off) #坐标轴关闭
plt.subplot(232),plt.imshow(binary, cmapplt.cm.gray ),plt.title(二值图), plt.axis(off)
plt.subplot(233),plt.imshow(Roberts, cmapplt.cm.gray ),plt.title(Roberts算子), plt.axis(off)
plt.subplot(234),plt.imshow(Prewitt, cmapplt.cm.gray ),plt.title(Prewitt算子), plt.axis(off)
plt.subplot(235),plt.imshow(Sobel, cmapplt.cm.gray ),plt.title(Sobel算子), plt.axis(off)
plt.subplot(236),plt.imshow(Laplacian, cmapplt.cm.gray ),plt.title(Laplacian算子), plt.axis(off)
plt.show()1Robert算子对陡峭的低噪声图像效果较好尤其是边缘正负45度较多的图像但定位准确率较差 2Prewitt算子对灰度渐变的图像边缘提取效果较好而没有考虑相邻点的距离远近对当前像素点的影响 3Sobel算子考虑了综合因素对噪声较多的图像处理效果更好。 4Laplacian算子对噪声比较敏感由于其算法可能会出现双像素边界常用来判断边缘像素位于图像的明区或暗区很少用于边缘检测 随着无人机研发技术提高、GPS 定位技术优化及 5G 网络的开发无人机的硬件性能水平更高、定位更准信息传输及整合速率也得到大幅度提升使无人机巡检愈发智能。 我国的线路巡检发展可分为三个阶段。2010 年前主要依靠人工借助望远镜和相机等工具完成线路巡检。巡检人员大多需沿着巡检路径步行目测线路故障。2010 年到 2020 年为第二阶段随着旋翼飞行器、红外遥感等技术的出现巡检进入了“机巡时代”。机巡主要通过人工操作直升机等工具进行现场巡检但对操作人员的门槛要求较高。2005 年开始陆续对东北、华北等试点地区采用直升机进行巡检。近几年网络技术更迭深度学习算法也取得了重大进展凭借这些我国也正在迈入“智巡”时代。2019年我国首次采用无人机对藏中电力联网工程 500 千伏朗许线等线路进行了全自主智能化巡检在没有人员操作控制的条件下完成了对线路的精细巡查保障了“电力天路”的稳定运行。 何俊等人2022 年提出了一种基于深度卷积神经网络 EF⁃YOLO 的检测方法对输电线路的鸟类进行识别通过借鉴 EfficientNet⁃lite 轻量网络的特征提取部分提出了 EF⁃YOLO 模型又选用适当的损失函数使其具备良好的检测精度及实时性。邹辉军等人2022 年提出了一种基于改进 YOLOv5 的输电线路小目标异物检测方法通过对原有的 YOLOv5 网络结构进行优化将原本的 FPN 结构更换为 BiFPN减小了计算量并且运用场景增强、加入噪声等方式扩充数据集使网络更有利于排查小异物造成的安全隐患。杨剑锋等人2021年通过优化 YOLOv3 网络提出了一种基于改进的 Dense-YOLOv3 网络模型来对输电线路异物进行入侵识别运用条件生成对抗网络算法对含有目标异物的图像数据进行扩充解决了异物图像数据样本较少的问题并且将 DenseNet 网络引入使得该网络有很好的识别效果。陈嘉琛等人2021 年提出了一种基于 YOLOv3 网络的输电线路缺陷识别方法在YOLOv3 原结构内将空间金字塔池化模块引入提高了对不同尺寸图片检测的准确性并且减少了新模型的网络通道将其进一步轻量化降低了对服务器的硬件需求不仅减少了迭代时间更提升了整体性能。邱志斌等人2021 年提出了一种基于迁移学习的危害鸟种图像识别方法来检测线路涉鸟故障危害的鸟种通过类激活映射去除复杂的背景噪声并且采用 ImageNet 图像数据集对网络模型进行预训练搭建了融合多卷积的神经网络模型有效地对渉鸟故障鸟种进行识别为此类故障防治提供参考。郝艳捧等人2022 年提出了一种基于 Mask R-CNN 的图像识别方法用于检测输电线路覆冰导线通过图像数据清洗和人工标注建立了南方输电线路覆冰数据集并改进了 Mask R-CNN 使其面对背景复杂的数据图像也有良好的检测效果识别与分割的准确率达 92以上。谢伟等人2022 年提出了一种基于 PSO-BP 的特征识别方法对输电线路外力破坏进行检测针对人为撞击威胁通过采集目标的三维特征量建立数据集采用粒子群优化算法为神经网络选取初值实验表明该算法具有较高的检测精度。王杨杨等人2023 年提出了一种基于改进型 YOLOv4 的输电线路鸟巢检测方法在骨干特征提取网络中引入深度可分离卷积提高了网络的检测速度并基于K-means算法对锚框的大小和比例进行改进建立了基于最小凸集的回归损失函数使小目标的检测能力提升该方法在拥有较高准确度的同时有效降低了运算开销。吴军等人2021 年针对异物缠绕在输电线路上的问题提出了一种适用于移动端的 YOLO 算法通过将 CSPDarknet-tiny 选作主干网络并对 SPP、PAN 做出改进使改进后的 YOLO 算法具备较好的精度及更快的检测速度更适用于移动端检测。沈茂东等人2019 年提出了一种新的网络结构 TLFOD Net 来识别输电线路上的悬挂异物通过端对端的联合训练方式提高性能有着较好的检测能力。张亚婉等人2023 年提出了一种基于改进 YOLO 的绝缘子缺陷检测方法采用 K-means算法对图像数据集进行聚类分析并运用 NMS 剔除多余检测框有效地提高了对绝缘缺陷识别的准确率。庞博等人2022 年提出了一种基于改进 YOLOv5的图像识别算法用于检测电力线路缺陷在原有 YOLOv5 的基础上将 CIoU Loss 作为边界框的损失函数并且选用 DIoU NMS 进行非极大值抑制处理除此之外还通过冻结部分网络层权重的方式训练网络模型使得该算法在识别电力巡检图像缺陷时有着更高的准确率。 针对复杂的识别任务只借助卷积层进行特征提取是远远不够的。卷积本质上属于线性变换因此无法处理非线性问题。例如在提取音频特征时往往需要引入非线性函数使模型能够尽可能拟合数据。因此需要加入激活函数对其进行非线性处理增加整个网络的非线性特性。常见的激活函数有 Sigmoid、Tanh、Relu、LeakyRelu、SiLU 等。 自 YOLOv4 后YOLO 系列算法陆续加入了 Mosaic、Mixup 等图像混叠增强技术丰富了图像的检测背景、增加目标个数以及图像数据的多样性。Focus 通过切片操作将原输入图像分成四个独立的特征层并进行堆叠将通道的维数扩大了四倍保留了更多的原始信息。虽然 Focus 结构减轻了信息丢失但是增加了计算量而且提高了对 GPU 硬件性能的要求。因此在 YOLOv8 中将原先的 Focus 结构替换为一个 3×3 大小的卷积层。不仅可以取得相同的效果而且对一些 GPU 而言使用卷积核会更加友好且高效。 CSPNet 不单是一种网络结构更是一种优化思想。一般与 ResNet、DenseNet 等网络进行结合通过优化网络结构从而减少计算量和内存耗费。以DenseNet为例通过CSPNet底层特征图按通道被分成两个部分一部分经过原 DenseNet 等模块输出另一部分直接与刚才输出的结合这样以来不仅减少了网络计算量更提升了速度和准确率。 YOLOv5 不仅在骨干网络使用了 CSPNet 结构也在 C3 模块中运用。YOLOv8 沿用 CSPNet思想但将 YOLOv5 中原有的 C3 模块改为 C2f 模块。C2f 模块作为全新提出的模块融入了 C3和 ELAN 模块的思想。因此在介绍 C2f 模块之前先讲解其组成部分、C3 模块及 ELAN 模块。C2f 本质上就是在结合了 C3 模块及 ELAN 模块的思想。将原本串接的 Bottleneck 模块运用梯度分流的思想连接优化了模块结构有效的避免了在深度过深时收敛性的恶化。在优化网络结构获得轻量化的同时又可以获取到丰富的梯度流信息提升了 YOLOv8 模型的整体性能。 YOLOv8 的 Neck 层中使用 SPPF 模块Spatial Pyramid Pooling-Fast替代原本的 SPP 模块Spatial Pyramid Pooling并且延续了 YOLOv5 中 FPNPAN 模块但在结构上稍作修改进一步提高网络的特征提取能力。SPP 模块在 YOLOv5 最初的版本中使用。SPP 全称空间金字塔池化。通过使用 13×13、9×9、5×5、1×1 四种大小的卷积核对特征图像进行多个特征提取。SPP 模块在一定程度上解决了多尺度问题提高了算法检测的精度。 SPPF 模块将原有的3 种不同尺寸的卷积核改为 3 个 5×5 的卷积核。这是因为将 2 个 5×5 的卷积核串联其效果等价于 1 个 9×9 的卷积核。同理3 个 5×5 的卷积核串联等效于 1 个 13×13 的卷积核。与直接使用大的卷积核相比多个小卷积核串联后减少了网络的计算量提高了检测效率。在实际的实验中对于相同的输入SPP 和 SPPF 输出结果相同但后者的速度是前者的二倍。相较于 YOLOv5YOLOv8 除了将前者的 C3 模块替换为 C2f 模块之外也去掉了上采样前的卷积层将主干特征提取网络中不同阶段的输出特征直接进行上采样。进一步优化网络结构提高检测效率。 YOLOv8 网络结构的另一部分改进集中在 Head 层部分将 YOLOv5 中原本的耦合检测头coupled head替换为解耦检测头decoupled head并且从 Anchor Based 变成了 Anchor Free。解耦检测头decoupledhead 将分类与回归进行解耦将其拆分为两个独立的分支。实验表明对于相同的检测任务使用解耦检测头可以加速收敛检测精度也有所提高。 锚框依赖手动设计预设的锚框尺寸要尽可能的与真实值重叠因此对于检测目标尺存相差大的两个检测任务由于锚框尺寸问题很难进行迁移。其次检测时需要生成的密集的锚框不仅耗时而且绝大部分锚框因未与真实框达到一定的 IoU 而变为负样本易导致正负样本不均。最后使用锚框会产生诸多超参数的组合问题难以调优。YOLOv8 是 Anchor Free 网络不再对锚框的偏移量进行预测因此改善了锚框所带来的诸多问题。 YOLOv8 中分类损失函数为 VFLVarifocal Loss回归损失采用 CIoU LossDFLDistribution Focal Loss的形式。针对正负样本不均的问题运用 Varifocal Loss 函数提出了非对称的加权操作。VarifocalLoss 函数公式所示 其中q 为 label在正样本时 q 为 IoU 值反之 q 为 0。即当为正样本时是一般的 BCE 损失函数负样本时便是 Focal 损失函数。Varifocal Loss 对正负样本的处理不再是对称的它通过考虑二者不同的重要程度将正样本突出为主体。 在对输入图像进行检测时往往有多个目标遮挡或重叠情况。若出现重叠情况时此时标注框和检测框均无法真实地反映出图像语义。所以此时需要用更加准确的边界框表征方式将狄拉克分布表征方式改为一种更加通用的概率表征方式。因为位于真实坐标附近的区间点有着更高的概率因此提出了 Distribution Focal Loss简称 DFL公式所示 其中 S 为概率输出值。由公式可看出在 yi1与 y 非常接近而且 S 概率输出大时此时 DFL较小使得分布向标注中心靠近。因此DFL 能够让新提出的网络更快地聚焦于目标 y 附近的值增大它们的概率加速收敛。 人脑有一套高效的识别流程即在面对有着复杂信息的场景时视觉系统会迅速锁定重要物体将注意力集中在此处并忽略其他无关区域这极大地提高了神经计算资源分配的合理性使视觉信息的处理更加高效。在图像检测任务中目标物体自身和其所处环境、目标物体本身不同的特征这些信息的重要性都是有差异的体现在卷积神经网络中即为不同特征图之间的重要程度具备差异性。受人类视觉处理系统所启发研究人员提出了注意力机制。通过引入注意力机制使网络可以获取到每张特征图的重要程度并生成权重利用检测结果对特征图的权重更新进行反向指导使得模型在处理任务时着重强调图像中有用的空间将注意力放在其上同时抑制无关的特征提高效率。 传统的卷积一般采用固定大小和比例的矩形结构对特征图某一特定位置进行特征提取。然而一般情况下特征层上的各位置的待测目标都是尺度不同形状各异的因此常规卷积并不能很好的适应各目标间的形变使得模型提取的有效信息减少易遗漏目标的关键特征信息使网络模型准确率下降。 为了使卷积神经网络拥有更好的识别几何变换的能力引入可变形卷积 DCNDeformable Convolution代替常规卷积。可变形卷积可以依据待测对象的形状及比例自动适应并调整通过运用不规则卷积核解决了传统固定矩形结构采样不足的弊端使得网络模型可以对物体的形变更好地进行模拟。 假设卷积核大小为 3×3那么此卷积核的采样点共有 9 个研究者将这 9 个采样点都赋予一个偏移量因此使得卷积核的位置和尺寸都可以依据目标物体动态调整可以在特征提取时更加贴合物体的尺寸与形状优化网络模型对不规则及形变严重的目标的检测性能。 在对小目标检测时经过多次特征提取和下采样操作后它们特征信息往往容易丢失使模型准确率下降。为了更好的获得特征信息就需要对输入图像改变尺寸但这一操作会令模型的运算量增大且耗费更多的内存和资源。若限制下采样操作又不利于提取深层信息。为了解决这一问题提出了 Mosaic 和 Mixup 等图像混叠类的数据增强方式进一步扩充了数据集只增加少部分计算量便可提高识别率。 鉴于无人机巡检有着人工不可比拟的诸多优势对其所运用的目标检测算法进行研究具有很强的现实意义。通过分析具体任务总结出在面对输电线异物检测任务时需要算法有较高的实时性并且鉴于输电线路背景干扰因素多、异物目标形状不规则等问题要求算法有着较高的精度以及更好的识别形变物体的能力。 YOLOv8 抛弃了以往 YOLO 主体系列网络一直运用的 Anchor Based 转而改为 AnchorFree并且将 Head 头进行解耦一定程度上昭示了目标检测算法在未来的研究发展方向。除此之外还将 C3 模块及 ELAN 模块的思想进行结合提出 C2f 模块优化特征提取主干网络及特征融合网络提升模型精度与效率。针对正负样本不均的问题运用 Varifocal Loss 作为分类损失函数抑制负样本突出正样本为主体部分。并且采用 CIoU LossDistribution Focal Loss 作为回归损失函数进一步提升网络性能。