改进YOLOv3的无人机拍摄图玻璃绝缘子检测

2022-02-24 12:37杨焰飞
计算机工程与应用 2022年3期
关键词:绝缘子损失模块

杨焰飞,曹 阳

重庆理工大学 电气与电子工程学院,重庆 400054

钢化玻璃绝缘子作为电网高压输电线路最常用的绝缘子之一,其运行状况直接影响到电网的可靠性及安全性,由绝缘子引发的故障在电力系统故障中占比最高。玻璃绝缘子易发生自爆,若不对其进行及时排查并采取补救措施,恐引发严重后果[1]。

无人机航拍图像辅助电力巡检的技术日趋成熟,但对于通过无人机获得的海量图片,目前大多数仍采用人工判读的方式,费时费力,因此对其通过图像处理技术进行绝缘子自动定位具有重要意义[2]。传统目标检测一般 通 过 如 模 板 匹 配[3]、SIFT[4](scale-invariant feature transform)特征提取等方法获取目标特征,并利用支持向量机等[5]机器学习方法进行分类,从而完成检测任务,检测准确率低且耗时长,并不适用于绝缘子检测。国内外对绝缘子的检测研究已有一定进展,方挺等[6]利用基于粒子群优化参数的蚁群算法实现了对简单背景下玻璃绝缘子自爆的定位,该方法只适用于背景简单的图像,对于复杂背景下的检测并不理想;商俊平等[7]利用最大类间方差法提取绝缘子串轮廓,该方法对拍摄角度要求较高,若拍摄绝缘子形状不统一容易错检。

深度卷积神经网络能够从大量数据集中自动学习目标特征,在可见光领域得到迅速发展[8],在电力巡检领域同样得到广泛应用。左国玉等[9]提出一种跨链接卷积神经网络的绝缘子检测方法,该方法在Faster-RCNN的基础上,将RPN的不同层进行跨链接来生成候选区域,检测精度较高、但存在算法复杂度较高、对设备要求高、检测时间长等问题。赵文清等[10]提出一种注意力机制和Faster-RCNN相结合的绝缘子检测方法,该方法在特征提取阶段引入基于注意力机制的挤压与激励网络SE-Net,虽然降低了漏检率,但引入SE-Net后会使Faster-RCNN的检测速度进一步降低。颜宏文等[11]以YOLOv3为主体,利用Focal Loss函数代替YOLOv3损失函数中的交叉熵损失,一定程度上解决了复杂度及类别不均衡的问题,但整体上并未对网络结构做出太大改变。高强等[12]在YOLOv3的基础上,提出目标分解及聚合表达的改进算法,提升了网络对各目标所在区域识别的准确度,但同样仅对损失函数做出改变,并未对网络结构进行改进。

为此,本文提出一种基于改进YOLOv3卷积神经网络的绝缘子检测模型,对于形态不同的绝缘子均能得到较好的检测结果。

1 绝缘子数据集制作

1.1 数据来源

实验中的绝缘子图像于500 kV高压输电线路的电力巡检中,通过大疆Phantom 4 Pro无人机拍摄获得,其相机参数为fc6310,拍摄图像尺寸为5 472×3 078像素,JPG格式。包含了晴天正午、晴天傍晚及阴天等特殊光照条件,共获得1 000张图像,其中存在绝缘子被塔身遮挡等特殊情况。图1为几种典型的绝缘子示例图。

1.2 绝缘子检测数据集的构建

在制作数据集时,直接按照原图像尺寸输入会导致参数过多,因此首先通过像素变换将数据集图像尺寸统一缩减为416×416像素的大小。尽可能多地加入不同尺度、不同表现形式的绝缘子,有利于避免训练过程中出现过拟合现象,从而提高网络的泛化能力。如图2所示为训练集样本预处理中的数据增广过程,即通过对图像进行翻转、剪裁和平移等操作增加样本多样性。

图2 数据预处理示意图Fig.2 Schematic diagram of data preprocessing

在最终得到的1 242幅绝缘子图像中随机选取1 000幅图像,利用标注软件LabelImg进行标注作为训练集。LabelImg是基于Python语言编写用于深度学习的数据集制作的标注工具,用于记录图像中目标的类别名与位置信息,并将这些信息储存在XML格式的文件中。

1.3 数据集分析

1 000幅图像中,共有1 618个绝缘子目标,其长高度分布如图3(a)所示,横坐标表示标记框宽度占原图宽度的比例,纵坐标为高度占比。图3(b)为目标框像素与原图像素比值的统计直方图,目标框平均像素为31 961.09,与原图像素大小的比值平均为0.108 01。图3(c)、(d)、(e)分别为目标框高度、宽度及高宽比的统计直方图,横坐标分别为高度、宽度及高宽比,纵坐标为数量占比。

由图3(a)、(b)可知,目标框存在多样性,但总体占原图比例较小,属于小目标,背景信息较多。由图3(c)、(d)、(e)可知,目标框高度分布较为均匀,宽度较小,宽高比较小,因此总体上目标框呈现为瘦高型。

图3 数据集中的目标框信息统计图Fig.3 Statistical chart of target frame information in dataset

