第八届泰迪杯优秀论文B题(基于Mask R-CNN 及Yolov4 的电力巡检中绝缘子缺陷研究)

目录
一、 绪论 1
1.1研究背景 1
1.2国内研究现状 1
1.3研究目标及流程 1
二、 数据预处理 3
2.1图像分割 3
2.2图像金字塔 4
2.3数据增强 4
2.4归一化图像大小 5
三、 绝缘子串珠图像分割 6
3.1Mask R-CNN 神经网络结构 6
3.2训练样本的制作及标注 6
3.3Mask R-CNN 训练过程 8
3.3.1部分训练参数设置 8
3.3.2训练过程 9
3.4Mask R-CNN 训练结果分析 9
3.4.1检测及分割过程 9
四、 绝缘子自爆区域识别与定位 11
4.1数据集制作 11
4.2样本标记及分类 11
4.3基于 Yolo-v3 的自爆区域识别与定位 13
4.3.1Yolo-v3 网络结构 13
4.3.2Yolo-v3 训练过程可视化分析 14
4.3.3Yolo-v3 训练结果分析 15
4.4基于 Yolo-v4 的自爆区域识别与定位 17
4.4.1Yolo-v4 网络结构 17
4.4.2Yolo-v4 训练可视化分析 18
4.4.3Yolo-v4 训练结果分析 20
4.5Yolo-v3 与 Yolo-v4 的结果对照 22
4.6小目标预测策略 23
4.6.1高分辨率图像直接预测 23
4.6.2 等比例分割 24
4.6.3 滑动窗口以及 NMS 26
五、 总结与展望 31
参考文献 33

一、绪论

1.1研究背景

架空线路巡检是长期以来,绝缘子串珠经受极其恶劣的天气条件,难免会出现缺陷。为保障我国输配电网正常运行,架空线路巡检是保障人们电路网正常的必要手短。传统的巡线缺陷检测方式为人工巡视,但架空线路巡检常常需要在高处巡检故障区域,工作量多,需要定期打扫脏污的绝缘子,任务强度大,且十分危险。

随着我国科学技术不断发展,无人机技术得到越来越广泛的应用。用无人机配置高分辨率相机获取航拍图像代替人工巡线,可以大大降低了电力巡视的强度,大大提高了恶劣环境下巡检的质量和效率,有效的避免了人工巡视中存在的危险。

1.2国内研究现状

近年来国内针对绝缘子串珠的识别与分割的研究也有不少,基于传统图像识别方法有,黄新波等人[1]提出了基于改进色差法的复合绝缘子图像分割,基于图像颜色特征,将绝缘子不同环境下的图形学颜色进行色度的分割。基于深度学习方法识别分割绝缘子的有,吕易航等人[2]的航拍图像中绝缘子串检测、分割与自爆识别,通过 Faster R-CNN 分割出绝缘子串,通过改进算法的 Faster R-CNN 网络实现绝缘子自爆区域的识别。

1.3研究目标及流程

本文同样以绝缘子为研究对象,采用 2018 年Kaiming He 等人[3]Mask R-CNN v3 神经网络模型作为分割绝缘子串珠主要研究方法,采用堪称yolo 之父的Joseph Redmon 的 Yolo-v3[4]神经网络模型以及 Alexey Bochkovski 最新的 Yolo-v4[5]作为绝缘子自爆区域识别的对比方案。利用现有的 40 张无人机航拍高分辨率原图, 拟解决以下问题:

(1)分割出绝缘子串珠图像,包括玻璃绝缘子、复合绝缘子等类别,获取其掩膜图像。

(2)识别定位绝缘子自爆区域,包括玻璃绝缘子、复合绝缘子等类别,获取其 Boundbox。

针对于任务一,具体研究流程如图 1.1 所示。本文主要研究过程分为三部分。

(1)数据的预处理。包括 40 张图片中不同的绝缘子类型进行划分,通过数据增强提高数据集的数量,通过图像分割优化模型对小目标的识别,并利用 via 2.08 和 Labelme 图像标注工具标记为“insulator”,生成 via 格式的 json 文件, 最终制作标签并对所有数据集按 8:2 比例划分训练和测试集。
在这里插入图片描述
==图 1.1 绝缘子串珠分割的研究流程图 ==

