热成像实例分割电力设备数据集(3类,838张)

news2025/6/9 14:50:29

在现代电力系统的运维管理中,红外热成像已经成为检测设备隐患、预防故障的重要手段。相比传统可见光图像,红外图像可揭示设备温度分布,从而更直观地反映过热、老化等问题。而在AI赋能下,通过实例分割技术对热成像中的电力设备进行精细识别与区域分割,为智能巡检系统提供了关键能力支持。

本文将介绍一个专注于电力设备的热成像实例分割数据集,该数据集通过红外图像标注,助力模型精准识别高压场景中的关键部件,为智能运维提供视觉基础。

一、数据集概述

该数据集主要包含高压电力系统中典型设备的红外热成像图像,并为每张图像中存在的设备进行了像素级别的实例分割标注。相较于常规目标检测框(bounding box),实例分割更精确地描绘出设备的形状轮廓,适用于精细识别与空间分析任务。数据集中共标注了以下 3 类关键电力设备:

类别编号类别名说明
0Bushing套管,高压电流引出设备的重要绝缘部件,过热可能导致放电事故
1Current_Transformer电流互感器(CT),用于测量与保护,次级短路可能导致升温
2Lightning_Arrester避雷器(LA),防止雷击冲击电网,老化或失效后可能局部发热

这些设备在电力运维中均为重点监测对象,尤其在高温环境或负荷较大的情况下更易发生热故障。

  • 📊 图像总数8385 张

  • 🏷 目标类别数3类

  • 📁 标注格式YOLO 格式、json格式、Mask格式

每张图像都配有精确的目标轮廓标注,并标注了对应的部件类别,用于支持目标分割任务。标注后的数据集如下所示:

二、数据集标签介绍

为了方便在不同任务或模型中使用,该热成像实例分割数据集提供了三种主流的标签格式:YOLO格式、JSON格式、Mask格式

3.1 分割 JSON 格式

JSON 标签格式是通过 LabelMe 工具标注生成的。LabelMe 是一款轻量级且功能强大的开源图像标注工具,广泛应用于实例分割、目标检测和图像分类等视觉任务。它支持手动绘制多边形、矩形等多种标注形状,并将标注结果以结构化的 JSON 文件形式保存,便于后续数据处理与模型训练。

3.2 分割 yolo 格式

为了支持 YOLO 系列实例分割模型(如 YOLOv11-seg)的训练,本文提供了将 LabelMe 生成的 JSON 标注文件转换为 YOLO 实例分割格式 的转换代码。该过程的核心在于:提取 JSON 文件中的多边形坐标点,并将其按照图像尺寸进行归一化处理,以满足 YOLO 格式对坐标规范的要求。代码如下所示:

import json
import os
 
class_dict = {
    "Bushing": 0,
    "Current_Transformer": 1,
    "Lightning_Arrester": 2
}
 
 
def translate_info(label_json, label_txt):
    # 检查json文件是否存在
    assert os.path.exists(label_json), "file:{} not exist...".format(label_json)
    # read json
    with open(label_json, "r") as f1:
        data = json.load(f1)
        img_height = data['imageHeight']
        img_width = data['imageWidth']
        object_num = len(data['shapes'])
 
        with open(label_txt, "w") as f:
            for index in range(object_num):
                seg_label = []
                # 获取每个object的类别信息和关键点信息
                class_name = data['shapes'][index]['label']
                class_index = class_dict[class_name]  # 目标id从0开始
                seg_label.append(class_index)
                seg_points = data['shapes'][index]['points']
                for point in seg_points:
                    point_x = round(point[0] / img_width, 6)
                    point_y = round(point[1] / img_height, 6)
                    seg_label.append(point_x)
                    seg_label.append(point_y)
 
                info = [str(i) for i in seg_label]
 
                f.write(" ".join(info) + "\n")
 
 
 
def main():
    label_json_path = r"./data/labels_json"
    label_txt_path = r"./data/labels_yolo"
    label_list = os.listdir(label_json_path)
    label_list = [label for label in label_list if label.endswith('.json')]
    for label_name in label_list:
        label_name = label_name.split(".json")[0]
        label_xml = os.path.join(label_json_path, label_name + ".json")
        label_txt = os.path.join(label_txt_path, label_name + ".txt")
        translate_info(label_xml, label_txt)
 
 
if __name__ == "__main__":
    main()

3.3 分割 mask 格式

为了支持 UNet 及其变体(如 UNet++、Attention-UNet 等)等语义分割模型的训练,本文提供了将 LabelMe 格式的 JSON 标注文件转换为 mask 标签图的方法。在转换过程中,根据 JSON 文件中每个电力设备的多边形轮廓信息,在与原始红外图像尺寸一致的空白图像上绘制对应的填充区域,从而生成像素级的 mask 图像。