2 YOLOv3目标检测算法

2.1 YOLOv3原理

YOLOv3[13]在YOLOv1、v2的基础上改进形成,同时吸取了其他一些网络的优点,是目前综合考虑检测实时性及准确性效果较为优秀的单阶段(one stage)检测网络。YOLOv3为全卷积网络[14](FCN),采用Darknet-53的前52层,在保证分类精度的同时减少了网络层数,使计算速度得到了较大提升。为加强算法对小目标的检测精度,YOLOv3参照特征金字塔网络结构[15](feature pyramid networks for object detection,FPN),将Darknet-53的输出特征图通过两次上采样与浅层输出特征融合,其网络结构如图4所示。

图4 YOLOv3网络结构图Fig.4 Network structure diagram of YOLOv3

图中Res_unit为残差单元,Resn为残差模块,n表示该残差模块中残差单元的数量,DBL为网络最小单元,包含二维卷积(Darknet Conv2D)、归一化(batch normalization,BN)及非线性激活函数(Leaky ReLU)三个操作,Concat为张量拼接操作,其作用为将浅层特征输出与上采样后的特征图进行张量拼接,拼接后会扩充张量维度,y1、y2、y3为三个用于预测的特征图。

2.2 评价指标

在目标检测领域,一般用精确率和召回率对目标检测算法性能进行评定[16],准确率针对预测结果,表示预测为正的样本中真实正样本的占比,计算公式如下:

式中,P表示精确率,TP表示算法将正类预测为正类的个数,FP表示将负类预测为正类的目标个数,即错误检测出的目标;召回率针对原来的样本,表示样本中正例样本有多少被正确预测了,其计算公式为:

式中,FN表示将正类预测为负类的目标个数,即漏检个数。通常情况下两者难以兼得,因此需要综合考虑这两个参数,用AP值来衡量算法性能,AP计算公式如下:

式中,N表示测试集样本数,P(k)为识别k个样本时精确率P的值,ΔR(k)表示识别样本个数从k-1变化到k时,召回率R的变化情况。对于多分类(C类)检测任务,通常用平均值mAP对模型进行评价,其公式如下:

3 改进的YOLOv3算法

3.1 增加Inception-Resnet模块

Resnet结构能够加速训练并提升性能,Inception模块能够在同一层上获取稀疏或非稀疏特征,因此Szeged等[17]将两个模块优势结合起来,设计出了Inception-Resnet网络,而其成功主要在于它的Inception-Resnet模块。

YOLOv3通过从Darknet-53的第25、42层采集浅层特征,并与网络深层特征进行上采样后拼接得到输出结果。此处可参照Inception-Resnet网络的思想,引入两个Inception-Resnet模块,通过付出增加少量网络参数的代价,在保证计算资源使用率的条件下,拓展网络宽度,并增加了网络对多尺度目标检测的适应性。引入的Inception-Resnet模块如图5所示。将引入Inception-Resnet模块后的YOLOv3模型称为YOLOv3_In_Res,其网络结构如图6所示。

图5 Inception-Resnet模块Fig.5 Inception-Resnet module

图6 YOLOv3_In_Res网络结构图Fig.6 YOLOv3_In_Res network structure diagram

3.2 改进损失函数

原始YOLOv3的损失函数由位置损失、置信度损失和分类损失三部分构成,具体公式如下:

式中,第①部分位置损失使用均方误差,②、③部分置信度和分类使用交叉熵误差;λcoord、λobj和λnoobj为每项损失所占比重,通过改变其大小能够控制位置、置信度、分类损失达到更好的平衡;S×S表示特征图大小,B表示每个网格会产生几个候选框;YOLOv3沿用v1一直以来的思想,每个真实框只对应一个预测框判断第i个网格中第j个预测框是否分配到真实框,若有分配则返回值为1,否则为0与之相反;x i、yi、wi、h i、pi为位置、置信度、分类信息预测值,为标签值(真实值);其中表示目标属于第c类的概率真值标签。

均方误差对目标的尺度相当敏感,尤其是对小目标的预测,通过对w、h开根号的方式能够一定程度上降低尺度对回归准确性的影响,但并不能根治。Rezatofighi等[18]提出Giou损失函数,适用于各种目标检测算法,该函数能够很好地替代原始YOLOv3损失函数中的位置损失部分(均方误差),提高预测精度。因此本文直接引用Giou损失作为位置损失。Giou及其损失计算公式如下:

式中,Iou为预测框与真实框的交并比;Ac为同时包含真实框与预测框的最小框面积,U为并集面积。由于本文只有绝缘子一类检测目标,因此考虑删去第③部分的条件类别概率损失,最终采用的损失函数计算公式如下所示:

3.3 锚点框选择

原始YOLOv3基于通用目标检测数据集COCO生成如下三组锚点框:([10,13],[16,30],[33,23])、([30,61],[62,45],[59,119])、([116,90],[156,198],[373,326]),分别对应三个特征图(13×13,26×26,52×52)。从图3(e)中可看出绝缘子目标框外形以瘦高为主,原始的锚点框并不适用于该单类绝缘子数据集。因此本文利用k-means算法对数据集的真实框进行聚类,获得新的锚点框。其中一次聚类结果如图7所示。

