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

无人机视角电力巡检资产检测与异常判别,资产检测关注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.xdnf.cn/news/147192.html

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

相关文章

OpenStack Yoga版安装笔记(十三)neutron安装

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行,基本按照OpenStack Installation Guide顺序执行,主要内容包括: 环境安装 (已完成)OpenStack…

【越学学糊涂的Linux系统】(1)Linux环境搭建|账户管理

Ⅰ. Linux环境: 0x00用什么去学习: Windows操作系统我们都不陌生,笔记本买过来了就装好了系统,现在我们要想使用Liunx操作系统该怎么办? ✨三种方法解决: ①直接安装在物理机上(本电脑)【❌…

上海市高等学校信息技术水平考试 C程序设计(2021A场)全解

2e-1 为 1.0^(-1)*2 在顺序查找法中,如果要从n个学生中找到某个特定的学生信息,最坏的情况是这个学生是最后一个被比较的,这时需要比较n次。但是,如果学生是均匀分布的,那么平均来说,你会在列表的中间找到这…

2024年最新Redis内存数据库主从复制、哨兵模式、集群部署等详细教程(更新中)

Centos 安装 Redis 检查安装 GCC 环境 [rootVM-4-17-centos ~]# gcc --version gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; no…

深入理解前端拖拽:从基础实现到事件冒泡与委托的应用【面试真题】

在前端开发中,拖拽功能是一项常见的交互需求。通过监听鼠标或触摸事件,用户可以拖动元素并将其放置到指定位置。理解拖拽的底层实现、如何判断拖拽的是子元素还是父元素,以及事件冒泡和事件委托的原理,可以帮助我们更好地实现复杂…

mybatis 和 mybatis-plus

mybatis 配置 1.新建MAVEN项目 2.配置mybatis依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocatio…

嵌入式面试学习笔记(入门1)

目录 指针的大小问题 sizeof和strlen C语言分配内存的方式 数组&#xff08;的&#xff09;指针和指针&#xff08;的&#xff09;数组 union 指针的大小问题 指针对于不少新手而言是一道难关&#xff0c;但是不必恐惧于指针。他的本质其实就是一个地址。请冷静下来仔细思…

人工智能开发实战辅助诊断应用解析

内容导读 项目分析预备知识项目实战 一、项目分析 1、提出问题 随着人们生活水平的提升和健康意识的增强&#xff0c;民众定期进行身体健康体检已成为常态&#xff0c;这种早期的疾病检测和筛查可以及早发现身体里已经出现的异常体征信息&#xff0c;做出正确诊断和有效处理…

信息安全数学基础(15)欧拉定理

前言 欧拉定理是数论中的一个重要定理&#xff0c;它建立了模运算下指数与模的互质关系。这个定理在密码学、信息安全等领域有着广泛的应用&#xff0c;特别是在公钥密码体制&#xff08;如RSA加密算法&#xff09;中。 一、表述 设 n 是一个正整数&#xff0c;a 是一个与 n 互…

万字长文——ConvNeXt(2022CVPR),卷积网络的顶峰之作,在Transformer盛行的当下,卷积网络还能再战!

ConvNext:A ConvNet for the 2020s ConvNext:2020 年代的卷积神经网络 论文地址: https://arxiv.org/pdf/2201.03545 自从Transformer成功应用在视觉领域并且取得显著成绩后,很多人开始抛弃卷积网络架构,转而使用Transformer。然而有的大佬不认为卷积过时了,于是有了这篇…

Sigmoid引发的梯度消失爆炸及ReLU引起的神经元参数失效问题思考

Sigmoid和ReLU激活函数思考&#xff09; 引文Sigmoid函数梯度消失问题梯度爆炸问题解决方案 ReLU函数简化模型示例场景设定前向传播对反向传播的影响总结 内容精简版 引文 梯度消失和梯度爆炸是神经网络训练中常见的两个问题&#xff0c;特别是在使用Sigmoid激活函数时。这些问…

图形化编程012(变量-倒计时)

案例展示 点击绿旗&#xff0c;使用空格键控制鳐鱼&#xff0c;按下空格向上游&#xff0c;松开下落。 在舞台右侧会出现障碍物从右向左移动&#xff0c;移动到左侧边缘发出声音并隐藏。 鳐鱼碰到障碍停止全部脚本&#xff0c;坚持60秒程序结束。 一、逻辑思维 通过读题将大…

鸿蒙媒体开发系列09——OpenSL ES音频录制

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 1、概述 OpenSL ES全称为Open Sound Library for Embedded Systems&#xff0c;是一…

【我的 PWN 学习手札】tcache extend

目录 前言 一、利用手法 二、流程演示 &#xff08;1&#xff09;三块物理相邻的堆块 &#xff08;2&#xff09;溢出修改 size &#xff08;3&#xff09;释放该 chunk &#xff08;4&#xff09;重新申请该 chunk &#xff08;5&#xff09;释放第三块 chunk&#x…

vcs/verdi常用命令(持续更新)

1. 操作rtl 1.1 加载rtl命令 verdi -dbdir simv.daidir的目录 1.2 显示某时刻rtl的值 首先鼠标左键在波形上选中某个特定时刻&#xff0c;然后鼠标选中rtl代码文件&#xff0c;按x就会显示&#xff0c;再按x就会退出显示。 1.3 查找字符串 按/ 1.4 vcs将rtl的信号加载到…

DNS是什么?怎么设置

NS是什么意思?有什么用呢?专业的说DNS就是域名系统 (Domain Name System)的简称&#xff0c;也就是IT人士常说的域名解析系统。主要是让用户在互联网上通过域名找到域名对应的IP地址&#xff0c;因为IP地址都是一串数字(例如&#xff1a;192.168.0.1)不方便记忆&#xff0c;便…

与 CESS Network 共探去中心化创新:重塑数据基础设施,驱动未来变革

随着互联网的快速发展和数据量的爆炸式增长&#xff0c;如何有效管理、存储和保护数据成为了一个日益重要的课题。传统的中心化平台&#xff0c;如 YouTube&#xff0c;虽然为用户提供了便捷的服务&#xff0c;但数据的所有权和控制权往往掌握在平台手中&#xff0c;用户的内容…

口腔检测系统源码分享

口腔检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

Memory Controller Unit (MCU)内存控制器介绍

文章目录 Memory Controller Unit (MCU)内存控制器介绍1. MCU基本概念和功能地址映射读写操作缓存控制内存刷新1.1 地址映射1.2 读写操作1.3 缓存控制1.4 内存刷新 2. MCU的工作原理接收CPU的请求地址转换执行操作管理缓存 3. MCU的类型SDRAM控制器DDR控制器Flash控制器 4. MCU…

嵌入式 开发技巧和经验分享

文章目录 前言嵌入式 开发技巧和经验分享目录1.1嵌入式 系统的 定义1.2 嵌入式 操作系统的介绍1.3 嵌入式 开发环境1.4 编译工具链和优化1.5 嵌入式系统软件开发1.6 嵌入式SDK开发2.1选择移植的系统-FreeRtos2.2FreeRtos 移植步骤2.3 系统移植之中断处理2.4系统移植之内存管理2…