基于改进YOLOv3的绝缘子目标检测研究
2022-07-04朱有产秦金磊
朱有产, 郑 怡, 秦金磊
(华北电力大学控制与计算机工程学院,河北 保定 071003)
关键字:YOLOv3算法;Darknet-41;绝缘子检测;K-means++算法;多尺度预测
0 引 言
随着电网智能化发展和计算机视觉原理的广泛应用,利用计算机图像处理技术进行电力设备检测已成为当下的研究热点。绝缘子作为输电线路中主要部件之一,在架空输电线路中起到至关重要的作用,由于绝缘子长期暴露在外部,不可避免地发生各种故障,想要及时地掌握其运行状况与质量安全,并且及时地排查绝缘子出现的击穿、闪络和爆裂等问题,需要投入大量的人力、物力以及财力。随着无人机巡检方式的普及,它弥补了传统巡检方式的不足,成为电力网络智能诊断的主流发展趋势。对于输电线路绝缘子的识别以进行状态检测与维护显得十分重要,然而对处于复杂背景下的绝缘子识别与定位也是热点与难点。
基于深度学习的目标检测算法主要分为两阶段检测算法(Two-stage detectors)和单阶段检测算法(Single-stage detectors)两类。两阶段检测算法即基于候选区域的检测方法,过程主要包括两个阶段,首先是提取候选区域,然后对每个候选区域进行分类并预测边界框。两阶段检测算法主要包括R-CNN[1]、Fast R-CNN[2]、Faster R-CNN[3]等。文献[4]利用Faster R-CNN算法来识别航拍绝缘子图像,精确度较高,但是处理速度较慢,对于遮挡情况下的绝缘子识别效果不佳。两阶段检测算法虽然有很高的检测精度,但是算法的计算时间过长,无法达到实时检测的要求[5-8]。单阶段检测算法即基于回归的检测方法,利用预定义的锚点来覆盖图像中的空间位置,无需提取候选区域,直接从图片获得预测结果,实现了端到端的目标检测[9-11]。单阶段检测算法很好的权衡了检测的准确率和处理速度,主要包括SSD[12]、YOLO[13]、YOLOv2[14]、YOLOv3[15]等。文献[16]提出了一种基于改进YOLOv3与匹配跟踪的混合模型,将网络中的残差层替换为密集卷积块并改变了网络的设计结构,利用Softmax分类器将特征分类,实验表明改进的算法具有较高准确性和鲁棒性。文献[17]提出一种基于改进 YOLOv3 算法的航拍目标检测方法,对航拍数据集进行目标先验框维度聚类、优化锚点参数,同时减少部分卷积操作并引入跳跃连接机制降低特征冗余,提高了检测准确率,并降低了小目标的误检率与漏检率,在保证实时性的前提下,将检测平均准确率提高了12.7%。国内外很多研究学者将YOLOv3算法应用于目标检测领域[18],并针对具体问题提出了不同的改进方案,但是在绝缘子检测领域使用该算法较少。
将YOLOv3算法应用于绝缘子检测领域,为提高算法的适用性和准确性,对YOLOv3算法加以改进。调整图像输入尺寸,减少Darknet-53特征提取网络中卷积层数量和下采样中使用Residual(残差单元)的次数,降低网络深度,减少运算量,然后增加一个尺度预测,将浅层特征加入到预测结果中,改善小目标检测效果。
1 YOLOv3算法
图1 YOLOv3模型结构图Fig.1 YOLOv3 model structure diagram
Convolutional:由Conv2d(卷积层)、Batch Normalization(批量归一化层,BN)和Leaky Relu(激活函数)组成。BN层可以使优化问题的解空间更加平滑,提高梯度预测的准确性和稳定性,从而加快训练的收敛速度,而激活函数则是为了避免深度网络梯度的消失。
Concatenate:张量拼接。将darknet中间层和后面的某一层的上采样进行拼接。但是拼接的操作和残差层add的操作不同,拼接会扩充张量的维度,而add只是直接相加并不会导致张量维度的改变。
Convolutional Set:由5个卷积核尺寸分别为1×1、3×3、1×1、3×3、1×1的Convolutional单元组成。
Residual:残差块是若干层的集合,输出特征表示和输入之间的残差,使用这个残差块加上原始输入可以得到所求的特征表示,这种机制称为跳跃连接,使得每个残差块只需拟合残差即可,解决了反向传播梯度弥散和梯度爆炸问题,降低每个残差块数据拟合的复杂程度。
Bounding Box Prediction:YOLOv3采用了K-means聚类得到anchor box 的尺寸,并为每种下采样尺度设定3种anchor box,总共聚类出9种尺寸的anchor box,每个anchor box预测3个Bounding Box。YOLOv3采用Logistic Regression对Bounding Box 进行预测,每次预测时输出一组(tx,ty,tw,th,to),然后通过公式(1)计算出绝对的(x,y,w,h,c)。然后借用Logistic回归对anchor box包围的部分进行一个目标性评分(objectness score),即判断这块区域为目标的可能性,找到得分最高的区域对其进行预测。
bx=σ(tx)+cx
by=σ(ty)+cy
bw=pwexp(tw)
bh=phexp(th)
(1)
其中,pw,ph表示网格对应anchor box的宽和高,tx,ty为目标中心点相对于所在网格左上角的偏移量,cx,cy表示此网格相对于图像左上角的横纵距离。
2 改进YOLOv3算法
2.1 Darknet-53网络改进
YOLOv3中使用的Darknet-53特征提取网络是在Darknet-19的基础上,融合了残差单元和跳跃连接的思想以便更好地获取物体特征,而删除全连接层则可以输入任意大小的图像,并且为了降低池化带来地梯度负面效果摒弃了Pooling池化层,取而代之的是用步长为2的卷积层来达到下采样。Darknet-53网络共有53层卷积层,考虑到本研究只识别绝缘子,过多的卷积层会增加计算量,因此对Darknet53网络进行改进。改进的Darknet-53网络(记为Darknet-41)模型结构见图2,减少相连卷积层的数量,降低YOLOv3的5次下采样中使用Residual的次数,降低网络深度和运算量,避免丢失过多的特征信息。
图2 Darknet-41网络模型结构图Fig.2 Darknet-41 network model structure diagram
2.2 Anchor box调整
YOLOv3算法采用K-means聚类算法得到anchor box的尺寸。K-means聚类算法原理较简单,可解释度也较高,但是对于K值的选取存在一定的问题,而K值的选择对最后的聚类结果和运行时间都有较大影响。因此选择K-means++聚类算法来得到anchor box的尺寸,K-means++聚类算法也可以理解为是对K-means随机初始化质心的优化,可以有效的减少迭代次数,加快运算速度。K-means++聚类算法的步骤如下:
金庸走了,在阅尽沧桑之后,像秋叶般在香江凋零,自他在海宁袁花诞生以来,与他的家乡近在咫尺的盐官,海宁潮大涨已历九十六度。举世皆说他生于1924年,就连他本人也如此说,甚至袁花的查家族谱也如此载,而我在他的档案和大量史料中发现,他却是生于1923年,那一年也是他存世的第一次海宁潮涨时,比他大二十几岁的表哥徐志摩正好带了胡适之、陶行知、汪兆铭等来观潮。也许这是个绝对的偶然,如同潮涨潮落那样偶然。近一个世纪后,他在香江的苍茫暮色中停止呼吸之际,海宁潮是否还在涨落与他已然无关,就像他首创的《明报》也已与他无关。
1)初始化一定数量的二维坐标点(x,y),所有坐标点的初始类别都为0。
2)根据自定义的类别数K,从上述坐标点中,随机取K个点作为类别的中心点。
3)迭代所有坐标点,分别与K个中心点计算平方距离(就是Δx2+Δy2),这一平方距离可以认为是与标准类别样本的差异度,取平方距离最小的类别作为该坐标点的类别。
4)根据步骤3,可以得到每种分类的样本,然后,再从每种分类的样本中,重新计算该分类的类别中心。
5)迭代步骤3、4,直到每个类别的中心点不变或变化很小为止。
2.3 多尺度预测改进
一般而言深层网络的感受野比较大,语义信息表征能力强,但是特征图的分辨率低,几何信息的表征能力弱,而浅层网络的感受野比较小,几何细节信息表征能力强,但语义信息表征能力弱。因此YOLOv3算法采用3个不同尺度的特征图进行预测,融合了深浅层的特征语义信息特征和空间信息特征。3次检测中,每次对应的感受野都不同,在最小的19×19特征图上的感受野最大,适合检测较大的对象,中等的38×38特征图适合检测中等大小的对象,较大的76×76特征图的感受野最小,适合检测较小的对象。考虑到绝缘子数据集中目标完整性不一,分布没有规律,因此增加一条预测分支来丰富预测回归位置框,从而提升对小目标的敏感程度,更好保留浅层网络的语义信息。改进的四尺度预测结构见图3,在Predict three层的Convolutional Set后增加一个预测分支,将76×76×128的特征图先降维得到76×76×64的特征,再经过上采样得到152×152×64,再与152×152×128的特征相拼接得到152×152×192,然后再通过一系列的卷积层得到预测值。
图3 增加的尺度预测结构Fig.3 Increased scale prediction structure
3 实验与分析
实验基于Tresorflows深度学习框架,通过Python语言实现编程,所有实验均在配置处理器Intel(R) Core(TM) i7-8700 CPU @3.20GHz 16GB,显卡Nvidia GeForce GTX 1060 5GB,CUDA10.0,cuDNN7.6.5,OpenCV3.4.8的Windows10 64系统上进行。实验采用平均精度均值( Mean Average Precision,mAP)、每张图片的平均检测时间以及准确率对算法性能进行评价。
3.1 数据预处理和数据集的制作
实验采用无人机航拍图像数据作为样本集,实验前将实验数据集按照VOC数据集的格式进行整理,并对所有图像数据集作了预处理,由于计算机资源限制将分辨率调整至608×608。图像数据集包含训练集1 000张,测试集500张,共计1 500张。使用Labelme软件为训练样本数据集中图片做目标标注,含有多个绝缘子的图片绝缘子目标依次命名为insulator01、insulator02、insulator03…(实验训练集单张图片中最多有6个目标)。
3.2 训练过程
YOLOv3算法采用K-means聚类算法得到anchor box的尺寸,但是其尺寸是根据COCO和VOC数据集训练所得,其大小不适用于绝缘子数据集。因此训练时根据绝缘子测试集采用K-means++聚类算法生成4尺度12组大小分别为(10,13)、(12,23)、(16,34)、(25,76)、(34,40)、(36,128)、(67,109)、(76,77)、(89,207)、(110,98)、(184,277)、(347,327)的anchor box。改进的YOLOv3算法训练时采用分批梯度下降方式进行训练,总共进行7 100次迭代,avg loss最终收敛至0.095 1。使用YOLOv3的官方权重作为网络训练初始化参数,初始学习率设为0.001,batch设为64,subdivisions为8,decay为0.000 5,max_batches为10 000,在迭代到3 000次及6 000次之后,学习率分别设为0.000 1, 0.000 01。图4为YOLOv3算法改进前后的loss曲线对比图。
图4 loss曲线Fig.4 Loss curve
3.3 特征提取网络性能对比
通过实验对比Darknet-53、Darknet-41以及其他两种改进特征提取网络对绝缘子目标检测的效果,共对4种网络进行了对比实验。实验结果对比见表1。
表1 不同特征提取网络性能对比Table 1 Comparison of network performance for different feature extraction
由上表可以看出,Darknet-53、Darknet-41和模型1在绝缘子数据集上的准确率相差不大,都优于模型2,说明适当的减少卷积层数量和残差网络使用次数对于准确率的影响不大;对比Darknet-53、Darknet-41和模型1,Darknet-41的检测速度最快,说明卷积层数对于检测速度的影响较大。通过对比实验最终确定改进的YOLOv3算法采用Darknet-41特征提取网络。
3.4 预测尺度性能对比
通过实验对比YOLOv3的三尺度、改进YOLOv3的三尺度及四尺度预测的性能。基于Darknet-41网络的四尺度预测即先对61层处19×19的特征图进行处理后送入第1个预测层,同时将该特征图上采样后与49层处38×38的特征图拼接,再送入第2个预测层,然后再将当前的特征图进行上采样与30层处76×76的特征图进行拼接送入第3个预测层,最后将当前特征图上采样与11层处152×152的特征图拼接并送入第4个预测层。不同预测尺度的性能对比见图5。
图5 不同预测尺度平均准确率对比Fig.5 Comparison of average accuracy of different prediction scales
由图5的实验结果可得,Darknet41-四尺度预测的性能明显优于其他两组,说明预测尺度对于准确率的影响较大。通过对比实验改进的YOLOv3算法最终选定四尺度预测。
图6 不同尺度预测结果Fig.6 Prediction results at different scales
3.5 不同检测方法性能对比
分别使用Faster R-CNN、SSD、YOLOv3和改进的YOLOv3 4种检测框架在绝缘子测试集上进行测试。对比结果见表2。
表2 不同方法性能对比Table 2 Performance comparison of different methods
由表2的检测结果可得,改进的YOLOv3算法和Faster R-CNN算法的准确率相对较高,同时与Faster R-CNN算法相比,改进的YOLOv3算法检测速度提高了三倍多。相较于YOLOv3算法,改进的YOLOv3算法mAP值提高了1.76%,同时平均检测速度减少了5.158 ms,准确率提高了1.12%。笔者选取了一张检测结果差异较为明显的图片(见图7,图片中含有7个绝缘子)进行对比,图7(a)中检测出9处目标,其中有2处为重复检测,图7 (b)中只检测出了3处目标,图7(c)中检测出了5处目标,而图7(d)中精确地检测出了7处。
图7 部分检测结果Fig.7 Part of the test results
4 结 论
将YOLOv3算法应用到复杂背景的绝缘子图像检测中,针对绝缘子处于复杂不一的背景且分布不均的问题,使用K-means++聚类算法重新生成anchor box,并提出了改进Darknet-53特征提取网络以及增加尺度预测。实验结果表明,本研究改进的YOLOv3算法在绝缘子测试集上的mAP达到83.21%,平均检测速度为30.975 ms,并且准确率达到了95.99%。在后续的工作中,将继续研究检测时存在的漏检、错检等问题,并进行绝缘子缺陷诊断方面的研究,建立绝缘子的识别与缺陷诊断系统。