0

0

基于PaddleDetection的设备漏油检测

P粉084495128

P粉084495128

发布时间:2025-07-21 11:43:23

|

1053人浏览过

|

来源于php中文网

原创

油浸式变压器,是以油作为变压器主要绝缘手段,并依靠油作冷却介质,如油浸自冷,油浸风冷,油浸水冷及强迫油循环等。变压器的主要部件有铁芯,绕组,油箱,油枕,呼吸器,防爆管(压力释放阀),散热器,绝缘套管,分接开关,气体继电器,温度计,净油器等。 油浸变压器硅钢片层间,由于长期浸入变压器,油能渗入其中,并且变压器油有弹性起缓冲作用,故油浸变压器噪声小。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于paddledetection的设备漏油检测 - php中文网

一、项目背景

油浸式变压器,是以油作为变压器主要绝缘手段,并依靠油作冷却介质,如油浸自冷,油浸风冷,油浸水冷及强迫油循环等。变压器的主要部件有铁芯,绕组,油箱,油枕,呼吸器,防爆管(压力释放阀),散热器,绝缘套管,分接开关,气体继电器,温度计,净油器等。 油浸变压器硅钢片层间,由于长期浸入变压器,油能渗入其中,并且变压器油有弹性起缓冲作用,故油浸变压器噪声小。

当变压器漏油时会造成以下问题:

  1. 变压器渗漏油现象不仅严重影响外观,而且会因变压器需停运排除渗漏而造成经济损失。若变压器地面基础上油迹较多时,还可能成为引发火灾的隐患。
  2. 渗漏油会严重干扰运行维护人员对变压器储油柜内的密封状况和油位计指示的正确性监视和判断。
  3. 因渗漏而使油位降低后,可能使带电接头、开关等处在无油绝缘的状况下运行,从而可能导致击穿、短路、烧损,甚至引起设备爆炸。
  4. 变压器渗漏油后,会使全密封变压器丧失密封状态,易使油纸绝缘遭受外界的空气、水分的入侵而使绝缘性能降低,加速绝缘的老化,影响变压器的安全、可靠运行。
  5. 此外,当储油柜顶部放气塞、套管导电头等部位出现密封损坏,或者储油柜顶部及其联管存在砂眼时,因部位较高,即使可能不会出现渗漏油现象,但可能进入雨水、潮气,导致绝缘性能变坏,甚至造成绝缘击穿、绕组烧毁事故。

油浸式变压器

基于PaddleDetection的设备漏油检测 - php中文网

油浸式变压器出现漏油的情况

基于PaddleDetection的设备漏油检测 - php中文网

基于PaddleDetection的设备漏油检测 - php中文网

二、PP-YOLOE

论文链接

2.1简介

PP-YOLOE是是一种具有高性能和友好部署的工业级先进目标检测器。我们在之前的PP-YOLOv2的基础上进行了优化,使用anchor-free范式,更强大的backbone和neck,配备了CSPRepResStage、ET-head和动态标签分配算法TAL。我们为不同的实践场景提供了s/m/l/x模型。在COCO testdev上,PP-YOLOE-l的mAP为51.4,使用Tesla V100具有78.1 FPS,与之前最先进的工业模型PP-YOLOv2和YOLOX相比,分别获得了(+1.9 AP,+13.35%提速)和(+1.3 AP,+24.96%提速)的显著提高。此外,在TensorRT和FP16-precision的支持下,PP-YOLOE推理速度达到了149.2 FPS。

基于PaddleDetection的设备漏油检测 - php中文网

2.2提出背景

百度在2021年4月提出了[PP-YOLOv2],性能超越同等参数的YOLOv4-CSP和YOLOv5-l,而随后7月份旷视科技的YOLOX一领风骚,受到YOLOX的启发,百度团队优化了PP-YOLOv2,顺手提出了PP-YOLOE。

