YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

目录

基于yolo11-seg的变电站设备语义分割实战系统

1.数据阶段

1.1数据集准备

1.2数据集结构组织

1.3数据集下载

1.4环境安装

2.训练阶段

2.1配置文件修改

2.2执行训练命令

2.3训练生成结果文件

2.4评估与可视化结果

3.推理阶段

3.1开始推理

3.2输出展示

4.系统UI界面

4.1实现PYQT5代码

4.2最终系统界面

结束语


基于yolo11-seg的变电站设备语义分割实战系统

1.数据阶段

1.1数据集准备

变电站设备语义分割数据集是一个用于语义分割任务的数据集。该数据集的主要应用领域为变电站自动化巡检/智能监测与故障预警。样例如下图所示:

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

背景:随着电力网络的不断扩张,变电站的数量持续增加,设备复杂度也日益提升,传统的人工巡检和维护方式逐渐暴露出诸多弊端。人工巡检不仅耗时耗力、成本高昂,还容易因人为因素出现检测疏漏,难以满足现代电网对变电站安全、高效运行的要求。一旦设备出现故障未及时发现,可能引发电力中断、安全事故等严重后果,威胁电力系统的稳定运行。近年来,计算机视觉与深度学习技术的快速发展,为变电站巡检自动化提供了可行的解决方案。目标检测、语义分割等技术能够实现对变电站设备的精准识别与定位,是构建自动化巡检系统的核心。但这类技术的落地,高度依赖于高质量、大规模的标注数据集。然而,目前行业内缺乏针对变电站设备的公开语义分割标注数据集,相关研究只能依靠研究者自行制作数据集,不仅增加了研究成本,也阻碍了技术的快速迭代与推广。在此背景下,变电站设备语义标注基准数据集的研发与发布,成为解决这一行业痛点的关键举措。

数据集详情:该数据集由真实变电站场景图像组成。该数据集图像以真实变电站场景为采集基础,通过在不同光照、不同时间、不同地区下进行拍摄获取,并根据Roboflow工具和YOLO格式进行标注。数据量大约有1655张JPG格式高质量图像,含有对应txt标签文件,一一对应。标注格式统一为YOLO形式,按照约为85:15的比例分为训练集验证集,便于YOLO系列算法训练及对比测试。数据类别分布,主要涵盖常见的 15 种核心典型类别,例如瓷针式绝缘子玻璃盘式绝缘子三联隔离开关重合器电流互感器避雷器开放式串联隔离开关套管封闭式刀片隔离开关断路器电力变压器电压互感器封闭式串联隔离开关熔断器隔离开关开放式刀片隔离开关

1.2数据集结构组织

YOLO格式数据集结构如下:

datasets/

– train

— images

— labels

– valid

— images

— labels

训练集图像约有1410高质量jpg图像,验证集图像约有245高质量jpg图像。

1.3数据集下载

【注意:准备好的datasets文件夹,应该与下面的工程项目yolov11_det位于同级目录,不要将datasets文件夹放置在工程项目里面】

☆可直接获取转换完成的yolo格式数据集(如后文),获取方式见文末

1.4环境安装

执行下面指令:

pip install ultralytics==8.3.59 -i https://pypi.tuna.tsinghua.edu.cn/simple

2.训练阶段

2.1配置文件修改

【前提条件:cuda、torch、ultralytics版本匹配且可用,使用yolo11m-seg型号预训练模型】

【需要进入工程项目yolov11_det里面】

修改数据配置文件./custom.yaml,训练集/验证集路径设定,类别数和类别名称需一致

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

2.2执行训练命令

【按需修改train.py文件里的训练参数,例如:windows系统,workers应该设置为0;linux系统,可设置为8;其他参数按照硬件配置需求做修改】

执行训练指令:

python train.py

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

训练200epoch后(含有早停机制,141epochs),模型保存在runs/segment/train/weights文件夹

2.3训练生成结果文件

1)核心模型

weights/

存放训练得到的模型权重文件,是训练的核心输出:

best.pt:验证集性能(如mAP、损失)最优的模型权重(推荐用于实际部署)。

last.pt:训练结束时的最终模型权重(可能过拟合,不推荐直接使用)。

2)训练配置

args.yaml

记录训练时的所有超参数和配置(如模型类型、epochs、学习率、数据集路径、图像尺寸等),可用于复现训练过程或查看参数设置。

3)日志记录

events.out.tfevents.*

TensorBoard日志文件,记录训练/验证过程中的损失、mAP、学习率等指标,可通过tensorboard–logdirruns/detect/train可视化训练曲线。

results.csv

以CSV格式记录每轮训练的关键指标(如epoch,train/box_loss,val/mAP50等),可用于Excel或脚本分析训练趋势。

2.4评估与可视化结果

1)F1_curve.png(F1分数)

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

由图可知,当confidence为固定取值时,all_classes的F1分数达到最值;表示训练模型在该取值的置信度预测类时整体表现良好,具有一定的准确性和召回率。

什么是F1分数?F1分数是精确率(Precision)和召回率(Recall)的调和平均值,它同时考虑了模型预测的准确性和覆盖面。

2)P_curve.png(精确率曲线)

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

图中的深蓝色折线代表整体的精度,随着置信度的增加,精确度也增加,在置信度为固定取值时,精确度达到了1.00。其余几条线分别表示各个类别在不同的置信度下的精度。

精确率曲线,帮助分析模型在检测任务中的表现,特别是在不同置信度设置下的精确性表现。通过这条曲线,可以选择合适的置信度阈值,以优化模型的检测结果,平衡精确率和召回率。