(2)绝缘子串珠分割,通过 via2.08 标注好绝缘子串后生成 json 文件,放进 Mask R-CNN 神经网络模型中迭代训练,训练过程中不断的调整参数,如学习率,训练至 loss 函数收敛。

(3)分析与评价。对比预测结果与标准的掩模图,分析改进。利用 Dire 系数进行评价。

针对于任务二,绝缘子自爆区域的具体研究流程如图 1.2 所示。主要研究流程分为三部分。

(1)数据预处理。包含了对原始航拍照片的绝缘子类型的分类,对各个类绝缘子的数量统计,原始图像进行分割或剪裁,图像的数据增强,统一尺寸,用labelme 图像标记工具生成 xml 文件,按 8:2 比例划分训练集和测试集,制作标签。
(2)绝缘子自爆点识别模型训练。通过 labellmg 对绝缘子自爆区域标注为“defect”后生成的 xml 文件,制作 VOC2007 格式,生成标签 label,分别放进

Yolo-v3 和 Yolo-v4 神经网络模型中进行训练,训练过程中观看 loss 函数,不断调整训练参数,如学习率,训练至 loss 函数收敛,且低于 0.06。

在这里插入图片描述
图 1.2 绝缘子自爆区域的研究流程图

(3)分析与评价。对比不同方案的测试结果,分别计算出训练中 loss 和 iou 损失变化并画出 loss 和 IOU 损失函数变化曲线,计算测试数据的 map,对比模型识别的精度。利用 IOU 交叠率对绝缘子自爆区域进行评价,对比模型 IOU 定位的准确度。分析比较,得出最好的训练模型。

二、数据预处理

原始图像由 40 张无人机航拍高分辨率图像构成,尺寸多为 7360×4912,由于本文采用 Mask R-CNN 或者 Yolo 神经网络模型训练,都要求图片不能太大, 否则将增加运算的时间消耗,甚至由于显存不足而导致训练中断。

因此需要对数据进行预处理操作。本文采用预处理有图像分割、图像金字塔、数据增强等方法。

2.1图像分割

对于识别的目标占原始图像比例较小的高分辨率图像,采用分割算法,将原始图片等额分割,直至分割后的目标占图片比例适中。如图 2.1 所示为某张原始图片进行 2×2 分割。

在这里插入图片描述==图 2.1 图像 2×2 分割 ==

2.2图像金字塔

对于识别目标占原始图像比例较大的高分辨率图像,采用图像金字塔[6],有效降低图像分辨率。

图像金字塔即将图像比喻成金字塔,层级越高,则图像越小,如图 2.2 所示, 常用的图像金字塔算法有拉普拉斯金字塔和高斯金字塔,拉普拉斯金字塔常用来上采样,即向金字塔的底层图像重建上层图像,预测残差;高斯金字塔常用来下采样,即向金字塔的顶层缩小。

在这里插入图片描述图 2.2 图像金字塔

当要从金字塔第 i 层生成第 i+1 层,即向下采样图像时,先用高斯核对𝐺𝑖进行卷积,删除所有偶数行偶数列,新的图像面积变为原来四分之一。通过调用Opencv 的 PryDown()函数可以不断的进行下采样,直到目标占图片比例适中。

2.3数据增强

本文采用神经网络模型,其实质上训练神经网络模型就是一个不断调参的过程,使之模型能够将具体输入(如图像)映射为输出(标签)。而我们所需要的就是使模型的损失函数尽可能的降低。优秀的神经网络模型需要大量的参数,当我们有大量的参数,就可以提高模型的泛化能力,因此需要提高样本的数据集。本文采用的数据增强方式有水平垂直镜像、随机剪裁、随机旋转、随机改变色度、饱和、明度(HSV)、随机 gamma 变换、随机增加高斯噪声等[7]。如图 2.3 所示。

在这里插入图片描述
图 2.3 数据增强

2.4归一化图像大小

由于后续工作需要对数据增强后的图像大小进行标注,若不经剪裁,由于原始图片经数据增强后分辨率大,标注框太小,框内的特征经过网络处理后,会和背景上的杂质斑点相同,不能很好区分,因此需要归一化图像大小。

具体步骤如下,对数据增强后的图片统一调用 Opencv 中 resize 函数,统一为 1024×1024 数据增强后归一化大小如图 2.4 所示,将含有特征区域的图像保留,将含有无特征区域的图片舍弃。

