APP下载

基于YOLOv5s的电厂蒸汽泄漏检测研究

2022-11-19叶剑青汪义贺母久状吴冰朱峰

现代信息科技 2022年19期
关键词:锚框蒸汽图像

叶剑青,汪义贺,母久状,吴冰,朱峰

(国能神皖池州发电有限责任公司,安徽 池州 247100)

0 引 言

电厂运行过程中,管道的正常输送和日常维护关乎发电过程是否能够顺利进行、电力系统是否能够稳定运行。在日常生产过程中,蒸汽管网中一般为高温高压的蒸汽流体,发生泄漏时,会影响蒸汽管道的正常运行,同时,泄露一般依靠运营人员日常巡检发现,存在安全隐患,效率不高。因此通过技术手段准确的识别出是否发生蒸汽泄漏情况具有重要意义。

针对此问题,众多研究人员进行了大量相关的研究。早期气体泄漏检测主要依靠经验人工观测,之后发展为通过空气或者其他气体的气密性检测方法,依靠传感器和探测器等专门的检测装置,通过气体参数变化判断泄漏情况,Rivers等[1]介绍了一种在低温和机械载荷下通过复杂几何结构测量泄漏的方法,该方法已被开发、校准并用于通过X-33 液氢罐结构测量氦和氢泄漏,马胤刚等[2]将温度传感器与红外热成像仪安装于蒸汽管路当中,形成完整的检测系统,实现对蒸汽泄漏的定位,但温度传感器与红外成像仪的安装位置不当会影响真实管道蒸汽温度测量和泄漏气体轮廓的情况判断。随着检测算法的发展,龚其春等[3]以超声波原理为基础,通过分析小孔气体泄漏情况,通过气体动力学分析,提出了一种微量泄露检测方法,实现了对气体微泄漏量的估算,王涛等[4]提出了基于带有温差因子的模糊核聚类分割算法,对红外热像图进行图像增强和加权差分处理,提高了对红外热像图噪声的抗干扰能力,在电厂蒸汽泄漏检测研究中,李智华等[5]同样利用红外测温传感器识别泄漏点附近的温度场分布,然后根据温度场对应的红外色谱图进行分析,最终确定是否存在泄漏并找到泄漏点。随着深度学习的研究和发展,基于图像检测的研究取得了长足的进展,2014年,Ross Girshick 等[6]提出R-CNN 模型,首次将深度学习应用于目标检测,并将在Pascal VOC 2012 数据集上的测试结果中的重要指标均值平均精度由23.3%提升到53.3%,为基于深度学习的目标检测任务快速发展奠定了基础。在2016年,Joseph Redmon 等[7]提出YOLO 算法,舍弃了候选框提取阶段,简化了网络结构,提高了目标检测速度,基于此,基于深度学习的目标检测算法正式开始满足实时检测的要求,目前YOLO 系列算法得到了不断地改进和提高,在目标检测领域拥有优秀的表现。

但是目前应用深度学习的目标检测方法对电厂蒸汽泄漏检测进行研究的实例较少,同时蒸汽泄漏时的特征性不强,排量不定,易受光线影响,本文依据电厂蒸汽泄漏的实时检测要求和现场检测需求,利用高精度,高速度YOLOv5s 目标检测算法,针对现有电厂发生的蒸汽泄漏情况,在不同光线,不同排量情况进行了检测研究,并从最终得到模型训练结果,实际测试并评估检测的效果。

1 系统网络结构与检测流程

1.1 YOLOv5s 算法网络模型

目标检测算法目前主要分为双步检测和单步检测两类,双步检测包括识别与定位两部分,有较高的准确率但运算速度较慢,运算量较大;单步检测是将识别与定位融合至同一网络,输入图像可直接得到目标的类别与位置,精度损失不会太多且能够满足实时性要求。YOLO 系列算法属于单步目标检测算法,具有良好的检测精度,运算速度快,且对硬件要求不高,目前已迭代至v5 版本。YOLOv5 算法模型主要包括4 类不同深度和宽度的网络结构,而综合目前的需求,选用深度最小,模型文件最小的YOLOv5s 模型进行蒸汽泄漏检测研究,主要网络结构由四部分组成,依次为输入端,Backbone,Neck 和Head,如图1 所示。

图1 YOLOv5s 网络模型结构

1.1.1 输入端

(1)自适应锚框计算。锚框(Anchor)是由网络设定的,用于框选目标的初始框设置,在YOLO 系列算法中,针对不同的数据样本,会设置不同大小的锚框,当启动训练后,根据初始设定的锚框输出预测框,将预测框与标定的真实框(Ground Truth)进行对比,比较差异后反向传播,进而更新网络的参数,达到训练的目的。

