基于改进YOLOv4 的中小型绝缘子检测
2022-04-12李英娜赵振刚
李 磊,李英娜,2*,赵振刚,2
(1.昆明理工大学 信息工程与自动化学院,云南 昆明 650500;2.云南省计算机技术运用重点实验室,云南 昆明 650500)
0 引言
绝缘子广泛应用于智能电网系统中,在电气隔离和固定导线方面具有非常重要的作用。由于绝缘子长期处于高山、平原等相对恶劣的环境中,会受到雨雪、雷电、温差等自然灾害的影响,因此,对输电线路中的绝缘子进行定期巡检尤为重要[1]。
随着科技的发展,广大科研工作者将无人机技术引入图像处理领域。通过使用无人机,能够及时获得清晰的绝缘子图片信息,利用目标检测方式提取图中的绝缘子,从而进行故障检查、连接判断等后续研究工作[2]。
目前传统目标检测算法主要包括Two-stage(Fast-RCNN[3]、Faster-RCNN[4])和One-stage(YOLO系列[5-7])两类目标检测算法。其中,YOLOv4[8]算法由于融合了其他算法的优点,在检测准确率和检测速度上具有较高水平。刘悦等人[9]使用基于YOLOv4 和改进分水岭算法对绝缘子检测,解决了绝缘子在明暗交替区域背景难识别的问题;唐小煜等人[10]使用优化的U-net 模型对绝缘子串语义分割,之后利用YOLOv4 网络进行定位,提高了绝缘子定位速度和准确度;律方成等人[11]改进了Mosaic数据扩充算法,优化YOLOv4 网络参数,降低了模型训练时的误差。然而,以上各位学者关于理论算法的改进和数据集的选取均针对大型绝缘子的检测,忽视了图内中小型绝缘子漏检的情况。
中小目标检测近来成为研究热点,主要包括网络结构的改进和注意力机制的引入。黄继鹏等人[12]通过修改Faster-RCNN 网络结构,提高了利用低层特征为主要检测依据的小目标检测的精度;梁延禹等人[13]引入密集连接结构,增强浅层中小目标的上下文语义特征;张馨月等人[14]在SSD 算法上引入自注意力机制增强特征图中关键信息权重,缓和特征图的混叠效应和位置偏移。这类改进算法虽提高了小目标检测的准确率,但是忽略了错误检测结果对网络性能的影响。
中小型绝缘子相较完整绝缘子图像会丢失更多的特征信息,导致模型预测时容易出现误判现象。因此,本文提出改进的YOLOv4 中小型绝缘子检测算法,解决中小型绝缘子容易错检、漏检的问题。该改进算法具备以下特点:
(1)在特征提取网络中引入SE 注意力机制改进CSP 结构,使其能获得更丰富的绝缘子中小特征信息;
(2)在特征融合网络中增加一层特征融合层,提高小型绝缘子检测能力;
(3)使用改进k-means++方法对中小型绝缘子的标注框重新聚类先验框以加快模型收敛速度,更适用于本文数据集特征;
(4)充分利用预测结果信息,引入负例挖掘模块重新训练模型,以达到削弱复杂背景的干扰、提高模型检测准确度、增强模型性能的目的。
1 YOLOv4 目标检测算法
1.1 YOLOv4 算法结构
相比YOLOv3 目标检测算法,YOLOv4 算法在检测精度和速度上都有提升,其网络结构主要由以下4 个部分构成。
(1)CSPDarknet53 网 络。CSPDarknet53 为 主干特征提取网络,由一个CBM 下采样和多个CSP残差结构堆叠构成,一方面提高了特征提取的能力,保留更多的特征信息;另一方面减少了计算量,提高了效率。CBM 卷积块包括Conv 卷积网络、BN标准化和Mish 激活函数,结构如图1 所示。CSP块由残差块、CBM 卷积块和大残差边组成,如图2所示。
图1 CBM 结构图
图2 CSP 结构图
Mish 激活函数的表达式为:
(2)SPP 结构。SPP 模块在进行最大池化处理时采用13×13、9×9、5×5、1×1 四个不同大小的核,能够有效增大感受野,将上下文特征分离出来。
(3)PANet 网络。PANet 网络具有反复提取特征的特点,使用上采样的方式对得到的特征层进行融合,有效利用了各层的特征信息,提高了检测精度。
(4)YOLO 头部网络,进行最后的预测输出工作。
1.2 损失函数
1.2.1 IoU 损失函数
IoU 损失函数[15]能够用来确定正负样本,评价目标输出框与标注框之间的距离,并且具有尺度不变性,但是存在以下两个问题:第一,如果两个框没有相交,则不能反映两者的距离大小从而产生梯度消失的问题;第二,存在IoU值相等但是重合度不一样的情况,从而导致无法筛选更优回归效果的目标框。IoU损失函数的表达式为:
式中:A与B分别代表预测框和标注框。
1.2.2 GIoU 损失函数
GIoU 损失函数[15]在IoU 损失的基础上加入了惩罚项,同时关注了重叠区域和非重叠区域,解决了IoU 损失在检测非重叠输出框时的梯度消失问题,但依然存在重合度问题。GIoU 损失函数的表达式为:
式中:Ac为预测框和标注框的最小闭包区域的面积。
1.2.3 DIoU 损失函数
DIoU 损失函数[16]改进了惩罚项,比GIoU 更符合目标框回归机制,同时考虑了目标框与标注框之间的距离、重叠率及尺度,使得目标框在回归时能够更稳定、更迅速地收敛。DIoU 损失函数的表达式为:
式中:b为标注框的中心点,bgt为预测框的中心点,ρ为两个中心点的欧式距离,c为两个框最小闭包区域的对角线距离。
1.2.4 CIoU 损失函数
CIoU 在DIoU 的基础上保留了重叠面积、中心点距离的评价策略[16],引入了长宽比的评价指标。长宽比的作用为控制目标框的宽高能够尽可能快速接近标注框的宽高。YOLOv4 的损失函数包括坐标位置损失,置信度损失及类别损失,本文采用CIoU计算模型的坐标位置损失。CIoU 损失函数的表达式为:
式中:v为标注框和预测框的宽高比重合度,α表示正权衡参数。αv值越低,标注框与预测框越接近。
2 改进YOLOv4 的绝缘子小目标检测
改进后的YOLOv4 网络结构如图3 所示。改进部分包括PANet 网络增加特征提取层、Darknet53 网络中CSP 结构改进以及模型结束部分的负例挖掘引入。
图3 改进YOLOv4 结构图
2.1 多尺度特征融合
部分绝缘子在整个图像中所占比例较小,且在自然场景下易受光照、形状等复杂因素的影响,传统的目标检测算法漏检率高。因此,本文额外增加一层特征融合结构进行预测,改善了小型绝缘子丢失的问题。
改进后的YOLOv4 网络使用4 种尺度来预测不同大小的目标。特征图在CSPDarknet53 网络中先进行下采样,然后与第二个残差块的输出相连接,建立一个4 层的特征融合层,如图3 所示。输入图像的大小为416×416,4 个特征层的大小分别为(104,104,128),(52,52,256),(26,26,512),(13,13,1024)。
2.2 融合SE 模块的CSP 结构改进
SE(Squeeze-and-Excitation)注意力[17]模块在2017 年提出,其主要原理为通过学习获得每个特征通道的重要性并根据重要程度在卷积运算时加强更有用的特征通道,抑制相对不重要的特征通道。一方面,该方法增加了各个通道之间的相关性,能够获得更丰富的特征信息,提高了小型绝缘子检测的准确度;另一方面,由于整个SE 模块使用了全连接层,避免了普通卷积层参数多且计算量大的问题,提高了检测效率。SE 模块由两部分组成,如图4所示。
图4 SE 模块结构
SE 模块的第一部分为压缩(Squeeze)部分,利用全局平均池化操作将卷积之后的W×H×C的特征图进行处理,得到一个1×1×C的通道评价向量,其中每一个通道向量都会获得一个分数。第二部分为激励(Excitation)部分,包括两个FC(全连接层)和一个ReLU 函数(如式(6)所示)。首先经过第一个FC 将通道计分向量的维度减少到输入的1/r,然后使用ReLU 函数激活,接着使用另一个FC 将通道数量增加到与输入时相同,最后经过一个Sigmoid函数(如式(7)所示)化为0 到1 之间的归一化权重,得到各个通道的权重值与SE 模块输入的特征图对应的输出。
ReLU 函数表达式为:
Sigmoid 函数表达式为:
CSP 结构将残差块分为两个部分,一部分作为主干部分继续进行残差卷积,另一部分为一个大的残差边,经过一次CBM 卷积后直接连接输出,最后将两部分调整成相同的通道数并堆叠。本文在每一个CSP 中的残差单元添加一个SE 模块,以提高模型在小型绝缘子检测中的性能。改进的结构如图5所示。
图5 CSP 模块改进图
2.3 负例挖掘模块
中小型绝缘子识别存在图像中的绝缘子与背景混淆的问题,导致背景与目标之间的边界不明显,从而干扰目标检测算法的性能,增加误检率。因此,本文在YOLOv4 网络结构的末尾增加负例挖掘模块(Negative Example Mining,NEM),解决因复杂背景或杆塔遮挡出现的误识别问题。例如,图6(a)中编号为6 的预测框将草地背景误识别为绝缘子,图6(b)中编号为8 的预测框将杆塔误识别为绝缘子。
图6 误识别检测图
在二分类任务中,样本根据实际值和预测值被分为4 种不同的结果,用混淆矩阵表示,参见表1。
表1 二分类结果表示
表1 中,TP表示正确分类为真的样本数,FP表示错误分类为真的样本数,FN表示错误分类为假的样本数,TN表示正确分类为假的样本数。
本文分别计算小型绝缘子检测算法预测出的每个预测框的置信度f1以及该预测框和标注框之间的IoU 值f2。一般地,f2值小于0.5 的边界框表示假正例样本(FP),即预测为目标绝缘子对象实际为背景或其他信息。对于该类预测框,置信度f1越高,检测算法就越难正确识别。将这些负例样本按照置信值f1降序排列,得到样本数据集S(如式(8)所示),与之对应的正例(TP)样本集为S´(如式(9)所示):
发现负例时,可以将预测框映射到对应尺度的特征层中,然后将其放回到由主干网络生成的特征图里重新进行特征融合,并计算这些负例与标注框的损失值以达到优化网络的目的。具体过程如下。
训练开始时,将训练集放入模型进行训练。经过训练后,选择数据集S中前N个负例样本并放入到模型中重新训练,可以使模型进一步学习到绝缘子与杆塔或其他背景之间的差异性,以降低误检率。进行重新训练时,一方面需要考虑正例与负例数量平衡关系,如果负例远远大于正例的数量,模型不会收敛出更好的解[18],因此,本文设定正例n与负例N的比例为1∶3。另一方面,为了得到更好的效果,重新训练时锁定主干特征提取网络(CSPDarknet53),微调SPP 结构和PANet 网络的参数进行预测。
2.4 改进K-means++算法的先验框选取
先验框引入的目的是将目标检测的问题转换为固定格子内是否有目标以及预测框与真实框之间偏差的问题。原始的YOLOv4 网络根据VOC 数据集标注聚类出大、中、小3 种尺度的9 个先验框。由于本文使用的数据集中绝缘子的占比较小,因此该先验框并不适用,会对预测结果造成偏差。
k-means++算法能够进一步改善分类结果的最终误差。为了加快模型的收敛速度、提高模型训练能力,本文通过对数据集手工标注,使用k-means++的方法聚类出适合训练的数据集的先验框。改进的k-means++算法的具体步骤如下。
(1)从小型绝缘子数据集中选取随机先验框作为初始聚类中心c。
(2)计算当前聚类中心与其他先验框的距离d1,原始的欧式距离容易造成较大误差,不适用于本文先验框的计算,因此改进为IoU 距离计算:
(3)计算每个绝缘子先验框被选为下一个聚类中心的概率P(x):
(4)重复前三步,直到找到k个聚类中心,然后将数据集中每个样本分配到最近的聚类中心,重新计算每个类别c的聚类中心,直到先验框大小趋于稳定、不再变化,如式(12)所示:
经过聚类后的先验框如表2 所示,新增一个特征融合层后共有4 个尺度,每个尺度有3 种不同的先验框。
表2 不同特征图对应先验框大小
3 实验验证与分析
3.1 数据集制作
3.1.1 中小型绝缘子图片组合
本文数据集包括无人机拍摄和现有公共绝缘子数据集两部分。因现有数据集中大部分绝缘子图片在整幅图中占比较大,不能满足中小目标检测,因此本文制作中小型绝缘子比重图片。方法是分别将不同数量的绝缘子图片与其他图片拼接成2×2和3×3 的合成图,同时为提高模型检测能力,控制和调整绝缘子图片所占合成图中的比重。由于输入图片的像素大小是固定的(416×416),因此一张绝缘子图在整张融合图中的比例分别减少至原来的1/4 和1/9,可以进行中型和小型绝缘子检测任务。
3.1.2 数据集扩充
为模拟自然场景下使用无人机拍摄绝缘子图片时发生的光照条件变化以及被杆塔等结构遮挡的情景,本文针对单张绝缘子图片进行变换以扩充数据集,主要通过光照畸变、几何畸变及图像遮挡3 种方法。光照畸变包括改变图像的亮度、对比度、饱和度以及加入噪声等,几何畸变包括翻转、旋转等,图像遮挡为随机遮挡某个部分,防止训练过拟合。训练图片共5 100 张,具体分配如表3 所示。
表3 数据集分配
扩充图示例如图7 所示。其中,图7(a)为2×2 合成图无变化;图7(b)为3×3 合成图,针对绝缘子进行亮度调整和几何旋转;图7(c)为3×3合成图,针对绝缘子进行集合旋转和随机遮挡。
图7 数据集扩充图片示例
3.2 绝缘子检测结果
实验的环境配置如表4 所示。
表4 实验环境配置
整个训练过程共100 个epoch,前50 个epoch为正常训练,设置学习速率参数为0.001,图片的读取数量为4 张。进行第51 个epoch 时,将负例和正例放入模型重新训练以便优化网络,此时冻结Darketnet53 主干特征提取网络,调整学习速率参数为0.000 1,图片的读取数量为8 张。其中用于训练的图片占总数据集的90%,验证的图片占10%。计算并保留每一个epoch 的loss 值和验证集loss 值,其曲线如图8 所示。从图8 可以看出,从第51 轮开始loss 值进一步减少,达到第90 轮时基本趋于稳定。
图8 模型训练损失曲线图
检测结果图如图9 所示。其中,图9(a)、图9(c)均为YOLOv4 算法的检测结果,图9(b)、图9(d)均为相同3 幅图的本文算法检测结果。在准确率方面,传统YOLOv4 算法在检测小型或超小型绝缘子时存在漏检的情况,而使用本文算法对其检测时,中型、小型和超小型绝缘子均被检测出来,如图9(b)的7 号绝缘子。在精准度方面,根据图9 的效果可得YOLOv4 的预测框范围偏大,本文算法检测出的预测框更贴合绝缘子的实际尺寸,效果更优秀。在抗干扰方面,本文的改进算法能够将被杆塔遮挡的绝缘子识别出来,如图9(d)中的9 号预测框。
图9 检测效果图
3.3 评价指标
精确率(Precision,P)是指绝缘子正样本个数(TP)占所有绝缘子预测个数的比例,表示绝缘子预测精度:
召回率(Recall,R)是指绝缘子的正样本个数(TP)占标注出的绝缘子个数的比例,表示绝缘子预测效果:
PR 曲线是精确率和召回率曲线,其中x轴为召回率,y轴为精确率。当算法对预测的绝缘子进行分类时,通过置信度来评判预测框是否舍弃。利用置信度对所有样本进行排序,再根据样本逐个选择阈值,在该样本之前的都属于正例,之后的都属于负例。为全面评估模型效果,需要对所有阈值进行评判。使用每一个样本作为标准进行阈值划分时,都能计算对应的精准率和召回率,因此可以绘制PR 曲线。PR 曲线越右凸,表明效果越好。图10 表示2×2 和3×3 合成图时YOLOv3、YOLOv4、改进YOLOv4 算法不含负例挖掘(NEM)、改进YOLOv4算法含负例挖掘的PR 曲线图。
图10 不同合成图的PR 曲线图(IoU=0.5)
本文使用精确率、召回率、平均精度(Average precision,AP)、AP75衡量4 种算法的检测精度,结果如表5所示。表5中的AP75指当IoU取值为0.75时的AP值。AP的计算公式为:
表5 各算法评价结果
IoU 取值越高,表明检测框和目标框重合度越高,即检测难度越大,精确度越低。另外,小型绝缘子检测难度较大,3×3 合成图的AP 值会低于2×2 合成图的AP 值。根据表中数据可得,同时改进主干特征提取网络和特征融合网络后的算法在中型和小型绝缘子识别中均优于传统YOLOv4 算法,AP 分别提升了11.7 和5.08 个百分点,AP75值分别提升了12.44 和9.49 个百分点。引入负例挖掘模块后,中小型绝缘子的检测精确率和查全率进一步提升,预测出的先验框更接近于目标框。2×2 图中绝缘子的AP 由87.8%提升到88.91%,3×3 图中绝缘子的AP 由71.02%提升到73.09%。
4 结语
针对中小型绝缘子在目标检测时漏检、错检的问题,本文提出了一种改进YOLOv4 结构的中小型绝缘子检测算法。该算法的核心思想是通过改变网络结构,增强中小型绝缘子的特征提取能力,在预测时能更准确;同时利用预测的错误目标优化和改善网络性能,进而提高检测准确度。实验结果表明,相较于传统算法,本文的改进算法在绝缘子占比小的情况下有更好的检测效果。AP75值有显著提升,使得预测框大小更接近真实框大小。下一步的工作是提高模型在高约束条件下的精确度和特殊角度下绝缘子小目标的识别率,这样能够获取到精准的绝缘子位置信息,以便后续研究。