无人机视角电力巡检资产检测与异常判别数据集

news2024/9/21 7:18:12

无人机视角电力巡检资产检测与异常判别,资产检测关注17类目标,共10000余张无人机图像,json方式标注,类别如下:
1.Spiral Damper - 螺旋阻尼器
2.Stockbridge Damper - 斯托克布里奇阻尼器
3.Glass Insulator - 玻璃绝缘子
4.Glass Insulator Big Shackle - 玻璃绝缘子大扣环
5.Glass Insulator Small Shackle - 玻璃绝缘子小扣环
6.Glass Insulator Tower Shackle - 玻璃绝缘子塔扣环
7.Lightning Rod Shackle - 防雷接地线扣环
8.Lightning Rod Suspension - 防雷悬挂装置
9.Tower ID Plate - 塔身标识牌
10.Polymer Insulator - 聚合物绝缘子
11.Polymer Insulator Lower Shackle - 聚合物绝缘子下部扣环
12.Polymer Insulator Upper Shackle - 聚合物绝缘子上部扣环
13.Polymer Insulator Tower Shackle - 聚合物绝缘子塔扣环
14.Spacer - 隔板
15.Vari-grip - 可变夹具
16.Yoke - 铁箍
17.Yoke Suspension - 铁箍悬挂装置

主要关注以下5类异常,11000余张图像
1 Yoke Suspension(正常/生锈)、2 Glass Insulator(正常/缺失盖子)、3 Polymer Insulator Upper Shackle(正常/生锈)、
4 Lightning Rod Suspension(正常/生锈)、以及 5 Vari-grip(正常/鸟巢/生锈)

数据集名称

无人机视角电力巡检资产检测与异常判别数据集

数据集描述

该数据集是一个专门用于无人机视角下的电力巡检任务的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测和异常判别模型。数据集中的图像涵盖了多种电力设施及其部件,并详细标注了17类目标及其中5类关键部件的正常状态和异常状态。这些图像由无人机拍摄,具有高分辨率,能够清晰地展示电力设施的细节。

数据规模
  • 总样本数量:超过21000张无人机图像(包括10000余张资产检测图像和11000余张异常判别图像)
  • 数据量:具体大小未提供,但可以假设在GB级别
  • 分辨率:具体的分辨率可能因无人机拍摄高度而异,但均为高分辨率图像,以确保电力设施的细节清晰。
  • 标注目标:所有图像都带有详细的标注信息,采用标准JSON格式进行标注,适用于训练和验证目标检测和异常判别模型。
目标类别及数量

数据集中包含以下17类电力设施目标:

  1. Spiral Damper - 螺旋阻尼器
  2. Stockbridge Damper - 斯托克布里奇阻尼器
  3. Glass Insulator - 玻璃绝缘子
  4. Glass Insulator Big Shackle - 玻璃绝缘子大扣环
  5. Glass Insulator Small Shackle - 玻璃绝缘子小扣环
  6. Glass Insulator Tower Shackle - 玻璃绝缘子塔扣环
  7. Lightning Rod Shackle - 防雷接地线扣环
  8. Lightning Rod Suspension - 防雷悬挂装置
  9. Tower ID Plate - 塔身标识牌
  10. Polymer Insulator - 聚合物绝缘子
  11. Polymer Insulator Lower Shackle - 聚合物绝缘子下部扣环
  12. Polymer Insulator Upper Shackle - 聚合物绝缘子上部扣环
  13. Polymer Insulator Tower Shackle - 聚合物绝缘子塔扣环
  14. Spacer - 隔板
  15. Vari-grip - 可变夹具
  16. Yoke - 铁箍
  17. Yoke Suspension - 铁箍悬挂装置

主要关注以下5类异常:

  1. Yoke Suspension - 铁箍悬挂装置 (正常/生锈)
  2. Glass Insulator - 玻璃绝缘子 (正常/缺失盖子)
  3. Polymer Insulator Upper Shackle - 聚合物绝缘子上部扣环 (正常/生锈)
  4. Lightning Rod Suspension - 防雷悬挂装置 (正常/生锈)
  5. Vari-grip - 可变夹具 (正常/鸟巢/生锈)