PP-YOLOv2的总体情况包括:

  1. backbone:具有可变形卷积的ResNet50-vd;
  2. neck:具有SPP层的PAN,DropBlock;
  3. head:轻量级的IoU感知;
  4. 激活函数:在backbone中使用ReLU激活,neck中使用Mish激活;
  5. 标签分配:为每个ground truth目标分配一个anchor box;
  6. 损失:分类损失、回归损失、目标损失,IoU损失和IoU感知损失;

COCO性能对比:

  1. PP-YOLOv2:49.1 mAP,68.9 FPS(Tesla V100)
  2. YOLOX:50.1 mAP,68.9 FPS(Tesla V100)
  3. PP-YOLOE-l:51.4mAP,78.1 FPS(Tesla V100)

可以看到PP-YOLOE精度比PP-YOLOv2和YOLOX略有提升,但是速度却提升了接近10FPS

2.3PP-YOLOE的改进

基于PaddleDetection的设备漏油检测 - php中文网

PP-YOLOE网络结构

基于PaddleDetection的设备漏油检测 - php中文网

2.3.1Anchor-free

Anchor-free方式最先在YOLOv1中出现,由于直接预测位置不准确,在后面的 YOLOv2、v3、v4和v5中均采用了Anchor方式。YOLOX中认为按聚类方式确定最优Anchor尺寸局限于特定领域,难以推广,此外还增加了head的复杂度与每张图像的预测数量,故采用了Anchor-free方式。同样,PP-YOLOE中亦采用Anchor-free方式。论文中的实验证明采用Anchor-free方式加快了模型速度,但是精度相比于基线PP-YOLOv2降低了0.3mAP。

2.3.2RepResBlock

残差连接引入了缓解梯度消失问题的捷径,也可以被视为模型集成方法。密集连接聚合了具有不同感受野的中间特征,在目标检测任务上表现出良好的性能。受此启发,PP-YOLOE提出了一种新颖的 RepResBlock,它结合了残差连接和密集连接,用于骨干和颈部。启发于TreeBlock

首先,简化了原来的 TreeBlock,如图(a)所示。

然后,用逐元素添加操作替换连接操作,如图(b)所示。

因此,在推理阶段,可以将 RepResBlock 重新参数化为ResNet-34以RepVGG样式使用的基本残差块,如图(c)所示。

与 ResNet 类似,骨干网名为 CSPRepResNet,包含一个由三个卷积层组成的主干和四个由我们的RepResBlock堆叠的后续阶段,如图(d)所示。

在每个阶段,使用跨阶段部分连接来避免大量3×3在每个阶段,使用跨阶段部分连接来避免大量3×3卷积层带来的大量参数和计算负担。ESE(Effective Squeeze and Extraction)层也用于在构建主干时在每个CSPRepResStage中施加通道注意力。

基于PaddleDetection的设备漏油检测 - php中文网

2.3.3Task Alignment Learning(TAL)

TAL由动态标签分配与任务对齐损失组成。动态标签分配意味着预测感知,根据预测,为每个ground truth目标分配动态的正样本。通过显式对齐两个任务,TAL可以同时获得最高的分类准确率和最精确的边界框。TAL可提升精度0.9mAP。

2.3.4Efficient Task-aligned Head(ET-head)

Decoupled head结构会使分类和定位任务分离独立,缺乏任务特异性学习,故提出了ET-head。使用 ESE 替换 TOOD 中的层注意,简化分类分支到快捷方式的对齐,并将回归分支的对齐替换为分布焦点损失(DFL)层,ET-head可提升精度0.5mAP。

三、项目内容

3.1环境配置

