红外变电站分割数据集,标注为json格式,总共有5类,避雷器(289张),绝缘子(919张),电流互感器(413张),套管(161张),电压互感器(153张)

 

红外变电站分割数据集,标注为json格式,总共有5类

避雷器(289张),绝缘子(919张),电流互感器(413张),套管(161张),电压互感器(153张)

 

红外变电站分割数据集 (Infrared Substation Segmentation Dataset)

数据集概述

该数据集是一个专门用于训练和评估红外图像中变电站设备分割模型的数据集。数据集包含约1935张红外图像,每张图像都带有详细的标注信息,标注格式为JSON格式。这些图像涵盖了五种不同类型的变电站设备:避雷器、绝缘子、电流互感器、套管和电压互感器。适用于基于深度学习的语义分割任务,通过这个数据集,可以训练出能够在红外图像中准确分割和识别不同类型变电站设备的模型,从而帮助进行电力设施维护、故障检测等应用。

数据集特点
  • 高质量红外图像:数据集中的图像均为红外成像,具有高分辨率,能够提供丰富的温度分布信息,特别适合变电站设备的特征分析。
  • 带标注:每张图像都有详细的标注信息,包括设备的位置和边界。
  • JSON格式标注:标注信息以JSON格式提供,方便直接使用于支持JSON格式的语义分割框架。
  • 实际应用场景:适用于需要精确分割和识别红外图像中变电站设备的场景,如电力设施维护、故障检测系统等。
数据集结构
infrared_substation_segmentation_dataset/
├── images/                            # 图像文件
│   ├── 00001.jpg                      # 示例图像
│   ├── 00002.jpg
│   └── ...
├── annotations/                       # JSON格式标注文件
│   ├── 00001.json                     # 示例JSON标注文件
│   ├── 00002.json
│   └── ...
├── data.yaml                          # 类别描述文件
├── README.md                          # 数据集说明
└── model/                             # 预训练模型文件夹(可选)└── infrared_substation_segmentation_model.pth  # 预训练模型(如果有的话)
数据集内容
  1. images/

    • 功能:存放图像文件。
    • 内容
      • 00001.jpg:示例图像。
      • 00002.jpg:另一张图像。
      • ...
  2. annotations/

    • 功能:存放JSON格式的标注文件。
    • 内容
      • 00001.json:示例JSON标注文件。
      • 00002.json:另一张图像的JSON标注文件。
      • ...
  3. data.yaml

    • 功能:定义数据集的类别和其他相关信息。
    • 内容
       yaml 

      深色版本

      train: infrared_substation_segmentation_dataset/images
      val: infrared_substation_segmentation_dataset/images
      nc: 5
      names: ['arrester', 'insulator', 'current transformer', 'bushing', 'voltage transformer']
  4. README.md

    • 功能:数据集的详细说明文档。
    • 内容
      • 数据集的来源和用途。
      • 数据集的结构和内容。
      • 如何使用数据集进行模型训练和评估。
      • 其他注意事项和建议。
  5. model/(可选)

    • 功能:存放预训练模型文件。
    • 内容
      • infrared_substation_segmentation_model.pth:预训练的模型文件(如果有的话)。
数据集统计

  • 总图像数量:约1935张
  • 类别:5类
  • 类别列表及图像数量
    • arrester(避雷器):289张
    • insulator(绝缘子):919张
    • current transformer(电流互感器):413张
    • bushing(套管):161张
    • voltage transformer(电压互感器):153张
使用说明
  • 环境准备:确保安装了常用的深度学习库,例如torchtorchvisionnumpy等。
  • 数据集路径设置:将数据集解压到项目目录下,并确保路径正确。
  • 加载预训练模型:如果有预训练模型,可以直接加载并对其进行微调或直接使用。
  • 数据增强:可以通过随机翻转、旋转等方法增加数据多样性,提高模型鲁棒性。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 类别平衡:虽然数据集中各类别的样本数量相对均衡,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

关键代码示例

以下是一个使用PyTorch和torchvision库进行红外变电站设备分割的示例代码。我们将使用预训练的DeepLab v3+模型,并对其进行微调以适应我们的数据集。