在这里插入图片描述
==图 2.4 数据增强后的特征区域 ==

三、绝缘子串珠图像分割

3.1 Mask R-CNN 神经网络结构

Mask R-CNN 总体框架如下图 3.1 所示

在这里插入图片描述
==图 3.1 Mask R-CNN 整体框架 ==

Mask R-CNN 将整个结构划分为 3 个部分,Faster r-cnn、ROIAlign 和 FCN。

算法步骤分为:

(1)输入一幅图片进行预处理
(2)输入到预训练的神经网络模型获取对应 feature map
(3)对 feature map 中每一点预设 ROI,获取多个候选 ROI
(4)将 ROI 送入 RPN 网络进行二值分类和回归。
(5)对剩下 ROI 进行 ROIAlign 操作。

3.2 训练样本的制作及标注

本设计先行制定两种数据集的制作方案,主要分为:

(1)方案一:原图不分割,直接使用高分辨率原图像进行数据增强和标记
(2)方案二:原图分割,再使用分割后的子图进行数据增强和标记按照两种方案获得的数据集如图 3.2 所示。

在这里插入图片描述
图 3.2 两种方案的数据集对比

由于方案一的样本图片尺寸过大,且一张图片种的绝缘子串数量众多,标记难度和工作量较大,仅标记了 100 张玻璃绝缘子的样本图作为绝缘子串分割的备用方案。

而方案二的图片经过多等分的图像分割并统一 resize 至 1024p 的分辨率,可获得大量绝缘子串样本,且每张图片上的样本较少且形状较为相似,降低了人工标记的难度。包含 5 种类型的绝缘子串的数据集共有 1343 张图片,各种绝缘子图片如图 3.3 所示,其中白色陶瓷绝缘子 24 张、复合绝缘子 56 张、带盘棕色陶瓷绝缘子 89 张、玻璃绝缘子 487 张、棕色陶瓷绝缘子 187 张和负样本 500 张。

在这里插入图片描述图 3.3 各种类型的绝缘子图片

使用网页版的 via2.0.8 进行对数据集的标注,标注结果如图 3.4 所示。
在这里插入图片描述
图 3.4 via 标注绝缘子串珠

标记结果生成的带有 via 格式的 json 文件,如下图 3.5 所示

在这里插入图片描述图 3.5 via 格式的 json 文件

其中 filename 是文件名,size 是图片面积大小,一个shape_attributes 代表一个绝缘子,all_points_x,是标注点的 x 坐标数组,all_points_y 是标注点的 y 坐标的数组,两个数组的同一列构成一个点,即标注在图像中的点。

标注后将数据集集按 8:2 进行划分为训练集和测试集。

3.3 Mask R-CNN 训练过程

3.3.1部分训练参数设置

训练所使用的 GPU 型号为 GTX1080Ti,GPU 显存为 10G,部分训练参数设置如表 3.1 所示。
表 3.1 训练部分参数
在这里插入图片描述
因受训练 GPU 性能的限制,为减少训练样本进入模型 resize 后损失掉的像素值,将IMAGE_MAX_DIM 设置为 1024;在图片进入 ProposalLayer 层进行处理时,会使用到极大值抑制算法,模型会选择一个最佳的先验框 best_anchor,当检测先验框 left_anchor 和最佳的先验框 best_anchor 的 IOU 大于 0.6 则会被舍弃; 其余参数均为根据经验值或默认进行设置。

3.3.2训练过程

训练所使用的预训练模型为 mask_rcnn_coco.h5 , 通过执行 python3 insulator.py train --dataset=…/…/datasets/insulator --weights=coco 命令进行训练,训练输出参数如图 3.6 所示,当 epoch 达到 60 时,可见总体 loss 值已经降至 0.6299 左右,在 logs 文件夹下可得到最终的训练模型 mask_rcnn_insulator_final。

在这里插入图片描述
图 3.6 训练输出参数

3.4Mask R-CNN 训练结果分析

3.4.1检测及分割过程