具体的每个类别的实例数量未提供,但可以假设每种类别都有足够的实例来支持模型训练和验证。

图像特性
  • 高分辨率可见光影像:图像由无人机拍摄,具有较高的空间分辨率,确保了电力设施细节的清晰度。
  • 多样化的电力设施环境:覆盖了不同地理位置、天气条件和背景复杂度的电力设施场景。
  • 丰富的背景信息:图像中包含了复杂的自然背景和其他电力设施部件,增加了检测和异常判别的难度。
标注格式

数据集中的标注信息采用了标准的JSON格式文件。每个图像都有一个对应的标签文件,记录了每个目标的位置信息(边界框坐标)和类别标签。对于异常判别部分,还标注了每个目标的具体异常类型。这种格式可以直接用于多种目标检测框架,如Faster R-CNN、YOLO等。

数据集结构

典型的数据集目录结构如下:

1drone_power_inspection_dataset/
2├── images/
3│   ├── asset_detection/
4│   │   ├── img_00001.jpg
5│   │   ├── img_00002.jpg
6│   │   └── ...
7│   ├── anomaly_detection/
8│   │   ├── img_00001.jpg
9│   │   ├── img_00002.jpg
10│   │   └── ...
11├── annotations/
12│   ├── asset_detection/
13│   │   ├── img_00001.json
14│   │   ├── img_00002.json
15│   │   └── ...
16│   ├── anomaly_detection/
17│   │   ├── img_00001.json
18│   │   ├── img_00002.json
19│   │   └── ...
20└── README.md  # 数据集说明文件
应用场景

该数据集可以用于以下应用场景:

  • 电力设施巡检:通过无人机影像进行电力设施的自动检测和异常识别,提高巡检效率和准确性。
  • 智能监控系统:辅助智能监控系统,在各种复杂环境中进行电力设施检测和异常判别。
  • 维护与检修:帮助技术人员及时发现并处理电力设施的异常情况,减少故障风险。
  • 科研分析:用于研究目标检测和异常判别算法和技术的发展趋势,特别是在无人机视角下的应用。

示例代码

以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:

