苏凯第,赵巧娥
(山西大学 电力与建筑学院,山西 太原 030006)
电力输电线路多分布于高山丘陵等地形复杂、气候恶劣的环境,这给线路巡检带来很大的困难[1-4]。近年来,随着无人机技术的成熟,无人机已经被应用于输电线路绝缘子检测。受限于图像识别技术,早期的绝缘子检测方法是:采用边缘识别特征方法提取绝缘子外形,然后用椭圆方程对轮廓进行拟合,最后通过解析计数法判断绝缘子片的缺失情况[5-9]。另外,也有采用图像滤波算法截取绝缘子边缘实现对绝缘子图像识别的方法[10,11]。这些方法计算复杂且效率较低。
随着人工智能技术的发展,AI机器视觉也逐步应用到输电线路绝缘子检测中。目前的研究大多基于神经网络算法。文献[12]先使用BING算法预测图中所有可能是绝缘子的区域,然后利用CNN算法配合加权合并算法精确定位绝缘子位置。文献[13]将绝缘子检测前景目标和背景图像分开,分别进行神经网络训练,将训练结果融合,从而提取绝缘子特征。文献[14]将绝缘子图像宽高比进行K-means聚类,从而优化Faster R-CNN算法以提高绝缘子的检测速率。文献[15]通过在原有的Faster R-CNN模型中加入额外的CNN模型用于图像分类,提高了绝缘子缺陷的检测速率。文献[16]对神经网络训练过程进行改进,提出在CNN中加入随机森林法则以加强训练效果。文献[17]通过在ROI池化层中加入遮挡掩膜以提升检测准确率。利用目前的研究成果已经可以通过神经网络识别技术直接处理无人机拍摄的绝缘子图像,并使用深度学习算法对目标进行特征识别学习;但是成果应用时仍然存在无法兼顾目标检测准确性和快速性的问题。
YOLO系列算法是一种深度学习神经网络图像识别算法[18,19]。YOLOv5算法作为单阶段检测算法的代表,具有代码量少、程序简单、检测速率快、检测准确度高等优点,已成为目前与工程技术使用最接近的图像识别算法。本文基于YOLOv5结构,对原算法中的卷积操作和残差操作进行改进,以解决目前主流绝缘子图像识别算法检测时间长、对计算机硬件资源消耗过大的问题。
卷积操作模块由卷积核搭配 Leaky ReLU激活函数构成。本文对该结构进行改进,改进前后的卷积操作模块如图1所示。在原有的单通道基础上引入卷积核处理结果,并对2个通道的结果矩阵相乘得到融合特征。
图1 卷积操作模块及改进Fig. 1 Convolution operation module and improvement
本文使用sigmoid激活函数代替Leaky ReLU激活函数。sigmoid激活函数S(x)可以对特征差别复杂或特征相差不大的目标进行有效分类。
残差网络用来预测目标在特征图中的位置以构建特征金字塔。改进前后的残差模块如图2所示,图3为改进后子模块说明。
图2 残差模块及其改进Fig. 2 Residual error module and its improvement
图3 子模块说明Fig. 3 Sub-module description
改进前的残差网络仅可以处理目标与背景色差明显的图像。在绝缘子识别中,图像背景较为复杂,难以通过背景色差进行有效判别,因此对残差边也进行卷积处理。图2中主干部分的n个CSMA操作用于提高目标特征的提取准确率,缓解因学习深度增加而导致图像梯度消失的问题。
绝缘子目标采用改进的YOLOv5算法进行检测识别,改进后算法结构如图4所示。
图4 改进的YOLOv5算法结构Fig. 4 Improved YOLOv5 algorithm structure
依据改进后的残差网络可以生成如图5所示的特征金字塔。图5中,特征金字塔对图像中的绝缘子目标采样通过 FPN+PAN结构完成。经过特征金字塔采样后得到绝缘子目标特征图。使用Pytorch函数对目标特征进行融合,为预测框的绘制提供信息支撑。3个不同尺寸的特征图需要使用不同数量的卷积核操作,卷积核数量与模块对应关系如表1所示。
图5 特征金字塔Fig. 5 Feature Pyramid
表1 各特征融合模块中卷积核使用情况Tab. 1 Convolution kernel usage in each feature fusion module
由特征金字塔得到3个不同尺寸的特征图。以输入图像左上角为坐标原点建立图像坐标系,使用文献[20]提出的加权平均法绘制目标的回归预测框。
预测框与真实框的误差为损失值。本文使用Closs表示损失值。
式中:xt、yt、wt、ht为标注框参数;xc、yc为预测框与标注框最小外接矩形参数。I描述预测框与真实框的重合程度。损失值用于优化训练,保存在损失结果中。
式中:A(·)表示面积;PI代表预测框;TI代表标注框。
本文对神经网络进行了加深处理,会直接导致训练时间增加。多次循环训练法可以解决该问题:使用相同的数据集、相同的训练参数进行多次训练;在当次训练中读取上一次训练结果权重;根据权重预先估计绝缘子位置,加速绝缘子预测框绘制从而加快训练速度。在当次训练中,读取上一次的图像损失值,优化图像识别精度。
本文使用的绝缘子图像数据集来源于国家电网公司–中国电力线路绝缘体数据集。该数据集提供了600幅无人机拍摄的绝缘子图像。
本文对数据集采用旋转、翻转、加入干扰色块等操作进行数据集扩充,将600张图像扩充为7 375张。取出原来的600幅绝缘子图像作为验证数据集,用于深度学习的巡检数据集图像共6 775张。训练集和验证集按照4:1的比例进行划分,共得到训练数据集图像5 420张和测试数据集图像1 355张。
数据集图像使用Make Sense标注工具进行手动分类标注,分别为正常绝缘子和破损绝缘子。标注完成后,将图像输出为.txt格式的坐标文档,完成数据集准备操作。
实验的硬件配置条件为:Inter Xeon E5-2660,2.2 GHz双路CPU,32G内存,RTX2060 GPU主机。软件环境为:Anaconda, Pytorch版本为1.8,Python版本为3.8,编程软件使用VS2019;运行环境为Windows10系统。
本文使用平均精度AP(average-precision)作为结果评价指标。AP计算公式如式(6)。
式中:P(·)为精确率;R(·)为召回率;TP表示绝缘子的图片被准确识别为绝缘子;FP表示绝缘子的图片没有标注为绝缘子;FN表示不是绝缘子的图片被标注为绝缘子。
算法参数均按照表2进行设置。分别对改进前和改进后的算法进行4次训练。改进前的4次训练时长和图像检测情况记录如表3所示;改进后的算法4次训练结果如表4所示。
表2 训练参数设置Tab. 2 Training parameter settings
表3 改进前算法训练及检测结果Tab. 3 Multiple training and detection results of the algorithm before the improvement
表4 改进后算法训练及检测结果Tab. 4 Multiple training and detection results of the algorithm after the improvement
对比表3和表4可以看到:算法改进后,图像检测速度逐次增加,准确度均有很大提升,单张图片的平均耗时逐渐下降,训练时间大幅下降。
在对第1次训练结果学习后,本文所提改进算法的第2次训练时间显著缩短,图像识别平均精度AP也有明显提升。第3次、第4次训练时间基本相同。与第3次训练结果相比,第4次的AP值提升不大,故可以认为改进算法在第4次训练时已经达到最优;此时原算法并未达到最优状态。
改进算法的第1次训练结果有明显的漏检现象,如图6(a)所示;第2次训练后,漏检现象消除;此后的检测均完成对绝缘子的准确识别。检测结果出现同一绝缘子多次标注的现象,如图 7(a)(b)(c)所示。该现象是预测回归时,I阈值选择不合适造成的。从图7(d)可以看出,在I阈值选择为0.7时,预测框重叠的现象消除。
图6 改进算法绝缘子漏检现象Fig. 6 The improved algorithm for missing detection of insulators
图7 改进算法绝缘子检测预测框重叠现象Fig. 7 The improved algorithm for insulator detection prediction frame overlap
本文基于YOLOv5算法,针对电力巡检无人机航拍图像中的绝缘子设计了识别模型。对原算法中卷积操作部分和残差网络进行改进,提升了目标检测准确性。
实验结果表明,本文所提改进方法可以对航拍巡检图像中无遮挡绝缘子目标进行有效识别,可以准确定位故障绝缘子片。识别平均准确率可达98.9%,单张图片平均识别速度为0.061 s。