冀承泽,贾立新,李荆晖
(西安交通大学 电气工程学院,陕西 西安 710049)
能源是经济发展的基石和现代社会的血液,电网是能源转换利用,优化配置和供需对接的重要平台[1]。架空输电杆塔的缺陷检测和维修一直是保障电网安全运营的重要手段。随着电网建设规模的不断扩大,复杂输电杆塔的缺陷检测变得愈发困难,目前的输电杆塔缺陷检测主要靠技术人员手动识别检测,庞大的电网规模给检测人员的工作带来沉重的负担,因此开展基于深度学习的输电杆塔缺陷检测的研究十分必要。
随着深度学习[2]技术的快速发展,近年来国内外有许多学者对基于深度学习的输电杆塔缺陷有所研究,并取得了相应的成果。文献[3]利用Faster R-CNN结合特征金字塔网络(Feature Pyramid Network,FPN),通过检测模型的MGFF-KCD,实现了对无人机巡检图像的输电杆塔关键部位的缺陷检测;文献[4]对比了四种基础网络:R-CNN,Faster R-CNN,RetinaNet,YOLOv3算法,对输电杆塔小金具进行了检测,平均检测精度可以达到76.2%;土耳其的学者利用形态学与支持向量机结合的方法进行了输电线路故障的特征提取与分类工作[5]。而针对绝缘子、防振锤等检测方面,深圳供电局的研究人员在防振锤故障检测中运用多级结构分别实现特征提取与分类检测[6],对防振锤故障检测方法的正检率达到89.3%;广东电网的研究人员用Faster R-CNN算法结合ResNeXt101建立输电杆塔缺陷智能识別系统[7],对绝缘子自爆识别的准确率有90.55%;近期有学者改进YOLOv5s网络加入SE注意力机制、运用CIoU做为损失函数,实现了绝缘子89.5%的查准率[8]。以上各模型在绝缘子的检测上准确率能达到90%左右,依然有提升空间。工程上对于目标检测的准确度当然是越高越好,这样可以尽可能减小输电杆塔缺陷导致的电网非正常运行带来的经济损失。考虑到上述研究中对于绝缘子识别准确率仍有提升的空间,该研究运用位置注意力机制[9]、EIoU[10]损失函数、激活函数等改进措施尝试提升YOLOv5s模型的性能。
YOLOv5s是一种单阶段目标检测算法,性能较YOLOv4有很大提升[11]。基础网络结构主要包含:输入端、Backbone层、Neck网络、Head输出层。
(1)输入端:对图像进行预处理。使用Mosaic数据增强对图片进行随机缩放、裁剪、排布[9],通过自适应锚框计算寻找最佳锚框值。然后将原始图片缩放到标准尺寸输入检测网络。
(2)Backbone层:用来提取图像的特征图。运用Focus结构进行原始图片的切片操作提速,主干网络运用CSP1_X结构,包括卷积层、残差单元、concat层,将特征图拼接。
(3)Neck 结构:进一步提升特征的提取能力。用到了SPP模块、FPN+PAN模块,YOLOv5s中采用借鉴 CSPNet 设计的 CSP2 结构,能够起到加强网络特征融合的作用。
(4)Head输出层:目标检测结果的输出通道。不同的检测算法在输出中有不同的通道,分为分类分支和回归分支。YOLOv5s采用GIoU Loss损失函数,提升算法精确度。
该研究中基于原始网络结构改进后的模型结构如图1所示。
图1 改进后的网络结构
注意力机制使模型在处理图像时具备了信息筛选的能力。与人类视觉的注意力机制相似,从众多信息中把注意力集中在重要信息上,忽略不重要的信息[12]。这能帮助YOLOv5解决环境信息的干扰,进而更准确地检测出图像中的物体,并且可以更快地进行检测。注意力机制通常是通过计算权重来实现的,这些权重指示了不同部分的重要程度。
目前广泛应用的注意力机制有通道注意力、空间注意力以及两者结合的注意力机制。根据相关研究结果表明,在一些分类任务与COCO目标检测数据集上,位置注意力(Coordinate Attention)的效果已经超过了典型的通道注意力SENet(Squeeze and Excitation Network)[9]。为了研究的严谨性,在杆塔缺陷检测上分别将CA,CBAM考虑在内。
CA机制将常用的全局池化改造为两个维度的池化,分别用池化核(H,1)和(1,W)来提取水平方向和竖直方向的特征,得到第c维特征输出为:
(1)
用Concat将二特征向量连接,经过一维卷积、BN与非线性激活等一系列操作后得到:
f=δ(F1([zh,zw]))
f∈RC/r×(H+W)
(2)
其中,f为包含横向纵向空间信息的特征向量,其中r为缩减因子。随后将f分为两个H,W方向上的独立特征向量,分别经过一维卷积与Sigmoid激活函数得到CA机制的权重向量:
gh=σ(Fh(fh))
gw=σ(Fw(fw))
(3)
将二者合成为权重矩阵,与原输入做乘积即得到CA机制的输出:
(4)
CA机制可以加在YOLOv5s的不同位置,比如在head层或backbone层输出端。CA与SE,CBAM的区别在于特征权重向量既包含了通道信息、纵向空间信息和横向空间信息,又可以提升模型特征提取的能力,帮助网络更准确地定位目标信息,增强识别能力。
YOLOv5s默认使用的损失函数是CIoU Loss,其表达式如下:
(5)
式中,b与bgt分别表示预测框与目标框的中心点,c为两框最小外接矩形的对角线长度。a表示一个正平衡参数,v描述了预测框与目标框的长宽比信息。CIoU Loss无法处理预测框、目标框长宽比相同的情况,引入EIoU Loss直接利用预测框宽度、长度与真实框宽度、长度的差值进行损失计算,损失函数公式如下:
(6)
引入了Focal Loss优化了边界框回归任务中的高低质量样本不平衡问题,通过为LEIoU增加权重系数[8],形成Focal-EIoU Loss:
LFocal-EIoU=IoUγLEIoU
(7)
另外,近年来有两种新的损失函数均在消融实验上中取得了不错的效果:Zhora Gevorgyan[13]提出考虑角度损失的SIoU Loss与一种考虑动态聚焦机制[14]的WIoU Loss,因此在改进输电杆塔缺陷检测模型的损失函数过程中以上几种方式均可考虑。
YOLOv5在卷积层默认使用的激活函数为SiLU,SiLU与Swish的关系如下:
swish(x)=x·sigmoid(βx)
(8)
当β=1时,将Swish函数称作SiLU激活函数。Swish在深层模型上具有很好的效果,其有上界、下界,且具备平滑、非单调的特性[15],SiLU也具备相同特性。虽然Swish与SiLU在深层网络有很大的优势,但是在移动设备上进行实验无法处理过于复杂的网络,因此可能会导致YOLOv5默认激活函数SiLU的优势得不到展现,而在MobileNetV3论文[16]中曾提出了另一种激活函数Hardswish:
(9)
它解决了Swish不适合在移动设备上使用的问题。Hardswish激活函数能够实现分段功能,提升了模型的运算效率。因此理论上Hardswish激活函数下会取得比较好的效果。除此之外,Mish激活函数也具有与Swish相近的特性,同一模型、数据集下运用不同激活函数往往效果不同,需要进行大量的实验,才能选出最佳的激活函数改进策略。因此,该文除了在卷积层中尝试用默认激活函数SiLU,还需依次验证Hardswish,Mish等其他激活函数的效果。
该文采用的数据集是来源于AI Studio与CSDN公开的绝缘子数据集结合运用爬虫获得的输电杆塔鸟巢数据,共计3 885张图片。图2为数据集中的图片样例。
图2 数据集样例
数据集中包含各种环境背景,包括白天、夜晚、雾天、雨天以及模糊的图片来模拟无人机采集故障。将以上各类图片按8∶2划分为训练集和测试集,如表1所示。
表1 训练集、测试集的划分
将数据集中所有图片运用Labeling软件进行标注,将标注文件保存为PASCAL VOC 格式,并转换为可以输入YOLOv5网络的txt文件格式。将图中出现的正常绝缘子均标注为normal标签;将图中出现的自爆绝缘子标注为defect标签;将鸟巢均标注为nest标签。该模型的训练均在Anaconda平台PyCharm Professional上进行,CPU为2.3 GHz 八核Intel Core i9,GPU为8 GB显存的NVIDIA GeForce RTX 3090,开发环境选用Python3.7,CUDA 11.1,Pytorch 1.8.1。为保证此项研究训练结果的准确性,改进过程中实验的算法模型超参数需要相同,模型超参数值如表2所示。
表2 超参数设置
为了评估模型的改进效果,需要选取指标对比分析各改进模型的泛化能力。为了比对模型效果,选用的评价指标包括:
(1)查准率(precision),表示模型预测的所有目标中预测正确的比例;
(2)查全率(recall),又称召回率,表示所有的真实(正)目标中预测正确的目标比例,可以反映模型是否能够尽可能将每个目标都检测出来。指标计算公式如下:
(10)
其中,TP表示实际为正且被模型推理为正的样本数目;FP表示实际为负但被模型推理为正的样本数目;FN表示实际为正但被模型推理为负的样本数目。
(3)平均精度(average precision,AP),就是对数据集中的某一个类别的检测精度进行平均,AP为PR曲线包含的面积,AP值在0~1之间,越大说明模型的查准率与查全率都较好。平均精度均值(mAP)是指所有类AP的平均值。AP与mAP的计算公式分别如下:
(11)
YOLOv5s算法会在训练结束得到权重文件:best.pt,last.pt。best.pt最佳权重文件会按照参数mAP@.5,mAP@.5∶.95的值按1∶9的比重求和迭代,因此应优先考虑mAP@.5∶mAP@.5∶.95(0.1∶0.9)。以上每种指标都会在一定程度上反映检测算法在不同方面的性能,因此需要综合判断,优先考虑综合mAP,其次考虑查准率、查全率与检测速度等指标,得到最好的改进策略。
分别在backbone层、head层后融入CA或在backbone层的C3模块后加入CBAM,实验结果表明改进注意力机制对于原始模型效果并无改善,仅在个别图片识别置信度上有所提升,mAP下降幅度较大,考虑到mAP是决定模型效果的主要指标,故此项改进策略并不适合于文中模型。而后进行损失函数的对比实验[17],表3展示了对比实验结果。
表3 改进损失函数对算法的影响
据比对效果,模型改进损失函数得到的最佳权重下除了WIoU Loss的综合mAP有所下降,其余效果较好,均比CIoU Loss得到了更好的效果。比较突出的是Focal-EIoU Loss,综合mAP提升了0.696,至0.651 3,SIoU Loss效果也不错,提升了0.366,至0.648 0。理论上WIoU Loss为最先进的损失算法,但根据实际实验情况,针对此研究效果并不如Focal-EIoU Loss以及SIoU Loss。Focal-EIoU Loss效果最好,因此将损失函数改进为Focal-EIoU Loss为改进损失函数的最佳策略,可以达到提升训练速度与模型精度的目的。
然而,加入Focal-EIoU Loss后模型的综合效果虽较好,但查准率依然有提升空间。激活函数可以提升模型的表达能力,可能对查准率、综合效果提升有作用。为了对比改进激活函数对模型的提升效果,同样需要进行对比实验。激活函数通常上也可以称为非线性映射层,从数学角度来看,它的引入可以增加卷积神经网络的非线性表达能力[18]。引入非线性因素提高了模型的表达能力。如果没有激活函数,那么模型就只有线性变换,可想而知线性模型能表达的空间是有限的。而激活函数引入了非线性因素,比线性模型拥有更大的模型空间。改进激活函数可能有提升模型泛化能力的效果,选取常用的激活函数进行实验,更换卷积层的激活函数为Hardswish,FReLU,AconC,MetaAconC等,根据实验结果选取最佳的激活函数改进策略。实验结果如图3所示。
图3 改进激活函数训练过程mAP@.5∶.95曲线
mAP是最能直接反映模型效果的参数,因此先用mAP做激活函数的初步筛选,可以看出,效果较好的三个激活函数为SiLU,Mish,Hardswish。观察各指标参数见表4。
表4 激活函数改进对模型的影响
可以看出,将原激活函数改进为Mish在几项指标的表现中均不能令人满意,而SiLU与Hardswish各有优势,SiLU各项指标表现均衡,并且总mAP也达到了0.651 3,而Hardswish下mAP也比较高,比原始模型高出0.4百分点,且准确率也发生了质的提升,达到了95.02%。查全率虽然不如SiLU的89.74%,但也有87.38%,高于原始模型。因此,引入Hardswish可能是效果很好的激活函数改进策略,对比YOLOv5s+Focal-EIoU+SiLU与YOLOv5s+Focal-EIoU+Hardswish的目标检测能力。经过大量推理实验发现,两个模型的目标检测能力相差无几,但改进激活函数Hardswish的效果略优,另外,模型的推理速度也有所提升,在NVIDIA GeForce RTX 3090显卡支持下,YOLOv5s+Focal-EIoU+Hardswish每秒处理的图像帧数(frame per second,FPS)达到了75,而YOLOv5s+Focal-EIoU+SiLU模型则为72.3,改进激活函数后的模型相比于原始模型YOLOv5s+CIoU+SiLU的70.6的FPS提升了将近5,每秒能处理图片的总数有所提升,图4为模型推理效果。
图4 SiLU(左)与Hardswish(右)激活函数推理效果
以上对比推理图中左侧为SiLU下模型推理效果,右侧为Hardswish下模型推理效果,二者相差无几,Hardswish略高,且Hardswish激活函数下模型的推理速度更快,能够在有限的时间内处理更多的图像,因此选取YOLOv5s+Focal-EIoU+Hardswish为激活函数改进策略。
经验证模型在绝缘子非常密集以及隐蔽,人眼都不好分辨的情境下依然能够较为准确地识别。最后,可以通过提升置信度阈值conf-thres的方法减少模型误检的几率。图5展示对模型误检的改进情况。
图5 误检的改进
通过提升conf-thres(图5左二图中)将输电杆塔的结构部件识别正常绝缘子的情况便不再出现。经过以上改进,原YOLOv5s+Focal-EIoU+Hardswish通过提升置信度阈值得到的Hi-Conf YOLOv5s+Focal-EIoU+Hardswish模型便可以较完善地完成输电杆塔的缺陷检测(自爆绝缘子、正常绝缘子、鸟巢)。
改进后的Hi-Conf YOLOv5s+Focal-EIoU+Hardswish模型相比于改进前的YOLOv5s+CIoU+SiLU 模型在查准率、查全率、mAP、检测速度几个参数上均有所提升,查准率由92.96%提升至95.02%,查全率由87.36%提升至87.38%,mAP@.5∶mAP@.5∶.95(0.1∶0.9)由0.644 3提升至0.648 1,模型检测速度提高了4.4帧。改进后的模型比原始YOLOv5s模型在各个指标上都有较高程度的提升。另外, 该文也与领域内其他研究中的方法进行了效果对比。 由于缺乏公开代码, 故与输电杆塔缺陷检测研究中较为优秀的模型结果进行对比,文中方法相比现有的多种输电杆塔缺陷检测的方法[7,8,19,20,21]在识别准确率上有较大的优势。如表5所示,本模型具有一定先进性。
表5 改进模型的先进性
基于YOLOv5s提出了一种改进YOLOv5s算法——Hi-Conf YOLOv5s+Focal-EIoU+Hardswish模型,用于实现对绝缘子、自爆绝缘子与鸟巢的检测。改进算法在YOLOv5s的基础上引入了Focal-EIoU损失函数,提升了模型收敛速度与目标检测的精度;而后在卷积层引入Hardswish激活函数,提高了神经网络对模型的表达能力,获取了更高的模型查准率;提升算法推理的置信度阈值conf-thres,减少模型的误检率,提升模型的正检率。由于算力有限,该文仅尝试了YOLOv5s、YOLOv5m的效果,因此运用更加先进的设备提升网络深度是未来发展的一个方向。