import torch
import torchvision
from torchvision.models.segmentation import deeplabv3_resnet101
from torchvision.transforms import functional as F
from torch.utils.data import DataLoader, Dataset
from PIL import Image
import os
import json
import numpy as np# 自定义数据集类
class InfraredSubstationSegmentationDataset(Dataset):def __init__(self, root, transforms=None):self.root = rootself.transforms = transformsself.imgs = list(sorted(os.listdir(os.path.join(root, "images"))))self.annotations = list(sorted(os.listdir(os.path.join(root, "annotations"))))def __getitem__(self, idx):img_path = os.path.join(self.root, "images", self.imgs[idx])annotation_path = os.path.join(self.root, "annotations", self.annotations[idx])img = Image.open(img_path).convert("RGB")with open(annotation_path, 'r') as f:annotation = json.load(f)mask = np.zeros((img.height, img.width), dtype=np.uint8)for obj in annotation['objects']:class_id = {'arrester': 1,'insulator': 2,'current transformer': 3,'bushing': 4,'voltage transformer': 5}[obj['class']]polygon = np.array(obj['polygon'])cv2.fillPoly(mask, [polygon], class_id)mask = Image.fromarray(mask)if self.transforms is not None:img, mask = self.transforms(img, mask)return F.to_tensor(img), F.to_tensor(mask)def __len__(self):return len(self.imgs)# 数据预处理
def get_transform(train):transforms = []if train:transforms.append(torchvision.transforms.RandomHorizontalFlip(0.5))return torchvision.transforms.Compose(transforms)# 加载数据集
dataset = InfraredSubstationSegmentationDataset(root='infrared_substation_segmentation_dataset', transforms=get_transform(train=True))
dataset_test = InfraredSubstationSegmentationDataset(root='infrared_substation_segmentation_dataset', transforms=get_transform(train=False))indices = torch.randperm(len(dataset)).tolist()
dataset = torch.utils.data.Subset(dataset, indices[:-193])
dataset_test = torch.utils.data.Subset(dataset_test, indices[-193:])data_loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))
data_loader_test = DataLoader(dataset_test, batch_size=1, shuffle=False, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))# 定义模型
model = deeplabv3_resnet101(pretrained=True)
model.classifier[-1] = torch.nn.Conv2d(256, 6, kernel_size=(1, 1), stride=(1, 1))  # 5类 + 背景
model.aux_classifier[-1] = torch.nn.Conv2d(256, 6, kernel_size=(1, 1), stride=(1, 1))  # 5类 + 背景# 设置设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)# 定义优化器
params_to_optimize = [{"params": [p for p in model.backbone.parameters() if p.requires_grad]},{"params": [p for p in model.classifier.parameters() if p.requires_grad]},
]
optimizer = torch.optim.SGD(params_to_optimize, lr=0.005, momentum=0.9, weight_decay=0.0005)# 训练模型
num_epochs = 10
for epoch in range(num_epochs):model.train()for images, targets in data_loader:images = list(image.to(device) for image in images)targets = list(target.to(device) for target in targets)optimizer.zero_grad()outputs = model(images)loss = torch.nn.functional.cross_entropy(outputs['out'], targets)if 'aux' in outputs:loss += 0.5 * torch.nn.functional.cross_entropy(outputs['aux'], targets)loss.backward()optimizer.step()print(f'Epoch {epoch+1}/{num_epochs}, Loss: {loss.item()}')# 验证模型model.eval()with torch.no_grad():for images, targets in data_loader_test:images = list(image.to(device) for image in images)targets = list(target.to(device) for target in targets)outputs = model(images)# 保存模型
torch.save(model.state_dict(), 'infrared_substation_segmentation_model.pth')

注意事项

  • 数据格式:确保输入的数据格式正确,特别是图像文件和标注文件的格式。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 数据增强:可以通过数据增强技术(如随机翻转、旋转等)来增加模型的鲁棒性。
  • 模型选择:除了DeepLab v3+,还可以尝试其他语义分割模型,如U-Net、FCN等,以找到最适合当前任务的模型。
  • 类别平衡:虽然数据集中各类别的样本数量相对均衡,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

通过上述步骤,你可以成功地使用这个高质量的红外变电站分割数据集进行模型训练和评估。该数据集不仅适用于学术研究,还可以应用于实际的电力设施维护、故障检测系统等领域,帮助提升对红外图像中变电站设备的分割准确性和效率。希望这个数据集能帮助你更好地理解和应用最新的深度学习技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/443610.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)

前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…

设备多久(60/50/40min)未上报,类似场景发送通知实现方案

场景描述 设备比较多,几十万甚至上百万,设备在时不时会上报消息。 用户可以设置设备60分钟、50分钟、40分钟、30分钟未上报数据,发送通知给用户,消息要及时可靠。 基本思路 思路: 由于设备在一直上报,如果…

Airtest脚本的重构与优化:提升测试效率和可读性

在自动化测试的工作里,编写高效且易于维护的测试脚本是一项挑战,尤其是在应对复杂的测试场景时。Airtest作为一款常用的自动化测试工具,它提供了丰富的API和灵活的脚本编写方式,帮助测试人员高效地开展UI自动化测试。然而&#xf…

Linux的环境与历史

目录 引言 1. Linux 背景介绍 2. 开源 3. 官网 4. 企业应用现状 5. 发行版本 6.见见猪跑 引言 在这个信息化时代,掌握一门操作系统技能显得尤为重要。Linux作为一款开源、稳定且功能强大的操作系统,不仅在服务器领域占据主导地位,也逐渐…

哈希表结构