In [ ]
%cd work/# gitee 国内下载比较快!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.4# github# !git clone https://github.com/PaddlePaddle/PaddleDetection.git -b release/2.4
In [ ]
#安装PaddleDetection依赖!pip install -r /home/aistudio/work/PaddleDetection/requirements.txt
In [ ]
#编译安装paddledet%cd work/PaddleDetection
!python setup.py install
In [3]
#安装其他依赖from PIL import Image  
import matplotlib.pyplot as pltimport numpy as npimport os 
import random
In [ ]
#测试安装是否成功,最后输出OK,说明编译安装成功!python ppdet/modeling/tests/test_architectures.py

3.2准备数据集

该项目应用的数据集,一部分为我们在现场采集的变压器或者一些电器设备的漏油图片,一部分为数据扩增得到。我们通过下面的程序段得到的是划分好的voc格式的数据集,但是目前PP-YOLOE仅支持coco格式的数据集,所以还需要将划分好的数据集转换成coco数据集。

灵光
灵光

蚂蚁集团推出的全模态AI助手

下载
In [5]
#解压数据集!unzip -oq /home/aistudio/data/data146144/oil.zip -d /home/aistudio/data/#划分数据集#根据挂载的数据集制作制作标签文件,并进行划分#生成train.txt和val.txtrandom.seed(2020)
xml_dir  = '/home/aistudio/data/oil/Annotations'#标签文件地址img_dir = '/home/aistudio/data/oil/JPEGImages'#图像文件地址path_list = list()for img in os.listdir(img_dir):
    img_path = os.path.join(img_dir,img)
    xml_path = os.path.join(xml_dir,img.replace('jpg', 'xml'))
    path_list.append((img_path, xml_path))
random.shuffle(path_list)
ratio = 0.8 #测试集和验证集划分比例0.8:0.2train_f = open('/home/aistudio/data/oil/train.txt','w') #生成训练文件val_f = open('/home/aistudio/data/oil/val.txt' ,'w')#生成验证文件for i ,content in enumerate(path_list):
    img, xml = content
    text = img + ' ' + xml + '\n'
    if i < len(path_list) * ratio:
        train_f.write(text)    else:
        val_f.write(text)
train_f.close()
val_f.close()#生成标签文档label = ['oil']#设置你想检测的类别with open('/home/aistudio/data/oil/label_list.txt', 'w') as f:    for text in label:
        f.write(text+'\n')

使用x2coco.py将voc格式的数据集转换成coco数据集 只需要将这四个参数指定成上面生成的标签文件即可

voc_anno_dir 总的标注文件

voc_anno_list 训练数据集文件列表

voc_label_list 标签文件

voc_out_name 输出的coco文件路径

In [ ]
!python tools/x2coco.py \
        --dataset_type voc \
        --voc_anno_dir /home/aistudio/data/oil/Annotations \
        --voc_anno_list /home/aistudio/data/oil/train.txt \
        --voc_label_list /home/aistudio/data/oil/label_list.txt \
        --voc_out_name /home/aistudio/data/oil/train.json
!python tools/x2coco.py \
        --dataset_type voc \
        --voc_anno_dir /home/aistudio/data/oil/Annotations \
        --voc_anno_list /home/aistudio/data/oil/val.txt \
        --voc_label_list /home/aistudio/data/oil/label_list.txt \
        --voc_out_name /home/aistudio/data/oil/valid.json

将转换好的文件放在一个文件夹下,完成转换后,应具有以下文件结构,构成标准的coco格式数据集

基于PaddleDetection的设备漏油检测 - php中文网