因而初始锚框的设定具有重要的作用,会影响到预测框的的生成,而YOLOv5 前的YOLO 系列算法,都将该部分独立在整体网络代码外,YOLOv5 算法将计算初始锚框整合到整体网络程序中,在正式训练时,算法能够根据不同的数据样本输入,计算最佳的初始锚框,如不需要设置自适应锚框时,可将代码中的“—noautoanchoer”参数设置为False。

(2)自适应图片缩放。目标检测算法在输入端对于不同长宽的图片,一般统一处理为同一种标准尺寸,再进行后续检测网络的训练任务,实际情况中对于长宽比不同的图片,一般进行缩放填充黑边的方式得到输入图像。黑边具体实现如图2 所示,首先根据原始输入图像计算缩放比例,如图1中输入图像像素为3 000×4 000 时,需要最终得到的输入为640×640,则短边与长边的缩放比例分别为0.21 和0.16,选择最小的缩放比例0.16;将原图像按照缩放比例缩放后的应得到480×640 的缩放图像;最后将短边两侧对称补充黑边得到640×640 的网络图像输入。

图2 自适应图像缩放原理

YOLOv5 中填充的是灰色,在网络训练过程中同样是按照上述方法进行图像输入的缩放操作。但如果两侧的灰边填充信息较多,则存在信息冗余,影响推理速度。在YOLOv5s 算法网络中,默认的图片尺寸(image size)输入为640×640,在测试和推理过程中,对于常用的处理方法做了进一步处理和优化,采用自适应算法减少了输入图像的灰边填充,明显提高了检测推理速度。

1.1.2 Backbone

(1)Focus 结构。YOLOv5 不同于之前的YOLO 系列算法,首次加入了Focus 结构,而Focus 结构中最关键的是切片的操作,例如会将4×4×3 的图像切片为2×2×12的特征图,如图3 所示。在YOLOv5 算法中,若输入为640×640×3 的图像,采用Focus 结构,经过一系列的切片操作,得到320×320×12 的特征图,最后经过卷积核为32的卷积层将会得到320×320×32 的特征图[8]。

图3 切片操作

(2)CSP 结构。CSP 结构在之前的YOLO 系列算法网络已经应用,设计思路源于CSPNet。但与之前不同的是,YOLOv5s 算法网络中应用了两处CSP 结构,一处CSP1_X结构应用于Backbone 中,另一处CSP2_X 结构应用于Neck中。其中的X 表示有几个残差组件,以此使得算法轻量化,在减少计算量的同时又能够提高模型的学习能力[9]。

1.1.3 Neck

(1)Focus 结构。YOLOv5 算法网络在最初出现时,Neck 结构只由FPN 结构组成,目前的Neck 结构与YOLOv4中一样,都采用FPN+PAN 的特征金字塔结构。FPN 结构是将高层特征与低层特征进行特征融合的结构,通过将高层特征上采样的方式自上而下的做融合出进行预测的特征图,增强了语义信息,而PAN 结构金字塔是对FPN 的补充,将自下而上的将低层的强定位特征传递上去,如图4 所示。而上述提到的CSP 结构,YOLOv5s 的Neck 中有所使用,加强了了网络特征融合的能力。

图4 FPN+PAN 结构

1.1.4 Head

(1)Bounding box 损失函数。YOLOv5 中采用其中的CIOU_Loss 做Bounding box 的损失函数。CIoU_Loss,表达式如下:

其中:α表示权重,ν表示衡量长宽比的相似度,b,bgt分别表示预测框和真实框的中心坐标,两者之间距离采用欧式距离ρ。c表示能同时包含预测框和真实框的最小包围框的斜距[10]。

CIoU_Loss 增加了检测真实框高度和宽度的长度数值loss,能够使预测框和真实框的中心坐标之间的距离加速收敛,使得最终的预测框大小和位置更加接近真实框。

(2)nms 非极大值抑制。在目标检测算法中,对于最后可能出现的同一目标出现多个预测框的问题,一般通过nms 的方法进行筛选。YOLOv4 在DIOU_Loss 的基础上采用DIOU_nms 的方式,而YOLOv5 中仍然采用加权nms 的方式。在同样的参数情况下,将nms 中IOU 修改成DIOU_nms,对于一些遮挡重叠的目标,确实会有一些改进。

1.2 电厂蒸汽泄漏检测流程

综上,蒸汽泄漏检测主要包括检测网络训练阶段和检测网络推理阶段,总体流程如图5 所示,其中利用PyTorch 深度学习框架通过YOLOv5s 目标检测网络训练公共数据集与自建数据集,达到能够检测蒸汽泄漏的能力,将训练好的模型转换为ONNX 格式,独立利用OpenCV-DNN 模块完成对蒸汽泄漏的实时检测,具体实现方法在实验结果分析中阐释。