图7 K-means可视化Fig.7 K-means visualization

通过10次聚类后求取平均值并取整,得到的最终结果为([43,260],[54,393],[42,37])、([100,62],[21,105],[74,166])、([160,220],[343,233],[243,351])。

4 实验结果与分析

4.1 实验平台及参数设置

本文选用TensorFlow开源框架,测试环境为AMDRyzen 7 1700 EightCPU,主频3 GHz,内存16 GB,GPU为NVIDIAGeForceRTX 2070,操作系统为Win10,CUDA10.1版本,编译语言为Python3.7。训练中输入网络的图片大小为416×416像素;batch size设置为2;初始学习率设为10-4,经过多次迭代后学习率下降为10-6;共训练70个epochs,每个epoch迭代93次,迭代次数为13 020(70×93×2)。

4.2 算法性能对比

为了对本文提出算法进行更好的评估,利用同一组数据对YOLOv3原网络及本文YOLOv3_In_Res网络进行了相同批次的训练并进行测试。损失变化曲线如图8~11所示,纵坐标为损失值,横坐标为迭代次数batch size(0~6 510)。

图8 YOLOv3 prob_loss曲线Fig.8 YOLOv3 prob_loss curve

如图8所示,由于只有绝缘子一个类,prob_loss很小,经过少数迭代后迅速下降到几乎为0,进一步论证了上一节中可删去条件类别概率损失的作法,在减少计算量的同时能够使总损失收敛速度更快。图9(a)、(b)为置信度损失对比,收敛后原YOLOv3算法的损失波动范围为0.4~0.8,YOLOv3_In_Res为0.12~0.3;图10(a)、(b)为位置损失对比,在0.1~1的范围内均存在波动,但总体上YOLOv3_In_Res的位置损失比原YOLOv3更低。图11(a)、(b)为总损失对比,原YOLOv3算法的总损失收敛区间为0.55~1.22;YOLOv3_In_Res的总损失收敛区间为(0.29~0.63),改进后的总损失得到了明显的下降。

图9 YOLOv3算法置信度损失对比Fig.9 Confidence loss comparison of YOLOv3 algorithm

图10 YOLOv3算法Giou损失对比Fig.10 Giou loss comparison of YOLOv3 algorithm

图11 YOLOv3算法总损失对比Fig.11 Total loss comparison of YOLOv3 algorithm

分别筛选出两个算法训练后得到了损失最低的模型,并利用同一组测试数据对其进行测试,测试集包含52张绝缘子图像,经测试,YOLOv3模型检测总耗时5.12 s,YOLOv3_In_Res耗时5.48 s,检测耗时并未明显增加。得到的mAP统计图如图12所示(只有绝缘子一类,因此mAP=AP)。

如图12(a),YOLOv3的绝缘子AP值为69.69%,而改进后的YOLOv3_In_Res的绝缘子AP值为71.93%,改进后的YOLOv3_In_Res的mAP比原算法提高了2.24个百分点,表明在绝缘子目标检测任务中,YOLOv3_In_Res的检测精度比原始YOLOv3更高。检测结果对比如图13所示。

图12 mAP统计对比图Fig.12 mAP statistical comparison chart

图13 绝缘子检测结果对比图Fig.13 Comparison of insulator detection results

如图13所示,原始YOLOv3算法与YOLOv3_In_Res算法均能对不同形态的绝缘子进行检测,但原始YOLOv3算法对图像中出现塔杆等与绝缘子类似物体时出现了误检的情况,且框精度不高,而YOLOv3_In_Res算法则克服了以上问题,降低了误检率且提高了画框精度。

5 结论

本文对无人机航拍图像绝缘子自动检测算法进行研究,通过分析绝缘子图像数据集,针对无人机巡检拍摄图像的特点并结合当前分类精度较高的Inception-Resnet-v2网络对YOLOv3算法进行改进,并利用改进后的算法与原算法进行对比实验。得出结论如下:

(1)改进后的YOLOv3_In_Res算法比原始YOLOv3算法在绝缘子数据集上mAP提高了2.24个百分点。

(2)加入Inception-Resnet模块能够在保证运算速率的条件下,拓展网络宽度,提高资源利用率,增加网络对多尺度目标检测的适应,使目标检测模型性能得到提升。

(3)本文提出的YOLOv3_In_Res算法能够更好地适应无人机拍摄的绝缘子图像数据集的数据特征。

通过将YOLOv3算法成功应用到无人机巡检图像的绝缘子检测领域,并取得了不错的效果,说明了深度学习在电力巡检中电力元器件检测的可行性,对后续将深度学习应用到如绝缘子自爆等明显缺陷的检测具有重要的指导意义。

猜你喜欢
绝缘子损失模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
基于Mask RCNN的绝缘子自爆缺陷检测
胖胖损失了多少元
零值绝缘子带电检测方法探讨
玉米抽穗前倒伏怎么办?怎么减少损失?
浅析输电线路绝缘子防污闪技术
菜烧好了应该尽量马上吃
直流电场法和谐波电场法检测绝缘子内缺陷的分析研究
损失