In [ ]
!mkdir oil
%cd oil
!mkdir images &&mkdir annotations
!mv /home/aistudio/data/oil/train.json /home/aistudio/work/PaddleDetection/oil/annotations
!mv /home/aistudio/data/oil/valid.json /home/aistudio/work/PaddleDetection/oil/annotations
!cp -r /home/aistudio/data/oil/JPEGImages/* /home/aistudio/work/PaddleDetection/oil/images/
%cd ..

3.3 训练

首先查看PP-YOLOE使用的配置文件PaddleDetection/configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml 可以看到依赖的相关配置文件如下图所示:基于PaddleDetection的设备漏油检测 - php中文网 注意:这里将预训练权重换成coco数据集上的预训练权重,更多预训练权重

具体的配置文件修改情况以及说明情况,请转至基于PaddleDetection的绝缘子的缺陷检测查看

注意:这里一定注意coco_detection.yml的配置修改,否则加载数据集失败,无法训练。这里提供示例

基于PaddleDetection的设备漏油检测 - php中文网

In [ ]
#训练之前,可以通过-h查看train.py的使用相关说明!python tools/train.py -h
In [ ]
#** 注意: ** 使用默认配置训练需要设置--amp以避免显存溢出.#!python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --amp#或者运行下面这条指令,边训练边评估,开启可视化!python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --amp --eval --use_vdl=True --vdl_log_dir="./output"

3.4评估

In [ ]
#评估模型!python -u tools/eval.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml  \
-o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco/best_model.pdparams

3.5推理

In [9]
#使用图片进行推理测试,这里亦可以通过-c直接指定一些参数!python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml \
-o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco1/best_model.pdparams \
--infer_img=/home/aistudio/work/PaddleDetection/oil/images/025.jpg#也可以通过--infer_dir指定目录并推理目录下所有图像
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  if data.dtype == np.object:
W0518 13:31:56.372510 10921 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0518 13:31:56.377290 10921 device_context.cc:465] device: 0, cuDNN Version: 7.6.
[05/18 13:32:00] ppdet.utils.checkpoint INFO: Finish loading model weights: /home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco1/best_model.pdparams
100%|█████████████████████████████████████████████| 1/1 [00:00<00:00,  3.20it/s]
[05/18 13:32:00] ppdet.engine INFO: Detection bbox results save in output/025.jpg
In [ ]
#对测试结果图片进行可视化img_path= "/home/aistudio/work/PaddleDetection/output/025.jpg"img = Image.open(img_path)
plt.figure("test_img", figsize=(100,100))
plt.imshow(img)
plt.show()

基于PaddleDetection的设备漏油检测 - php中文网

3.6模型导出

PP-YOLOE在GPU上部署或者速度测试需要通过tools/export_model.py导出模型。

当使用Paddle Inference但不使用TensorRT时,运行以下的命令导出模型

通过-o weight指定我们训练好的最优模型

In [ ]
!python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml -o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco/best_model.pdparams

当使用Paddle Inference且使用TensorRT时,需要指定-o trt=True来导出模型,通过-o weight指定我们训练好的最优模型。

In [ ]
!python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml -o weights=/home/aistudio/work/PaddleDetection/output/ppyoloe_crn_l_300e_coco/best_model.pdparams trt=True

四、总结

4.1调优

1、如果GPU卡数或者batch size发生了改变,需要按照公式 = lrdefault * (batch_sizenew * GPU_numbernew) / (batch_sizedefault * GPU_numberdefault) 调整学习率。

lrnew=lrdefault(batchsizenewGPUnumbernew)(batchsizedefaultGPUnumberdefault)lrnew=lrdefault∗(batchsizedefault∗GPUnumberdefault)(batchsizenew∗GPUnumbernew)

2、加入mixup等数据增强。

sample_transforms:

- Mixup: {alpha: 1.5, beta: 1.5}

mixup是一种运用在计算机视觉中的对图像进行混类增强的算法,它可以将不同类之间的图像进行混合,从而扩充训练数据集。

更多数据增强方式可以参照:数据增强算子

3、学习率优化率策略的设置。常见的有PiecewiseDecay和CosineDecay

4、warmup的配置

更多的调优策略需要大家去尝试,应用完上面这些调优策略,ap能有5个点左右的提升

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

393

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

573

2023.08.10

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

36

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

60

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

40

2025.11.27

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

404

2023.08.14

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

2

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

40

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 12.6万人学习

Django 教程
Django 教程

共28课时 | 3.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号