一种基于YOLOv3的绝缘子串图像快速检测方法
2022-02-26张红民王永平
彭 闯,张红民,王永平
(重庆理工大学电气与电子工程学院,重庆 400054)
0 引 言
绝缘子是高压输电线路中的重要部件,起着绝缘与支撑导体的作用,因此,高压线路无人机巡检中,绝缘子是重点的查看对象之一。目前,运用图像处理技术对输电线路中的绝缘子检测方面,很多学者开展了大量的研究工作。早期的研究中,主要是通过对输电线路中的绝缘子在颜色、形态以及纹理方面上的特征进行提取,再通过阈值分割或者分类器进行分类来对绝缘子进行识别[1-6]。这类方法提取的特征一般较为浅层,鲁棒性较差,且识别速度不高,难以满足检测实时性的要求。
近年来,随着深度学习技术的快速发展,出现了很多基于深度学习的目标检测算法,其在识别精度与识别速度上均优于传统的方法。其中,以R-CNN[7]系列为代表的两阶段(two stage)目标检测算法和以SSD[8]和YOLO[9]系列为代表的一阶段(one stage)目标检测算法相对较多。不少学者也将其应用到了电力行业中。文献[10]对比了R-CNN、Fast R-CNN和Faster R-CNN等两阶段目标检测算法在绝缘子检测方面的表现。文献[11]通过改变Faster R-CNN算法的主干网络,对比了不同主干网络结构模型在绝缘子检测效果方面的影响。文献[12]将Faster-RCNN应用于电力小部件的识别,并通过anchor框与真实框的距离来去除无效的anchor框,从而提高了识别速度。文献[13]将Faster-RCNN应用于绝缘子的识别,继而完成后续的自爆缺陷的识别。
比较而言,一阶段目标检测算法以其端到端的检测特点,在检测速度上占有一定的优势。故本研究以一阶段检测算法中的YOLOv3算法[14]为基础,通过认真分析无人机巡检图像中高压绝缘子串在图像中的特点,去掉了YOLOv3网络结构中大特征图检测环节,并且配置更加合理的anchor先验框,在不牺牲识别精度情况下进一步提升了算法的识别速度。
1 YOLOv3目标检测算法基本原理
YOLO算法的提出,为目标检测问题提供了新的思路,其对目标位置的检测采用了直接回归的思想,大大提高了检测速度,为实时检测提供了可能。尽管在检测速度上YOLO算法优于以Faster R-CNN[15]为代表的两阶段目标检测算法,但是在检测精度上却差强人意。针对这个问题,研究人员又陆续提出了通过改进的YOLOv2、YOLO9000[16]以及YOLOv3,其中,YOLOv3不仅保持了YOLO系列算法的速度优势,在检测精度上也丝毫不逊于Faster R-CNN以及一阶段算法SSD,是一种兼具检测精度与检测速度的优秀算法。
1.1 YOLOv3主干网络
在YOLOv3中,为了加强分类的准确性,在YOLOv2中的darknet-19主干网络的基础上,进一步对网络进行了加深,提出了darknet-53主干网络[14],见图1。
darknet-53保留了darknet-19中的一些优点,如在每个卷积层后均添加了Batch Normilazation层,激活函数使用Leaky Relu函数。除此之外,为了克服网络加深带来的梯度消失问题,darknet-53借鉴了restnet的思想,在网络中加入了残差模块[17],图1左侧的数字表示的是重复残差模块的数量。此外,在对特征图进行下采样的过程中,darknet-53没有使用darknet-19中所使用的Maxpooling操作,而是采用以步长为二的卷积操作,每一次操作均将特征图缩小两倍,而整个主干网络共有五次特征图缩小操作,故最后输出的特征图是输入图像的1/32。darknet-53在保证实时性的基础上,较好的提高了分类的性能。
图1 Darknet-53主干网络示意图Fig.1 Darknet-53 backbone network diagram
1.2 多尺度预测
在YOLOv3中,为了提高对小目标的检测精度,借鉴了FPN(feature pyramid networks)[18]思想,在多个尺度的特征图上对目标进行检测,如图2。
图2 YOLOv3结构图Fig.2 YOLOv3 structure diagram
在YOLOv3中,为了满足32倍的下采样,输入图像尺度为416×416×3,并且在52×52、26×26以及13×13三个特征图上进行目标检测,其中大特征图对小目标的检测能力较强,小特征图对大目标的检测能力较强。在大特征图的生成过程中,concat操作融合了小特征图,进一步提高了对小目标的检测能力。在每个特征图中,每个网格单元对3个box负责预测,每个box需要预测矩形框的4个坐标值,1个置信度值以及80个类别,所以每个网格单元需要预测的参数量为255个(3×(4+1+80))。
1.3 anchor框选取
在YOLOv3中,依然借鉴了FasterR-CNN中anchor框思想,并且沿用了YOLOv2中的采用k-means聚类的思想来得到先验anchor框。在YOLOv3中,一共聚类出9种anchor框尺寸,分别为10×13、16×30、33×23、30×61、62×45、59×119、116×90、156×198、373×326。其中,每个尺度的特征图采用3个尺寸的anchor框,大特征图采用尺度较小的3个anchor框,小特征图采用尺度大的3个anchor框,按此规律,anchor框的分配如表1。
表1 anchor框分配Table 1 Anchor distribution
2 改进方法
YOLOv3的测试是在COCO数据集上进行的。为了使网络模型更加适合于无人机巡检中图像中的绝缘子串的识别,通过认真分析绝缘子串目标图像的特点,在原始YOLOv3网络结构与超参数的基础上,进行了相对应的改进。
2.1 去掉大特征图检测环节
尽管绝缘子串的长度跟地区的污秽等级以及绝缘子的类型有关,但是在高压输电线路中,高的电压等级使得绝缘子串的长度较长,因而在高压输电线路无人机巡检图像中,绝缘子串所占图像的比例较大。针对这一特点,笔者在检测尺度上进行了精简,舍去了在52×52特征图上的检测环节,如图3。
图3 两尺度检测结构图Fig.3 Two-scale detection structure diagram
在目标检测中,尺度较大的特征图主要用于对小目标的检测,而在高压输电线路无人机巡检图像中,绝缘子串目标通常较大,所以减少在尺度最大的52×52特征图上的检测环节并不会对绝缘子串的检测精度产生较大的影响。与此同时,减少一个特征尺度的检测过程,使得网络结构更加精简,同时也减少了预测参数的数量,会使检测速度有所提高,节省出来的时间能用于后续的故障诊断的处理等。
2.2 设置合理的anchor框
由于绝缘子串的长宽比例较大,其跟COCO数据集中的目标在外形上差距较大,若继续使用默认的anchor框尺寸,并不是很合理。为了使检测过程更加贴合实际,笔者对YOLOv3网络结构中的表征anchor框尺度的超参数进行了修改。
笔者依旧借鉴了k-means算法来确定适合于绝缘子串的anchor框的尺寸。由于本研究仅仅在两个尺度上对绝缘子串进行检测,所以在利用k-means算法聚类时将聚类中心数目设置为6,即在每个特征尺度上分配3个anchor框进行目标检测。
传统的k-means算法通过欧式距离的度量来进行聚类,但是在目标检测中,每个anchor框中心位置是被每个栅格所固定的,我们要确定的只是框的长和宽。而聚类的目的正是为了使anchor框和离其最近的真值框(ground truth框)有更大的IOU值,所以在聚类的时候采用如下公式来进行度量[19]。
d(box,centroid)=1-IOU(box,centroid)
利用该公式,在聚类过程中,使得anchor框到聚类中心的距离尽可能小的同时,IOU的值尽可能大。最后通过聚类,得出的六个anchor框的尺寸分别为98×28、38×155、244×48、287×76、288×114、290×182,聚类过程中的平均IOU值为72.42%。
3 实验评估
3.1 实验环境
实验环境见表2。
表2 实验环境Table 2 Experimental configuration
3.2 数据集整理
实验采用了1 200张无人机航拍图像,每张图像的分辨率为1 152×684。对数据的标注采用了labelimg软件,在标注过程中标注格式选择为YOLO格式,标签为insulator。
3.3 训练过程
图4和图5分别展示了原始网络结构和本实验网络结构在训练过程中的损失曲线和mAP曲线。由于本实验时对网络进行了精简,并且对anchror框进行了重新聚类,所以在训练开始前需要更改darknet文件目录中的cfg文件。首先在cfg文件中删除掉第三个yolo层,然后将yolo层中anchors参数用上述聚类出的anchor框尺寸进行替换。另外,由于所用的实验平台性能一般,为了使训练过程中不会因为GPU内存不足而报错,本实验中将batch参数设置64,subdivisions参数设置为32。为了进一步扩充训练集,对cfg文件中的数据增强参数进行了设置,饱和度调整参数saturation设置为1.8,曝光调整参数exposure设置为1.5,色调调整参数设置为0.2。由于识别的种类只有一种,故将迭代次数设置为了4 000。
图4 原始网络训练过程Fig.4 Original parameter training process
图5 本网络训练过程Fig.5 Parameter training process in this article
对比两种网络的训练过程可知,原始网络的mAP曲线上下起伏较大,最终在经过4 000次迭代后,本网络的mAP值87.9%,优于原始网络的86.3%。
3.4 实验结果评估
在模型训练过程中,网络会保存多组权重参数,其中参数的性能表现并不是越往后面越好,因为随着训练批次的增加,网络存在过拟合现象。故需要对每种模型的权重参数在测试集上进行测试,选取评价指标最好的那一组权重参数作为该网络的权重参数。对两个网络均选取表现最好的权重参数,然后测试每个网络在不同IOU阈值下的AP值(平均精确度)、Recall值(召回率)以及检测速度。结果如表3和表4。
表3 IOU阈值为0.5Table 3 0.5 IOU threshold
表4 IOU阈值为0.75Table 4 0.75 IOU threshold
从表3和表4可见,本网络在AP上及Recall上与原始网络相当,但是在检测速度上,本网络领先优势较大,对每张图像的检测速度能提升8至10毫秒,说明本网络在没有较大牺牲检测精度的基础上,对检测的速度进行了一定的提升,能较好地应用于对高压输电线路中绝缘子串的识别,为今后无人机巡检的在线诊断打下基础。
图6和图7为本方法对含多个绝缘子串目标的巡检图像和含单个绝缘子串目标的巡检图像的测试效果图。从图6和图7可见,本方法对前景绝缘子串目标的识别效果较好,而对后景绝缘子串目标的识别效果较差。之所以对后景绝缘子串目标识别效果较差,一方面是由于本方法去掉了大特征图的检测环节,故对小目标的识别效果较差,而后景绝缘子串目标通常较小;另一方面,由于本研究目的是为后续基于可见光图像的绝缘子串故障识别打下基础,而后景绝缘子串目标通常存在比较严重的遮挡,对后续绝缘子串的故障识别的参考意义不大,故进行图像标注的过程中对存在严重遮挡的绝缘子串目标并未进行标注,因此对存在严重遮挡的后景绝缘子串目标的识别效果较差。
图6 多目标图像检测效果Fig.6 Multi-object image detection effect
图7 单目标图像检测效果Fig.7 Single-object image detection effect
4 结语
以YOLOv3算法为基础,针对高压输电线路绝子串在巡检图像中所占比例较大且长宽比较大的特点,通过去除大特征图检测环节的方式精简了检测的网络,同时使用k-means算法聚类出适合于检测高压输电线路绝缘子的先验anchor框。通过实验结果对比可知,本网络结构在仅仅损失轻微AP值与Recall值的基础上,对检测速度提升较大,提高了绝缘子检测的实时性,为无人机图像巡检中故障实时诊断打下了坚实的基础。