基于PaddleX2.0-PicoDet实现高压输电线路绝缘子缺陷检测
本文介绍利用PaddleX2.0快速上手PP-PicoDet模型训练,以绝缘子缺陷检测为例。先说明项目背景,即绝缘子故障的危害及无人机巡检结合深度学习的新思路。接着介绍PaddleX和PP-PicoDet算法,再阐述项目内容,包括环境配置、数据准备、模型训练等,最终模型mAP达90.91,检测效果佳。

PaddleX2.0快速上手PP-PicoDet模型训练
一、项目背景
电力不仅关系国家经济安全而且与人类社会进步密切相关,而绝缘子作为一种广泛应用于高压输电线路中起到电气绝缘和导线连接的重要设备,由于长期暴露在恶劣环境中可能引起绝缘子磨损、自爆等故障,也可能引起一系列级联故障,对电力系统安全稳定运行构成了严重威胁。相对于传统的输电线路巡检方式,无人机自主巡检技术以其操作简单、安全可靠等优点逐渐被人们所青睐。与此同时,随着计算机的计算能力不断提升,机器学习特别是深度学习方法在处理这种复杂计算机视觉任务取得了不错的成绩,被广泛应用于即时视觉翻译、无人驾驶、视频监控等领域,为我们的输电线路绝缘子故障检测提供了新思路,但当前用深度学习的方法对输电线路绝缘子故障检测仍然处在起步阶段,考虑到绝缘子这类背景较为复杂,缺陷故障处尺寸较小等特点开展了以下工作: 本项目使用PaddleX快速实现PP-Picodet绝缘子缺陷目标检测算法,该算法改善分类分数和定位精度之间不匹配的问题,出色的完成了绝缘子故障检测任务。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
二、PaddleX 介绍
PaddleX 集成飞桨智能视觉领域图像分类、目标检测、语义分割、实例分割任务能力,将深度学习开发全流程从数据准备、模型训练与优化到多端部署端到端打通,并提供统一任务API接口及图形化开发界面Demo。开发者无需分别安装不同套件,以低代码的形式即可快速完成飞桨全流程开发。PaddleX 经过质检、安防、巡检、遥感、零售、医疗等十多个行业实际应用场景验证,沉淀产业实际经验,并提供丰富的案例实践教程,全程助力开发者产业实践落地。
模型丰富: 包含目标检测、实例分割、人脸检测、关键点检测、多目标跟踪等250+个预训练模型,涵盖多种全球竞赛冠军方案。
使用简洁: 模块化设计,解耦各个网络组件,开发者轻松搭建、试用各种检测模型及优化策略,快速得到高性能、定制化的算法。
端到端打通: 从数据增强、组网、训练、压缩、部署端到端打通,并完备支持云端/边缘端多架构、多设备部署。
高性能: 基于飞桨的高性能内核,模型训练速度及显存占用优势明显。支持FP16训练, 支持多机训练。
三、PP-PicoDet算法介绍
PaddleX中推出了最新系列的移动端SOTA模型:PP-PicoDet,具体技术细节可以阅读arXiv文章,PP-PicoDet的特色如下:
精度高:PicoDet-S仅1M参数量以内,416输入COCO mAP达到30.6;PicoDet-L仅3.3M参数量以内,640输入COCO mAP达到40.9。是全网新SOTA移动端检测模型。速度快:PicoDet-S-320在SD865上可达150FPS;PicoDet-L-640模型接近服务器端模型精度前提下,在移动端可达20FPS实时预测。部署友好:支持Paddle Inference、Paddle Lite;支持快速导出为ONNX格式,可用于Openvino、NCNN、MNN部署;支持Python、C++、Android 部署。具体的指标对比如下图所示:
四、项目内容
该项目内容主要包括环境的配置,数据的准备,配置文件的修改,模型训练,模型评估,模型推理测试等
4.1环境配置
安装PaddleX的依赖,这里使用的Paddle版本为paddlepaddle-gpu2.3
In [ ]!unzip -oq /home/aistudio/data/data122549/insulator.zip登录后复制 In [2]
!pip install paddlex登录后复制
4.2准备数据集
由于相关的数据集较少,数据集里面包括600张高压输电线路缺损的绝缘子图片,使用Labelme进行标注,生成voc格式数据集。
4.3划分数据集
下面这段代码,只需要一行代码就可以将数据集进行划分
In [ ]!paddlex --split_dataset --format voc --dataset_dir insulator/ --val_value 0.2登录后复制
2024-05-17 21:58:26 [INFO]Dataset split starts...2024-05-17 21:58:26 [INFO]Dataset split done.2024-05-17 21:58:26 [INFO]Train samples: 4802024-05-17 21:58:26 [INFO]Eval samples: 1202024-05-17 21:58:26 [INFO]Test samples: 02024-05-17 21:58:26 [INFO]Split files saved in insulator/登录后复制
4.4开始训练
In [2]import paddlex as pdxfrom paddlex import transforms as T# 定义训练和验证时的transforms# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/transforms/transforms.mdtrain_transforms = T.Compose([ T.RandomCrop(), T.RandomHorizontalFlip(), T.RandomDistort(), T.BatchRandomResize( target_sizes=[576, 608, 640, 672, 704], interp='RANDOM'), T.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])eval_transforms = T.Compose([ T.Resize( target_size=640, interp='CUBIC'), T.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])# 定义训练和验证所用的数据集# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/datasets.mdtrain_dataset = pdx.datasets.VOCDetection( data_dir='insulator/', file_list='insulator/train_list.txt', label_list='insulator/labels.txt', transforms=train_transforms, shuffle=True)eval_dataset = pdx.datasets.VOCDetection( data_dir='insulator/', file_list='insulator/val_list.txt', label_list='insulator/labels.txt', transforms=eval_transforms, shuffle=False)# 初始化模型,并进行训练# 可使用VisualDL查看训练指标,参考https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/visualdl.mdnum_classes = len(train_dataset.labels)model = pdx.det.PicoDet(num_classes=num_classes, backbone='ESNet_l')# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/models/detection.md# 各参数介绍与调整说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/parameters.mdmodel.train( num_epochs=100, train_dataset=train_dataset, train_batch_size=16, eval_dataset=eval_dataset, pretrain_weights='COCO', learning_rate=.01, warmup_steps=24, warmup_start_lr=0.005, save_interval_epochs=1, lr_decay_epochs=[6, 8, 11], use_ema=True, save_dir='output/picodet_esnet_l', use_vdl=True)登录后复制
2024-05-17 23:11:24 [INFO][TRAIN] Epoch=100/100, Step=10/30, loss_vfl=0.254778, loss_bbox=0.141798, loss_dfl=0.144734, loss=0.541310, lr=0.000001, time_each_step=1.01s, eta=0:0:202024-05-17 23:11:33 [INFO][TRAIN] Epoch=100/100, Step=20/30, loss_vfl=0.220718, loss_bbox=0.106215, loss_dfl=0.138743, loss=0.465676, lr=0.000000, time_each_step=0.9s, eta=0:0:82024-05-17 23:11:43 [INFO][TRAIN] Epoch=100/100, Step=30/30, loss_vfl=0.199835, loss_bbox=0.107801, loss_dfl=0.129731, loss=0.437366, lr=0.000000, time_each_step=0.98s, eta=0:0:02024-05-17 23:11:43 [INFO][TRAIN] Epoch 100 finished, loss_vfl=0.23382486, loss_bbox=0.1168754, loss_dfl=0.13827847, loss=0.48897874 .2024-05-17 23:11:44 [WARNING]Detector only supports single card evaluation with batch_size=1 during evaluation, so batch_size is forcibly set to 1.2024-05-17 23:11:44 [INFO]Start to evaluate(total_samples=120, total_steps=120)...2024-05-17 23:11:52 [INFO]Accumulating evaluatation results...2024-05-17 23:11:52 [INFO][EVAL] Finished, Epoch=100, bbox_map=90.191388 .2024-05-17 23:11:52 [INFO]Current evaluated best model on eval_dataset is epoch_4, bbox_map=90.90909090909092024-05-17 23:11:53 [INFO]Model saved in output/picodet_esnet_l/epoch_100.登录后复制
4.5训练可视化
最终训练结果map=90.91,训练的效果非常不错,可以达到应用级的效果
4.6模型测试
使用模型进行预测,同时使用pdx.det.visualize将结果可视化,可视化结果将保存到./output/picodet_esnet_l下,其中threshold代表Box的置信度阈值,将Box置信度低于该阈值的框过滤不进行可视化。
In [3]import paddlex as pdxmodel = pdx.load_model('output/picodet_esnet_l/best_model')image_name = 'insulator/JPEGImages/0069.webp'result = model.predict(image_name)pdx.det.visualize(image_name, result, threshold=0.5, save_dir='./output/')登录后复制 4.7模型测试结果可视化
可以发现模型很好的检测出了高压输电线路中的绝缘子缺陷
相关攻略
Pywinrm 通过Windows远程管理(WinRM)协议,让Python能够像操作本地一样执行远程Windows命令,真正打通了跨平台管理的最后一公里。 在混合IT环境中,Linux机器管理Wi
早些时候,聊过 Python 领域那场惊心动魄的供应链攻击。当时我就感叹,虽然我们 JavaScript 开发者对这类套路烂熟于心,但亲眼目睹这种规模的“投毒”还是头一次。 早些时候,聊过 Pyth
Toga 是 BeeWare 家族的核心成员,号称“写一次,跑遍所有平台”,而且用的是系统原生控件,不是那种一看就是网页套壳的界面 。 写了这么多年 Python,你是不是也想过:要是能一套代码跑
异常处理的核心:让错误在正确的地方被有效处理。正确的地方,就是别在底层就把异常吞了,也别在顶层还抛裸奔的 Exception。 异常处理写得好,半夜不用起来改 bug。1 你是不是也这么干过?tr
1 Skills机制概述 提起OpenClaw的Skills机制,不少人可能会把它想象成传统意义上的可执行插件。其实,它的内涵要更精妙一些。 简单说,Skills本质上是一套基于提示驱动的能力扩展机制。它并不是一个可以独立“跑”起来的程序模块,而是通过一份结构化描述文件(核心就是那个SKILL m
热门专题
热门推荐
加密货币行业翘首以盼的监管里程碑,终于有了实质性进展。美国证券交易委员会(SEC)主席保罗·阿特金斯(Paul Atkins)近日证实,那份允许加密项目在早期获得注册豁免权的“安全港”框架提案,已经正式送抵白宫,进入了最终审查阶段。 在范德堡大学与区块链协会联合举办的数字资产峰会上,阿特金斯透露了这
微策略Strategy报告:第一季录得144 6亿美元浮亏 再斥资约3 3亿美元买进4871枚比特币 市场震荡的威力有多大?看看Strategy的最新季报就明白了。根据其最新向美国证管会(SEC)提交的8-K报告,受市场剧烈波动影响,这家公司所持的比特币在第一季度录得了一笔惊人的数字——144 6亿
稳定币巨头Tether的动向,向来是加密世界的风向标。这不,它向Web3基础设施的版图扩张,又迈出了关键一步。公司执行长Paolo Ardoino在社交平台X上透露,其工程团队正在全力“烹制”一个新项目——去中心化搜索引擎 “Hypersearch”。这个消息一出,立刻引发了行业的广泛猜想。 采用D
基地位于Coinbase旗下以太坊Layer2网络Base的Seamless Protocol,日前正式宣告了服务的终结。这个曾经吸引了超过20万用户的原生DeFi借贷协议,在运营不到三年后,终究没能跑赢时间。它主打的核心产品是Integrated Leverage Markets(ILMs)——一
PAAL代币揭秘:深度解析Web3社区治理的核心钥匙 在去中心化自治组织的浪潮中,谁真正掌握了项目的话语权?PAAL代币提供了一套系统化的答案。它不仅是生态内流转的价值媒介,更是开启链上治理大门的核心凭证。通过持有并质押PAAL代币,用户能够对协议升级、资金分配乃至战略方向等关键事务投出决定性的一票