1import os
2import cv2
3import numpy as np
4from PIL import Image
5import json
6
7# 数据集路径
8dataset_path = 'path/to/drone_power_inspection_dataset/'
9
10# 加载图像和标注
11def load_image_and_labels(image_path, annotation_path):
12    # 读取图像
13    image = Image.open(image_path).convert('RGB')
14    
15    # 解析JSON标注文件
16    with open(annotation_path, 'r') as infile:
17        annotation = json.load(infile)
18        objects = []
19        for obj in annotation['objects']:
20            class_name = obj['class']
21            bbox = obj['bbox']
22            xmin, ymin, xmax, ymax = bbox
23            if 'anomaly' in obj:
24                anomaly_type = obj['anomaly']
25            else:
26                anomaly_type = 'normal'
27            objects.append([xmin, ymin, xmax, ymax, class_name, anomaly_type])
28    return image, objects
29
30# 展示图像和标注
31def show_image_with_boxes(image, boxes):
32    img = np.array(image)
33    for box in boxes:
34        xmin, ymin, xmax, ymax, class_name, anomaly_type = box
35        color = (0, 255, 0) if anomaly_type == 'normal' else (0, 0, 255)
36        cv2.rectangle(img, (xmin, ymin), (xmax, ymax), color, 2)
37        label = f'{class_name} ({anomaly_type})'
38        cv2.putText(img, label, (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)
39    cv2.imshow('Image with Boxes', img)
40    cv2.waitKey(0)
41    cv2.destroyAllWindows()
42
43# 主函数
44if __name__ == "__main__":
45    subset = 'asset_detection'  # 可以选择 'anomaly_detection'
46    images_dir = os.path.join(dataset_path, 'images', subset)
47    annotations_dir = os.path.join(dataset_path, 'annotations', subset)
48    
49    # 获取图像列表
50    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
51    
52    # 随机选择一张图像
53    selected_image = np.random.choice(image_files)
54    image_path = os.path.join(images_dir, selected_image)
55    annotation_path = os.path.join(annotations_dir, selected_image.replace('.jpg', '.json'))
56    
57    # 加载图像和标注
58    image, boxes = load_image_and_labels(image_path, annotation_path)
59    
60    # 展示带有标注框的图像
61    show_image_with_boxes(image, boxes)

这段代码展示了如何加载图像和其对应的JSON标注文件,并在图像上绘制边界框和类别标签。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。

示例代码:使用预训练模型进行推理

以下是使用预训练模型进行推理的示例代码。这里我们假设您使用的是基于Faster R-CNN的模型,但您可以根据需要选择其他支持VOC格式的模型。

1import torch
2import torchvision
3from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
4import cv2
5import numpy as np
6from PIL import Image
7import json
8
9# 数据集路径
10dataset_path = 'path/to/drone_power_inspection_dataset/'
11subset = 'anomaly_detection'  # 可以选择 'asset_detection'
12
13# 加载预训练模型
14model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
15in_features = model.roi_heads.box_predictor.cls_score.in_features
16model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes=22)  # 17个类别 + 5个异常类别 + 背景
17weights_path = 'path/to/pretrained/fasterrcnn_weights.pth'  # 替换成实际的预训练模型路径
18model.load_state_dict(torch.load(weights_path))
19model.eval()
20
21# 主函数
22if __name__ == "__main__":
23    images_dir = os.path.join(dataset_path, 'images', subset)
24    set_file = os.path.join(dataset_path, 'annotations', subset, f'{subset}.txt')
25    
26    # 获取图像列表
27    with open(set_file, 'r') as f:
28        image_files = [line.strip() + '.jpg' for line in f.readlines()]
29    
30    # 随机选择一张图像
31    selected_image = np.random.choice(image_files)
32    image_path = os.path.join(images_dir, selected_image)
33    
34    # 读取并预处理图像
35    image = Image.open(image_path).convert('RGB')
36    transform = torchvision.transforms.Compose([
37        torchvision.transforms.ToTensor(),
38    ])
39    image_tensor = transform(image).unsqueeze(0)
40    
41    # 使用预训练模型进行推理
42    with torch.no_grad():
43        predictions = model(image_tensor)
44    
45    # 处理预测结果
46    boxes = predictions[0]['boxes'].cpu().numpy()
47    labels = predictions[0]['labels'].cpu().numpy()
48    scores = predictions[0]['scores'].cpu().numpy()
49    
50    # 过滤低置信度的结果
51    threshold = 0.5
52    high_confidence = scores > threshold
53    boxes = boxes[high_confidence]
54    labels = labels[high_confidence]
55    
56    # 在图像上绘制边界框
57    img = np.array(image)
58    
59    class_names = ['Background', 'Spiral Damper', 'Stockbridge Damper', 'Glass Insulator', 
60                   'Glass Insulator Big Shackle', 'Glass Insulator Small Shackle', 
61                   'Glass Insulator Tower Shackle', 'Lightning Rod Shackle', 
62                   'Lightning Rod Suspension', 'Tower ID Plate', 'Polymer Insulator', 
63                   'Polymer Insulator Lower Shackle', 'Polymer Insulator Upper Shackle', 
64                   'Polymer Insulator Tower Shackle', 'Spacer', 'Vari-grip', 'Yoke', 
65                   'Yoke Suspension', 'Yoke Suspension (Rust)', 'Glass Insulator (Missing Cap)', 
66                   'Polymer Insulator Upper Shackle (Rust)', 'Lightning Rod Suspension (Rust)', 
67                   'Vari-grip (Nest)', 'Vari-grip (Rust)']
68    
69    for box, label in zip(boxes, labels):
70        if label > 0:  # 忽略背景
71            xmin, ymin, xmax, ymax = map(int, box)
72            cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
73            cv2.putText(img, class_names[label], (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
74    
75    # 显示结果
76    cv2.imshow('Image with Boxes', img)
77    cv2.waitKey(0)
78    cv2.destroyAllWindows()

这段代码展示了如何使用预训练的Faster R-CNN模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。如果您需要使用其他模型进行更高级的功能,如模型微调或增量训练,可以参考相应模型的官方文档来进行相应的配置和操作。

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

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

相关文章

双击就可以打开vue项目,而不用npm run dev

右键点击桌面或其他位置,选择“新建” -> “快捷方式”,在“对象的位置”处直接输入“npm run dev”,然后下一步 自定义一个快捷方式名称 完成后,桌面会创建一个快捷方式,右键快捷方式选择属性,可以看…

智慧火灾应急救援航拍检测数据集(无人机视角)

智慧火灾应急救援。 无人机,直升机等航拍视角下火灾应急救援检测数据集,数据分别标注了火,人,车辆这三个要素内容,29810张高清航拍影像,共31GB,适合森林防火,应急救援等方向的学术研…

免费音乐剪辑软件大揭秘:2024 大学生的音乐创作利器

对于音乐爱好者而言,如果你萌生了尝试音乐剪辑的念头,不妨先从探索一些免费工具开始。在此,我愿分享几款我个人体验过的、值得一试的音乐剪辑免费软件,希望能为你的音乐探索之旅增添乐趣与灵感。 1.福晰音频剪辑 链接直达>&g…

Java servlet《网吧机房管理系统浅析》

网吧机房管理系统在网吧运营中起着至关重要的作用。 对于用户而言,该系统提供了便捷的登录方式,通过用户名和密码可准确显示所在网吧机房号,便于快速定位。同时,合理的机房分配功能确保用户获得良好上网体验。遇到问题时&#xff…

Highcharts甘特图基本用法(highcharts-gantt.js)

参考官方文档: https://www.highcharts.com/docs/gantt/getting-started-gantt https://www.highcharts.com/demo/gantt/project-management https://www.hcharts.cn/demo/gantt 链接在下面按需引入 https://code.highcharts.com/gantt/highcharts-gantt.js htt…

【C语言】自定义类型——联合和枚举

目录 一、联合体(共用体) (1)联合体类型的声明 (2)联合体类型的特点 (3)联合体和结构体的比较 (4)联合体大小的计算 (5)联合体的…

STM8L101低功耗的理解

一.通过降低时钟频率来降低功耗: 规格书如图 1.code 从flash启动,主频率是16Mhz时,功耗测量2.51ma左右,对应程序如下: 2.code从flash启动,主频率是2Mhz时(上电默认值),功…

Android 如何使用jdk命令给应用/APK重新签名。

写在前面:本篇文章介绍Windows命令行中,如何使用jdk命令给已经签过名的apk重新签名。 使用工具:jarsigner。jarsigner是jdk自带的工具,签名之前确保Windows电脑中已安装jdk。我的环境如下:   后续操作步骤如下&…

力扣(leetcode)每日一题 2332 坐上公交的最晚时间

题目: 给你一个下标从 0 开始长度为 n 的整数数组 buses ,其中 buses[i] 表示第 i 辆公交车的出发时间。同时给你一个下标从 0 开始长度为 m 的整数数组 passengers ,其中 passengers[j] 表示第 j 位乘客的到达时间。所有公交车出发的时间互…

(七)使用SoapUI工具调用WebAPI

1.调用一个无参数的GET请求 [HttpGet(Name "GetWeatherForecast")]public IEnumerable<WeatherForecast> Get(){return Enumerable.Range(1, 5).Select(index > new WeatherForecast{Date DateTime.Now.AddDays(index),TemperatureC Random.Shared.Next(…

QFramework v1.0 使用指南 更新篇:20240918. 新增 BindableList

20240918. 新增 BindableList BindableProperty 很好用&#xff0c;但是不支持 List 等集合。 而 Bindable List 功能群友呼吁了很久了。 应群友要求&#xff0c;笔者实现了 Bindable List。 基本使用方式如下: using System; using UnityEngine; using UnityEngine.UI;na…

最新版本TensorFlow训练模型TinyML部署到ESP32入门实操

最新版本TensorFlow训练模型TinyML入门实操 1.概述 这篇文章介绍微型嵌入式设备的机器学习TinyML&#xff0c;它们的特点就是将训练好的模型部署到单片机上运行。 2.TensorFlow深度学习原理 TensorFlow开源项目是由google研发的一个嵌入式机器学习工具&#xff0c;通过调用…

智慧安防监控EasyCVR视频汇聚管理平台如何修改视频流分辨率?

智慧安防监控EasyCVR视频管理平台能在复杂的网络环境中&#xff0c;将前端监控设备进行统一集中接入与汇聚管理。EasyCVR平台支持H.264/H.265视频压缩技术&#xff0c;可在4G/5G/WIFI/宽带等网络环境下&#xff0c;传输720P/1080P/2K/4K高清视频。视频流经平台处理后&#xff0…

高质量的翻译:应用程序可用性和成功的关键

在日益全球化的应用市场中&#xff0c;开发一款优秀的产品只是成功的一半。另一半&#xff1f;确保你的用户&#xff0c;无论他们在哪里或说什么语言&#xff0c;都能无缝理解和使用它。这就是高质量翻译的用武之地——不是事后的想法&#xff0c;而是应用程序可用性和最终成功…

如何写一个自动化Linux脚本去进行等保测试--引言

#我的师兄喜欢给我的休闲实习生活加活&#xff0c;说是让我在实习期间写一个自动化脚本去进行等保测试。呵呵哒。 怎么办呢&#xff0c;师兄的指令得完成&#xff0c;师兄说让我使用Python完成任务。 设想如下&#xff1a; 1、将Linux指令嵌入到python脚本中 2、调试跑通 …

C++11——function与bind

包装器 function包装器function的介绍function的使用function的使用场景function的意义 bind包装器bind的介绍bind的使用 function包装器 function的介绍 function是用来包装函数的&#xff0c;所以叫做包装器或者适配器&#xff0c;fuction的本质其实是一个类模板。 functio…

Mac使用gradle编译springboot-2.7.x源码

1 开发环境&#xff1a; JDK8 ideaIU-2024.2.2 gradle-7.6.3 代理网络 2 下载springboot源码 代码仓库网址 git clone -b 2.7.x https://github.com/spring-projects/spring-boot.git3 安装gradle gradle下载网址 https://services.gradle.org/distributions/ 安装此文件指…

Three.js 3D人物漫游项目(上)

本文目录 前言1、项目构建1.1 安装依赖1.2 初始化1.3 项目结构1.4 初始化的项目运行 2、加载模型2.1 threejs三要素2.1.1 代码解读 2.2 加载模型2.2.1 代码解读 2.3 效果 前言 在数字技术的浪潮中&#xff0c;三维图形渲染技术以其独特的魅力&#xff0c;正逐步渗透到我们生活的…

基于无人机影像的可见光单木分割数据集-json格式

基于无人机影像的可见光单木分割数据集&#xff0c;共1700张影像&#xff0c;数据集大小3.6GB&#xff0c;分割标注采用标准json格式。 该数据集是一个专门用于基于无人机可见光影像进行单木分割的数据集&#xff0c;旨在帮助研究人员和开发者训练和评估基于深度学习的图像分割…

4.5 pandas 实战 分析抖音播放数据(1)

课程目标 基于pandas对抖音播放数据做数据分析 数据准备 点此去下载 课程内容 导包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns plt.rcParams["font.family"] "SimHei" plt.rcParams["ax…