陈嘉琛,俞曜辰,陈中,韩卫
(1. 东南大学吴健雄学院,南京211189;2. 东南大学电气工程学院,南京210096;3. 深圳市多翼电智科技有限公司, 南京211100)
近年来,随着无人机巡检输电线路缺陷技术研究的不断深入,该技术的应用场景不仅限于实验室运行的理论场景,又逐渐向实际应用的现实场景转变,但此过程却逐渐暴露出许多问题。试运行现场样本量较为固定,测试样本与训练样本相似,且需较长计算时间,而实际应用现场巡检范围广,拍摄样本种类多变且数量较少,所以试运行现场使用的一些基础图像识别算法逐渐显现出较多问题,例如过拟合、对硬件要求高、计算耗时长等,导致实际应用缺陷诊断效果不佳。因此,研究适应输电线路巡检实际应用现场的改进图像识别算法对巡检技术发展具有重要意义。
目前,机器学习图像识别算法大致分为两类,分别为基于候选区域的机器学习图像识别算法和基于回归的机器学习图像识别算法[1 - 3]。基于候选区域的机器学习图像识别算法,主流的有更快的基于区域的卷积网络(faster region-based convolutional network,Faster R-CNN)[2]、掩膜基于区域的卷积神经网络(mask region-based convolutional network,Mask R-CNN)等,此类算法拥有训练模型识别精度高的优点;基于回归的机器学习图像识别算法较为典型的有YOLO系列等,此类算法拥有训练模型检测速度快的优点,但此两类算法的训练模型均存在对硬件要求高、计算耗时过长等问题。为了解决这些算法存在的问题,文献[4 - 9]分别提出了对YOLOv3的多种改进方法。其中文献[4]在YOLOv3的网络结构中添加卷积层模块,并粗略调整特征图上的锚框大小;文献[5]对YOLOv3网络重新组合,使之包含多锚点检测机制和卷积投票网两个模块以用于评价空气质量;文献[7]提出了一种通过k-means维度聚类改进YOLOv3网络的方法,应用于不同场景下共享单车运行状态的检测。文献[10]提出了对Faster R-CNN的改进方法,采用深度残差网络(residual network50,ResNet50)对原图逐层进行特征提取,得到最高层特征图后,使用反池化法得到低特征图,最后两者融合进行边框回归得到结果。
上述文献对于图像识别算法的改进大多以提升识别精度为目标,但输电线路巡检现场样本种类复杂和车载计算机计算能力有限的问题依旧存在,且目前涉及此类问题的解决办法也存在一定局限。文献[11]提出了在内存和算力受限的条件下,利用轻量化网络代替YOLOv3的特征提取网络以实现目标高效检测。但此方法所应用的遥感目标检测领域目标简单单一,不同于电力设备的种类繁多、大小不一,因此该轻量化网络实际应用于输电线路巡检可能导致缺陷诊断效果不佳。而文献[12]利用k-means++算法确定先验框,基于 YOLOv3 检测架构构建了一种改进的轻量级网络以进行绝缘子缺陷检测,但是这种方法只应用于绝缘子这一种电力设备,没有全面考虑到巡检现场各类电力设备。
综上,针对目前利用机器学习图像识别算法进行电力系统巡检存在的问题,本文提出了一种基于改进的YOLOv3框架识别输电线路设备故障缺陷算法模型,对基于回归的深度学习算法YOLOv3进行改进,以适应输电线路巡检实际应用现场。该模型对基于Darknet- 53框架的YOLOv3算法进行了改进,对YOLOv3进行了通道减少、框架瘦身的剪枝处理,并于特定卷积层后添加了SPP模块,从而进一步优化了YOLOv3的轻量化性能,与文献[12]轻量级算法不同之处在于改进更加简明,对图像预处理要求不高。轻量化处理后的该模型覆盖输电线路中的电力设备种类较为齐全,适用于输电线路巡检现场中因无人机拍摄图片数量较少、角度偏差等原因造成的有效样本图片数量不足的情况,减少了对车载服务器的计算力需求,即降低了实现YOLOv3算法的硬件要求。
YOLOv3神经网络的结构由Darknet- 53卷积神经网络和检测网络两部分组成,其中Darknet- 53网络结构用于提取特征。图1展示了Darknet- 53的结构,其使用了连续的3 × 3和1 × 1卷积层以及大量残差的跳层连接,这种特征使其在精度与ResNet-152[13]接近的同时,提高了检测速度。YOLOv3神经网络的识别结果以识别框的形式展现,每个识别框包括3类信息,分别为识别框的位置(中心坐标(x,y)、框的高度h和宽度w)、此识别框的置信度(confidence)以及识别图像的类别。
图1 Darknet- 53结构Fig.1 Structure of Darknet- 53
SPP模块利用了空间金字塔池化模型[14],将图片从精细空间划分到粗糙空间中,并聚集其局部特征。SPP模块结构图如图2所示,本文所使用的SPP模块包含了4个并行的内核大小分别为1×1,5×5,9×9,13×13的最大值池化(Maxpool)层,对于输入大小为512×512的特征图,通过SPP模块,特征映射被转化成了一个(169+81+25+1)×512的矩阵,输入到后面的1×1卷积层中,扩展为一维矩阵,从而形成固定大小的特征向量输出。
图2 SPP模块结构图Fig.2 SPP module structure
卷积神经网络的剪枝技术大致分为权重剪枝和结构化剪枝两类。权重剪枝是指修剪不太重要的、较小的权重连接,此方法修剪权重连接后使得神经网络体系不规则,导致难以存储新的模型,且对硬件要求极高,故不被经常采用。结构化剪枝是指在保留规则的神经网络体系前提下,通过稀疏训练和结构化稀疏正则化[15]等手段删除存有大量冗余参量、对预测结果影响小的卷积层通道,以减少迭代计算次数。出于对需要完整模型结构的考虑,本文采用的是结构化剪枝。
在无人机巡检输电线路的过程中,无人机所拍的图片数据大小常常是不固定的,若如YOLOv3原网络中的对图片进行切割变形,很可能会丢失重要信息,影响训练结果。针对这一问题,本文算法中所使用的YOLOv3-SPP网络[16]在卷积计算方面对YOLOv3网络进行了改进。此网络在保留YOLOv3网络基本框架的前提下,在每个检测头前的第5层和第6层卷积层之间集成了SPP模块。YOLOv3-SPP网络通过SPP模块在同一层内获得多尺度特征,减少了YOLOv3网络的计算量。而针对因SPP模块的引入而额外产生的特征通道,本文采取通道剪枝来减少和细化,具体操作将在2.2中介绍。
YOLOv3网络属于大型卷积神经网络[17],在添加SPP模块后,如图3所示,网络仍较为复杂,每一次迭代计算会产生几千万个计算权重。然而,并不是所有的卷积层通道都会投入训练过程,所以网络中存在许多冗余的、对短期预测结果影响非常小的卷积层通道,导致了计算效率的下降。这些冗余的通道就是导致引言中所述的输电线路巡检现场部分问题的重要原因。它们使网络变得庞大复杂,对硬件性能要求随之上升,且短期内训练效果极差,故不适合在巡检现场使用。
图3 YOLOv3网络结构Fig.3 YOLOv3 network structure
因此,本文创新性地选择了一种结构化剪枝的方法,具体操作步骤如下。
首先,对网络模型进行稀疏训练,判定被剪通道的重要性。对自批标准化层(Batch Normalization,BN层)[18]中的缩放因子进行L1正则化操作,得到BN层的可训练尺度比例因子。
(1)
式中:δ为平衡损失函数中坐标损失函数系数(coord)与分类损失函数系数(noobj)两部分的惩罚因子;η为BN层中的可训练尺度比例因子;Γ为BN层中可训练尺度比例因子全集;L为损失函数[19]。
L=Lloc+Lclass+Lconfidence
(2)
式中:Lloc为坐标损失;Lclass为分类损失;Lconfidence为置信度损失。
(3)
(4)
(5)
Γ<(x)={η|η∈Γ,η (6) 式中:x为函数变量;η为BN层中的可训练尺度比例因子;Г为BN层中可训练尺度比例因子全集。 (7) 式中:ηth为最佳阈值;ε为一个很小的可忽略的数,本文所有的实验使用ε=10-3。 其次,根据式(1)给出的判断标准,确定被剪枝通道,开始剪枝。根据式(6)—(7)计算出全局阈值ηth1, 用此阈值控制剪枝过程。在算法中将该阈值设置为剪枝率,一旦通道的可训练尺度比例因子η的大小低于此阈值,代表此比例因子对应的卷积层通道已经剪除。 最后,再根据式(6)—(7)引入一个局部安全阈值ηth2来判定是否剪枝过度,在算法中将其值设定为特定修剪层中所有值的百分位数,可训练尺度比例因子η的大小小于该阈值时,停止剪枝,以防止过度迭代剪枝导致模型永久性损毁,并对剪枝模型的参数进行微调以确保完全剪枝。 如图4所示,本文采用了添加SPP模块并进行了结构化剪枝的YOLOv3模型,对输电线路进行了缺陷图像识别。该新模型在进行图像识别时,图像识别速度大大提高,能够更加适应硬件设备等级低、计算预测时间长的输电线路巡检现场。 图4 修改后的创新模型结构Fig.4 Improved new module structure 本文选取的图片数据库来源于江苏省南京市某段具备无人机巡检条件的日常巡检拍摄图。 本文选取的数据集分为金具、基础、杆塔及绝缘子4个大类,其中包含32种缺陷类别,例如悬垂线夹锈蚀、U形螺栓锈蚀、防震锤锈蚀、联板锈蚀、耐张线夹锈蚀、螺丝凸出或掉落、基础树木过于繁茂、鸟巢覆盖、绝缘子断裂等。由于需要比对样本量少且质量不一时剪枝模型的优化性,实验仅选取289张图片作为训练样本,其中图片大小均不同。使用LabelImg软件对数据集进行手工标注,对每种缺陷类别进行特殊编号,例如“绝缘子断裂”编为“05030904”,从而形成每类缺陷的标注位置坐标,并以XML文件的格式存储到训练集数据中。 根据上文所述的可训练尺度比例因子公式(即式(1))与损失函数公式(即式(2)—(5))确定应剪枝通道,并根据最佳阈值公式(即式(6)—(7))选择最佳剪枝全局阈值ηth1=0.05, 每层中所有通道的局部安全阈值ηth2=0.9, 从而确保至少10%的通道未在同一层中被修剪。 对289张训练样本进行训练,在训练过程中设定交并比(intersection-over-union,IoU)为0.4,图像分别率为256×256,一次训练选取的样本数(Batch Size)为10,硬件配置如表1所示。 表1 硬件配置Tab.1 Hardware configuration 训练过程中记录训练损失值以及验证损失值,并根据迭代次数绘制其散点图。如图5—6所示,横轴均表示迭代次数,纵轴分别代表训练损失值及验证损失值。 图5 训练损失值散点图Fig.5 Scatter diagram of training loss value 图6 验证损失值散点图Fig.6 Scatter diagram of testing loss value 使用相同的289张图片组成的数据集分别对YOLOv3原模型和本文提出的创新算法模型训练迭代10 000步,得到的结果如表2所示,实验结果表明,本文所使用的改进后的YOLOv3剪枝模型相比YOLOv3原模型,在平均评价值几乎不变的情况下,大幅减少了每步所需平均迭代时间。 表2 YOLOv3原模型与改进的剪枝模型效果对比表 Tab.2 Comparison between YOLOv3 original and pruning modules 步骤如下。首先对输电线路缺陷进行特殊编号,1个编号对应1种缺陷故障,例如“绝缘子断裂”编为“05030904”。接着,使用新采集的非训练图片集中的输电线路图片对训练好的改进YOLOv3模型进行测试,算法输出如图7所示,图片中存在的缺陷,被图像识别算法框选出来。例如图7中的第一张检测图片中存在“联板锈蚀”缺陷,机器自动用方框选出联板锈蚀位置,并给出对应的缺陷编号为“05031001”;再如图中的第8张检测图片存在“底部草木覆盖过密”缺陷,机器自动用方框选出杆塔底部的草木部分,并给出对应的缺陷编号“01010118”,其余检测图片均同理,不再赘述。 图7 算法输出图片结果Fig.7 Detection results of defective electrical equipment 本文使用漏检率、误检率及AP值3项指标进行权重计算后的结果作为评价值。具体算法如下。 评价值=(1-漏检率)×30%+ (1-误检率)×20%+KAP×50% (8) 式中:X为漏检率;Y为误检率;KAP为平均精度。 (9) (10) 式中:T为验证图片中标注为目标类设备总个数;M1为厂家实际检测出来且正确的目标类设备总个数;M2为厂家实际检测出来的目标类设备总个数。 (11) (12) (13) 式中:计算KAP时选取IoU值为0.5;PT为IoU大于0.5的检测框数量;PF为IoU不大于0.5的检测框数量;NF为没有检测到的地面实况(ground truth)的数量。 然后,选取另外参照计算机作为训练载体,硬件配置见表3,其硬件水平不如原计算机。该计算机迭代10 000步的结果如表4所示。 表3 参照计算机的硬件配置Tab.3 Hardware configuration of reference computer 表4 硬件设备及使用模型对比表Tab.4 Comparison of hardware device 对比表2和表4的数据可以清楚看到,当硬件设备相同时,剪枝模型没有受到图片量大幅减少的影响,其平均评价值虽略低于原模型(几乎相同),但其迭代时间平均每步减少0.8 s左右,每进行一次10 000次迭代的训练可节约近3 h,这有效地解决了输电线路巡检现场算法训练样本数量不足的问题,同时弥补了输电线路巡检现场无法对新拍图片进行即时训练的缺陷;此外,当迭代次数相同时,剪枝模型对硬件设备的依赖性远小于原模型,剪枝模型的平均迭代时间差比原模型的平均迭代时间差小接近3 s,证明其大大降低了对硬件设备的要求。 本文提出了一种基于SPP模块的剪枝YOLOv3模型的输电线路缺陷识别算法。该方法基于传统YOLOv3框架,卷积层间添加了SPP模块,并且对YOLOv3框架进行了剪枝处理。最后针对江苏省南京市某段线路的无人机日常现场巡检图片库进行了训练及测试,验证了算法的工程可行性。在目前输电线路巡检照片有效样本数量有限的实际情况下,仿真结果验证了改进的算法在有效训练样本数量不足情况下的可行性。并且,该算法较传统YOLOv3算法对硬件设备要求不高,一定程度上减轻了图像识别算法对GPU依赖程度高的情况。然而,对于较小的金具、基础附近的杂物,此模型的评价值依旧不高。在此方面,可以继续改善算法针对此情况的精度,同时将开发可视化WEB界面,用于训练、识别、查看和分析结果。3 实验与结果
3.1 数据集选取及其标注
3.2 剪枝处理
3.3 训练模型与测试结果
4 结论