(1)方案一:直接将测试集的原图送入到模型进行绝缘子检测和分割。原图及其分割结果如图 3.7,肉眼可见轮廓十分粗糙,与人工标注的掩模图进行计算得 dice 系数为 0.47 左右,除了训练样本数量过少,可能还存在高分辨率原图样本标记出来的轮廓特征较复杂的问题,加大了模型学习的复杂性,模型训练时的数据拟合性能变差,导致模型在检测时对绝缘子串珠的沟壑难以分辨,仅能分割出绝缘子大致的外形,而无法分辨出绝缘子串珠的位置、数量及可能存在的自爆点,因此在低样本量情况下使用高分辨率图片作训练样本的方案不可行。

在这里插入图片描述图 3.7 方案一检测结果与原图对比

(2)方案二:为减小模型检测和训练时输入图像样本特征差异,在检测也同样将输入图片进行等分割批量输入到训练好得模型中进行检测,检测完成后将各分割检测图再进行合并,合并后的结果如图 3.8 所示,将检测结果使用python-opencv 进行开运算和闭运算处理,以去除因分割检测造成图片间的断痕, 与人工标注的掩模图进行计算得 dice 系数为 0.83 左右,如图 3.9,但边缘仍存在一些较为宽的断痕,可能是训练集类似因分割而中断特征的绝缘子样本数量不够多导致的,但基本能够达到绝缘子串珠分割的预期效果。
在这里插入图片描述
图 3.8 方案二检测结果
在这里插入图片描述
图 3.9 方案二结果所得 dice 系数

四、绝缘子自爆区域识别与定位

4.1数据集制作

针对于任务二,本文所用数据集来自无人机航拍 40 张数据原始图像,其中包含了 35 张含有自爆区域的原图,经由图像分割、图像增强、归一化大小等数据预处理,共有 1773 张含有自爆缺陷的数据集,其中瓷质绝缘子 602 张,632 张玻璃绝缘子,539 张带盘绝缘子,分别以自定义标签序号从 1 开始重命名,统一 resize 成 1024×1024 尺寸。如图 4.1 所示为部分数据集的展示结果。

在这里插入图片描述

图 4.1 部分数据集

4.2样本标记及分类

利用 labellmg 标记工具对数据集进行标记,如下图 4.2 所示,将自爆区域的用 rectangle 标记,包含前后两个绝缘子。

在这里插入图片描述
图 4.2 labellmg 标记图片

生成xml 文件如图 4.3 所示,xml 文件中描述了标注中有用的信息,其中 size是标注图像的大小以及深度,节点 bndbox 包含的自爆区域的 boundingbox。

在这里插入图片描述
图 4.3 labellmg 生成 xml 标注文件

将数据集按 VOC 格式放入相应的文件夹,其格式如图 4.4 所示,将数据集随机按 8:2 的比例划分训练集和测试集。

在这里插入图片描述
图 4.4 VOC 格式目录

其中 JPEGImages 是图片原图,Annotations 存放 xml 格式文件,每个 xml 对应 JPEGImages 中的一张图片,ImageSets 下的 Main 文件夹是训练集和测试集的名字,labels 文件夹是对应标注文件后生成的 boundingbox 的归一化后取值范围为 0-1 的中心坐标和相对宽高。

4.3基于 Yolo-v3 的自爆区域识别与定位

4.3.1 Yolo-v3 网络结构

Yolo-v3 的基础网络是 Darknet-53,从第 0 层到第 74 层,共有 53 个卷积层, 其余为 res 层。
在这里插入图片描述
图 4.5 Yolo-v3 卷积过程

如上图4.5 所示,从图中可以清晰看到整个流程,其中通过先验框的K-means 聚类得到的 9 个簇均匀分布在图中右下角的 yolo detection,采用不同尺度来获取特征作为 yolo 检测的输入。

相比于其他的网络,如表 4.1 所示,优点在于快速,背景误检率低,相比R-CNN 系列缺点,识别物体精度低,召回率低。

表 4.1 Darknet-53 与其他主干网络对比在这里插入图片描述

4.3.2Yolo-v3 训练过程可视化分析

训练使用的 GPU 是 GeForceGTX1080Ti,GPU 显存 10GB。yolo 的 cfg 文件中设置 batch=64,subdivisions=16,width=768,height=768。将 80%的训练集放入训练,训练日志如图 4.6 所示。
在这里插入图片描述

图 4.6 训练日志部分数据

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的数据喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值