在生成的 mask 中,背景区域的像素值为 0,各电力设备实例的区域像素值依次递增(如 1 表示 Bushing,2 表示 Current_Transformer,3表示 Lightning_Arrester),满足多类别实例分割任务的需求。所有生成的 mask 标签图与原始图像保持相同命名,便于训练过程中进行自动加载与配对使用。

import cv2
import json
import numpy as np
import os


class_dict = {
    "Bushing": 1,
    "Current_Transformer": 2,
    "Lightning_Arrester": 3
}


def json_to_mask(image_path, json_path, save_mask_path):
    # 读取 JSON 文件
    with open(json_path, mode='r', encoding="utf-8") as f:
        configs = json.load(f)

    # 获取图像尺寸
    shapes = configs["shapes"]
    image = cv2.imread(image_path)
    imageHeight, imageWidth = image.shape[:2]

    # 创建空白图像用于生成掩码
    mask = np.zeros((imageHeight, imageWidth), np.uint8)

    # 绘制轮廓,将所有有标注的区域填充为 对应的数值
    for shape in shapes:
        label_name = shape["label"]
        points = np.array(shape["points"], dtype=np.int32)
        cv2.drawContours(mask, [points], -1, class_dict[label_name], -1)  # 255 表示白色,-1 表示填充


    # 保存生成的掩码图像
    cv2.imwrite(save_mask_path, mask)
    return mask

if __name__ == "__main__":
    save_mask_root = r'./labels_mask'  # 保存mask图路径
    json_root = r'./labels_json'  # 读取json路径
    image_root = r'./images'   # 原始图像

    # 确保保存目录存在
    os.makedirs(save_mask_root, exist_ok=True)

    # 遍历 JSON 文件并生成掩码
    for file in os.listdir(json_root):
        name, ext = os.path.splitext(file)
        image_path = os.path.join(image_root, f"{name}.jpg")
        save_mask_path = os.path.join(save_mask_root, f"{name}.png")
        json_path = os.path.join(json_root, file)

        # 检查图像和 JSON 文件是否存在
        if os.path.exists(image_path) and os.path.exists(json_path):
            json_to_mask(image_path, json_path, save_mask_path)

基于上述处理流程,热成像电力设备实例分割数据集已完成图像与标签的标准化转换,统一提供以下内容:

  • 经过预处理并转换为 .jpg格式的红外图像;

  • 对应的三种类型标注文件,包括:

    • YOLO 格式(适用于 YOLO 系列的实例分割模型,如 YOLOv8/v11-seg);

    • Mask 图像格式(适用于 UNet 及其变体,如 UNet++、Attention-UNet 等语义分割模型);

    • LabelMe 原始 JSON 格式(用于可视化查看和进一步标注编辑)。

下载链接 :热成像实例分割电力设备数据集


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用电脑通过USB总线连接控制keysight示波器

通过USB总线控制示波器的优势 在上篇文章我介绍了如何通过网线远程连接keysight示波器,如果连接的距离不是很远,也可以通过USB线将示波器与电脑连接起来,实现对示波器的控制和截图。 在KEYSIGHT示波器DSOX1204A的后端,除了有网口…

uni-app学习笔记二十四--showLoading和showModal的用法

showLoading(OBJECT) 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。 OBJECT参数说明 参数类型必填说明平台差异说明titleString是提示的文字内容,显示在loading的下方maskBoolean否是否显示透明蒙层,防止触摸穿透,默…

【Linux】centos软件安装

目录 Linux下安装软件的办法什么是yum使用yum试着安装软件查看yum源配置额外的第三方库 Linux下安装软件的办法 做为一个操作系统,与win和mac一样,安装软件无可厚非。那Linux下安装软件有哪些办法呢?第一种是直接下载源代码本地编译安装&…

基于Vue3.0的在线工具网站

文章目录 1、初始化项目1.1 创建项目1.2 安装vue路由1.3 安装UI库2、首页搭建2.0 页面布局2.1 页头2.2 侧边栏2.3 内容显示区域3、字符串加密解密功能实现3.1 页面构建3.2 实现加密/解密4、Json工具4.1 Json格式化4.1.1 搭建页面4.1.2 实现Json格式化4.2 Json转XML4.1.1 搭建页…

STM32H562----------串口通信(UART)

1、串口介绍 1.1、 数据通信概念 在单片机中我们常用的通信方式有 USART、IIC、SPI、CAN、USB 等; 1、数据通信方式 根据数据通信方式可分为串行通信和并行通信两种,如下图: 串行通信基本特征是数据逐位顺序依次传输,优点:传输线少成本低,抗干扰能力强可用于远距离传…

webpack其余配置