哈希表结构:数组链表 案例一:HashSet集合的常见使用方法 package com.collection;import java.util.HashSet; import java.util.Iterator;/*** HashSet集合的使用* 存储结构:哈希表(数组链表红黑树)*/ public class Demo07 {public static v…

性能测试学习6:jmeter安装与基本配置/元件/线程组介绍

一.JDK安装 官网:https://www.oracle.com/ 二.Jmeter安装 官网:http://jmeter.apache.org/download_jmeter.cgi 下载zip包,zip后缀那个才是Windows系统的jmeter 三.Jmeter工作目录介绍 四.Jmeter功能 1)修改默认配置-汉化 2&am…

SapGUI For Windows捕获技术

一、SapGUI For Windows捕获技术 文章目录 一、SapGUI For Windows捕获技术SAP GUI:SAP NetWeaver Business Client:SAP Fiori:二.Sap的自动化配置SAP客户端配置三.Sap GUI自动化脚本四.Sap GUI自动化开发SAP GUI: SAP图形用户界面,是最常用的SAP前端界面。它是一个桌面应…

React(一) 认识React、熟悉类组件、JSX书写规范、嵌入变量表达式、绑定属性

文章目录 一、初始React1. React的基本认识2. Hello案例2.1 三个依赖2.2 渲染页面2.3 hello案例完整代码 二、类组件1. 封装类组件2. 组件里的数据3. 组件里的函数 (重点)4. 案例练习(1) 展示电影列表 三、JSX语法1. 认识JSX2. JSX书写规范及注释3. JSX嵌入变量作为子元素4. JS…

leetcode58:最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大 子字符串 。 示例 1: 输入:s "Hello World" 输出&#xff…

Linux SSH服务

Linux SSH(Secure Shell)服务是一种安全的远程登录协议,用于在Linux操作系统上远程登录和执行命令。它提供了加密的通信通道,可以在不安全的网络环境中安全地进行远程访问。 SSH服务在Linux系统中通常使用OpenSSH软件包来实现。它…

【Java SE 题库】输出一个数的二进制的奇数位和偶数位

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 题目 2. 分析 3. 代码实现 3.1 运行结果 4. 小结 1. 题目 输入一个数,请分别打印这个数二进制的奇数位和偶数位 例:15 …

Element-快速入门

什么是 Element 在现代前端开发中,组件化的思想日益盛行,Element组件库作为一款流行的UI组件库,特别适用于基于Vue.js的项目,它为开发者提供了丰富的组件和良好的开发体验。 想要使用Element的组件库,我们需要完成下面…

yolov8-pose的TensorRT动态库部署(C++)

文章目录 参考代码概要硬件动态库代码文件结构头文件yolov8-pose.hyolov8-pose.cppCMakeLists.txt调用例子main.cppCMakeLists.txt获取engine模型测试结果参考代码 https://github.com/triple-Mu/YOLOv8-TensorRT 概要 为了方便使用,基于上述开源代码,将其封装成动态库,方…

GAMES104:16 游戏引擎的玩法系统:基础AI-学习笔记

文章目录 一,寻路/导航系统Navigation1.1 Walkable Area1.1.1 Waypoint Network1.1.2 Grid1.1.3 Navigation Mesh1.1.4 Sparse Voxel Octree 1.2 Path Finding1.2.1 Dijkstra Algorithm迪杰斯特拉算法1.2.2 A Star(A*算法) 1.3 Path Smoothin…

在不支持WSL2的Windows环境下安装Redis并添加环境变量的方法

如果系统版本支持 WSL 2 可跳过本教程。使用官网提供的教程即可 官网教程 查看是否支持 WSL 2 如果不支持或者觉得麻烦可以按照下面的方式安装 下载 点击打开下载地址 下载 zip 文件即可 安装 将下载的 zip 文件解压到自己想要解压的地方即可。(注意&#x…

Python 工具库每日推荐【Pillow】

文章目录 引言Python图像处理库的重要性今日推荐:Pillow工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:创建图像拼贴案例分析高级特性图像增强图像水印扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript 设计模式 专栏,感兴…

深入理解HTTP Cookie

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 HTTP Cookie定义工作原理分类安全性用途 认识 cookie基本格式实验测试 cookie 当我们登录了B站过后,为什么下次访问B站就…

JavaScript 变量的简单学习

目录 1. 变量 1.1 变量是什么 1.2 变量基本使用 1.2.1 声明变量 1.2.2 变量赋值 1.2.3 变量更新 1.2.4 声明多个变量 1.3 变量案例 1.3.1 弹出姓名 1.3.2 交换变量的值 1.4 变量的本质 1.5 变量命名规则 1.6 var VS let 1. 变量 1.1 变量是什么 1.2 变量基本使用 …

Lazada菲律宾本土店选品怎么操作?EasyBoss ERP选品功能来帮你!

由于Lazada本土店在流量、履约速度、类目限制以及回款速度方面的优势,越来越多的Lazada卖家都在考虑转型做本土店,但本土化落地并不是一件容易的事,很多卖家在选品阶段就踩大坑了。 因此,为了选品不踩坑,很多卖家都会…

天海一体,遨游双卫星智能终端扬帆5G智慧海洋

海洋面积占地球表面的70%以上,世界贸易的90%左右由国际海运行业承运。但是,信号覆盖不均、通信延迟高、定位精度不足等问题,严重制约了海洋作业的效率与安全。智慧海洋,通信先行,AORO M5-5G双卫星智能终端应时代需求而…