电力设备红外图像目标检测数据集
10000张
21种检测目标:
Arrester body - 绝缘子主体
Arrester voltage equalizing ring - 绝缘子电压均衡环
Breaker - 断路器
Breaker connector - 断路器连接器
Breaker support insulator - 断路器支撑绝缘子
Casing connector - 外壳连接器
Casing general hat - 外壳通用帽
Casing porcelain sleeve - 外壳瓷套
Casing pressure equalizing ring - 外壳压力均衡环
Current transformer connector - 电流互感器连接器
Current transformer general cap - 电流互感器通用盖
Current transformer head - 电流互感器头部
Current transformer porcelain sleeve - 电流互感器瓷套
Current transformer secondary tank - 电流互感器二次罐
Current transformer voltage equalizing ring - 电流互感器电压均衡环
Knife blade - 刀片
Knife gate connector - 刀闸连接器
Knife gate fixing pin - 刀闸固定销
Knife gate support insulator - 刀闸支撑绝缘子
Voltage transformer body - 电压互感器主体
Voltage transformer secondary tank - 电压互感器二次罐
带标注 -YOLO格式 可直接用于YOLO系列目标检测算法模型训练
电力设备红外图像目标检测数据集介绍
数据集概述
此数据集主要用于电力设备红外图像的目标检测,涵盖了21种不同类型的目标。该数据集包含10000张图像,以YOLO格式标注,可以直接用于YOLO系列目标检测算法模型训练。
数据集特点
- 高清影像:所有图像均为高清红外影像,适合用于精确的目标检测。
- 详细标注:每张图像都标注了电力设备的不同部件,可以用于训练模型来识别这些部件。
- 多样性:涵盖了不同类型的电力设备部件以及不同环境条件下的红外图像,适用于多种环境下的应用。
- 广泛适用性:支持YOLO系列目标检测模型,适用于电力设备部件的识别及定位任务。
数据集统计
目标类型 | 类别ID | 图像数量 |
---|---|---|
Arrester body - 绝缘子主体 | 1 | |
Arrester voltage equalizing ring - 绝缘子电压均衡环 | 2 | |
Breaker - 断路器 | 3 | |
Breaker connector - 断路器连接器 | 4 | |
Breaker support insulator - 断路器支撑绝缘子 | 5 | |
Casing connector - 外壳连接器 | 6 | |
Casing general hat - 外壳通用帽 | 7 | |
Casing porcelain sleeve - 外壳瓷套 | 8 | |
Casing pressure equalizing ring - 外壳压力均衡环 | 9 | |
Current transformer connector - 电流互感器连接器 | 10 | |
Current transformer general cap - 电流互感器通用盖 | 11 | |
Current transformer head - 电流互感器头部 | 12 | |
Current transformer porcelain sleeve - 电流互感器瓷套 | 13 | |
Current transformer secondary tank - 电流互感器二次罐 | 14 | |
Current transformer voltage equalizing ring - 电流互感器电压均衡环 | 15 | |
Knife blade - 刀片 | 16 | |
Knife gate connector - 刀闸连接器 | 17 | |
Knife gate fixing pin - 刀闸固定销 | 18 | |
Knife gate support insulator - 刀闸支撑绝缘子 | 19 | |
Voltage transformer body - 电压互感器主体 | 20 | |
Voltage transformer secondary tank - 电压互感器二次罐 | 21 | |
总计 | 10000 |
数据集结构
PowerEquipmentInfraredDetectionDataset/
├── images/ # 图像文件
│ ├── train/ # 训练集图像
│ │ ├── image_00001.jpg
│ │ ├── image_00002.jpg
│ │ └── ...
│ ├── val/ # 验证集图像
│ │ ├── image_00001.jpg
│ │ ├── image_00002.jpg
│ │ └── ...
│ └── test/ # 测试集图像
│ ├── image_00001.jpg
│ ├── image_00002.jpg
│ └── ...
├── labels/ # YOLO目标检测标注
│ ├── train/ # 训练集标签
│ │ ├── image_00001.txt
│ │ ├── image_00002.txt
│ │ └── ...
│ ├── val/ # 验证集标签
│ │ ├── image_00001.txt
│ │ ├── image_00002.txt
│ │ └── ...
│ └── test/ # 测试集标签
│ ├── image_00001.txt
│ ├── image_00002.txt
│ └── ...
└── dataset_info.txt # 数据集描述文件
标注格式示例
YOLO目标检测格式
每行表示一个物体的边界框和类别:
class_id cx cy w h
class_id
:类别ID(从1开始编号)- 1:
Arrester body - 绝缘子主体
- 2:
Arrester voltage equalizing ring - 绝缘子电压均衡环
- 3:
Breaker - 断路器
- 4:
Breaker connector - 断路器连接器
- 5:
Breaker support insulator - 断路器支撑绝缘子
- 6:
Casing connector - 外壳连接器
- 7:
Casing general hat - 外壳通用帽
- 8:
Casing porcelain sleeve - 外壳瓷套
- 9:
Casing pressure equalizing ring - 外壳压力均衡环
- 10:
Current transformer connector - 电流互感器连接器
- 11:
Current transformer general cap - 电流互感器通用盖
- 12:
Current transformer head - 电流互感器头部
- 13:
Current transformer porcelain sleeve - 电流互感器瓷套
- 14:
Current transformer secondary tank - 电流互感器二次罐
- 15:
Current transformer voltage equalizing ring - 电流互感器电压均衡环
- 16:
Knife blade - 刀片
- 17:
Knife gate connector - 刀闸连接器
- 18:
Knife gate fixing pin - 刀闸固定销
- 19:
Knife gate support insulator - 刀闸支撑绝缘子
- 20:
Voltage transformer body - 电压互感器主体
- 21:
Voltage transformer secondary tank - 电压互感器二次罐
- 1:
cx
:目标框中心点x坐标 / 图像宽度。cy
:目标框中心点y坐标 / 图像高度。w
:目标框宽度 / 图像宽度。h
:目标框高度 / 图像高度。
例如:
1 0.453646 0.623148 0.234375 0.461111
2 0.321021 0.456789 0.123456 0.345678
...
使用该数据集进行模型训练
1. 数据预处理与加载
首先,我们需要加载数据并将其转换为适合YOLOv5等模型使用的格式。假设你已经安装了PyTorch和YOLOv5。
import os
from PIL import Image
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class PowerEquipmentInfraredDetectionDataset(Dataset):
def __init__(self, image_dir, label_dir, transform=None):
self.image_dir = image_dir
self.label_dir = label_dir
self.transform = transform
self.image_files = [f for f in os.listdir(image_dir) if f.endswith('.jpg')]
def __len__(self):
return len(self.image_files)
def __getitem__(self, idx):
img_name = self.image_files[idx]
img_path = os.path.join(self.image_dir, img_name)
label_path = os.path.join(self.label_dir, img_name.replace('.jpg', '.txt'))
# 加载图像
image = Image.open(img_path).convert('RGB')
if self.transform:
image = self.transform(image)
# 加载标注
with open(label_path, 'r') as f:
lines = f.readlines()
boxes = []
labels = []
for line in lines:
class_id, cx, cy, w, h = map(float, line.strip().split())
boxes.append([cx, cy, w, h])
labels.append(int(class_id))
boxes = torch.tensor(boxes, dtype=torch.float32)
labels = torch.tensor(labels, dtype=torch.int64)
return image, boxes, labels
# 数据增强
transform = transforms.Compose([
transforms.Resize((640, 640)),
transforms.ToTensor(),
])
# 创建数据集
train_dataset = PowerEquipmentInfraredDetectionDataset(image_dir='PowerEquipmentInfraredDetectionDataset/images/train/', label_dir='PowerEquipmentInfraredDetectionDataset/labels/train/', transform=transform)
val_dataset = PowerEquipmentInfraredDetectionDataset(image_dir='PowerEquipmentInfraredDetectionDataset/images/val/', label_dir='PowerEquipmentInfraredDetectionDataset/labels/val/', transform=transform)
test_dataset = PowerEquipmentInfraredDetectionDataset(image_dir='PowerEquipmentInfraredDetectionDataset/images/test/', label_dir='PowerEquipmentInfraredDetectionDataset/labels/test/', transform=transform)
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=4, shuffle=False, num_workers=4)
test_loader = DataLoader(test_dataset, batch_size=4, shuffle=False, num_workers=4)
2. 构建模型
我们可以使用YOLOv5模型进行目标检测任务。假设你已经克隆了YOLOv5仓库,并按照其文档进行了环境设置。
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
创建数据配置文件 data/power_equipment_infrared_detection.yaml
:
train: path/to/PowerEquipmentInfraredDetectionDataset/images/train
val: path/to/PowerEquipmentInfraredDetectionDataset/images/val
test: path/to/PowerEquipmentInfraredDetectionDataset/images/test
nc: 21 # 类别数
names: ['Arrester body', 'Arrester voltage equalizing ring', 'Breaker', 'Breaker connector', 'Breaker support insulator', 'Casing connector', 'Casing general hat', 'Casing porcelain sleeve', 'Casing pressure equalizing ring', 'Current transformer connector', 'Current transformer general cap', 'Current transformer head', 'Current transformer porcelain sleeve', 'Current transformer secondary tank', 'Current transformer voltage equalizing ring', 'Knife blade', 'Knife gate connector', 'Knife gate fixing pin', 'Knife gate support insulator', 'Voltage transformer body', 'Voltage transformer secondary tank']
3. 训练模型
使用YOLOv5进行训练。
python train.py --img 640 --batch 16 --epochs 100 --data data/power_equipment_infrared_detection.yaml --weights yolov5s.pt --cache
4. 评估模型
在验证集上评估模型性能。
python val.py --img 640 --batch 16 --data data/power_equipment_infrared_detection.yaml --weights runs/train/exp/weights/best.pt --task test
5. 推理
使用训练好的模型进行推理。
python detect.py --source path/to/test/image.jpg --weights runs/train/exp/weights/best.pt --conf 0.5
实验报告
实验报告应包括以下内容:
- 项目简介:简要描述项目的背景、目标和意义。
- 数据集介绍:详细介绍数据集的来源、规模、标注格式等。
- 模型选择与配置:说明选择的模型及其配置参数。
- 训练过程:记录训练过程中的损失变化、学习率调整等。
- 评估结果:展示模型在验证集上的性能指标(如mAP、准确率)。
- 可视化结果:提供一些典型样本的检测结果可视化图。
- 结论与讨论:总结实验结果,讨论可能的改进方向。
- 附录:包含代码片段、图表等补充材料。
依赖库
确保安装了以下依赖库:
pip install torch torchvision
pip install -r yolov5/requirements.txt
总结
这个电力设备红外图像目标检测数据集提供了丰富的标注数据,非常适合用于训练和评估目标检测模型。通过YOLOv5框架,可以方便地构建和训练高性能的目标检测模型。实验报告可以帮助你更好地理解和分析模型的表现,并为进一步的研究提供参考。