3)PR_curve.png(精确率-召回率曲线)

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

图中的曲线为Precision-Recall Curve(精确度-召回率曲线),展示了不同阈值下分类器的精确度和召回率。具体来说,横轴表示Recall(召回率),范围从0.0到1.0;纵轴表示Precision(精确度),范围从0.0到1.0。图中主要的曲线:

(1)彩色线代表各个类别的精确度-召回率曲线,每个类别的精确度各有差异;

(2)深蓝色线代表所有类别的平均精确度-召回率曲线,其精确度也在最值左右保持稳定。

这几条曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。

通过这条曲线,可以评估模型在目标检测任务中的整体性能,并找到合适的置信度阈值,以在精确率和召回率之间做出最佳平衡。PR曲线越接近右上角,模型性能越好,曲线下方的面积越大,说明模型在不同置信度下的表现越稳定。

4)R_curve.png(召回率曲线)

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

图中的R曲线为Recall-Confidence Curve(召回率-置信度曲线),它展示了不同置信度下的召回率。具体来说,横轴表示置信度,从0.0到1.0;纵轴表示召回率,从0.0到1.0。图中主要的曲线:

(1)各条彩色线:代表各个类别的召回率随置信度的变化情况。这条曲线显示了随着置信度的增加,每个类别的召回率先变化较小,然后在某个点之后迅速下降。

(2)深蓝色线:代表所有类别的平均召回率随置信度的变化情况。

展示模型在不同的置信度阈值(confidence thresholds)下的召回率表现。召回率曲线帮助评估模型在目标检测任务中,检测到真正目标的能力。通过这条曲线,用户可以评估模型的检测能力,分析模型在不同阈值下对真实目标的检测是否全面。如果召回率曲线在较低的置信度下表现较好,说明模型可以有效检测大多数目标;如果曲线下降较快,可能需要调整模型或数据集,避免漏检问题。

5)results.png(结果指标曲线)

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

这个图像文件,显示了训练过程中关键指标(如损失、mAP)的变化趋势。

box_loss:定位损失曲线

含义:边界框损失,衡量预测的边界框与真实边界框之间的误差。包括边界框的中心位置、宽度、高度等。

图表:通常显示为训练轮次或步数上的损失值曲线,较低的损失值表明模型对边界框的预测更加准确。

cls_loss:分类损失曲线

含义:类别损失,衡量预测的类别标签与真实类别标签之间的差距。反映了分类器的准确性。

图表:显示为训练轮次或步数上的损失值曲线,较低的损失值表示分类器性能较好。

dfl_loss:目标检测损失曲线

含义:分布式定位损失(Distribution Focal Loss),处理定位任务中的类别不平衡问题。帮助模型更加关注难以预测的目标。

图表:显示为训练轮次或步数上的损失值曲线,较低的损失值表示分布式定位任务的效果较好。

Precision(B):精度曲线

含义:精确度(B类),表示模型预测的正样本中有多少比例是真正的正样本。B类通常是指背景类。

图表:显示为训练轮次或步数上的精确度曲线,较高的精确度表示模型在背景类检测中的准确性较高。

Recall(B):召回率曲线

含义:召回率(B类),表示模型检测到的实际正样本中的比例。B类通常是指背景类。

图表:显示为训练轮次或步数上的召回率曲线,较高的召回率表示模型对背景类的检测能力较强。

mAP50(B):IoU阈值为0.5时的平均精度

含义:在IoU(Intersection over Union)阈值为0.5时的平均精度(B类),反映了模型在此IoU阈值下的精度。

图表:显示为训练轮次或步数上的mAP50值曲线,较高的mAP50值表示模型在背景类的检测精度较高。

mAP50-95(B):IoU阈值在0.5到0.95之间的平均精度

含义:在IoU阈值从0.5到0.95范围内的平均精度(B类),评估模型在不同IoU阈值下的检测性能。

图表:显示为训练轮次或步数上的mAP50-95值曲线,较高的mAP50-95值表示模型在背景类的整体性能较强。

3.推理阶段

3.1开始推理

使用训练好的模型进行预测(输入测试图片文件夹input_test_images):

执行下面指令:

python predict.py

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

检测完成后,结果保存在output_results文件夹。

3.2输出展示

样例输出如下:

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

4.系统UI界面

4.1实现PYQT5代码

编码实现界面代码ui_window.py,以及逻辑代码ui_main_gui.py

1)运行环境安装

执行下面指令:

pip install ultralytics==8.3.59 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install PyQt5==5.15.9 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install PyQt5-Qt5==5.15.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

2)设定模型路径

在ui_main_gui.py文件中,指定训练完成的最优模型路径

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

4.2最终系统界面

将UI测试图片/视频放置于文件夹ui_test_files

执行下面指令:

python ui_main_gui.py

展示如下:

YOLO11实战 第067期-基于yolo11-seg的变电站设备语义分割实战-数据集&源码&系统

结束检测后(自动)保存结果在ui_result目录下(会新建)

界面特点

支持图片、视频、摄像头等输入源置信度和交并比等参数可按需调节检测状态(开始/暂停/结束)等可设定原始图像和结果图像对比显示输出支持表格数据实时统计显示支持结果数据自动保存



结束语

感谢您的耐心阅读!若文中存在错误,恳请指出,我会努力改进。若您有更优方法,也请不吝分享,让我们共同进步!

【⭐⭐⭐源码数据集ui界面系统需求,请访问  深瞳智检-yolo11实战】

© 版权声明

相关文章

暂无评论

none
暂无评论...