webpack搭建本地服务器 首先是要安装一个webpack-dev-server npm install webpack-dev-server -D 安装后在package.json中添加: {"name": "babel_core_demo","version": "1.0.0","main": "index.js"…

【CUDA 】第5章 共享内存和常量内存——5.3减少全局内存访问(2)

CUDA C编程笔记 第五章 共享内存和常量内存5.3 减少全局内存访问5.3.2 使用展开的并行规约思路reduceSmemUnroll4(共享内存)具体代码:运行结果意外发现书上全局加载事务和全局存储事务和ncu中这两个值相同 5.3.3 动态共享内存的并行规约reduc…

Python 训练营打卡 Day 46

通道注意力 一、什么是注意力 注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。 transformer中的叫做自注意力机制,他是一种自己学习自…

Rust学习(1)

声明:学习来源于 《Rust 圣经》 变量的绑定和解构 变量绑定 let a "hello world":这个过程称之为变量绑定。绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人。 变量可变性 Rust 变量默认情况下不可变,可以通过 mut …

鸿蒙仓颉语言开发实战教程:商城应用个人中心页面

又到了高考的日子,幽蓝君在这里祝各位考生朋友冷静答题,超常发挥。 今天要分享的内容是仓颉语言商城应用的个人中心页面,先看效果图: 下面介绍下这个页面的实现过程。 我们可以先分析下整个页面的布局结构。可以看出它是纵向的布…

智能生成完整 Java 后端架构,告别手动编写 ControllerServiceDao

在 Java 后端开发的漫长征途上,开发者们常常深陷繁琐的基础代码编写泥潭。尤其是 Controller、Service、Dao 这三层代码的手动编写,堪称开发效率的 “拦路虎”。从搭建项目骨架到填充业务逻辑,每一个环节都需要开发者投入大量精力&#xff0c…

Python----目标检测(yolov5-7.0安装及训练细胞)

一、下载项目代码 yolov5代码源 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite yolov5-7.0代码源 Release v7.0 - YOLOv5 SOTA Realtime Instance Segmentation ultralytics/yolov5 GitHub 二、创建虚拟环境 创建一个3.8…

【Linux】文件赋权(指定文件所有者、所属组)、挂载光驱(图文教程)

文章目录 文件赋权创建文件 testChmod查看文件的当前权限使用 chmod 命令修改权限验证权限关键命令总结答案汇总 光驱挂载确认文件是否存在打包压缩压缩验证创建 work 目录将压缩文件复制到 work 目录新建挂载点 /MNT/CDROM 并挂载光驱答案汇总 更多相关内容可查看 此篇用以解决…

第22讲、Odoo18 QWeb 模板引擎详解

Odoo QWeb 模板引擎详解与实战 Odoo 的 QWeb 是其自研的模板引擎,广泛应用于 HTML、XML、PDF 等内容的生成,支撑了前端页面渲染、报表输出、门户页面、邮件模板等多种场景。本文将系统介绍 QWeb 的核心用法、工作原理,并通过实战案例演示如何…

【原理解析】为什么显示器Fliker dB值越大,闪烁程度越轻?

显示器Fliker 1 显示器闪烁现象说明2 Fliker量测方法2.1 FMA法2.2 JEITA法问题答疑:为什么显示器Fliker dB值越大,闪烁程度越轻? 3 参考文献 1 显示器闪烁现象说明 当一个光源闪烁超过每秒10次以上就可在人眼中产生视觉残留,此时…

Bootstrap Table开源的企业级数据表格集成

Bootstrap Table 是什么 ‌Bootstrap Table 是一个基于 Bootstrap 框架的开源插件,专为快速构建功能丰富、响应式的数据表格而设计。‌ 它支持排序、分页、搜索、导出等核心功能,并兼容多种 CSS 框架(如 Semantic UI、Material Design 等&am…

vue3表格使用Switch 开关

本示例基于vue3 element-plus 注&#xff1a;表格数据返回状态值为0、1。开关使用 v-model"scope.row.state 0" 会报错 故需要对写法做些修改&#xff0c;效果图如下 <el-table-column prop"state" label"入学状态" width"180" …

【11408学习记录】考研写作双核引擎:感谢信+建议信复合结构高分模板(附16年真题精讲)

感谢信建议信 英语写作2016年考研英语&#xff08;二&#xff09;真题小作文题目分析写作思路第一段第二段锦囊妙句9&#xff1a;锦囊妙句12&#xff1a;锦囊妙句13&#xff1a;锦囊妙句18&#xff1a; 第三段 妙句成文 每日一句词汇第一步&#xff1a;找谓语第二步&#xff1a…

一套个人知识储备库构建方案

写文章的初心是做知识沉淀。 好记性不如烂笔头&#xff0c;将阶段性的经验总结成文章&#xff0c;下次遇到相同的问题时&#xff0c;查起来比再次去搜集资料快得多。 然而&#xff0c;当文章越来越多时&#xff0c;有一个问题逐渐开始变得“严峻”起来。 比如&#xff0c;我…

行李箱检测数据集VOC+YOLO格式2083张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2083 标注数量(xml文件个数)&#xff1a;2083 标注数量(txt文件个数)&#xff1a;2083 …