图5 蒸汽泄漏检测流程图

2 实验结果与分析

2.1 实验数据与配置

2.1.1 数据来源

关于蒸汽泄漏的图像采集工作较难,且目前还未有蒸汽泄漏的公开数据集[11],因此通过模拟电厂蒸汽泄漏场景,收集了总共400 张图片作为训练和验证数据集,采集图像举例如图6 所示,分为四种场景,明亮无遮挡场景,明亮无遮挡,昏暗无遮挡和昏暗有遮挡场景。采用labelimg 工具进行标注,生成VOC 格式数据集,并转换为能够使用YOLOv5s算法网络训练的数据集格式。

图6 四种模拟蒸汽泄漏场景图片

2.1.2 训练环境

实验运行于Ubunt u20.04 环境,利用PyTorch 深度学习框架[13]完成训练与模型转换任务,利用OpenCV-DNN 模块完成模型部署。具体配置如表1 所示。

表1 实验环境配置

2.2 训练过程与结果分析

2.2.1 训练过程

本实验利用YOLOv5s 网络模型进行训练,针对自建数据集设置训练集与验证集比例为9:1,预训练模型为Yolov5s.pt,采用不同的输入大小和Batch Size 进行实验[14],具体实验参数设置如表2 所示。

表2 训练参数配置

2.2.2 训练结果与测试

4 种训练结果如图7 所示,训练实验结果主要由三项指标衡量,包括准确率,召回率和平均精度均值[15],即Precision,Recall 和mAP(mean average precision)。准确率表示预测为正的样本中有多少是真正的正样本,即预测结果中真正的正例的比例,召回率表示样本中的正例有多少被预测正确,即所有正例中被正确预测出来的比例,mAP 为学习的所有类别精度均值的平均值。mAP@0.5 表示将交并比IOU 设为0.5 时,计算每一类的所有图像数据集的AP,然后所有类别求平均的值。准确率与召回率的公式依次如式(2)和式(3)所示。

图7 不同输入训练结果

式中:TP 表示目标为正例,检测结果为Positive;FP表示目标为负例,检测结果为Positive;FN 表示目标为正例,检测结果为Negative。

通过对比不同的输入训练结果[16]可以发现,同样为训练50 个epoch 情况下,各项指标都在20 轮左右趋于平稳或增长缓慢,四种情况下模型都有不错的Precision,接近于1,其中640×640 输入精度稍差;输入为224×224 的recall 值最高为0.99,其他三种输入的recall 值为0.86 ~0.89 之间;160×160,224×224,320×320 训练输入的mAP 值均能达到0.98,640×640 的输入训练mAP 值稍差。综上,输入为224×224 的训练表现最佳。

2.3 OpenCV-DNN 模块部署

通过YOLO v5s 算法模型训练出的模型文件,转换为通用的模型部署文件ONNX 格式,脱离PyTorch 环境库,只需要OpenCV 库[17]即可完成蒸汽泄漏检测。将上述4 种输入训练出的网络模型,通过YOLOv5 算法中的export 文件,转换为ONNX 格式模型文件,通过编写使用OpenCV-DNN模块,实现对蒸汽泄漏视频流的检测,其中通过综合比较,输入图像尺寸为224×224 的ONNX 模型文件具有良好的检测精度,虚警和漏警情况较少,同时具有较快的处理速度,FPS 在实验设备CPU 上能够达到约43。

3 结 论

运用YOLOv5s 算法网络模型,通过自建蒸汽泄漏模拟数据集,对蒸汽图像进行裁剪,标注等处理过程,建立训练集与验证集,运用预训练模型进行模型训练,通过调整不同的图像输入大小,对比网络训练结果指标,获得较好的实验检测与实验模型,通过将训练模型转换为通用的ONNX模型,只运用OpenCV-DNN 模块,完成对现阶段电厂蒸汽泄漏问题的检测任务,模型具有较好的检测效果,同时满足了实时检测的要求。

图8 检测结果

猜你喜欢

锚框蒸汽图像
核电厂蒸汽发生器一次侧管嘴堵板研发和应用
基于YOLOv3锚框优化的侧扫声呐图像目标检测
改进的LapSRN遥感图像超分辨重建
锚框策略匹配的SSD飞机遥感图像目标检测
基于SSD算法的轻量化仪器表盘检测算法*
基于GA-RoI Transformer的遥感图像任意方向目标检测
有趣的图像诗
一种新型蒸汽发生器结构设计
第一艘蒸汽轮船
蒸汽闪爆